commit 58c1b0deea4f96e4607317834ab71cda86c4e2a3 Author: Relintai Date: Sun Jan 30 23:20:50 2022 +0100 Initial commit. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0e41336 --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +engine +modules/* +ignore/* + +*.d +*.o +*.meta +game/.import/** +game/.prop_tool_temp/** +.sconsign.dblite +.DS_Store + +.vs/* +.kdev4/* +.vscode/* + +TestRWTextures + +_build/* +_binaries/* +game/android/build/* + +*.blend1 +.dir-locals.el + +build.config + +__pycache__/* diff --git a/HEADS b/HEADS new file mode 100644 index 0000000..9f6b3fd --- /dev/null +++ b/HEADS @@ -0,0 +1 @@ +{"engine": {"3.2": "64a9e86c5c20bd4bd5833f0563457d0126617489", "3.x": "156ee820f620111a2dc2f884e79190777ca6e785"}, "world_generator": {"master": "260c430f11b0b591eaf4714516419aa327d2842c"}, "entity_spell_system": {"master": "3c334566ff05a74e913cd5c5ff38ae45aba5f5d2"}, "ui_extensions": {"master": "992b322266e3d3225447c4df0a1c34fee19e1fe3"}, "texture_packer": {"master": "59480880356b7aff8967dfe2163e8416031c4f9b"}, "fastnoise": {"master": "46bb1f610bfb7171613b5c708d312bcf94e89356"}, "thread_pool": {"master": "06c56fcb37d28a275212e2864c5885ae6a5c2ba0"}, "mesh_data_resource": {"master": "362d59ae45cbcd96aad24a0dc1cbd504a3e61e82"}, "mesh_utils": {"master": "4feb5186203640c234f0fc4e24cc0de83f21e951"}, "props": {"master": "2afd6eff45f9a921bdf4090ff3029def86df5cb5"}, "terraman_2d": {"master": "b547515ae3817b0088e2cf499af59c8f1dee7189"}, "broken_seals_module": {"master": "52c5a81350db1c29d375c63d95010260911ec034"}, "rtile_map": {"master": "389070cfef387b69902e23e6c4ac53997b69e42e"}} \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e4b4927 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2019-2020 Péter Magyar + +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. \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f1b4757 --- /dev/null +++ b/Makefile @@ -0,0 +1,20 @@ +all: + scons bels -j5 + +e: + scons belsE -j5 + +t: + scons belsT -j5 + +v: + scons belsV -j5 + +W: + scons belsW -j5 + +p: + scons belsP -j5 + +m: + scons belsM -j5 diff --git a/README.md b/README.md new file mode 100644 index 0000000..e31c1ce --- /dev/null +++ b/README.md @@ -0,0 +1,191 @@ +# Broken Seals 2D + +A 2D version of [Broken Seals](https://github.com/Relintai/broken_seals). + +Same idea, similar design, but with a 2d renderer. (Of course with changes to make it work/fun in 2d.) + +Still needs a lot of work on the visual style though. + +## Editing the game + +In order for you to open the game in the editor you will need a custom built version, with a few engine modules built in. + +You can check the releases tab to grab one, but since the project still changes a lot on the c++ side, +if you get it there, also get the relevant game project. + +At the moment I don't have nightlies, I do plan on setting up something that could create them (github actions maybe?) eventually. + +If you want to use master, you will need to build the project yourself for now, but don't worry, Godot is surpisingly easy and +hassle free to compile! [See here.](#compiling) + +After you have the engine with the required modules, you can go ahead, and just open the project inside the `game` folder. + +Usually after the initial import it will need a restart, however everything should work after that. + +## The required engine modules + +These are the required engine modules, they are listed here for completeness`s sake, the project's setup script will install these for you automatically! See the [Compiling](#compiling) section. + +https://github.com/Relintai/world_generator.git \ +https://github.com/Relintai/entity_spell_system.git \ +https://github.com/Relintai/ui_extensions.git \ +https://github.com/Relintai/texture_packer.git \ +https://github.com/Relintai/godot_fastnoise.git \ +https://github.com/Relintai/thread_pool.git + +## Compiling + +First make sure, that you have everything installed to be able to compile the engine. See: See the [official docs for compiling Godot](https://docs.godotengine.org/en/latest/development/compiling/index.html) for more info. + +Now let's clone this repository: + +``` git clone https://github.com/Relintai/broken_seals_2d ``` + +cd into the new folder: + +``` cd broken_seals ``` + +Now let's run the project's setup script, by calling scons without arguments. + +``` scons ``` + +This will clone and setup the engine, and all of the required modules into a new `engine` folder inside the project, using http. + +(If you want to use the github's ssh links append `repository_type=ssh` like ``` scons repository_type=ssh ```) + +Once it is done you can compile the engine, either by going into the engine folder and following the +[official docs](https://docs.godotengine.org/en/latest/development/compiling/index.html), or by using [build words](#build-words) without changing directories. + +Once the build finishes you can find the editor executable inside the `./engine/bin/` folder, but you can also run it using the provided `editor.sh`, +or `editor.bat` (These will create a copy, so you can compile while the editor is running). + +### Build words + +The project's setup script contains support for "build words". These can be used from the root of this project. + +For example to build the editor for windows with 4 threads you can use: + +``` scons bew -j4 ``` + +The first argument must start with b (build), then it needs to be followed by a few abbreviations (the order does not matters) + +The rest of the arguments will be passed directly to godot's scons script. + +#### Editor + +Append `e` to build with `tools=yes` a.k.a. the editor. + +``` scons bew -j4 ``` + +if you omit `e`, the system will build the export template for you. For example: + +``` scons bw -j4 ``` + +This will be the `release_debug` windows export template. + +#### Platform abbreviations + +`l`: linux \ +`w`: windows \ +`a`: android \ +`j`: Javascript \ +`i`: iphone (Not yet finished, use `build_ios.sh`, and `build_ios_release.sh`) \ +Mac OSX: Not yet finished, use `build_osx.sh` + +#### Target abbreviations + +By default the system builds in release_debug. + +Append `d` for debug, or `r` for release. + +``` scons bewd -j4 ``` + +build editor windows debug + +``` scons bwr -j4 ``` + +build windows release (this will build the windows release export template) + +#### Shared modules + +Note: This only works on linux! + +append `s` to the build string. + +Optionally you can also make the build system only build a target module, by appending one of these: + +`E`: Entity Spell System \ +`T`: Texture Packer \ +`V`: Voxelman \ +`W`: World Generator \ +`P`: Procedural Animations + +Example: + +``` scons belsE -j4 ``` + +build editor linux shared (Entity Spell System) with 4 threads + +Note: to easily run the editor you can use the `editor.sh` or `editor.bat` in the root of the project. + +#### Other + +Append `v` to pass the `vsproj=yes` parameter to the build script. This will generate Visual Studio project files. + + +#### Postfixes + +There are a few postfixes for the build words. These are more complex options. You have to append them to your build word with an underscore. + +You can use as many as you want. + +For example: + +``` scons bel_slim_latomic -j4 ``` + +##### slim + +With this postfix you can build a slimmed down version of the engine. This disables quite a few unneeded modules. + +``` scons bel_slim -j4 ``` + +##### latomic + +If you get linker errors while building the game/editor about undefined referenced with atomic related functions you can use this postfix. +It will add the ` -latomic ` command line switch to the linker flags. + +I ran into this issue while building on a raspberry pi 4 with the x11 platform. It might be related to the recent reworks to threading. + +``` scons bel_latomic -j4 ``` + +#### Scons cache, and sdk locations + +In order to use scons cache and to tell the build system where some of the required sdks are located you usually +have to use environment variables. Most of the time you might just want to add them globally, +howewer this is sometimes unfeasible (e.g. you don't have administrator access, or you just want to have +multiple sdk versions installed). + +In order to solve this a build config file was added. + +If you want to use the config simply rename the provided `build.config.example` to `build.config`, and customize +the settings inside. + +## Pulling upstream changes + +First pull the changes by calling + +``` git pull orgin master ``` + +Then just run `scons`, to will update the modules. + +## Upgrading the modules + +Note: this is how to update the HEADS file. Normally you don't need to do this. + +If you want to update the modules, and the engine to the latest, you can use (`action=update`): + +``` scons a=u ``` + +You can also update different targets: `all`, `engine`, `modules`, `all_addons`, `addons`, `third_party_addons` + +For example to update the engine to the latest: ``` scons a=u target=engine ``` \ No newline at end of file diff --git a/SConstruct b/SConstruct new file mode 100644 index 0000000..9865673 --- /dev/null +++ b/SConstruct @@ -0,0 +1,628 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Copyright (c) 2019-2021 Péter Magyar +# +# 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. + +EnsureSConsVersion(0, 98, 1) + +import sys +import os +import subprocess +import json +import shutil +import traceback + +import module_config + +repository_index = 0 +module_clone_path = '/modules/' +clone_command = 'git clone {0} {1}' + +visual_studio_call_vcvarsall = False +visual_studio_vcvarsall_path = 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build\\vcvarsall.bat' +visual_studio_arch = 'amd64' + +exports = { + 'global': [], + 'linux': [], + 'windows': [], + 'android': [], + 'javascript': [], +} + +additional_commands = { + 'global': [], + 'linux': [], + 'windows': [], + 'android': [], + 'javascript': [], +} + +target_commits = {} + +def onerror(func, path, exc_info): + """ + https://stackoverflow.com/questions/2656322/shutil-rmtree-fails-on-windows-with-access-is-denied + + Because Windows. + + Error handler for ``shutil.rmtree``. + + If the error is due to an access error (read only file) + it attempts to add write permission and then retries. + + If the error is for another reason it re-raises the error. + + Usage : ``shutil.rmtree(path, onerror=onerror)`` + """ + import stat + if not os.access(path, os.W_OK): + # Is the error an access error ? + os.chmod(path, stat.S_IWUSR) + func(path) + else: + raise + +def load_target_commits_array(): + global target_commits + + if os.path.isfile('./HEADS'): + with open('./HEADS', 'r') as infile: + target_commits = json.load(infile) + else: + target_commits = {} + +def save_target_commits_array(): + with open('./HEADS', 'w') as outfile: + json.dump(target_commits, outfile) + +def update_repository(data, clone_path, branch = 'master'): + cwd = os.getcwd() + + full_path = cwd + clone_path + data[1] + '/' + + if not os.path.isdir(full_path): + os.chdir(cwd + clone_path) + + subprocess.call(clone_command.format(data[0][repository_index], data[1]), shell=True) + + os.chdir(full_path) + + subprocess.call('git reset', shell=True) + subprocess.call('git reset --hard', shell=True) + subprocess.call('git clean -f -d', shell=True) + subprocess.call('git checkout -B ' + branch + ' origin/' + branch, shell=True) + subprocess.call('git reset', shell=True) + subprocess.call('git reset --hard', shell=True) + subprocess.call('git clean -f -d', shell=True) + subprocess.call('git pull origin ' + branch, shell=True) + + process = subprocess.Popen('git rev-parse HEAD', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + output = process.communicate()[0].decode().strip() + + if data[1] not in target_commits: + target_commits[data[1]] = {} + + target_commits[data[1]][branch] = output + + os.chdir(cwd) + +def setup_repository(data, clone_path, branch = 'master'): + cwd = os.getcwd() + + full_path = cwd + clone_path + data[1] + '/' + + if not os.path.isdir(full_path): + os.chdir(cwd + clone_path) + + subprocess.call(clone_command.format(data[0][repository_index], data[1]), shell=True) + + os.chdir(full_path) + + subprocess.call('git reset', shell=True) + subprocess.call('git reset --hard', shell=True) + subprocess.call('git clean -f -d', shell=True) + subprocess.call('git checkout -B ' + branch + ' origin/' + branch, shell=True) + subprocess.call('git pull origin ' + branch, shell=True) + subprocess.call('git reset', shell=True) + subprocess.call('git reset --hard', shell=True) + + if data[1] in target_commits: + target = target_commits[data[1]][branch] + + subprocess.call('git checkout -B ' + branch + ' ' + target, shell=True) + subprocess.call('git clean -f -d', shell=True) + subprocess.call('git reset', shell=True) + subprocess.call('git reset --hard', shell=True) + + os.chdir(cwd) + +def copy_repository(data, target_folder, clone_path): + copytree(os.path.abspath(clone_path + data[1] + '/' + data[2]), os.path.abspath(target_folder + data[1])) + +def copytree(src, dst): + for item in os.listdir(src): + sp = os.path.join(src, item) + dp = os.path.join(dst, item) + + if os.path.isdir(sp): + if os.path.isdir(dp): + shutil.rmtree(dp, onerror=onerror) + + shutil.copytree(sp, dp) + else: + if not os.path.isdir(dst): + os.makedirs(dst) + + shutil.copy2(sp, dp) + +def validate_repository_origin(data, clone_path, branch = 'master'): + full_path = os.path.abspath(clone_path) + + if not os.path.isdir(full_path): + return + + cwd = os.getcwd() + os.chdir(full_path) + + res = subprocess.run('git remote -v', shell=True, capture_output=True) + + resstr = res.stdout.decode('ascii') + resarr = resstr.split("\n") + res_orig = [] + + for l in resarr: + if "origin" in l: + res_orig.append(l) + + if len(res_orig) == 0: + print("The repository " + clone_path + " does not seem to have an origin remote. Adding it.") + + subprocess.call('git remote add origin ' + data[0][repository_index], shell=True) + + os.chdir(cwd) + + return + + for l in data[0]: + for ll in res_orig: + if l in ll: + os.chdir(cwd) + + return + + rind = 0 + + if 'git@' in res_orig[0]: + rind = 1 + + subprocess.call('git remote remove origin', shell=True) + subprocess.call('git remote add origin ' + data[0][rind], shell=True) + subprocess.call('git pull origin', shell=True) + subprocess.call('git checkout origin/' + branch, shell=True) + + print('Updated git remote origin in ' + clone_path) + + os.chdir(cwd) + +def remove_repository(data, target_folder): + folder = os.path.abspath(target_folder + data[1]) + + if os.path.isdir(folder): + shutil.rmtree(folder) + +def update_engine(): + validate_repository_origin(module_config.engine_repository, './engine/', module_config.godot_branch) + update_repository(module_config.engine_repository, '/', module_config.godot_branch) + +def update_modules(): + for rep in module_config.module_repositories: + update_repository(rep, module_clone_path) + copy_repository(rep, './engine/modules/', '.' + module_clone_path) + +def update_addons(): + for rep in module_config.addon_repositories: + update_repository(rep, module_clone_path) + copy_repository(rep, './game/addons/', '.' + module_clone_path) + +def update_addons_third_party_addons(): + for rep in module_config.third_party_addon_repositories: + update_repository(rep, module_clone_path) + copy_repository(rep, './game/addons/', '.' + module_clone_path) + +def update_all(): + update_engine() + update_modules() + update_addons() + update_addons_third_party_addons() + + save_target_commits_array() + + +def setup_engine(): + validate_repository_origin(module_config.engine_repository, './engine/', module_config.godot_branch) + setup_repository(module_config.engine_repository, '/', module_config.godot_branch) + +def setup_modules(): + for rep in module_config.module_repositories: + setup_repository(rep, module_clone_path) + copy_repository(rep, './engine/modules/', '.' + module_clone_path) + + for rep in module_config.removed_modules: + remove_repository(rep, './engine/modules/') + + +def setup_addons(): + for rep in module_config.addon_repositories: + setup_repository(rep, module_clone_path) + copy_repository(rep, './game/addons/', '.' + module_clone_path) + +def setup_addons_third_party_addons(): + for rep in module_config.third_party_addon_repositories: + setup_repository(rep, module_clone_path) + copy_repository(rep, './game/addons/', '.' + module_clone_path) + +def setup_all(): + setup_engine() + setup_modules() + setup_addons() + setup_addons_third_party_addons() + +def format_path(path): + if 'win' in sys.platform: + path = path.replace('/', '\\') + path = path.replace('~', '%userprofile%') + + return path + +def get_exports_for(platform): + export_command = 'export ' + command_separator = ';' + + if 'win' in sys.platform: + command_separator = '&' + export_command = 'set ' + + command = '' + + for p in exports[platform]: + command += export_command + p + command_separator + + return command + +def get_additional_commands_for(platform): + command_separator = ';' + + if 'win' in sys.platform: + command_separator = '&' + + command = '' + + for p in additional_commands[platform]: + command += p + command_separator + + return command + + + +def parse_config(): + global visual_studio_vcvarsall_path + global visual_studio_arch + global visual_studio_call_vcvarsall + global exports + + if not os.path.isfile('build.config'): + return + + with open('build.config', 'r') as f: + + for line in f: + ls = line.strip() + if ls == '' or ls.startswith('#'): + continue + + words = line.split() + + if (len(words) < 2): + print('This build.config line is malformed, and got ignored: ' + ls) + continue + + if words[0] == 'visual_studio_vcvarsall_path': + visual_studio_vcvarsall_path = format_path(ls[29:]) + elif words[0] == 'visual_studio_arch': + visual_studio_arch = format_path(ls[19:]) + elif words[0] == 'visual_studio_call_vcvarsall': + visual_studio_call_vcvarsall = words[1].lower() in [ 'true', '1', 't', 'y', 'yes' ] + elif words[0] == 'export': + if (len(words) < 3) or not words[1] in exports: + print('This build.config line is malformed, and got ignored: ' + ls) + continue + + export_path = format_path(ls[8 + len(words[1]):]) + + exports[words[1]].append(export_path) + elif words[0] == 'run': + if (len(words) < 3) or not words[1] in additional_commands: + print('This build.config line is malformed, and got ignored: ' + ls) + continue + + final_cmd = format_path(ls[5 + len(words[1]):]) + + additional_commands[words[1]].append(final_cmd) + +parse_config() + +env = Environment() + +if len(sys.argv) > 1: + + arg = sys.argv[1] + + arg_split = arg.split('_') + arg = arg_split[0] + arg_split = arg_split[1:] + + if arg[0] == 'b': + build_string = get_exports_for('global') + get_additional_commands_for('global') + 'scons ' + + build_string += 'tools=' + if 'e' in arg: + build_string += 'yes' + else: + build_string += 'no' + build_string += ' ' + + build_string += 'target=' + if 'r' in arg: + build_string += 'release' + elif 'd' in arg: + build_string += 'debug' + else: + build_string += 'release_debug' + build_string += ' ' + + build_string += 'custom_modules_shared=' + if 's' in arg: + build_string += 'yes' + else: + build_string += 'no' + build_string += ' ' + + if 'm' in arg: + build_string += 'use_mingw=yes' + else: + if 'win' in sys.platform and visual_studio_call_vcvarsall: + build_string = 'call "{0}" {1}&'.format(visual_studio_vcvarsall_path, visual_studio_arch) + build_string + + if 'o' in arg: + build_string += 'use_llvm=yes' + + if 'v' in arg: + build_string += 'vsproj=yes' + + for i in range(2, len(sys.argv)): + build_string += ' ' + sys.argv[i] + ' ' + + if 'slim' in arg_split: + build_string += module_config.slim_args + build_string += ' ' + + if 'latomic' in arg_split: + build_string += 'LINKFLAGS="-latomic"' + build_string += ' ' + + if 'strip' in arg_split: + build_string += 'debug_symbols=no' + build_string += ' ' + + target = ' ' + + if 'E' in arg: + target += 'bin/libess.x11.opt.tools.64.so' + elif 'T' in arg: + target += 'bin/libtexture_packer.x11.opt.tools.64.so' + elif 'V' in arg: + target += 'bin/libvoxelman.x11.opt.tools.64.so' + elif 'W' in arg: + target += 'bin/libworld_generator.x11.opt.tools.64.so' + elif 'P' in arg: + target += 'bin/libprocedural_animations.x11.opt.tools.64.so' + + cwd = os.getcwd() + full_path = cwd + '/engine/' + + if not os.path.isdir(full_path): + print('engine directory doesnt exists.') + exit() + + os.chdir(full_path) + + if 'l' in arg: + build_string += 'platform=x11' + + build_string = get_exports_for('linux') + get_additional_commands_for('linux') + build_string + target + + print('Running command: ' + build_string) + + subprocess.call(build_string, shell=True) + elif 'w' in arg: + build_string += 'platform=windows' + + build_string = get_exports_for('windows') + get_additional_commands_for('windows') + build_string + + print('Running command: ' + build_string) + + subprocess.call(build_string, shell=True) + elif 'a' in arg: + build_string += 'platform=android' + + build_string = get_exports_for('android') + get_additional_commands_for('android') + build_string + + print('Running command: ' + build_string + ' android_arch=armv7') + subprocess.call(build_string + ' android_arch=armv7', shell=True) + print('Running command: ' + build_string + ' android_arch=arm64v8') + subprocess.call(build_string + ' android_arch=arm64v8', shell=True) + print('Running command: ' + build_string + ' android_arch=x86') + subprocess.call(build_string + ' android_arch=x86', shell=True) + + os.chdir(full_path + 'platform/android/java/') + + print('Running command: ' + get_exports_for('global') + get_additional_commands_for('global') + get_exports_for('android') + get_additional_commands_for('android') + './gradlew generateGodotTemplates') + subprocess.call(get_exports_for('global') + get_additional_commands_for('global') + get_exports_for('android') + get_additional_commands_for('android') + './gradlew generateGodotTemplates', shell=True) + elif 'j' in arg: + build_string += 'platform=javascript' + + build_string = get_exports_for('javascript') + get_additional_commands_for('javascript') + build_string + + print('Running command: ' + build_string) + subprocess.call(build_string, shell=True) + elif 'i' in arg: + build_string += 'platform=iphone' + + subprocess.call(build_string + ' arch=arm', shell=True) + subprocess.call(build_string + ' arch=arm64', shell=True) + + #subprocess.call('lipo -create bin/libgodot.iphone.{0}.arm.a bin/libgodot.iphone.{0}.arm64.a -output bin/libgodot.iphone.{1}.fat.a'.fomat(), shell=True) + + #lipo -create bin/libgodot.iphone.opt.debug.arm.a bin/libgodot.iphone.opt.debug.arm64.a -output bin/libgodot.iphone.debug.fat.a + #rm bin/ios_xcode/libgodot.iphone.debug.fat.a + #cp bin/libgodot.iphone.debug.fat.a bin/ios_xcode/libgodot.iphone.debug.fat.a + + #lipo -create bin/libgodot.iphone.opt.arm.a bin/libgodot.iphone.opt.arm64.a -output bin/libgodot.iphone.release.fat.a + #rm bin/ios_xcode/libgodot.iphone.release.fat.a + #cp bin/libgodot.iphone.release.fat.a bin/ios_xcode/libgodot.iphone.release.fat.a + + subprocess.call('rm bin/iphone.zip', shell=True) + #cd bin/ios_xcode + subprocess.call(build_string + ' arch=arm64', shell=True) + subprocess.call('zip -r -X ../iphone.zip .', shell=True) + + else: + print('No platform specified') + exit() + + exit() + elif arg[0] == 'p': + if arg == 'p': + print("Applies a patch. No Patches right now.Append s for the skeleton editor patch. For example: ps ") + exit() + + cwd = os.getcwd() + full_path = cwd + '/engine/' + + if not os.path.isdir(full_path): + print('engine directory does not exists.') + exit() + + os.chdir(full_path) + + #apply the patch to just the working directory, without creating a commit + + if 's' in arg: + subprocess.call('git apply --index ../patches/custom_skeleton_3d_editor_plugin.patch', shell=True) + + #unstage all files + subprocess.call('git reset', shell=True) + + vman_full_path = cwd + '/engine/modules/voxelman/' + + #also patch voxelman as the plugin changes forward_spatial_gui_input's definition + if os.path.isdir(vman_full_path): + os.chdir(vman_full_path) + + subprocess.call('git apply --index ../../../patches/fix-voxel-editor-after-the-skeleton-editor-patch.patch', shell=True) + + #unstage all files + subprocess.call('git reset', shell=True) + else: + print('Voxelman directory does not exists, skipping patch.') + + + + exit() + +opts = Variables(args=ARGUMENTS) + +opts.Add('a', 'What to do', '') +opts.Add(EnumVariable('action', 'What to do', 'setup', ('setup', 'update'))) +opts.Add('t', 'Action target', '') +opts.Add(EnumVariable('target', 'Action target', 'all', ('all', 'engine', 'modules', 'all_addons', 'addons', 'third_party_addons'))) +opts.Add(EnumVariable('repository_type', 'Type of repositories to clone from first', 'http', ('http', 'ssh'))) + +opts.Update(env) +Help(opts.GenerateHelpText(env)) + +load_target_commits_array() + +rt = env['repository_type'] + +if rt == 'ssh': + repository_index = 1 + +action = env['action'] +target = env['target'] + +if env['a']: + action = env['a'] + +if env['t']: + target = env['t'] + +if not os.path.isdir('./modules'): + os.mkdir('./modules') + +if 'm' in action: + godot_branch = 'master' + +if 'setup' in action or action[0] == 's': + if target == 'all': + setup_all() + elif target == 'engine': + setup_engine() + elif target == 'modules': + setup_modules() + elif target == 'all_addons': + setup_addons() + setup_addons_third_party_addons() + elif target == 'addons': + setup_addons() + elif target == 'third_party_addons': + setup_addons_third_party_addons() +elif 'update' in action or action[0] == 'u': + if target == 'all': + update_all() + elif target == 'engine': + update_engine() + save_target_commits_array() + elif target == 'modules': + update_modules() + save_target_commits_array() + elif target == 'all_addons': + update_addons() + update_addons_third_party_addons() + save_target_commits_array() + elif target == 'addons': + update_addons() + save_target_commits_array() + elif target == 'third_party_addons': + update_addons_third_party_addons() + save_target_commits_array() + diff --git a/build.config.example b/build.config.example new file mode 100644 index 0000000..317567f --- /dev/null +++ b/build.config.example @@ -0,0 +1,44 @@ +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +# Rename this file to build.config to use it + +# Lines starting with # are comments. (Only works at the start of the line!) + +# Note: +# ~ will be converted to %userprofile% on windows +# / will be converted to \ on windows +# so you don't have to worry about it + +# Visual studio related setup: +visual_studio_call_vcvarsall True +visual_studio_vcvarsall_path C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Auxiliary/Build/vcvarsall.bat +visual_studio_arch amd64 + +# export related setup +# available export targets: global, linux, windows, android, javascript + +export global SCONS_CACHE=~/.scons_cache +export global SCONS_CACHE_LIMIT=5000 + +export android ANDROID_NDK_ROOT=~/SDKs/Android/NDK/android-ndk-r20b +export android ANDROID_NDK_HOME=~/SDKs/Android/NDK/android-ndk-r20b +export android ANDROID_HOME=~/SDKs/Android/SDK + diff --git a/build_ios.sh b/build_ios.sh new file mode 100755 index 0000000..6d287a4 --- /dev/null +++ b/build_ios.sh @@ -0,0 +1,19 @@ + +export SCONS_CACHE=~/.scons_cache +export SCONS_CACHE_LIMIT=5000 + +cd ./engine + +scons -j6 p=iphone tools=no target=release_debug arch=arm module_arkit_enabled=no game_center=no +scons -j6 p=iphone tools=no target=release_debug arch=arm64 module_arkit_enabled=no game_center=no +lipo -create bin/libgodot.iphone.opt.debug.arm.a bin/libgodot.iphone.opt.debug.arm64.a -output bin/libgodot.iphone.debug.fat.a +rm bin/ios_xcode/libgodot.iphone.debug.fat.a +cp bin/libgodot.iphone.debug.fat.a bin/ios_xcode/libgodot.iphone.debug.fat.a + +rm bin/iphone.zip +cd bin/ios_xcode +zip -r -X ../iphone.zip . + +cd .. +cd .. +cd .. diff --git a/build_ios_release.sh b/build_ios_release.sh new file mode 100755 index 0000000..f5d8303 --- /dev/null +++ b/build_ios_release.sh @@ -0,0 +1,21 @@ + +export SCONS_CACHE=~/.scons_cache +export SCONS_CACHE_LIMIT=5000 + +cd ./engine + +scons -j6 p=iphone tools=no target=release arch=arm module_arkit_enabled=no game_center=no +scons -j6 p=iphone tools=no target=release arch=arm64 module_arkit_enabled=no game_center=no +lipo -create bin/libgodot.iphone.opt.arm.a bin/libgodot.iphone.opt.arm64.a -output bin/libgodot.iphone.release.fat.a +rm bin/ios_xcode/libgodot.iphone.release.fat.a +cp bin/libgodot.iphone.release.fat.a bin/ios_xcode/libgodot.iphone.release.fat.a + +rm bin/iphone.zip +cd bin/ios_xcode +zip -r -X ../iphone.zip . + +cd .. +cd .. + + +cd .. diff --git a/build_osx.sh b/build_osx.sh new file mode 100755 index 0000000..fab5d0d --- /dev/null +++ b/build_osx.sh @@ -0,0 +1,15 @@ + +export SCONS_CACHE=~/.scons_cache +export SCONS_CACHE_LIMIT=5000 + +cd ./engine + +scons -j6 platform=osx target=release_debug + +rm -Rf bin/Godot.app +cp -r misc/dist/osx_tools.app ./bin/Godot.app +mkdir -p ./bin/Godot.app/Contents/MacOS +cp bin/godot.osx.opt.tools.64 bin/Godot.app/Contents/MacOS/Godot +chmod +x bin/Godot.app/Contents/MacOS/Godot + +cd .. diff --git a/build_pi.sh b/build_pi.sh new file mode 100644 index 0000000..7412965 --- /dev/null +++ b/build_pi.sh @@ -0,0 +1,6 @@ + +scons bel_latomic_strip_slim -j4 +scons bl_latomic_strip_slim -j4 +scons blr_latomic_strip_slim -j4 + + diff --git a/build_uwp.bat b/build_uwp.bat new file mode 100644 index 0000000..fde9658 --- /dev/null +++ b/build_uwp.bat @@ -0,0 +1,14 @@ + +cd ./engine + +if not defined DevEnvDir ( + rem call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86 + call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 +) + +call scons -j6 platform=uwp target=release +rem call scons -j6 platform=uwp target=release_debug +rem call scons -j6 platform=uwp target=release + +cd .. + diff --git a/editor.bat b/editor.bat new file mode 100644 index 0000000..0170b95 --- /dev/null +++ b/editor.bat @@ -0,0 +1,6 @@ + +copy "engine\bin\godot.windows.opt.tools.64.exe" "engine\bin\run_godot.windows.opt.tools.64.exe" /y +copy "engine\bin\godot.windows.opt.tools.64.pdb" "engine\bin\run_godot.windows.opt.tools.64.pdb" /y +copy "engine\bin\godot.windows.opt.tools.64.exp" "engine\bin\run_godot.windows.opt.tools.64.exp" /y + +cmd /c engine\bin\run_godot.windows.opt.tools.64.exe \ No newline at end of file diff --git a/editor.sh b/editor.sh new file mode 100755 index 0000000..ce9ff0c --- /dev/null +++ b/editor.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +cp -u ./engine/bin/godot.x11.opt.tools.64 ./engine/bin/run.godot.x11.opt.tools.64 + +export LD_LIBRARY_PATH=`pwd`/engine/bin/ +./engine/bin/run.godot.x11.opt.tools.64 -v diff --git a/export_all.sh b/export_all.sh new file mode 100755 index 0000000..702ebbe --- /dev/null +++ b/export_all.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -e + +project_root=$(pwd) + +rm -Rf ./export + +mkdir export +mkdir export/broken_seals_android_release +mkdir export/broken_seals_android_debug +mkdir export/broken_seals_linux +mkdir export/broken_seals_windows +mkdir export/broken_seals_javascript +mkdir export/broken_seals_pi4 +mkdir export/export_templates + +./engine/bin/godot.x11.opt.tools.64 --path ./game/ --export-debug Android-Release ${project_root}/export/broken_seals_android_release/broken_seals.apk +./engine/bin/godot.x11.opt.tools.64 --path ./game/ --export-debug Android ${project_root}/export/broken_seals_android_debug/broken_seals_debug.apk +./engine/bin/godot.x11.opt.tools.64 --path ./game/ --export Linux/X11 ${project_root}/export/broken_seals_linux/broken_seals_x11 +./engine/bin/godot.x11.opt.tools.64 --path ./game/ --export "Windows Desktop" ${project_root}/export/broken_seals_windows/broken_seals.exe +./engine/bin/godot.x11.opt.tools.64 --path ./game/ --export HTML5 ${project_root}/export/broken_seals_javascript/broken_seals.html +./engine/bin/godot.x11.opt.tools.64 --path ./game/ --export PI4/X11 ${project_root}/export/broken_seals_pi4/broken_seals_pi4 + +cp ./engine/bin/godot.windows.opt.tools.64.exe ${project_root}/export/godot.bs.windows.opt.tools.64.exe +cp ./engine/bin/godot.x11.opt.tools.64 ${project_root}/export/godot.bs.x11.opt.tools.64 +cp ./engine/bin/godot.x11.pi4.opt.tools.32 ${project_root}/export/godot.bs.x11.pi4.opt.tools.32 + +cp ./engine/bin/android_debug.apk ${project_root}/export/export_templates/android_debug.apk +cp ./engine/bin/android_release.apk ${project_root}/export/export_templates/android_release.apk +cp ./engine/bin/godot.javascript.opt.debug.zip ${project_root}/export/export_templates/godot.javascript.opt.debug.zip +cp ./engine/bin/godot.javascript.opt.zip ${project_root}/export/export_templates/godot.javascript.opt.zip +cp ./engine/bin/godot.windows.opt.64.exe ${project_root}/export/export_templates/godot.windows.opt.64.exe +cp ./engine/bin/godot.windows.opt.debug.64.exe ${project_root}/export/export_templates/godot.windows.opt.debug.64.exe +cp ./engine/bin/godot.x11.opt.64 ${project_root}/export/export_templates/godot.x11.opt.64 +cp ./engine/bin/godot.x11.opt.debug.64 ${project_root}/export/export_templates/godot.x11.opt.debug.64 +cp ./engine/bin/godot.x11.pi4.opt.32 ${project_root}/export/export_templates/godot.x11.pi4.opt.32 +cp ./engine/bin/godot.x11.pi4.opt.debug.32 ${project_root}/export/export_templates/godot.x11.pi4.opt.debug.32 + + diff --git a/game/.gitignore b/game/.gitignore new file mode 100644 index 0000000..e9f4f1f --- /dev/null +++ b/game/.gitignore @@ -0,0 +1,16 @@ +\exports/ +\.import/ + +addons/scene_notes/ + +addons/todo/ + +scene-notes\.ini + +todo\.cache\.ini + +todo\.config\.ini + +export_presets\.cfg + +export.cfg \ No newline at end of file diff --git a/game/Node2D.tscn b/game/Node2D.tscn new file mode 100644 index 0000000..881644b --- /dev/null +++ b/game/Node2D.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://new_rtileset.tres" type="RTileSet" id=1] + +[node name="Node2D" type="Node2D"] + +[node name="RTileMap" type="RTileMap" parent="."] +mode = 1 +tile_set = ExtResource( 1 ) +cell_size = Vector2( 32, 16 ) +format = 1 +tile_data = PoolIntArray( -10682462, 0, 131072, -10682461, 0, 131072, -10682460, 0, 131072, -10682459, 0, 131072, -10682458, 0, 131072, -10682457, 0, 131072, -10682456, 0, 131072, -10682455, 0, 131072, -10682454, 0, 131072, -10616930, 0, 131072, -10616929, 0, 131072, -10616928, 0, 131072, -10616927, 0, 131072, -10616926, 0, 131072, -10616925, 0, 131072, -10616924, 0, 131072, -10616923, 0, 131072, -10616922, 0, 131072, -10616921, 0, 131072, -10616920, 0, 131072, -10616919, 0, 131072, -10616918, 0, 131072, -10616917, 0, 131072, -10616916, 0, 131072, -10616915, 0, 131072, -10616914, 0, 131072, -10616913, 0, 131072, -10616912, 0, 131072, -10616911, 0, 131072, -10616910, 0, 131072, -10616909, 0, 131072, -10616908, 0, 131072, -10616907, 0, 131072, -10551396, 0, 131072, -10551395, 0, 131072, -10551394, 0, 131072, -10551393, 0, 131072, -10551392, 0, 131072, -10551391, 0, 131072, -10551390, 0, 131072, -10551389, 0, 131072, -10551388, 0, 131072, -10551387, 0, 131072, -10551386, 0, 131072, -10551385, 0, 131072, -10551384, 0, 131072, -10551383, 0, 131072, -10551382, 0, 131072, -10551381, 0, 131072, -10551380, 0, 131072, -10551379, 0, 131072, -10551378, 0, 131072, -10551377, 0, 131072, -10551376, 0, 131072, -10551375, 0, 131072, -10551374, 0, 131072, -10551373, 0, 131072, -10551372, 0, 131072, -10551371, 0, 131072, -10551370, 0, 131072, -10551369, 0, 131072, -10551368, 0, 131072, -10551367, 0, 131072, -10551366, 0, 131072, -10551365, 0, 131072, -10551364, 0, 131072, -10551363, 0, 131072, -10485861, 0, 131072, -10485860, 0, 131072, -10485859, 0, 131072, -10485858, 0, 131072, -10485857, 0, 131072, -10485856, 0, 131072, -10485855, 0, 131072, -10485854, 0, 131072, -10485853, 0, 131072, -10485852, 0, 131072, -10485851, 0, 131072, -10485850, 0, 131072, -10485849, 0, 131072, -10485848, 0, 131072, -10485847, 0, 131072, -10485846, 0, 131072, -10485845, 0, 131072, -10485844, 0, 131072, -10485843, 0, 131072, -10485842, 0, 131072, -10485841, 0, 131072, -10485840, 0, 131072, -10485839, 0, 131072, -10485838, 0, 131072, -10485837, 0, 131072, -10485836, 0, 131072, -10485835, 0, 131072, -10485834, 0, 131072, -10485833, 0, 131072, -10485832, 0, 131072, -10485831, 0, 131072, -10485830, 0, 131072, -10485829, 0, 131072, -10485828, 0, 131072, -10485827, 0, 131072, -10485826, 0, 131072, -10485825, 0, 131072, -10485824, 0, 131072, -10485823, 0, 131072, -10485822, 0, 131072, -10485821, 0, 131072, -10485820, 0, 131072, -10485819, 0, 131072, -10420326, 0, 131072, -10420325, 0, 131072, -10420324, 0, 131072, -10420323, 0, 131072, -10420322, 0, 131072, -10420321, 0, 131072, -10420320, 0, 131072, -10420319, 0, 131072, -10420318, 0, 131072, -10420317, 0, 131072, -10420316, 0, 131072, -10420315, 0, 131072, -10420314, 0, 131072, -10420313, 0, 131072, -10420312, 0, 131072, -10420311, 0, 131072, -10420310, 0, 131072, -10420309, 0, 131072, -10420308, 0, 131072, -10420307, 0, 131072, -10420306, 0, 131072, -10420305, 0, 131072, -10420304, 0, 131072, -10420303, 0, 131072, -10420302, 0, 131072, -10420301, 0, 131072, -10420300, 0, 131072, -10420299, 0, 131072, -10420298, 0, 131072, -10420297, 0, 131072, -10420296, 0, 131072, -10420295, 0, 131072, -10420294, 0, 131072, -10420293, 0, 131072, -10420292, 0, 131072, -10420291, 0, 131072, -10420290, 0, 131072, -10420289, 0, 131072, -10420288, 0, 131072, -10420287, 0, 131072, -10420286, 0, 131072, -10420285, 0, 131072, -10420284, 0, 131072, -10420283, 0, 131072, -10420282, 0, 131072, -10420281, 0, 131072, -10420280, 0, 131072, -10420279, 0, 131072, -10420278, 0, 131072, -10420277, 0, 131072, -10420276, 0, 131072, -10354790, 0, 131072, -10354789, 0, 131072, -10354788, 0, 131072, -10354787, 0, 131072, -10354786, 0, 131072, -10354785, 0, 131072, -10354784, 0, 131072, -10354783, 0, 131072, -10354782, 0, 131072, -10354781, 0, 131072, -10354780, 0, 131072, -10354779, 0, 131072, -10354778, 0, 131072, -10354777, 0, 131072, -10354776, 0, 131072, -10354775, 0, 131072, -10354774, 0, 131072, -10354773, 0, 131072, -10354772, 0, 131072, -10354771, 0, 131072, -10354770, 0, 131072, -10354769, 0, 131072, -10354768, 0, 131072, -10354767, 0, 131072, -10354766, 0, 131072, -10354765, 0, 131072, -10354764, 0, 131072, -10354763, 0, 131072, -10354762, 0, 131072, -10354761, 0, 131072, -10354760, 0, 131072, -10354759, 0, 131072, -10354758, 0, 131072, -10354757, 0, 131072, -10354756, 0, 131072, -10354755, 0, 131072, -10354754, 0, 131072, -10354753, 0, 131072, -10354752, 0, 131072, -10354751, 0, 131072, -10354750, 0, 131072, -10354749, 0, 131072, -10354748, 0, 131072, -10354747, 0, 131072, -10354746, 0, 131072, -10354745, 0, 131072, -10354744, 0, 131072, -10354743, 0, 131072, -10354742, 0, 131072, -10354741, 0, 131072, -10354740, 0, 131072, -10354739, 0, 131072, -10354738, 0, 131072, -10354737, 0, 131072, -10354736, 0, 131072, -10289254, 0, 131072, -10289253, 0, 131072, -10289252, 0, 131072, -10289251, 0, 131072, -10289250, 0, 131072, -10289249, 0, 131072, -10289248, 0, 131072, -10289247, 0, 131072, -10289246, 0, 131072, -10289245, 0, 131072, -10289244, 0, 131072, -10289243, 0, 131072, -10289242, 0, 131072, -10289241, 0, 131072, -10289240, 0, 131072, -10289239, 0, 131072, -10289238, 0, 131072, -10289237, 0, 131072, -10289236, 0, 131072, -10289235, 0, 131072, -10289234, 0, 131072, -10289233, 0, 131072, -10289232, 0, 131072, -10289231, 0, 131072, -10289230, 0, 131072, -10289229, 0, 131072, -10289228, 0, 131072, -10289227, 0, 131072, -10289226, 0, 131072, -10289225, 0, 131072, -10289224, 0, 131072, -10289223, 0, 131072, -10289222, 0, 131072, -10289221, 0, 131072, -10289220, 0, 131072, -10289219, 0, 131072, -10289218, 0, 131072, -10289217, 0, 131072, -10289216, 0, 131072, -10289215, 0, 131072, -10289214, 0, 131072, -10289213, 0, 131072, -10289212, 0, 131072, -10289211, 0, 131072, -10289210, 0, 131072, -10289209, 0, 131072, -10289208, 0, 131072, -10289207, 0, 131072, -10289206, 0, 131072, -10289205, 0, 131072, -10289204, 0, 131072, -10289203, 0, 131072, -10289202, 0, 131072, -10289201, 0, 131072, -10289200, 0, 131072, -10289199, 0, 131072, -10289198, 0, 131072, -10289197, 0, 131072, -10289196, 0, 131072, -10223719, 0, 131072, -10223718, 0, 131072, -10223717, 0, 131072, -10223716, 0, 131072, -10223715, 0, 131072, -10223714, 0, 131072, -10223713, 0, 131072, -10223712, 0, 131072, -10223711, 0, 131072, -10223710, 0, 131072, -10223709, 0, 131072, -10223708, 0, 131072, -10223707, 0, 131072, -10223706, 0, 131072, -10223705, 0, 131072, -10223704, 0, 131072, -10223703, 0, 131072, -10223702, 0, 131072, -10223701, 0, 131072, -10223700, 0, 131072, -10223699, 0, 131072, -10223698, 0, 131072, -10223697, 0, 131072, -10223696, 0, 131072, -10223695, 0, 131072, -10223694, 0, 131072, -10223693, 0, 131072, -10223692, 0, 131072, -10223691, 0, 131072, -10223690, 0, 131072, -10223689, 0, 131072, -10223688, 0, 131072, -10223687, 0, 131072, -10223686, 0, 131072, -10223685, 0, 131072, -10223684, 0, 131072, -10223683, 0, 131072, -10223682, 0, 131072, -10223681, 0, 131072, -10223680, 0, 131072, -10223679, 0, 131072, -10223678, 0, 131072, -10223677, 0, 131072, -10223676, 0, 131072, -10223675, 0, 131072, -10223674, 0, 131072, -10223673, 0, 131072, -10223672, 0, 131072, -10223671, 0, 131072, -10223670, 0, 131072, -10223669, 0, 131072, -10223668, 0, 131072, -10223667, 0, 131072, -10223666, 0, 131072, -10223665, 0, 131072, -10223664, 0, 131072, -10223663, 0, 131072, -10223662, 0, 131072, -10223661, 0, 131072, -10223660, 0, 131072, -10223659, 0, 131072, -10223658, 0, 131072, -10223657, 0, 131072, -10223656, 0, 131072, -10158183, 0, 131072, -10158182, 0, 131072, -10158181, 0, 131072, -10158180, 0, 131072, -10158179, 0, 131072, -10158178, 0, 131072, -10158177, 0, 131072, -10158176, 0, 131072, -10158175, 0, 131072, -10158174, 0, 131072, -10158173, 0, 131072, -10158172, 0, 131072, -10158171, 0, 131072, -10158170, 0, 131072, -10158169, 0, 131072, -10158168, 0, 131072, -10158167, 0, 131072, -10158166, 0, 131072, -10158165, 0, 131072, -10158164, 0, 131072, -10158163, 0, 131072, -10158162, 0, 131072, -10158161, 0, 131072, -10158160, 0, 131072, -10158159, 0, 131072, -10158158, 0, 131072, -10158157, 0, 131072, -10158156, 0, 131072, -10158155, 0, 131072, -10158154, 0, 131072, -10158153, 0, 131072, -10158152, 0, 131072, -10158151, 0, 131072, -10158150, 0, 131072, -10158149, 0, 131072, -10158148, 0, 131072, -10158147, 0, 131072, -10158146, 0, 131072, -10158145, 0, 131072, -10158144, 0, 131072, -10158143, 0, 131072, -10158142, 0, 131072, -10158141, 0, 131072, -10158140, 0, 131072, -10158139, 0, 131072, -10158138, 0, 131072, -10158137, 0, 131072, -10158136, 0, 131072, -10158135, 0, 131072, -10158134, 0, 131072, -10158133, 0, 131072, -10158132, 0, 131072, -10158131, 0, 131072, -10158130, 0, 131072, -10158129, 0, 131072, -10158128, 0, 131072, -10158127, 0, 131072, -10158126, 0, 131072, -10158125, 0, 131072, -10158124, 0, 131072, -10158123, 0, 131072, -10158122, 0, 131072, -10158121, 0, 131072, -10158120, 0, 131072, -10158119, 0, 131072, -10158118, 0, 131072, -10158117, 0, 131072, -10158116, 0, 131072, -10092647, 0, 131072, -10092646, 0, 131072, -10092645, 0, 131072, -10092644, 0, 131072, -10092643, 0, 131072, -10092642, 0, 131072, -10092641, 0, 131072, -10092640, 0, 131072, -10092639, 0, 131072, -10092638, 0, 131072, -10092637, 0, 131072, -10092636, 0, 131072, -10092635, 0, 131072, -10092634, 0, 131072, -10092633, 0, 131072, -10092632, 0, 131072, -10092631, 0, 131072, -10092630, 0, 131072, -10092629, 0, 131072, -10092628, 0, 131072, -10092627, 0, 131072, -10092626, 0, 131072, -10092625, 0, 131072, -10092624, 0, 131072, -10092623, 0, 131072, -10092622, 0, 131072, -10092621, 0, 131072, -10092620, 0, 131072, -10092619, 0, 131072, -10092618, 0, 131072, -10092617, 0, 131072, -10092616, 0, 131072, -10092615, 0, 131072, -10092614, 0, 131072, -10092613, 0, 131072, -10092612, 0, 131072, -10092611, 0, 131072, -10092610, 0, 131072, -10092609, 0, 131072, -10092608, 0, 131072, -10092607, 0, 131072, -10092606, 0, 131072, -10092605, 0, 131072, -10092604, 0, 131072, -10092603, 0, 131072, -10092602, 0, 131072, -10092601, 0, 131072, -10092600, 0, 131072, -10092599, 0, 131072, -10092598, 0, 131072, -10092597, 0, 131072, -10092596, 0, 131072, -10092595, 0, 131072, -10092594, 0, 131072, -10092593, 0, 131072, -10092592, 0, 131072, -10092591, 0, 131072, -10092590, 0, 131072, -10092589, 0, 131072, -10092588, 0, 131072, -10092587, 0, 131072, -10092586, 0, 131072, -10092585, 0, 131072, -10092584, 0, 131072, -10092583, 0, 131072, -10092582, 0, 131072, -10092581, 0, 131072, -10092580, 0, 131072, -10092579, 0, 131072, -10092578, 0, 131072, -10092577, 0, 131072, -10092576, 0, 131072, -10092575, 0, 131072, -10027111, 0, 131072, -10027110, 0, 131072, -10027109, 0, 131072, -10027108, 0, 131072, -10027107, 0, 131072, -10027106, 0, 131072, -10027105, 0, 131072, -10027104, 0, 131072, -10027103, 0, 131072, -10027102, 0, 131072, -10027101, 0, 131072, -10027100, 0, 131072, -10027099, 0, 131072, -10027098, 0, 131072, -10027097, 0, 131072, -10027096, 0, 131072, -10027095, 0, 131072, -10027094, 0, 131072, -10027093, 0, 131072, -10027092, 0, 131072, -10027091, 0, 131072, -10027090, 0, 131072, -10027089, 0, 131072, -10027088, 0, 131072, -10027087, 0, 131072, -10027086, 0, 131072, -10027085, 0, 131072, -10027084, 0, 131072, -10027083, 0, 131072, -10027082, 0, 131072, -10027081, 0, 131072, -10027080, 0, 131072, -10027079, 0, 131072, -10027078, 0, 131072, -10027077, 0, 131072, -10027076, 0, 131072, -10027075, 0, 131072, -10027074, 0, 131072, -10027073, 0, 131072, -10027072, 0, 131072, -10027071, 0, 131072, -10027070, 0, 131072, -10027069, 0, 131072, -10027068, 0, 131072, -10027067, 0, 131072, -10027066, 0, 131072, -10027065, 0, 131072, -10027064, 0, 131072, -10027063, 0, 131072, -10027062, 0, 131072, -10027061, 0, 131072, -10027060, 0, 131072, -10027059, 0, 131072, -10027058, 0, 131072, -10027057, 0, 131072, -10027056, 0, 131072, -10027055, 0, 131072, -10027054, 0, 131072, -10027053, 0, 131072, -10027052, 0, 131072, -10027051, 0, 131072, -10027050, 0, 131072, -10027049, 0, 131072, -10027048, 0, 131072, -10027047, 0, 131072, -10027046, 0, 131072, -10027045, 0, 131072, -10027044, 0, 131072, -10027043, 0, 131072, -10027042, 0, 131072, -10027041, 0, 131072, -10027040, 0, 131072, -10027039, 0, 131072, -10027038, 0, 131072, -10027037, 0, 131072, -10027036, 0, 131072, -10027035, 0, 131072, -9961576, 0, 131072, -9961575, 0, 131072, -9961574, 0, 131072, -9961573, 0, 131072, -9961572, 0, 131072, -9961571, 0, 131072, -9961570, 0, 131072, -9961569, 0, 131072, -9961568, 0, 131072, -9961567, 0, 131072, -9961566, 0, 131072, -9961565, 0, 131072, -9961564, 0, 131072, -9961563, 0, 131072, -9961562, 0, 131072, -9961561, 0, 131072, -9961560, 0, 131072, -9961559, 0, 131072, -9961558, 0, 131072, -9961557, 0, 131072, -9961556, 0, 131072, -9961555, 0, 131072, -9961554, 0, 131072, -9961553, 0, 131072, -9961552, 0, 131072, -9961551, 0, 131072, -9961550, 0, 131072, -9961549, 0, 131072, -9961548, 0, 131072, -9961547, 0, 131072, -9961546, 0, 131072, -9961545, 0, 131072, -9961544, 0, 131072, -9961543, 0, 131072, -9961542, 0, 131072, -9961541, 0, 131072, -9961540, 0, 131072, -9961539, 0, 131072, -9961538, 0, 131072, -9961537, 0, 131072, -9961536, 0, 131072, -9961535, 0, 131072, -9961534, 0, 131072, -9961533, 0, 131072, -9961532, 0, 131072, -9961531, 0, 131072, -9961530, 0, 131072, -9961529, 0, 131072, -9961528, 0, 131072, -9961527, 0, 131072, -9961526, 0, 131072, -9961525, 0, 131072, -9961524, 0, 131072, -9961523, 0, 131072, -9961522, 0, 131072, -9961521, 0, 131072, -9961520, 0, 131072, -9961519, 0, 131072, -9961518, 0, 131072, -9961517, 0, 131072, -9961516, 0, 131072, -9961515, 0, 131072, -9961514, 0, 131072, -9961513, 0, 131072, -9961512, 0, 131072, -9961511, 0, 131072, -9961510, 0, 131072, -9961509, 0, 131072, -9961508, 0, 131072, -9961507, 0, 131072, -9961506, 0, 131072, -9961505, 0, 131072, -9961504, 0, 131072, -9961503, 0, 131072, -9961502, 0, 131072, -9961501, 0, 131072, -9961500, 0, 131072, -9961499, 0, 131072, -9961498, 0, 131072, -9961497, 0, 131072, -9961496, 0, 131072, -9961495, 0, 131072, -9896040, 0, 131072, -9896039, 0, 131072, -9896038, 0, 131072, -9896037, 0, 131072, -9896036, 0, 131072, -9896035, 0, 131072, -9896034, 0, 131072, -9896033, 0, 131072, -9896032, 0, 131072, -9896031, 0, 131072, -9896030, 0, 131072, -9896029, 0, 131072, -9896028, 0, 131072, -9896027, 0, 131072, -9896026, 0, 131072, -9896025, 0, 131072, -9896024, 0, 131072, -9896023, 0, 131072, -9896022, 0, 131072, -9896021, 0, 131072, -9896020, 0, 131072, -9896019, 0, 131072, -9896018, 0, 131072, -9896017, 0, 131072, -9896016, 0, 131072, -9896015, 0, 131072, -9896014, 0, 131072, -9896013, 0, 131072, -9896012, 0, 131072, -9896011, 0, 131072, -9896010, 0, 131072, -9896009, 0, 131072, -9896008, 0, 131072, -9896007, 0, 131072, -9896006, 0, 131072, -9896005, 0, 131072, -9896004, 0, 131072, -9896003, 0, 131072, -9896002, 0, 131072, -9896001, 0, 131072, -9896000, 0, 131072, -9895999, 0, 131072, -9895998, 0, 131072, -9895997, 0, 131072, -9895996, 0, 131072, -9895995, 0, 131072, -9895994, 0, 131072, -9895993, 0, 131072, -9895992, 0, 131072, -9895991, 0, 131072, -9895990, 0, 131072, -9895989, 0, 131072, -9895988, 0, 131072, -9895987, 0, 131072, -9895986, 0, 131072, -9895985, 0, 131072, -9895984, 0, 131072, -9895983, 0, 131072, -9895982, 0, 131072, -9895981, 0, 131072, -9895980, 0, 131072, -9895979, 0, 131072, -9895978, 0, 131072, -9895977, 0, 131072, -9895976, 0, 131072, -9895975, 0, 131072, -9895974, 0, 131072, -9895973, 0, 131072, -9895972, 0, 131072, -9895971, 0, 131072, -9895970, 0, 131072, -9895969, 0, 131072, -9895968, 0, 131072, -9895967, 0, 131072, -9895966, 0, 131072, -9895965, 0, 131072, -9895964, 0, 131072, -9895963, 0, 131072, -9895962, 0, 131072, -9895961, 0, 131072, -9895960, 0, 131072, -9895959, 0, 131072, -9895958, 0, 131072, -9895957, 0, 131072, -9895956, 0, 131072, -9895955, 0, 131072, -9830504, 0, 131072, -9830503, 0, 131072, -9830502, 0, 131072, -9830501, 0, 131072, -9830500, 0, 131072, -9830499, 0, 131072, -9830498, 0, 131072, -9830497, 0, 131072, -9830496, 0, 131072, -9830495, 0, 131072, -9830494, 0, 131072, -9830493, 0, 131072, -9830492, 0, 131072, -9830491, 0, 131072, -9830490, 0, 131072, -9830489, 0, 131072, -9830488, 0, 131072, -9830487, 0, 131072, -9830486, 0, 131072, -9830485, 0, 131072, -9830484, 0, 131072, -9830483, 0, 131072, -9830482, 0, 131072, -9830481, 0, 131072, -9830480, 0, 131072, -9830479, 0, 131072, -9830478, 0, 131072, -9830477, 0, 131072, -9830476, 0, 131072, -9830475, 0, 131072, -9830474, 0, 131072, -9830473, 0, 131072, -9830472, 0, 131072, -9830471, 0, 131072, -9830470, 0, 131072, -9830469, 0, 131072, -9830468, 0, 131072, -9830467, 0, 131072, -9830466, 0, 131072, -9830465, 0, 131072, -9830464, 0, 131072, -9830463, 0, 131072, -9830462, 0, 131072, -9830461, 0, 131072, -9830460, 0, 131072, -9830459, 0, 131072, -9830458, 0, 131072, -9830457, 0, 131072, -9830456, 0, 131072, -9830455, 0, 131072, -9830454, 0, 131072, -9830453, 0, 131072, -9830452, 0, 131072, -9830451, 0, 131072, -9830450, 0, 131072, -9830449, 0, 131072, -9830448, 0, 131072, -9830447, 0, 131072, -9830446, 0, 131072, -9830445, 0, 131072, -9830444, 0, 131072, -9830443, 0, 131072, -9830442, 0, 131072, -9830441, 0, 131072, -9830440, 0, 131072, -9830439, 0, 131072, -9830438, 0, 131072, -9830437, 0, 131072, -9830436, 0, 131072, -9830435, 0, 131072, -9830434, 0, 131072, -9830433, 0, 131072, -9830432, 0, 131072, -9830431, 0, 131072, -9830430, 0, 131072, -9830429, 0, 131072, -9830428, 0, 131072, -9830427, 0, 131072, -9830426, 0, 131072, -9830425, 0, 131072, -9830424, 0, 131072, -9830423, 0, 131072, -9830422, 0, 131072, -9830421, 0, 131072, -9830420, 0, 131072, -9830419, 0, 131072, -9830418, 0, 131072, -9830417, 0, 131072, -9830416, 0, 131072, -9830415, 0, 131072, -9764968, 0, 131072, -9764967, 0, 131072, -9764966, 0, 131072, -9764965, 0, 131072, -9764964, 0, 131072, -9764963, 0, 131072, -9764962, 0, 131072, -9764961, 0, 131072, -9764960, 0, 131072, -9764959, 0, 131072, -9764958, 0, 131072, -9764957, 0, 131072, -9764956, 0, 131072, -9764955, 0, 131072, -9764954, 0, 131072, -9764953, 0, 131072, -9764952, 0, 131072, -9764951, 0, 131072, -9764950, 0, 131072, -9764949, 0, 131072, -9764948, 0, 131072, -9764947, 0, 131072, -9764946, 0, 131072, -9764945, 0, 131072, -9764944, 0, 131072, -9764943, 0, 131072, -9764942, 0, 131072, -9764941, 0, 131072, -9764940, 0, 131072, -9764939, 0, 131072, -9764938, 0, 131072, -9764937, 0, 131072, -9764936, 0, 131072, -9764935, 0, 131072, -9764934, 0, 131072, -9764933, 0, 131072, -9764932, 0, 131072, -9764931, 0, 131072, -9764930, 0, 131072, -9764929, 0, 131072, -9764928, 0, 131072, -9764927, 0, 131072, -9764926, 0, 131072, -9764925, 0, 131072, -9764924, 0, 131072, -9764923, 0, 131072, -9764922, 0, 131072, -9764921, 0, 131072, -9764920, 0, 131072, -9764919, 0, 131072, -9764918, 0, 131072, -9764917, 0, 131072, -9764916, 0, 131072, -9764915, 0, 131072, -9764914, 0, 131072, -9764913, 0, 131072, -9764912, 0, 131072, -9764911, 0, 131072, -9764910, 0, 131072, -9764909, 0, 131072, -9764908, 0, 131072, -9764907, 0, 131072, -9764906, 0, 131072, -9764905, 0, 131072, -9764904, 0, 131072, -9764903, 0, 131072, -9764902, 0, 131072, -9764901, 0, 131072, -9764900, 0, 131072, -9764899, 0, 131072, -9764898, 0, 131072, -9764897, 0, 131072, -9764896, 0, 131072, -9764895, 0, 131072, -9764894, 0, 131072, -9764893, 0, 131072, -9764892, 0, 131072, -9764891, 0, 131072, -9764890, 0, 131072, -9764889, 0, 131072, -9764888, 0, 131072, -9764887, 0, 131072, -9764886, 0, 131072, -9764885, 0, 131072, -9764884, 0, 131072, -9764883, 0, 131072, -9764882, 0, 131072, -9764881, 0, 131072, -9764880, 0, 131072, -9764879, 0, 131072, -9764878, 0, 131072, -9764877, 0, 131072, -9764876, 0, 131072, -9699432, 0, 131072, -9699431, 0, 131072, -9699430, 0, 131072, -9699429, 0, 131072, -9699428, 0, 131072, -9699427, 0, 131072, -9699426, 0, 131072, -9699425, 0, 131072, -9699424, 0, 131072, -9699423, 0, 131072, -9699422, 0, 131072, -9699421, 0, 131072, -9699420, 0, 131072, -9699419, 0, 131072, -9699418, 0, 131072, -9699417, 0, 131072, -9699416, 0, 131072, -9699415, 0, 131072, -9699414, 0, 131072, -9699413, 0, 131072, -9699412, 0, 131072, -9699411, 0, 131072, -9699410, 0, 131072, -9699409, 0, 131072, -9699408, 0, 131072, -9699407, 0, 131072, -9699406, 0, 131072, -9699405, 0, 131072, -9699404, 0, 131072, -9699403, 0, 131072, -9699402, 0, 131072, -9699401, 0, 131072, -9699400, 0, 131072, -9699399, 0, 131072, -9699398, 0, 131072, -9699397, 0, 131072, -9699396, 0, 131072, -9699395, 0, 131072, -9699394, 0, 131072, -9699393, 0, 131072, -9699392, 0, 131072, -9699391, 0, 131072, -9699390, 0, 131072, -9699389, 0, 131072, -9699388, 0, 131072, -9699387, 0, 131072, -9699386, 0, 131072, -9699385, 0, 131072, -9699384, 0, 131072, -9699383, 0, 131072, -9699382, 0, 131072, -9699381, 0, 131072, -9699380, 0, 131072, -9699379, 0, 131072, -9699378, 0, 131072, -9699377, 0, 131072, -9699376, 0, 131072, -9699375, 0, 131072, -9699374, 0, 131072, -9699373, 0, 131072, -9699372, 0, 131072, -9699371, 0, 131072, -9699370, 0, 131072, -9699369, 0, 131072, -9699368, 0, 131072, -9699367, 0, 131072, -9699366, 0, 131072, -9699365, 0, 131072, -9699364, 0, 131072, -9699363, 0, 131072, -9699362, 0, 131072, -9699361, 0, 131072, -9699360, 0, 131072, -9699359, 0, 131072, -9699358, 0, 131072, -9699357, 0, 131072, -9699356, 0, 131072, -9699355, 0, 131072, -9699354, 0, 131072, -9699353, 0, 131072, -9699352, 0, 131072, -9699351, 0, 131072, -9699350, 0, 131072, -9699349, 0, 131072, -9699348, 0, 131072, -9699347, 0, 131072, -9699346, 0, 131072, -9699345, 0, 131072, -9699344, 0, 131072, -9699343, 0, 131072, -9699342, 0, 131072, -9699341, 0, 131072, -9699340, 0, 131072, -9699339, 0, 131072, -9699338, 0, 131072, -9699337, 0, 131072, -9633897, 0, 131072, -9633896, 0, 131072, -9633895, 0, 131072, -9633894, 0, 131072, -9633893, 0, 131072, -9633892, 0, 131072, -9633891, 0, 131072, -9633890, 0, 131072, -9633889, 0, 131072, -9633888, 0, 131072, -9633887, 0, 131072, -9633886, 0, 131072, -9633885, 0, 131072, -9633884, 0, 131072, -9633883, 0, 131072, -9633882, 0, 131072, -9633881, 0, 131072, -9633880, 0, 131072, -9633879, 0, 131072, -9633878, 0, 131072, -9633877, 0, 131072, -9633876, 0, 131072, -9633875, 0, 131072, -9633874, 0, 131072, -9633873, 0, 131072, -9633872, 0, 131072, -9633871, 0, 131072, -9633870, 0, 131072, -9633869, 0, 131072, -9633868, 0, 131072, -9633867, 0, 131072, -9633866, 0, 131072, -9633865, 0, 131072, -9633864, 0, 131072, -9633863, 0, 131072, -9633862, 0, 131072, -9633861, 0, 131072, -9633860, 0, 131072, -9633859, 0, 131072, -9633858, 0, 131072, -9633857, 0, 131072, -9633856, 0, 131072, -9633855, 0, 131072, -9633854, 0, 131072, -9633853, 0, 131072, -9633852, 0, 131072, -9633851, 0, 131072, -9633850, 0, 131072, -9633849, 0, 131072, -9633848, 0, 131072, -9633847, 0, 131072, -9633846, 0, 131072, -9633845, 0, 131072, -9633844, 0, 131072, -9633843, 0, 131072, -9633842, 0, 131072, -9633841, 0, 131072, -9633840, 0, 131072, -9633839, 0, 131072, -9633838, 0, 131072, -9633837, 0, 131072, -9633836, 0, 131072, -9633835, 0, 131072, -9633834, 0, 131072, -9633833, 0, 131072, -9633832, 0, 131072, -9633831, 0, 131072, -9633830, 0, 131072, -9633829, 0, 131072, -9633828, 0, 131072, -9633827, 0, 131072, -9633826, 0, 131072, -9633825, 0, 131072, -9633824, 0, 131072, -9633823, 0, 131072, -9633822, 0, 131072, -9633821, 0, 131072, -9633820, 0, 131072, -9633819, 0, 131072, -9633818, 0, 131072, -9633817, 0, 131072, -9633816, 0, 131072, -9633815, 0, 131072, -9633814, 0, 131072, -9633813, 0, 131072, -9633812, 0, 131072, -9633811, 0, 131072, -9633810, 0, 131072, -9633809, 0, 131072, -9633808, 0, 131072, -9633807, 0, 131072, -9633806, 0, 131072, -9633805, 0, 131072, -9633804, 0, 131072, -9633803, 0, 131072, -9633802, 0, 131072, -9633801, 0, 131072, -9633800, 0, 131072, -9633799, 0, 131072, -9633798, 0, 131072, -9568361, 0, 131072, -9568360, 0, 131072, -9568359, 0, 131072, -9568358, 0, 131072, -9568357, 0, 131072, -9568356, 0, 131072, -9568355, 0, 131072, -9568354, 0, 131072, -9568353, 0, 131072, -9568352, 0, 131072, -9568351, 0, 131072, -9568350, 0, 131072, -9568349, 0, 131072, -9568348, 0, 131072, -9568347, 0, 131072, -9568346, 0, 131072, -9568345, 0, 131072, -9568344, 0, 131072, -9568343, 0, 131072, -9568342, 0, 131072, -9568341, 0, 131072, -9568340, 0, 131072, -9568339, 0, 131072, -9568338, 0, 131072, -9568337, 0, 131072, -9568336, 0, 131072, -9568335, 0, 131072, -9568334, 0, 131072, -9568333, 0, 131072, -9568332, 0, 131072, -9568331, 0, 131072, -9568330, 0, 131072, -9568329, 0, 131072, -9568328, 0, 131072, -9568327, 0, 131072, -9568326, 0, 131072, -9568325, 0, 131072, -9568324, 0, 131072, -9568323, 0, 131072, -9568322, 0, 131072, -9568321, 0, 131072, -9568320, 0, 131072, -9568319, 0, 131072, -9568318, 0, 131072, -9568317, 0, 131072, -9568316, 0, 131072, -9568315, 0, 131072, -9568314, 0, 131072, -9568313, 0, 131072, -9568312, 0, 131072, -9568311, 0, 131072, -9568310, 0, 131072, -9568309, 0, 131072, -9568308, 0, 131072, -9568307, 0, 131072, -9568306, 0, 131072, -9568305, 0, 131072, -9568304, 0, 131072, -9568303, 0, 131072, -9568302, 0, 131072, -9568301, 0, 131072, -9568300, 0, 131072, -9568299, 0, 131072, -9568298, 0, 131072, -9568297, 0, 131072, -9568296, 0, 131072, -9568295, 0, 131072, -9568294, 0, 131072, -9568293, 0, 131072, -9568292, 0, 131072, -9568291, 0, 131072, -9568290, 0, 131072, -9568289, 0, 131072, -9568288, 0, 131072, -9568287, 0, 131072, -9568286, 0, 131072, -9568285, 0, 131072, -9568284, 0, 131072, -9568283, 0, 131072, -9568282, 0, 131072, -9568281, 0, 131072, -9568280, 0, 131072, -9568279, 0, 131072, -9568278, 0, 131072, -9568277, 0, 131072, -9568276, 0, 131072, -9568275, 0, 131072, -9568274, 0, 131072, -9568273, 0, 131072, -9568272, 0, 131072, -9568271, 0, 131072, -9568270, 0, 131072, -9568269, 0, 131072, -9568268, 0, 131072, -9568267, 0, 131072, -9568266, 0, 131072, -9568265, 0, 131072, -9568264, 0, 131072, -9568263, 0, 131072, -9568262, 0, 131072, -9568261, 0, 131072, -9568260, 0, 131072, -9568259, 0, 131072, -9502825, 0, 131072, -9502824, 0, 131072, -9502823, 0, 131072, -9502822, 0, 131072, -9502821, 0, 131072, -9502820, 0, 131072, -9502819, 0, 131072, -9502818, 0, 131072, -9502817, 0, 131072, -9502816, 0, 131072, -9502815, 0, 131072, -9502814, 0, 131072, -9502813, 0, 131072, -9502812, 0, 131072, -9502811, 0, 131072, -9502810, 0, 131072, -9502809, 0, 131072, -9502808, 0, 131072, -9502807, 0, 131072, -9502806, 0, 131072, -9502805, 0, 131072, -9502804, 0, 131072, -9502803, 0, 131072, -9502802, 0, 131072, -9502801, 0, 131072, -9502800, 0, 131072, -9502799, 0, 131072, -9502798, 0, 131072, -9502797, 0, 131072, -9502796, 0, 131072, -9502795, 0, 131072, -9502794, 0, 131072, -9502793, 0, 131072, -9502792, 0, 131072, -9502791, 0, 131072, -9502790, 0, 131072, -9502789, 0, 131072, -9502788, 0, 131072, -9502787, 0, 131072, -9502786, 0, 131072, -9502785, 0, 131072, -9502784, 0, 131072, -9502783, 0, 131072, -9502782, 0, 131072, -9502781, 0, 131072, -9502780, 0, 131072, -9502779, 0, 131072, -9502778, 0, 131072, -9502777, 0, 131072, -9502776, 0, 131072, -9502775, 0, 131072, -9502774, 0, 131072, -9502773, 0, 131072, -9502772, 0, 131072, -9502771, 0, 131072, -9502770, 0, 131072, -9502769, 0, 131072, -9502768, 0, 131072, -9502767, 0, 131072, -9502766, 0, 131072, -9502765, 0, 131072, -9502764, 0, 131072, -9502763, 0, 131072, -9502762, 0, 131072, -9502761, 0, 131072, -9502760, 0, 131072, -9502759, 0, 131072, -9502758, 0, 131072, -9502757, 0, 131072, -9502756, 0, 131072, -9502755, 0, 131072, -9502754, 0, 131072, -9502753, 0, 131072, -9502752, 0, 131072, -9502751, 0, 131072, -9502750, 0, 131072, -9502749, 0, 131072, -9502748, 0, 131072, -9502747, 0, 131072, -9502746, 0, 131072, -9502745, 0, 131072, -9502744, 0, 131072, -9502743, 0, 131072, -9502742, 0, 131072, -9502741, 0, 131072, -9502740, 0, 131072, -9502739, 0, 131072, -9502738, 0, 131072, -9502737, 0, 131072, -9502736, 0, 131072, -9502735, 0, 131072, -9502734, 0, 131072, -9502733, 0, 131072, -9502732, 0, 131072, -9502731, 0, 131072, -9502730, 0, 131072, -9502729, 0, 131072, -9502728, 0, 131072, -9502727, 0, 131072, -9502726, 0, 131072, -9502725, 0, 131072, -9502724, 0, 131072, -9502723, 0, 131072, -9502722, 0, 131072, -9502721, 0, 131072, -9568256, 0, 131072, -9437289, 0, 131072, -9437288, 0, 131072, -9437287, 0, 131072, -9437286, 0, 131072, -9437285, 0, 131072, -9437284, 0, 131072, -9437283, 0, 131072, -9437282, 0, 131072, -9437281, 0, 131072, -9437280, 0, 131072, -9437279, 0, 131072, -9437278, 0, 131072, -9437277, 0, 131072, -9437276, 0, 131072, -9437275, 0, 131072, -9437274, 0, 131072, -9437273, 0, 131072, -9437272, 0, 131072, -9437271, 0, 131072, -9437270, 0, 131072, -9437269, 0, 131072, -9437268, 0, 131072, -9437267, 0, 131072, -9437266, 0, 131072, -9437265, 0, 131072, -9437264, 0, 131072, -9437263, 0, 131072, -9437262, 0, 131072, -9437261, 0, 131072, -9437260, 0, 131072, -9437259, 0, 131072, -9437258, 0, 131072, -9437257, 0, 131072, -9437256, 0, 131072, -9437255, 0, 131072, -9437254, 0, 131072, -9437253, 0, 131072, -9437252, 0, 131072, -9437251, 0, 131072, -9437250, 0, 131072, -9437249, 0, 131072, -9437248, 0, 131072, -9437247, 0, 131072, -9437246, 0, 131072, -9437245, 0, 131072, -9437244, 0, 131072, -9437243, 0, 131072, -9437242, 0, 131072, -9437241, 0, 131072, -9437240, 0, 131072, -9437239, 0, 131072, -9437238, 0, 131072, -9437237, 0, 131072, -9437236, 0, 131072, -9437235, 0, 131072, -9437234, 0, 131072, -9437233, 0, 131072, -9437232, 0, 131072, -9437231, 0, 131072, -9437230, 0, 131072, -9437229, 0, 131072, -9437228, 0, 131072, -9437227, 0, 131072, -9437226, 0, 131072, -9437225, 0, 131072, -9437224, 0, 131072, -9437223, 0, 131072, -9437222, 0, 131072, -9437221, 0, 131072, -9437220, 0, 131072, -9437219, 0, 131072, -9437218, 0, 131072, -9437217, 0, 131072, -9437216, 0, 131072, -9437215, 0, 131072, -9437214, 0, 131072, -9437213, 0, 131072, -9437212, 0, 131072, -9437211, 0, 131072, -9437210, 0, 131072, -9437209, 0, 131072, -9437208, 0, 131072, -9437207, 0, 131072, -9437206, 0, 131072, -9437205, 0, 131072, -9437204, 0, 131072, -9437203, 0, 131072, -9437202, 0, 131072, -9437201, 0, 131072, -9437200, 0, 131072, -9437199, 0, 131072, -9437198, 0, 131072, -9437197, 0, 131072, -9437196, 0, 131072, -9437195, 0, 131072, -9437194, 0, 131072, -9437193, 0, 131072, -9437192, 0, 131072, -9437191, 0, 131072, -9437190, 0, 131072, -9437189, 0, 131072, -9437188, 0, 131072, -9437187, 0, 131072, -9437186, 0, 131072, -9437185, 0, 131072, -9502720, 0, 131072, -9502719, 0, 131072, -9502718, 0, 131072, -9502717, 0, 131072, -9371754, 0, 131072, -9371753, 0, 131072, -9371752, 0, 131072, -9371751, 0, 131072, -9371750, 0, 131072, -9371749, 0, 131072, -9371748, 0, 131072, -9371747, 0, 131072, -9371746, 0, 131072, -9371745, 0, 131072, -9371744, 0, 131072, -9371743, 0, 131072, -9371742, 0, 131072, -9371741, 0, 131072, -9371740, 0, 131072, -9371739, 0, 131072, -9371738, 0, 131072, -9371737, 0, 131072, -9371736, 0, 131072, -9371735, 0, 131072, -9371734, 0, 131072, -9371733, 0, 131072, -9371732, 0, 131072, -9371731, 0, 131072, -9371730, 0, 131072, -9371729, 0, 131072, -9371728, 0, 131072, -9371727, 0, 131072, -9371726, 0, 131072, -9371725, 0, 131072, -9371724, 0, 131072, -9371723, 0, 131072, -9371722, 0, 131072, -9371721, 0, 131072, -9371720, 0, 131072, -9371719, 0, 131072, -9371718, 0, 131072, -9371717, 0, 131072, -9371716, 0, 131072, -9371715, 0, 131072, -9371714, 0, 131072, -9371713, 0, 131072, -9371712, 0, 131072, -9371711, 0, 131072, -9371710, 0, 131072, -9371709, 0, 131072, -9371708, 0, 131072, -9371707, 0, 131072, -9371706, 0, 131072, -9371705, 0, 131072, -9371704, 0, 131072, -9371703, 0, 131072, -9371702, 0, 131072, -9371701, 0, 131072, -9371700, 0, 131072, -9371699, 0, 131072, -9371698, 0, 131072, -9371697, 0, 131072, -9371696, 0, 131072, -9371695, 0, 131072, -9371694, 0, 131072, -9371693, 0, 131072, -9371692, 0, 131072, -9371691, 0, 131072, -9371690, 0, 131072, -9371689, 0, 131072, -9371688, 0, 131072, -9371687, 0, 131072, -9371686, 0, 131072, -9371685, 0, 131072, -9371684, 0, 131072, -9371683, 0, 131072, -9371682, 0, 131072, -9371681, 0, 131072, -9371680, 0, 131072, -9371679, 0, 131072, -9371678, 0, 131072, -9371677, 0, 131072, -9371676, 0, 131072, -9371675, 0, 131072, -9371674, 0, 131072, -9371673, 0, 131072, -9371672, 0, 131072, -9371671, 0, 131072, -9371670, 0, 131072, -9371669, 0, 131072, -9371668, 0, 131072, -9371667, 0, 131072, -9371666, 0, 131072, -9371665, 0, 131072, -9371664, 0, 131072, -9371663, 0, 131072, -9371662, 0, 131072, -9371661, 0, 131072, -9371660, 0, 131072, -9371659, 0, 131072, -9371658, 0, 131072, -9371657, 0, 131072, -9371656, 0, 131072, -9371655, 0, 131072, -9371654, 0, 131072, -9371653, 0, 131072, -9371652, 0, 131072, -9371651, 0, 131072, -9371650, 0, 131072, -9371649, 0, 131072, -9437184, 0, 131072, -9437183, 0, 131072, -9437182, 0, 131072, -9437181, 0, 131072, -9437180, 0, 131072, -9437179, 0, 131072, -9306218, 0, 131072, -9306217, 0, 131072, -9306216, 0, 131072, -9306215, 0, 131072, -9306214, 0, 131072, -9306213, 0, 131072, -9306212, 0, 131072, -9306211, 0, 131072, -9306210, 0, 131072, -9306209, 0, 131072, -9306208, 0, 131072, -9306207, 0, 131072, -9306206, 0, 131072, -9306205, 0, 131072, -9306204, 0, 131072, -9306203, 0, 131072, -9306202, 0, 131072, -9306201, 0, 131072, -9306200, 0, 131072, -9306199, 0, 131072, -9306198, 0, 131072, -9306197, 0, 131072, -9306196, 0, 131072, -9306195, 0, 131072, -9306194, 0, 131072, -9306193, 0, 131072, -9306192, 0, 131072, -9306191, 0, 131072, -9306190, 0, 131072, -9306189, 0, 131072, -9306188, 0, 131072, -9306187, 0, 131072, -9306186, 0, 131072, -9306185, 0, 131072, -9306184, 0, 131072, -9306183, 0, 131072, -9306182, 0, 131072, -9306181, 0, 131072, -9306180, 0, 131072, -9306179, 0, 131072, -9306178, 0, 131072, -9306177, 0, 131072, -9306176, 0, 131072, -9306175, 0, 131072, -9306174, 0, 131072, -9306173, 0, 131072, -9306172, 0, 131072, -9306171, 0, 131072, -9306170, 0, 131072, -9306169, 0, 131072, -9306168, 0, 131072, -9306167, 0, 131072, -9306166, 0, 131072, -9306165, 0, 131072, -9306164, 0, 131072, -9306163, 0, 131072, -9306162, 0, 131072, -9306161, 0, 131072, -9306160, 0, 131072, -9306159, 0, 131072, -9306158, 0, 131072, -9306157, 0, 131072, -9306156, 0, 131072, -9306155, 0, 131072, -9306154, 0, 131072, -9306153, 0, 131072, -9306152, 0, 131072, -9306151, 0, 131072, -9306150, 0, 131072, -9306149, 0, 131072, -9306148, 0, 131072, -9306147, 0, 131072, -9306146, 0, 131072, -9306145, 0, 131072, -9306144, 0, 131072, -9306143, 0, 131072, -9306142, 0, 131072, -9306141, 0, 131072, -9306140, 0, 131072, -9306139, 0, 131072, -9306138, 0, 131072, -9306137, 0, 131072, -9306136, 0, 131072, -9306135, 0, 131072, -9306134, 0, 131072, -9306133, 0, 131072, -9306132, 0, 131072, -9306131, 0, 131072, -9306130, 0, 131072, -9306129, 0, 131072, -9306128, 0, 131072, -9306127, 0, 131072, -9306126, 0, 131072, -9306125, 0, 131072, -9306124, 0, 131072, -9306123, 0, 131072, -9306122, 0, 131072, -9306121, 0, 131072, -9306120, 0, 131072, -9306119, 0, 131072, -9306118, 0, 131072, -9306117, 0, 131072, -9306116, 0, 131072, -9306115, 0, 131072, -9306114, 0, 131072, -9306113, 0, 131072, -9371648, 0, 131072, -9371647, 0, 131072, -9371646, 0, 131072, -9371645, 0, 131072, -9371644, 0, 131072, -9371643, 0, 131072, -9371642, 0, 131072, -9371641, 0, 131072, -9371640, 0, 131072, -9240682, 0, 131072, -9240681, 0, 131072, -9240680, 0, 131072, -9240679, 0, 131072, -9240678, 0, 131072, -9240677, 0, 131072, -9240676, 0, 131072, -9240675, 0, 131072, -9240674, 0, 131072, -9240673, 0, 131072, -9240672, 0, 131072, -9240671, 0, 131072, -9240670, 0, 131072, -9240669, 0, 131072, -9240668, 0, 131072, -9240667, 0, 131072, -9240666, 0, 131072, -9240665, 0, 131072, -9240664, 0, 131072, -9240663, 0, 131072, -9240662, 0, 131072, -9240661, 0, 131072, -9240660, 0, 131072, -9240659, 0, 131072, -9240658, 0, 131072, -9240657, 0, 131072, -9240656, 0, 131072, -9240655, 0, 131072, -9240654, 0, 131072, -9240653, 0, 131072, -9240652, 0, 131072, -9240651, 0, 131072, -9240650, 0, 131072, -9240649, 0, 131072, -9240648, 0, 131072, -9240647, 0, 131072, -9240646, 0, 131072, -9240645, 0, 131072, -9240644, 0, 131072, -9240643, 0, 131072, -9240642, 0, 131072, -9240641, 0, 131072, -9240640, 0, 131072, -9240639, 0, 131072, -9240638, 0, 131072, -9240637, 0, 131072, -9240636, 0, 131072, -9240635, 0, 131072, -9240634, 0, 131072, -9240633, 0, 131072, -9240632, 0, 131072, -9240631, 0, 131072, -9240630, 0, 131072, -9240629, 0, 131072, -9240628, 0, 131072, -9240627, 0, 131072, -9240626, 0, 131072, -9240625, 0, 131072, -9240624, 0, 131072, -9240623, 0, 131072, -9240622, 0, 131072, -9240621, 0, 131072, -9240620, 0, 131072, -9240619, 0, 131072, -9240618, 0, 131072, -9240617, 0, 131072, -9240616, 0, 131072, -9240615, 0, 131072, -9240614, 0, 131072, -9240613, 0, 131072, -9240612, 0, 131072, -9240611, 0, 131072, -9240610, 0, 131072, -9240609, 0, 131072, -9240608, 0, 131072, -9240607, 0, 131072, -9240606, 0, 131072, -9240605, 0, 131072, -9240604, 0, 131072, -9240603, 0, 131072, -9240602, 0, 131072, -9240601, 0, 131072, -9240600, 0, 131072, -9240599, 0, 131072, -9240598, 0, 131072, -9240597, 0, 131072, -9240596, 0, 131072, -9240595, 0, 131072, -9240594, 0, 131072, -9240593, 0, 131072, -9240592, 0, 131072, -9240591, 0, 131072, -9240590, 0, 131072, -9240589, 0, 131072, -9240588, 0, 131072, -9240587, 0, 131072, -9240586, 0, 131072, -9240585, 0, 131072, -9240584, 0, 131072, -9240583, 0, 131072, -9240582, 0, 131072, -9240581, 0, 131072, -9240580, 0, 131072, -9240579, 0, 131072, -9240578, 0, 131072, -9240577, 0, 131072, -9306112, 0, 131072, -9306111, 0, 131072, -9306110, 0, 131072, -9306109, 0, 131072, -9306108, 0, 131072, -9306107, 0, 131072, -9306106, 0, 131072, -9306105, 0, 131072, -9306104, 0, 131072, -9306103, 0, 131072, -9306102, 0, 131072, -9306101, 0, 131072, -9175146, 0, 131072, -9175145, 0, 131072, -9175144, 0, 131072, -9175143, 0, 131072, -9175142, 0, 131072, -9175141, 0, 131072, -9175140, 0, 131072, -9175139, 0, 131072, -9175138, 0, 131072, -9175137, 0, 131072, -9175136, 0, 131072, -9175135, 0, 131072, -9175134, 0, 131072, -9175133, 0, 131072, -9175132, 0, 131072, -9175131, 0, 131072, -9175130, 0, 131072, -9175129, 0, 131072, -9175128, 0, 131072, -9175127, 0, 131072, -9175126, 0, 131072, -9175125, 0, 131072, -9175124, 0, 131072, -9175123, 0, 131072, -9175122, 0, 131072, -9175121, 0, 131072, -9175120, 0, 131072, -9175119, 0, 131072, -9175118, 0, 131072, -9175117, 0, 131072, -9175116, 0, 131072, -9175115, 0, 131072, -9175114, 0, 131072, -9175113, 0, 131072, -9175112, 0, 131072, -9175111, 0, 131072, -9175110, 0, 131072, -9175109, 0, 131072, -9175108, 0, 131072, -9175107, 0, 131072, -9175106, 0, 131072, -9175105, 0, 131072, -9175104, 0, 131072, -9175103, 0, 131072, -9175102, 0, 131072, -9175101, 0, 131072, -9175100, 0, 131072, -9175099, 0, 131072, -9175098, 0, 131072, -9175097, 0, 131072, -9175096, 0, 131072, -9175095, 0, 131072, -9175094, 0, 131072, -9175093, 0, 131072, -9175092, 0, 131072, -9175091, 0, 131072, -9175090, 0, 131072, -9175089, 0, 131072, -9175088, 0, 131072, -9175087, 0, 131072, -9175086, 0, 131072, -9175085, 0, 131072, -9175084, 0, 131072, -9175083, 0, 131072, -9175082, 0, 131072, -9175081, 0, 131072, -9175080, 0, 131072, -9175079, 0, 131072, -9175078, 0, 131072, -9175077, 0, 131072, -9175076, 0, 131072, -9175075, 0, 131072, -9175074, 0, 131072, -9175073, 0, 131072, -9175072, 0, 131072, -9175071, 0, 131072, -9175070, 0, 131072, -9175069, 0, 131072, -9175068, 0, 131072, -9175067, 0, 131072, -9175066, 0, 131072, -9175065, 0, 131072, -9175064, 0, 131072, -9175063, 0, 131072, -9175062, 0, 131072, -9175061, 0, 131072, -9175060, 0, 131072, -9175059, 0, 131072, -9175058, 0, 131072, -9175057, 0, 131072, -9175056, 0, 131072, -9175055, 0, 131072, -9175054, 0, 131072, -9175053, 0, 131072, -9175052, 0, 131072, -9175051, 0, 131072, -9175050, 0, 131072, -9175049, 0, 131072, -9175048, 0, 131072, -9175047, 0, 131072, -9175046, 0, 131072, -9175045, 0, 131072, -9175044, 0, 131072, -9175043, 0, 131072, -9175042, 0, 131072, -9175041, 0, 131072, -9240576, 0, 131072, -9240575, 0, 131072, -9240574, 0, 131072, -9240573, 0, 131072, -9240572, 0, 131072, -9240571, 0, 131072, -9240570, 0, 131072, -9240569, 0, 131072, -9240568, 0, 131072, -9240567, 0, 131072, -9240566, 0, 131072, -9240565, 0, 131072, -9240564, 0, 131072, -9240563, 0, 131072, -9240562, 0, 131072, -9109611, 0, 131072, -9109610, 0, 131072, -9109609, 0, 131072, -9109608, 0, 131072, -9109607, 0, 131072, -9109606, 0, 131072, -9109605, 0, 131072, -9109604, 0, 131072, -9109603, 0, 131072, -9109602, 0, 131072, -9109601, 0, 131072, -9109600, 0, 131072, -9109599, 0, 131072, -9109598, 0, 131072, -9109597, 0, 131072, -9109596, 0, 131072, -9109595, 0, 131072, -9109594, 0, 131072, -9109593, 0, 131072, -9109592, 0, 131072, -9109591, 0, 131072, -9109590, 0, 131072, -9109589, 0, 131072, -9109588, 0, 131072, -9109587, 0, 131072, -9109586, 0, 131072, -9109585, 0, 131072, -9109584, 0, 131072, -9109583, 0, 131072, -9109582, 0, 131072, -9109581, 0, 131072, -9109580, 0, 131072, -9109579, 0, 131072, -9109578, 0, 131072, -9109577, 0, 131072, -9109576, 0, 131072, -9109575, 0, 131072, -9109574, 0, 131072, -9109573, 0, 131072, -9109572, 0, 131072, -9109571, 0, 131072, -9109570, 0, 131072, -9109569, 0, 131072, -9109568, 0, 131072, -9109567, 0, 131072, -9109566, 0, 131072, -9109565, 0, 131072, -9109564, 0, 131072, -9109563, 0, 131072, -9109562, 0, 131072, -9109561, 0, 131072, -9109560, 0, 131072, -9109559, 0, 131072, -9109558, 0, 131072, -9109557, 0, 131072, -9109556, 0, 131072, -9109555, 0, 131072, -9109554, 0, 131072, -9109553, 0, 131072, -9109552, 0, 131072, -9109551, 0, 131072, -9109550, 0, 131072, -9109549, 0, 131072, -9109548, 0, 131072, -9109547, 0, 131072, -9109546, 0, 131072, -9109545, 0, 131072, -9109544, 0, 131072, -9109543, 0, 131072, -9109542, 0, 131072, -9109541, 0, 131072, -9109540, 0, 131072, -9109539, 0, 131072, -9109538, 0, 131072, -9109537, 0, 131072, -9109536, 0, 131072, -9109535, 0, 131072, -9109534, 0, 131072, -9109533, 0, 131072, -9109532, 0, 131072, -9109531, 0, 131072, -9109530, 0, 131072, -9109529, 0, 131072, -9109528, 0, 131072, -9109527, 0, 131072, -9109526, 0, 131072, -9109525, 0, 131072, -9109524, 0, 131072, -9109523, 0, 131072, -9109522, 0, 131072, -9109521, 0, 131072, -9109520, 0, 131072, -9109519, 0, 131072, -9109518, 0, 131072, -9109517, 0, 131072, -9109516, 0, 131072, -9109515, 0, 131072, -9109514, 0, 131072, -9109513, 0, 131072, -9109512, 0, 131072, -9109511, 0, 131072, -9109510, 0, 131072, -9109509, 0, 131072, -9109508, 0, 131072, -9109507, 0, 131072, -9109506, 0, 131072, -9109505, 0, 131072, -9175040, 0, 131072, -9175039, 0, 131072, -9175038, 0, 131072, -9175037, 0, 131072, -9175036, 0, 131072, -9175035, 0, 131072, -9175034, 0, 131072, -9175033, 0, 131072, -9175032, 0, 131072, -9175031, 0, 131072, -9175030, 0, 131072, -9175029, 0, 131072, -9175028, 0, 131072, -9175027, 0, 131072, -9175026, 0, 131072, -9175025, 0, 131072, -9175024, 0, 131072, -9175023, 0, 131072, -9044075, 0, 131072, -9044074, 0, 131072, -9044073, 0, 131072, -9044072, 0, 131072, -9044071, 0, 131072, -9044070, 0, 131072, -9044069, 0, 131072, -9044068, 0, 131072, -9044067, 0, 131072, -9044066, 0, 131072, -9044065, 0, 131072, -9044064, 0, 131072, -9044063, 0, 131072, -9044062, 0, 131072, -9044061, 0, 131072, -9044060, 0, 131072, -9044059, 0, 131072, -9044058, 0, 131072, -9044057, 0, 131072, -9044056, 0, 131072, -9044055, 0, 131072, -9044054, 0, 131072, -9044053, 0, 131072, -9044052, 0, 131072, -9044051, 0, 131072, -9044050, 0, 131072, -9044049, 0, 131072, -9044048, 0, 131072, -9044047, 0, 131072, -9044046, 0, 131072, -9044045, 0, 131072, -9044044, 0, 131072, -9044043, 0, 131072, -9044042, 0, 131072, -9044041, 0, 131072, -9044040, 0, 131072, -9044039, 0, 131072, -9044038, 0, 131072, -9044037, 0, 131072, -9044036, 0, 131072, -9044035, 0, 131072, -9044034, 0, 131072, -9044033, 0, 131072, -9044032, 0, 131072, -9044031, 0, 131072, -9044030, 0, 131072, -9044029, 0, 131072, -9044028, 0, 131072, -9044027, 0, 131072, -9044026, 0, 131072, -9044025, 0, 131072, -9044024, 0, 131072, -9044023, 0, 131072, -9044022, 0, 131072, -9044021, 0, 131072, -9044020, 0, 131072, -9044019, 0, 131072, -9044018, 0, 131072, -9044017, 0, 131072, -9044016, 0, 131072, -9044015, 0, 131072, -9044014, 0, 131072, -9044013, 0, 131072, -9044012, 0, 131072, -9044011, 0, 131072, -9044010, 0, 131072, -9044009, 0, 131072, -9044008, 0, 131072, -9044007, 0, 131072, -9044006, 0, 131072, -9044005, 0, 131072, -9044004, 0, 131072, -9044003, 0, 131072, -9044002, 0, 131072, -9044001, 0, 131072, -9044000, 0, 131072, -9043999, 0, 131072, -9043998, 0, 131072, -9043997, 0, 131072, -9043996, 0, 131072, -9043995, 0, 131072, -9043994, 0, 131072, -9043993, 0, 131072, -9043992, 0, 131072, -9043991, 0, 131072, -9043990, 0, 131072, -9043989, 0, 131072, -9043988, 0, 131072, -9043987, 0, 131072, -9043986, 0, 131072, -9043985, 0, 131072, -9043984, 0, 131072, -9043983, 0, 131072, -9043982, 0, 131072, -9043981, 0, 131072, -9043980, 0, 131072, -9043979, 0, 131072, -9043978, 0, 131072, -9043977, 0, 131072, -9043976, 0, 131072, -9043975, 0, 131072, -9043974, 0, 131072, -9043973, 0, 131072, -9043972, 0, 131072, -9043971, 0, 131072, -9043970, 0, 131072, -9043969, 0, 131072, -9109504, 0, 131072, -9109503, 0, 131072, -9109502, 0, 131072, -9109501, 0, 131072, -9109500, 0, 131072, -9109499, 0, 131072, -9109498, 0, 131072, -9109497, 0, 131072, -9109496, 0, 131072, -9109495, 0, 131072, -9109494, 0, 131072, -9109493, 0, 131072, -9109492, 0, 131072, -9109491, 0, 131072, -9109490, 0, 131072, -9109489, 0, 131072, -9109488, 0, 131072, -9109487, 0, 131072, -9109486, 0, 131072, -9109485, 0, 131072, -9109484, 0, 131072, -8978540, 0, 131072, -8978539, 0, 131072, -8978538, 0, 131072, -8978537, 0, 131072, -8978536, 0, 131072, -8978535, 0, 131072, -8978534, 0, 131072, -8978533, 0, 131072, -8978532, 0, 131072, -8978531, 0, 131072, -8978530, 0, 131072, -8978529, 0, 131072, -8978528, 0, 131072, -8978527, 0, 131072, -8978526, 0, 131072, -8978525, 0, 131072, -8978524, 0, 131072, -8978523, 0, 131072, -8978522, 0, 131072, -8978521, 0, 131072, -8978520, 0, 131072, -8978519, 0, 131072, -8978518, 0, 131072, -8978517, 0, 131072, -8978516, 0, 131072, -8978515, 0, 131072, -8978514, 0, 131072, -8978513, 0, 131072, -8978512, 0, 131072, -8978511, 0, 131072, -8978510, 0, 131072, -8978509, 0, 131072, -8978508, 0, 131072, -8978507, 0, 131072, -8978506, 0, 131072, -8978505, 0, 131072, -8978504, 0, 131072, -8978503, 0, 131072, -8978502, 0, 131072, -8978501, 0, 131072, -8978500, 0, 131072, -8978499, 0, 131072, -8978498, 0, 131072, -8978497, 0, 131072, -8978496, 0, 131072, -8978495, 0, 131072, -8978494, 0, 131072, -8978493, 0, 131072, -8978492, 0, 131072, -8978491, 0, 131072, -8978490, 0, 131072, -8978489, 0, 131072, -8978488, 0, 131072, -8978487, 0, 131072, -8978486, 0, 131072, -8978485, 0, 131072, -8978484, 0, 131072, -8978483, 0, 131072, -8978482, 0, 131072, -8978481, 0, 131072, -8978480, 0, 131072, -8978479, 0, 131072, -8978478, 0, 131072, -8978477, 0, 131072, -8978476, 0, 131072, -8978475, 0, 131072, -8978474, 0, 131072, -8978473, 0, 131072, -8978472, 0, 131072, -8978471, 0, 131072, -8978470, 0, 131072, -8978469, 0, 131072, -8978468, 0, 131072, -8978467, 0, 131072, -8978466, 0, 131072, -8978465, 0, 131072, -8978464, 0, 131072, -8978463, 0, 131072, -8978462, 0, 131072, -8978461, 0, 131072, -8978460, 0, 131072, -8978459, 0, 131072, -8978458, 0, 131072, -8978457, 0, 131072, -8978456, 0, 131072, -8978455, 0, 131072, -8978454, 0, 131072, -8978453, 0, 131072, -8978452, 0, 131072, -8978451, 0, 131072, -8978450, 0, 131072, -8978449, 0, 131072, -8978448, 0, 131072, -8978447, 0, 131072, -8978446, 0, 131072, -8978445, 0, 131072, -8978444, 0, 131072, -8978443, 0, 131072, -8978442, 0, 131072, -8978441, 0, 131072, -8978440, 0, 131072, -8978439, 0, 131072, -8978438, 0, 131072, -8978437, 0, 131072, -8978436, 0, 131072, -8978435, 0, 131072, -8978434, 0, 131072, -8978433, 0, 131072, -9043968, 0, 131072, -9043967, 0, 131072, -9043966, 0, 131072, -9043965, 0, 131072, -9043964, 0, 131072, -9043963, 0, 131072, -9043962, 0, 131072, -9043961, 0, 131072, -9043960, 0, 131072, -9043959, 0, 131072, -9043958, 0, 131072, -9043957, 0, 131072, -9043956, 0, 131072, -9043955, 0, 131072, -9043954, 0, 131072, -9043953, 0, 131072, -9043952, 0, 131072, -9043951, 0, 131072, -9043950, 0, 131072, -9043949, 0, 131072, -9043948, 0, 131072, -9043947, 0, 131072, -9043946, 0, 131072, -9043945, 0, 131072, -8913004, 0, 131072, -8913003, 0, 131072, -8913002, 0, 131072, -8913001, 0, 131072, -8913000, 0, 131072, -8912999, 0, 131072, -8912998, 0, 131072, -8912997, 0, 131072, -8912996, 0, 131072, -8912995, 0, 131072, -8912994, 0, 131072, -8912993, 0, 131072, -8912992, 0, 131072, -8912991, 0, 131072, -8912990, 0, 131072, -8912989, 0, 131072, -8912988, 0, 131072, -8912987, 0, 131072, -8912986, 0, 131072, -8912985, 0, 131072, -8912984, 0, 131072, -8912983, 0, 131072, -8912982, 0, 131072, -8912981, 0, 131072, -8912980, 0, 131072, -8912979, 0, 131072, -8912978, 0, 131072, -8912977, 0, 131072, -8912976, 0, 131072, -8912975, 0, 131072, -8912974, 0, 131072, -8912973, 0, 131072, -8912972, 0, 131072, -8912971, 0, 131072, -8912970, 0, 131072, -8912969, 0, 131072, -8912968, 0, 131072, -8912967, 0, 131072, -8912966, 0, 131072, -8912965, 0, 131072, -8912964, 0, 131072, -8912963, 0, 131072, -8912962, 0, 131072, -8912961, 0, 131072, -8912960, 0, 131072, -8912959, 0, 131072, -8912958, 0, 131072, -8912957, 0, 131072, -8912956, 0, 131072, -8912955, 0, 131072, -8912954, 0, 131072, -8912953, 0, 131072, -8912952, 0, 131072, -8912951, 0, 131072, -8912950, 0, 131072, -8912949, 0, 131072, -8912948, 0, 131072, -8912947, 0, 131072, -8912946, 0, 131072, -8912945, 0, 131072, -8912944, 0, 131072, -8912943, 0, 131072, -8912942, 0, 131072, -8912941, 0, 131072, -8912940, 0, 131072, -8912939, 0, 131072, -8912938, 0, 131072, -8912937, 0, 131072, -8912936, 0, 131072, -8912935, 0, 131072, -8912934, 0, 131072, -8912933, 0, 131072, -8912932, 0, 131072, -8912931, 0, 131072, -8912930, 0, 131072, -8912929, 0, 131072, -8912928, 0, 131072, -8912927, 0, 131072, -8912926, 0, 131072, -8912925, 0, 131072, -8912924, 0, 131072, -8912923, 0, 131072, -8912922, 0, 131072, -8912921, 0, 131072, -8912920, 0, 131072, -8912919, 0, 131072, -8912918, 0, 131072, -8912917, 0, 131072, -8912916, 0, 131072, -8912915, 0, 131072, -8912914, 0, 131072, -8912913, 0, 131072, -8912912, 0, 131072, -8912911, 0, 131072, -8912910, 0, 131072, -8912909, 0, 131072, -8912908, 0, 131072, -8912907, 0, 131072, -8912906, 0, 131072, -8912905, 0, 131072, -8912904, 0, 131072, -8912903, 0, 131072, -8912902, 0, 131072, -8912901, 0, 131072, -8912900, 0, 131072, -8912899, 0, 131072, -8912898, 0, 131072, -8912897, 0, 131072, -8978432, 0, 131072, -8978431, 0, 131072, -8978430, 0, 131072, -8978429, 0, 131072, -8978428, 0, 131072, -8978427, 0, 131072, -8978426, 0, 131072, -8978425, 0, 131072, -8978424, 0, 131072, -8978423, 0, 131072, -8978422, 0, 131072, -8978421, 0, 131072, -8978420, 0, 131072, -8978419, 0, 131072, -8978418, 0, 131072, -8978417, 0, 131072, -8978416, 0, 131072, -8978415, 0, 131072, -8978414, 0, 131072, -8978413, 0, 131072, -8978412, 0, 131072, -8978411, 0, 131072, -8978410, 0, 131072, -8978409, 0, 131072, -8978408, 0, 131072, -8978407, 0, 131072, -8978406, 0, 131072, -8847469, 0, 131072, -8847468, 0, 131072, -8847467, 0, 131072, -8847466, 0, 131072, -8847465, 0, 131072, -8847464, 0, 131072, -8847463, 0, 131072, -8847462, 0, 131072, -8847461, 0, 131072, -8847460, 0, 131072, -8847459, 0, 131072, -8847458, 0, 131072, -8847457, 0, 131072, -8847456, 0, 131072, -8847455, 0, 131072, -8847454, 0, 131072, -8847453, 0, 131072, -8847452, 0, 131072, -8847451, 0, 131072, -8847450, 0, 131072, -8847449, 0, 131072, -8847448, 0, 131072, -8847447, 0, 131072, -8847446, 0, 131072, -8847445, 0, 131072, -8847444, 0, 131072, -8847443, 0, 131072, -8847442, 0, 131072, -8847441, 0, 131072, -8847440, 0, 131072, -8847439, 0, 131072, -8847438, 0, 131072, -8847437, 0, 131072, -8847436, 0, 131072, -8847435, 0, 131072, -8847434, 0, 131072, -8847433, 0, 131072, -8847432, 0, 131072, -8847431, 0, 131072, -8847430, 0, 131072, -8847429, 0, 131072, -8847428, 0, 131072, -8847427, 0, 131072, -8847426, 0, 131072, -8847425, 0, 131072, -8847424, 0, 131072, -8847423, 0, 131072, -8847422, 0, 131072, -8847421, 0, 131072, -8847420, 0, 131072, -8847419, 0, 131072, -8847418, 0, 131072, -8847417, 0, 131072, -8847416, 0, 131072, -8847415, 0, 131072, -8847414, 0, 131072, -8847413, 0, 131072, -8847412, 0, 131072, -8847411, 0, 131072, -8847410, 0, 131072, -8847409, 0, 131072, -8847408, 0, 131072, -8847407, 0, 131072, -8847406, 0, 131072, -8847405, 0, 131072, -8847404, 0, 131072, -8847403, 0, 131072, -8847402, 0, 131072, -8847401, 0, 131072, -8847400, 0, 131072, -8847399, 0, 131072, -8847398, 0, 131072, -8847397, 0, 131072, -8847396, 0, 131072, -8847395, 0, 131072, -8847394, 0, 131072, -8847393, 0, 131072, -8847392, 0, 131072, -8847391, 0, 131072, -8847390, 0, 131072, -8847389, 0, 131072, -8847388, 0, 131072, -8847387, 0, 131072, -8847386, 0, 131072, -8847385, 0, 131072, -8847384, 0, 131072, -8847383, 0, 131072, -8847382, 0, 131072, -8847381, 0, 131072, -8847380, 0, 131072, -8847379, 0, 131072, -8847378, 0, 131072, -8847377, 0, 131072, -8847376, 0, 131072, -8847375, 0, 131072, -8847374, 0, 131072, -8847373, 0, 131072, -8847372, 0, 131072, -8847371, 0, 131072, -8847370, 0, 131072, -8847369, 0, 131072, -8847368, 0, 131072, -8847367, 0, 131072, -8847366, 0, 131072, -8847365, 0, 131072, -8847364, 0, 131072, -8847363, 0, 131072, -8847362, 0, 131072, -8847361, 0, 131072, -8912896, 0, 131072, -8912895, 0, 131072, -8912894, 0, 131072, -8912893, 0, 131072, -8912892, 0, 131072, -8912891, 0, 131072, -8912890, 0, 131072, -8912889, 0, 131072, -8912888, 0, 131072, -8912887, 0, 131072, -8912886, 0, 131072, -8912885, 0, 131072, -8912884, 0, 131072, -8912883, 0, 131072, -8912882, 0, 131072, -8912881, 0, 131072, -8912880, 0, 131072, -8912879, 0, 131072, -8912878, 0, 131072, -8912877, 0, 131072, -8912876, 0, 131072, -8912875, 0, 131072, -8912874, 0, 131072, -8912873, 0, 131072, -8912872, 0, 131072, -8912871, 0, 131072, -8912870, 0, 131072, -8912869, 0, 131072, -8912868, 0, 131072, -8781933, 0, 131072, -8781932, 0, 131072, -8781931, 0, 131072, -8781930, 0, 131072, -8781929, 0, 131072, -8781928, 0, 131072, -8781927, 0, 131072, -8781926, 0, 131072, -8781925, 0, 131072, -8781924, 0, 131072, -8781923, 0, 131072, -8781922, 0, 131072, -8781921, 0, 131072, -8781920, 0, 131072, -8781919, 0, 131072, -8781918, 0, 131072, -8781917, 0, 131072, -8781916, 0, 131072, -8781915, 0, 131072, -8781914, 0, 131072, -8781913, 0, 131072, -8781912, 0, 131072, -8781911, 0, 131072, -8781910, 0, 131072, -8781909, 0, 131072, -8781908, 0, 131072, -8781907, 0, 131072, -8781906, 0, 131072, -8781905, 0, 131072, -8781904, 0, 131072, -8781903, 0, 131072, -8781902, 0, 131072, -8781901, 0, 131072, -8781900, 0, 131072, -8781899, 0, 131072, -8781898, 0, 131072, -8781897, 0, 131072, -8781896, 0, 131072, -8781895, 0, 131072, -8781894, 0, 131072, -8781893, 0, 131072, -8781892, 0, 131072, -8781891, 0, 131072, -8781890, 0, 131072, -8781889, 0, 131072, -8781888, 0, 131072, -8781887, 0, 131072, -8781886, 0, 131072, -8781885, 0, 131072, -8781884, 0, 131072, -8781883, 0, 131072, -8781882, 0, 131072, -8781881, 0, 131072, -8781880, 0, 131072, -8781879, 0, 131072, -8781878, 0, 131072, -8781877, 0, 131072, -8781876, 0, 131072, -8781875, 0, 131072, -8781874, 0, 131072, -8781873, 0, 131072, -8781872, 0, 131072, -8781871, 0, 131072, -8781870, 0, 131072, -8781869, 0, 131072, -8781868, 0, 131072, -8781867, 0, 131072, -8781866, 0, 131072, -8781865, 0, 131072, -8781864, 0, 131072, -8781863, 0, 131072, -8781862, 0, 131072, -8781861, 0, 131072, -8781860, 0, 131072, -8781859, 0, 131072, -8781858, 0, 131072, -8781857, 0, 131072, -8781856, 0, 131072, -8781855, 0, 131072, -8781854, 0, 131072, -8781853, 0, 131072, -8781852, 0, 131072, -8781851, 0, 131072, -8781850, 0, 131072, -8781849, 0, 131072, -8781848, 0, 131072, -8781847, 0, 131072, -8781846, 0, 131072, -8781845, 0, 131072, -8781844, 0, 131072, -8781843, 0, 131072, -8781842, 0, 131072, -8781841, 0, 131072, -8781840, 0, 131072, -8781839, 0, 131072, -8781838, 0, 131072, -8781837, 0, 131072, -8781836, 0, 131072, -8781835, 0, 131072, -8781834, 0, 131072, -8781833, 0, 131072, -8781832, 0, 131072, -8781831, 0, 131072, -8781830, 0, 131072, -8781829, 0, 131072, -8781828, 0, 131072, -8781827, 0, 131072, -8781826, 0, 131072, -8781825, 0, 131072, -8847360, 0, 131072, -8847359, 0, 131072, -8847358, 0, 131072, -8847357, 0, 131072, -8847356, 0, 131072, -8847355, 0, 131072, -8847354, 0, 131072, -8847353, 0, 131072, -8847352, 0, 131072, -8847351, 0, 131072, -8847350, 0, 131072, -8847349, 0, 131072, -8847348, 0, 131072, -8847347, 0, 131072, -8847346, 0, 131072, -8847345, 0, 131072, -8847344, 0, 131072, -8847343, 0, 131072, -8847342, 0, 131072, -8847341, 0, 131072, -8847340, 0, 131072, -8847339, 0, 131072, -8847338, 0, 131072, -8847337, 0, 131072, -8847336, 0, 131072, -8847335, 0, 131072, -8847334, 0, 131072, -8847333, 0, 131072, -8847332, 0, 131072, -8847331, 0, 131072, -8847330, 0, 131072, -8716398, 0, 131072, -8716397, 0, 131072, -8716396, 0, 131072, -8716395, 0, 131072, -8716394, 0, 131072, -8716393, 0, 131072, -8716392, 0, 131072, -8716391, 0, 131072, -8716390, 0, 131072, -8716389, 0, 131072, -8716388, 0, 131072, -8716387, 0, 131072, -8716386, 0, 131072, -8716385, 0, 131072, -8716384, 0, 131072, -8716383, 0, 131072, -8716382, 0, 131072, -8716381, 0, 131072, -8716380, 0, 131072, -8716379, 0, 131072, -8716378, 0, 131072, -8716377, 0, 131072, -8716376, 0, 131072, -8716375, 0, 131072, -8716374, 0, 131072, -8716373, 0, 131072, -8716372, 0, 131072, -8716371, 0, 131072, -8716370, 0, 131072, -8716369, 0, 131072, -8716368, 0, 131072, -8716367, 0, 131072, -8716366, 0, 131072, -8716365, 0, 131072, -8716364, 0, 131072, -8716363, 0, 131072, -8716362, 0, 131072, -8716361, 0, 131072, -8716360, 0, 131072, -8716359, 0, 131072, -8716358, 0, 131072, -8716357, 0, 131072, -8716356, 0, 131072, -8716355, 0, 131072, -8716354, 0, 131072, -8716353, 0, 131072, -8716352, 0, 131072, -8716351, 0, 131072, -8716350, 0, 131072, -8716349, 0, 131072, -8716348, 0, 131072, -8716347, 0, 131072, -8716346, 0, 131072, -8716345, 0, 131072, -8716344, 0, 131072, -8716343, 0, 131072, -8716342, 0, 131072, -8716341, 0, 131072, -8716340, 0, 131072, -8716339, 0, 131072, -8716338, 0, 131072, -8716337, 0, 131072, -8716336, 0, 131072, -8716335, 0, 131072, -8716334, 0, 131072, -8716333, 0, 131072, -8716332, 0, 131072, -8716331, 0, 131072, -8716330, 0, 131072, -8716329, 0, 131072, -8716328, 0, 131072, -8716327, 0, 131072, -8716326, 0, 131072, -8716325, 0, 131072, -8716324, 0, 131072, -8716323, 0, 131072, -8716322, 0, 131072, -8716321, 0, 131072, -8716320, 0, 131072, -8716319, 0, 131072, -8716318, 0, 131072, -8716317, 0, 131072, -8716316, 0, 131072, -8716315, 0, 131072, -8716314, 0, 131072, -8716313, 0, 131072, -8716312, 0, 131072, -8716311, 0, 131072, -8716310, 0, 131072, -8716309, 0, 131072, -8716308, 0, 131072, -8716307, 0, 131072, -8716306, 0, 131072, -8716305, 0, 131072, -8716304, 0, 131072, -8716303, 0, 131072, -8716302, 0, 131072, -8716301, 0, 131072, -8716300, 0, 131072, -8716299, 0, 131072, -8716298, 0, 131072, -8716297, 0, 131072, -8716296, 0, 131072, -8716295, 0, 131072, -8716294, 0, 131072, -8716293, 0, 131072, -8716292, 0, 131072, -8716291, 0, 131072, -8716290, 0, 131072, -8716289, 0, 131072, -8781824, 0, 131072, -8781823, 0, 131072, -8781822, 0, 131072, -8781821, 0, 131072, -8781820, 0, 131072, -8781819, 0, 131072, -8781818, 0, 131072, -8781817, 0, 131072, -8781816, 0, 131072, -8781815, 0, 131072, -8781814, 0, 131072, -8781813, 0, 131072, -8781812, 0, 131072, -8781811, 0, 131072, -8781810, 0, 131072, -8781809, 0, 131072, -8781808, 0, 131072, -8781807, 0, 131072, -8781806, 0, 131072, -8781805, 0, 131072, -8781804, 0, 131072, -8781803, 0, 131072, -8781802, 0, 131072, -8781801, 0, 131072, -8781800, 0, 131072, -8781799, 0, 131072, -8781798, 0, 131072, -8781797, 0, 131072, -8781796, 0, 131072, -8781795, 0, 131072, -8781794, 0, 131072, -8781793, 0, 131072, -8781792, 0, 131072, -8650862, 0, 131072, -8650861, 0, 131072, -8650860, 0, 131072, -8650859, 0, 131072, -8650858, 0, 131072, -8650857, 0, 131072, -8650856, 0, 131072, -8650855, 0, 131072, -8650854, 0, 131072, -8650853, 0, 131072, -8650852, 0, 131072, -8650851, 0, 131072, -8650850, 0, 131072, -8650849, 0, 131072, -8650848, 0, 131072, -8650847, 0, 131072, -8650846, 0, 131072, -8650845, 0, 131072, -8650844, 0, 131072, -8650843, 0, 131072, -8650842, 0, 131072, -8650841, 0, 131072, -8650840, 0, 131072, -8650839, 0, 131072, -8650838, 0, 131072, -8650837, 0, 131072, -8650836, 0, 131072, -8650835, 0, 131072, -8650834, 0, 131072, -8650833, 0, 131072, -8650832, 0, 131072, -8650831, 0, 131072, -8650830, 0, 131072, -8650829, 0, 131072, -8650828, 0, 131072, -8650827, 0, 131072, -8650826, 0, 131072, -8650825, 0, 131072, -8650824, 0, 131072, -8650823, 0, 131072, -8650822, 0, 131072, -8650821, 0, 131072, -8650820, 0, 131072, -8650819, 0, 131072, -8650818, 0, 131072, -8650817, 0, 131072, -8650816, 0, 131072, -8650815, 0, 131072, -8650814, 0, 131072, -8650813, 0, 131072, -8650812, 0, 131072, -8650811, 0, 131072, -8650810, 0, 131072, -8650809, 0, 131072, -8650808, 0, 131072, -8650807, 0, 131072, -8650806, 0, 131072, -8650805, 0, 131072, -8650804, 0, 131072, -8650803, 0, 131072, -8650802, 0, 131072, -8650801, 0, 131072, -8650800, 0, 131072, -8650799, 0, 131072, -8650798, 0, 131072, -8650797, 0, 131072, -8650796, 0, 131072, -8650795, 0, 131072, -8650794, 0, 131072, -8650793, 0, 131072, -8650792, 0, 131072, -8650791, 0, 131072, -8650790, 0, 131072, -8650789, 0, 131072, -8650788, 0, 131072, -8650787, 0, 131072, -8650786, 0, 131072, -8650785, 0, 131072, -8650784, 0, 131072, -8650783, 0, 131072, -8650782, 0, 131072, -8650781, 0, 131072, -8650780, 0, 131072, -8650779, 0, 131072, -8650778, 0, 131072, -8650777, 0, 131072, -8650776, 0, 131072, -8650775, 0, 131072, -8650774, 0, 131072, -8650773, 0, 131072, -8650772, 0, 131072, -8650771, 0, 131072, -8650770, 0, 131072, -8650769, 0, 131072, -8650768, 0, 131072, -8650767, 0, 131072, -8650766, 0, 131072, -8650765, 0, 131072, -8650764, 0, 131072, -8650763, 0, 131072, -8650762, 0, 131072, -8650761, 0, 131072, -8650760, 0, 131072, -8650759, 0, 131072, -8650758, 0, 131072, -8650757, 0, 131072, -8650756, 0, 131072, -8650755, 0, 131072, -8650754, 0, 131072, -8650753, 0, 131072, -8716288, 0, 131072, -8716287, 0, 131072, -8716286, 0, 131072, -8716285, 0, 131072, -8716284, 0, 131072, -8716283, 0, 131072, -8716282, 0, 131072, -8716281, 0, 131072, -8716280, 0, 131072, -8716279, 0, 131072, -8716278, 0, 131072, -8716277, 0, 131072, -8716276, 0, 131072, -8716275, 0, 131072, -8716274, 0, 131072, -8716273, 0, 131072, -8716272, 0, 131072, -8716271, 0, 131072, -8716270, 0, 131072, -8716269, 0, 131072, -8716268, 0, 131072, -8716267, 0, 131072, -8716266, 0, 131072, -8716265, 0, 131072, -8716264, 0, 131072, -8716263, 0, 131072, -8716262, 0, 131072, -8716261, 0, 131072, -8716260, 0, 131072, -8716259, 0, 131072, -8716258, 0, 131072, -8716257, 0, 131072, -8716256, 0, 131072, -8716255, 0, 131072, -8716254, 0, 131072, -8585326, 0, 131072, -8585325, 0, 131072, -8585324, 0, 131072, -8585323, 0, 131072, -8585322, 0, 131072, -8585321, 0, 131072, -8585320, 0, 131072, -8585319, 0, 131072, -8585318, 0, 131072, -8585317, 0, 131072, -8585316, 0, 131072, -8585315, 0, 131072, -8585314, 0, 131072, -8585313, 0, 131072, -8585312, 0, 131072, -8585311, 0, 131072, -8585310, 0, 131072, -8585309, 0, 131072, -8585308, 0, 131072, -8585307, 0, 131072, -8585306, 0, 131072, -8585305, 0, 131072, -8585304, 0, 131072, -8585303, 0, 131072, -8585302, 0, 131072, -8585301, 0, 131072, -8585300, 0, 131072, -8585299, 0, 131072, -8585298, 0, 131072, -8585297, 0, 131072, -8585296, 0, 131072, -8585295, 0, 131072, -8585294, 0, 131072, -8585293, 0, 131072, -8585292, 0, 131072, -8585291, 0, 131072, -8585290, 0, 131072, -8585289, 0, 131072, -8585288, 0, 131072, -8585287, 0, 131072, -8585286, 0, 131072, -8585285, 0, 131072, -8585284, 0, 131072, -8585283, 0, 131072, -8585282, 0, 131072, -8585281, 0, 131072, -8585280, 0, 131072, -8585279, 0, 131072, -8585278, 0, 131072, -8585277, 0, 131072, -8585276, 0, 131072, -8585275, 0, 131072, -8585274, 0, 131072, -8585273, 0, 131072, -8585272, 0, 131072, -8585271, 0, 131072, -8585270, 0, 131072, -8585269, 0, 131072, -8585268, 0, 131072, -8585267, 0, 131072, -8585266, 0, 131072, -8585265, 0, 131072, -8585264, 0, 131072, -8585263, 0, 131072, -8585262, 0, 131072, -8585261, 0, 131072, -8585260, 0, 131072, -8585259, 0, 131072, -8585258, 0, 131072, -8585257, 0, 131072, -8585256, 0, 131072, -8585255, 0, 131072, -8585254, 0, 131072, -8585253, 0, 131072, -8585252, 0, 131072, -8585251, 0, 131072, -8585250, 0, 131072, -8585249, 0, 131072, -8585248, 0, 131072, -8585247, 0, 131072, -8585246, 0, 131072, -8585245, 0, 131072, -8585244, 0, 131072, -8585243, 0, 131072, -8585242, 0, 131072, -8585241, 0, 131072, -8585240, 0, 131072, -8585239, 0, 131072, -8585238, 0, 131072, -8585237, 0, 131072, -8585236, 0, 131072, -8585235, 0, 131072, -8585234, 0, 131072, -8585233, 0, 131072, -8585232, 0, 131072, -8585231, 0, 131072, -8585230, 0, 131072, -8585229, 0, 131072, -8585228, 0, 131072, -8585227, 0, 131072, -8585226, 0, 131072, -8585225, 0, 131072, -8585224, 0, 131072, -8585223, 0, 131072, -8585222, 0, 131072, -8585221, 0, 131072, -8585220, 0, 131072, -8585219, 0, 131072, -8585218, 0, 131072, -8585217, 0, 131072, -8650752, 0, 131072, -8650751, 0, 131072, -8650750, 0, 131072, -8650749, 0, 131072, -8650748, 0, 131072, -8650747, 0, 131072, -8650746, 0, 131072, -8650745, 0, 131072, -8650744, 0, 131072, -8650743, 0, 131072, -8650742, 0, 131072, -8650741, 0, 131072, -8650740, 0, 131072, -8650739, 0, 131072, -8650738, 0, 131072, -8650737, 0, 131072, -8650736, 0, 131072, -8650735, 0, 131072, -8650734, 0, 131072, -8650733, 0, 131072, -8650732, 0, 131072, -8650731, 0, 131072, -8650730, 0, 131072, -8650729, 0, 131072, -8650728, 0, 131072, -8650727, 0, 131072, -8650726, 0, 131072, -8650725, 0, 131072, -8650724, 0, 131072, -8650723, 0, 131072, -8650722, 0, 131072, -8650721, 0, 131072, -8650720, 0, 131072, -8650719, 0, 131072, -8650718, 0, 131072, -8650717, 0, 131072, -8650716, 0, 131072, -8519791, 0, 131072, -8519790, 0, 131072, -8519789, 0, 131072, -8519788, 0, 131072, -8519787, 0, 131072, -8519786, 0, 131072, -8519785, 0, 131072, -8519784, 0, 131072, -8519783, 0, 131072, -8519782, 0, 131072, -8519781, 0, 131072, -8519780, 0, 131072, -8519779, 0, 131072, -8519778, 0, 131072, -8519777, 0, 131072, -8519776, 0, 131072, -8519775, 0, 131072, -8519774, 0, 131072, -8519773, 0, 131072, -8519772, 0, 131072, -8519771, 0, 131072, -8519770, 0, 131072, -8519769, 0, 131072, -8519768, 0, 131072, -8519767, 0, 131072, -8519766, 0, 131072, -8519765, 0, 131072, -8519764, 0, 131072, -8519763, 0, 131072, -8519762, 0, 131072, -8519761, 0, 131072, -8519760, 0, 131072, -8519759, 0, 131072, -8519758, 0, 131072, -8519757, 0, 131072, -8519756, 0, 131072, -8519755, 0, 131072, -8519754, 0, 131072, -8519753, 0, 131072, -8519752, 0, 131072, -8519751, 0, 131072, -8519750, 0, 131072, -8519749, 0, 131072, -8519748, 0, 131072, -8519747, 0, 131072, -8519746, 0, 131072, -8519745, 0, 131072, -8519744, 0, 131072, -8519743, 0, 131072, -8519742, 0, 131072, -8519741, 0, 131072, -8519740, 0, 131072, -8519739, 0, 131072, -8519738, 0, 131072, -8519737, 0, 131072, -8519736, 0, 131072, -8519735, 0, 131072, -8519734, 0, 131072, -8519733, 0, 131072, -8519732, 0, 131072, -8519731, 0, 131072, -8519730, 0, 131072, -8519729, 0, 131072, -8519728, 0, 131072, -8519727, 0, 131072, -8519726, 0, 131072, -8519725, 0, 131072, -8519724, 0, 131072, -8519723, 0, 131072, -8519722, 0, 131072, -8519721, 0, 131072, -8519720, 0, 131072, -8519719, 0, 131072, -8519718, 0, 131072, -8519717, 0, 131072, -8519716, 0, 131072, -8519715, 0, 131072, -8519714, 0, 131072, -8519713, 0, 131072, -8519712, 0, 131072, -8519711, 0, 131072, -8519710, 0, 131072, -8519709, 0, 131072, -8519708, 0, 131072, -8519707, 0, 131072, -8519706, 0, 131072, -8519705, 0, 131072, -8519704, 0, 131072, -8519703, 0, 131072, -8519702, 0, 131072, -8519701, 0, 131072, -8519700, 0, 131072, -8519699, 0, 131072, -8519698, 0, 131072, -8519697, 0, 131072, -8519696, 0, 131072, -8519695, 0, 131072, -8519694, 0, 131072, -8519693, 0, 131072, -8519692, 0, 131072, -8519691, 0, 131072, -8519690, 0, 131072, -8519689, 0, 131072, -8519688, 0, 131072, -8519687, 0, 131072, -8519686, 0, 131072, -8519685, 0, 131072, -8519684, 0, 131072, -8519683, 0, 131072, -8519682, 0, 131072, -8519681, 0, 131072, -8585216, 0, 131072, -8585215, 0, 131072, -8585214, 0, 131072, -8585213, 0, 131072, -8585212, 0, 131072, -8585211, 0, 131072, -8585210, 0, 131072, -8585209, 0, 131072, -8585208, 0, 131072, -8585207, 0, 131072, -8585206, 0, 131072, -8585205, 0, 131072, -8585204, 0, 131072, -8585203, 0, 131072, -8585202, 0, 131072, -8585201, 0, 131072, -8585200, 0, 131072, -8585199, 0, 131072, -8585198, 0, 131072, -8585197, 0, 131072, -8585196, 0, 131072, -8585195, 0, 131072, -8585194, 0, 131072, -8585193, 0, 131072, -8585192, 0, 131072, -8585191, 0, 131072, -8585190, 0, 131072, -8585189, 0, 131072, -8585188, 0, 131072, -8585187, 0, 131072, -8585186, 0, 131072, -8585185, 0, 131072, -8585184, 0, 131072, -8585183, 0, 131072, -8585182, 0, 131072, -8585181, 0, 131072, -8585180, 0, 131072, -8585179, 0, 131072, -8585178, 0, 131072, -8454255, 0, 131072, -8454254, 0, 131072, -8454253, 0, 131072, -8454252, 0, 131072, -8454251, 0, 131072, -8454250, 0, 131072, -8454249, 0, 131072, -8454248, 0, 131072, -8454247, 0, 131072, -8454246, 0, 131072, -8454245, 0, 131072, -8454244, 0, 131072, -8454243, 0, 131072, -8454242, 0, 131072, -8454241, 0, 131072, -8454240, 0, 131072, -8454239, 0, 131072, -8454238, 0, 131072, -8454237, 0, 131072, -8454236, 0, 131072, -8454235, 0, 131072, -8454234, 0, 131072, -8454233, 0, 131072, -8454232, 0, 131072, -8454231, 0, 131072, -8454230, 0, 131072, -8454229, 0, 131072, -8454228, 0, 131072, -8454227, 0, 131072, -8454226, 0, 131072, -8454225, 0, 131072, -8454224, 0, 131072, -8454223, 0, 131072, -8454222, 0, 131072, -8454221, 0, 131072, -8454220, 0, 131072, -8454219, 0, 131072, -8454218, 0, 131072, -8454217, 0, 131072, -8454216, 0, 131072, -8454215, 0, 131072, -8454214, 0, 131072, -8454213, 0, 131072, -8454212, 0, 131072, -8454211, 0, 131072, -8454210, 0, 131072, -8454209, 0, 131072, -8454208, 0, 131072, -8454207, 0, 131072, -8454206, 0, 131072, -8454205, 0, 131072, -8454204, 0, 131072, -8454203, 0, 131072, -8454202, 0, 131072, -8454201, 0, 131072, -8454200, 0, 131072, -8454199, 0, 131072, -8454198, 0, 131072, -8454197, 0, 131072, -8454196, 0, 131072, -8454195, 0, 131072, -8454194, 0, 131072, -8454193, 0, 131072, -8454192, 0, 131072, -8454191, 0, 131072, -8454190, 0, 131072, -8454189, 0, 131072, -8454188, 0, 131072, -8454187, 0, 131072, -8454186, 0, 131072, -8454185, 0, 131072, -8454184, 0, 131072, -8454183, 0, 131072, -8454182, 0, 131072, -8454181, 0, 131072, -8454180, 0, 131072, -8454179, 0, 131072, -8454178, 0, 131072, -8454177, 0, 131072, -8454176, 0, 131072, -8454175, 0, 131072, -8454174, 0, 131072, -8454173, 0, 131072, -8454172, 0, 131072, -8454171, 0, 131072, -8454170, 0, 131072, -8454169, 0, 131072, -8454168, 0, 131072, -8454167, 0, 131072, -8454166, 0, 131072, -8454165, 0, 131072, -8454164, 0, 131072, -8454163, 0, 131072, -8454162, 0, 131072, -8454161, 0, 131072, -8454160, 0, 131072, -8454159, 0, 131072, -8454158, 0, 131072, -8454157, 0, 131072, -8454156, 0, 131072, -8454155, 0, 131072, -8454154, 0, 131072, -8454153, 0, 131072, -8454152, 0, 131072, -8454151, 0, 131072, -8454150, 0, 131072, -8454149, 0, 131072, -8454148, 0, 131072, -8454147, 0, 131072, -8454146, 0, 131072, -8454145, 0, 131072, -8519680, 0, 131072, -8519679, 0, 131072, -8519678, 0, 131072, -8519677, 0, 131072, -8519676, 0, 131072, -8519675, 0, 131072, -8519674, 0, 131072, -8519673, 0, 131072, -8519672, 0, 131072, -8519671, 0, 131072, -8519670, 0, 131072, -8519669, 0, 131072, -8519668, 0, 131072, -8519667, 0, 131072, -8519666, 0, 131072, -8519665, 0, 131072, -8519664, 0, 131072, -8519663, 0, 131072, -8519662, 0, 131072, -8519661, 0, 131072, -8519660, 0, 131072, -8519659, 0, 131072, -8519658, 0, 131072, -8519657, 0, 131072, -8519656, 0, 131072, -8519655, 0, 131072, -8519654, 0, 131072, -8519653, 0, 131072, -8519652, 0, 131072, -8519651, 0, 131072, -8519650, 0, 131072, -8519649, 0, 131072, -8519648, 0, 131072, -8519647, 0, 131072, -8519646, 0, 131072, -8519645, 0, 131072, -8519644, 0, 131072, -8519643, 0, 131072, -8519642, 0, 131072, -8519641, 0, 131072, -8519640, 0, 131072, -8388719, 0, 131072, -8388718, 0, 131072, -8388717, 0, 131072, -8388716, 0, 131072, -8388715, 0, 131072, -8388714, 0, 131072, -8388713, 0, 131072, -8388712, 0, 131072, -8388711, 0, 131072, -8388710, 0, 131072, -8388709, 0, 131072, -8388708, 0, 131072, -8388707, 0, 131072, -8388706, 0, 131072, -8388705, 0, 131072, -8388704, 0, 131072, -8388703, 0, 131072, -8388702, 0, 131072, -8388701, 0, 131072, -8388700, 0, 131072, -8388699, 0, 131072, -8388698, 0, 131072, -8388697, 0, 131072, -8388696, 0, 131072, -8388695, 0, 131072, -8388694, 0, 131072, -8388693, 0, 131072, -8388692, 0, 131072, -8388691, 0, 131072, -8388690, 0, 131072, -8388689, 0, 131072, -8388688, 0, 131072, -8388687, 0, 131072, -8388686, 0, 131072, -8388685, 0, 131072, -8388684, 0, 131072, -8388683, 0, 131072, -8388682, 0, 131072, -8388681, 0, 131072, -8388680, 0, 131072, -8388679, 0, 131072, -8388678, 0, 131072, -8388677, 0, 131072, -8388676, 0, 131072, -8388675, 0, 131072, -8388674, 0, 131072, -8388673, 0, 131072, -8388672, 0, 131072, -8388671, 0, 131072, -8388670, 0, 131072, -8388669, 0, 131072, -8388668, 0, 131072, -8388667, 0, 131072, -8388666, 0, 131072, -8388665, 0, 131072, -8388664, 0, 131072, -8388663, 0, 131072, -8388662, 0, 131072, -8388661, 0, 131072, -8388660, 0, 131072, -8388659, 0, 131072, -8388658, 0, 131072, -8388657, 0, 131072, -8388656, 0, 131072, -8388655, 0, 131072, -8388654, 0, 131072, -8388653, 0, 131072, -8388652, 0, 131072, -8388651, 0, 131072, -8388650, 0, 131072, -8388649, 0, 131072, -8388648, 0, 131072, -8388647, 0, 131072, -8388646, 0, 131072, -8388645, 0, 131072, -8388644, 0, 131072, -8388643, 0, 131072, -8388642, 0, 131072, -8388641, 0, 131072, -8388640, 0, 131072, -8388639, 0, 131072, -8388638, 0, 131072, -8388637, 0, 131072, -8388636, 0, 131072, -8388635, 0, 131072, -8388634, 0, 131072, -8388633, 0, 131072, -8388632, 0, 131072, -8388631, 0, 131072, -8388630, 0, 131072, -8388629, 0, 131072, -8388628, 0, 131072, -8388627, 0, 131072, -8388626, 0, 131072, -8388625, 0, 131072, -8388624, 0, 131072, -8388623, 0, 131072, -8388622, 0, 131072, -8388621, 0, 131072, -8388620, 0, 131072, -8388619, 0, 131072, -8388618, 0, 131072, -8388617, 0, 131072, -8388616, 0, 131072, -8388615, 0, 131072, -8388614, 0, 131072, -8388613, 0, 131072, -8388612, 0, 131072, -8388611, 0, 131072, -8388610, 0, 131072, -8388609, 0, 131072, -8454144, 0, 131072, -8454143, 0, 131072, -8454142, 0, 131072, -8454141, 0, 131072, -8454140, 0, 131072, -8454139, 0, 131072, -8454138, 0, 131072, -8454137, 0, 131072, -8454136, 0, 131072, -8454135, 0, 131072, -8454134, 0, 131072, -8454133, 0, 131072, -8454132, 0, 131072, -8454131, 0, 131072, -8454130, 0, 131072, -8454129, 0, 131072, -8454128, 0, 131072, -8454127, 0, 131072, -8454126, 0, 131072, -8454125, 0, 131072, -8454124, 0, 131072, -8454123, 0, 131072, -8454122, 0, 131072, -8454121, 0, 131072, -8454120, 0, 131072, -8454119, 0, 131072, -8454118, 0, 131072, -8454117, 0, 131072, -8454116, 0, 131072, -8454115, 0, 131072, -8454114, 0, 131072, -8454113, 0, 131072, -8454112, 0, 131072, -8454111, 0, 131072, -8454110, 0, 131072, -8454109, 0, 131072, -8454108, 0, 131072, -8454107, 0, 131072, -8454106, 0, 131072, -8454105, 0, 131072, -8454104, 0, 131072, -8454103, 0, 131072, -8454102, 0, 131072, -8454101, 0, 131072, -8323184, 0, 131072, -8323183, 0, 131072, -8323182, 0, 131072, -8323181, 0, 131072, -8323180, 0, 131072, -8323179, 0, 131072, -8323178, 0, 131072, -8323177, 0, 131072, -8323176, 0, 131072, -8323175, 0, 131072, -8323174, 0, 131072, -8323173, 0, 131072, -8323172, 0, 131072, -8323171, 0, 131072, -8323170, 0, 131072, -8323169, 0, 131072, -8323168, 0, 131072, -8323167, 0, 131072, -8323166, 0, 131072, -8323165, 0, 131072, -8323164, 0, 131072, -8323163, 0, 131072, -8323162, 0, 131072, -8323161, 0, 131072, -8323160, 0, 131072, -8323159, 0, 131072, -8323158, 0, 131072, -8323157, 0, 131072, -8323156, 0, 131072, -8323155, 0, 131072, -8323154, 0, 131072, -8323153, 0, 131072, -8323152, 0, 131072, -8323151, 0, 131072, -8323150, 0, 131072, -8323149, 0, 131072, -8323148, 0, 131072, -8323147, 0, 131072, -8323146, 0, 131072, -8323145, 0, 131072, -8323144, 0, 131072, -8323143, 0, 131072, -8323142, 0, 131072, -8323141, 0, 131072, -8323140, 0, 131072, -8323139, 0, 131072, -8323138, 0, 131072, -8323137, 0, 131072, -8323136, 0, 131072, -8323135, 0, 131072, -8323134, 0, 131072, -8323133, 0, 131072, -8323132, 0, 131072, -8323131, 0, 131072, -8323130, 0, 131072, -8323129, 0, 131072, -8323128, 0, 131072, -8323127, 0, 131072, -8323126, 0, 131072, -8323125, 0, 131072, -8323124, 0, 131072, -8323123, 0, 131072, -8323122, 0, 131072, -8323121, 0, 131072, -8323120, 0, 131072, -8323119, 0, 131072, -8323118, 0, 131072, -8323117, 0, 131072, -8323116, 0, 131072, -8323115, 0, 131072, -8323114, 0, 131072, -8323113, 0, 131072, -8323112, 0, 131072, -8323111, 0, 131072, -8323110, 0, 131072, -8323109, 0, 131072, -8323108, 0, 131072, -8323107, 0, 131072, -8323106, 0, 131072, -8323105, 0, 131072, -8323104, 0, 131072, -8323103, 0, 131072, -8323102, 0, 131072, -8323101, 0, 131072, -8323100, 0, 131072, -8323099, 0, 131072, -8323098, 0, 131072, -8323097, 0, 131072, -8323096, 0, 131072, -8323095, 0, 131072, -8323094, 0, 131072, -8323093, 0, 131072, -8323092, 0, 131072, -8323091, 0, 131072, -8323090, 0, 131072, -8323089, 0, 131072, -8323088, 0, 131072, -8323087, 0, 131072, -8323086, 0, 131072, -8323085, 0, 131072, -8323084, 0, 131072, -8323083, 0, 131072, -8323082, 0, 131072, -8323081, 0, 131072, -8323080, 0, 131072, -8323079, 0, 131072, -8323078, 0, 131072, -8323077, 0, 131072, -8323076, 0, 131072, -8323075, 0, 131072, -8323074, 0, 131072, -8323073, 0, 131072, -8388608, 0, 131072, -8388607, 0, 131072, -8388606, 0, 131072, -8388605, 0, 131072, -8388604, 0, 131072, -8388603, 0, 131072, -8388602, 0, 131072, -8388601, 0, 131072, -8388600, 0, 131072, -8388599, 0, 131072, -8388598, 0, 131072, -8388597, 0, 131072, -8388596, 0, 131072, -8388595, 0, 131072, -8388594, 0, 131072, -8388593, 0, 131072, -8388592, 0, 131072, -8388591, 0, 131072, -8388590, 0, 131072, -8388589, 0, 131072, -8388588, 0, 131072, -8388587, 0, 131072, -8388586, 0, 131072, -8388585, 0, 131072, -8388584, 0, 131072, -8388583, 0, 131072, -8388582, 0, 131072, -8388581, 0, 131072, -8388580, 0, 131072, -8388579, 0, 131072, -8388578, 0, 131072, -8388577, 0, 131072, -8388576, 0, 131072, -8388575, 0, 131072, -8388574, 0, 131072, -8388573, 0, 131072, -8388572, 0, 131072, -8388571, 0, 131072, -8388570, 0, 131072, -8388569, 0, 131072, -8388568, 0, 131072, -8388567, 0, 131072, -8388566, 0, 131072, -8388565, 0, 131072, -8388564, 0, 131072, -8388563, 0, 131072, -8257648, 0, 131072, -8257647, 0, 131072, -8257646, 0, 131072, -8257645, 0, 131072, -8257644, 0, 131072, -8257643, 0, 131072, -8257642, 0, 131072, -8257641, 0, 131072, -8257640, 0, 131072, -8257639, 0, 131072, -8257638, 0, 131072, -8257637, 0, 131072, -8257636, 0, 131072, -8257635, 0, 131072, -8257634, 0, 131072, -8257633, 0, 131072, -8257632, 0, 131072, -8257631, 0, 131072, -8257630, 0, 131072, -8257629, 0, 131072, -8257628, 0, 131072, -8257627, 0, 131072, -8257626, 0, 131072, -8257625, 0, 131072, -8257624, 0, 131072, -8257623, 0, 131072, -8257622, 0, 131072, -8257621, 0, 131072, -8257620, 0, 131072, -8257619, 0, 131072, -8257618, 0, 131072, -8257617, 0, 131072, -8257616, 0, 131072, -8257615, 0, 131072, -8257614, 0, 131072, -8257613, 0, 131072, -8257612, 0, 131072, -8257611, 0, 131072, -8257610, 0, 131072, -8257609, 0, 131072, -8257608, 0, 131072, -8257607, 0, 131072, -8257606, 0, 131072, -8257605, 0, 131072, -8257604, 0, 131072, -8257603, 0, 131072, -8257602, 0, 131072, -8257601, 0, 131072, -8257600, 0, 131072, -8257599, 0, 131072, -8257598, 0, 131072, -8257597, 0, 131072, -8257596, 0, 131072, -8257595, 0, 131072, -8257594, 0, 131072, -8257593, 0, 131072, -8257592, 0, 131072, -8257591, 0, 131072, -8257590, 0, 131072, -8257589, 0, 131072, -8257588, 0, 131072, -8257587, 0, 131072, -8257586, 0, 131072, -8257585, 0, 131072, -8257584, 0, 131072, -8257583, 0, 131072, -8257582, 0, 131072, -8257581, 0, 131072, -8257580, 0, 131072, -8257579, 0, 131072, -8257578, 0, 131072, -8257577, 0, 131072, -8257576, 0, 131072, -8257575, 0, 131072, -8257574, 0, 131072, -8257573, 0, 131072, -8257572, 0, 131072, -8257571, 0, 131072, -8257570, 0, 131072, -8257569, 0, 131072, -8257568, 0, 131072, -8257567, 0, 131072, -8257566, 0, 131072, -8257565, 0, 131072, -8257564, 0, 131072, -8257563, 0, 131072, -8257562, 0, 131072, -8257561, 0, 131072, -8257560, 0, 131072, -8257559, 0, 131072, -8257558, 0, 131072, -8257557, 0, 131072, -8257556, 0, 131072, -8257555, 0, 131072, -8257554, 0, 131072, -8257553, 0, 131072, -8257552, 0, 131072, -8257551, 0, 131072, -8257550, 0, 131072, -8257549, 0, 131072, -8257548, 0, 131072, -8257547, 0, 131072, -8257546, 0, 131072, -8257545, 0, 131072, -8257544, 0, 131072, -8257543, 0, 131072, -8257542, 0, 131072, -8257541, 0, 131072, -8257540, 0, 131072, -8257539, 0, 131072, -8257538, 0, 131072, -8257537, 0, 131072, -8323072, 0, 131072, -8323071, 0, 131072, -8323070, 0, 131072, -8323069, 0, 131072, -8323068, 0, 131072, -8323067, 0, 131072, -8323066, 0, 131072, -8323065, 0, 131072, -8323064, 0, 131072, -8323063, 0, 131072, -8323062, 0, 131072, -8323061, 0, 131072, -8323060, 0, 131072, -8323059, 0, 131072, -8323058, 0, 131072, -8323057, 0, 131072, -8323056, 0, 131072, -8323055, 0, 131072, -8323054, 0, 131072, -8323053, 0, 131072, -8323052, 0, 131072, -8323051, 0, 131072, -8323050, 0, 131072, -8323049, 0, 131072, -8323048, 0, 131072, -8323047, 0, 131072, -8323046, 0, 131072, -8323045, 0, 131072, -8323044, 0, 131072, -8323043, 0, 131072, -8323042, 0, 131072, -8323041, 0, 131072, -8323040, 0, 131072, -8323039, 0, 131072, -8323038, 0, 131072, -8323037, 0, 131072, -8323036, 0, 131072, -8323035, 0, 131072, -8323034, 0, 131072, -8323033, 0, 131072, -8323032, 0, 131072, -8323031, 0, 131072, -8323030, 0, 131072, -8323029, 0, 131072, -8323028, 0, 131072, -8323027, 0, 131072, -8323026, 0, 131072, -8323025, 0, 131072, -8192112, 0, 131072, -8192111, 0, 131072, -8192110, 0, 131072, -8192109, 0, 131072, -8192108, 0, 131072, -8192107, 0, 131072, -8192106, 0, 131072, -8192105, 0, 131072, -8192104, 0, 131072, -8192103, 0, 131072, -8192102, 0, 131072, -8192101, 0, 131072, -8192100, 0, 131072, -8192099, 0, 131072, -8192098, 0, 131072, -8192097, 0, 131072, -8192096, 0, 131072, -8192095, 0, 131072, -8192094, 0, 131072, -8192093, 0, 131072, -8192092, 0, 131072, -8192091, 0, 131072, -8192090, 0, 131072, -8192089, 0, 131072, -8192088, 0, 131072, -8192087, 0, 131072, -8192086, 0, 131072, -8192085, 0, 131072, -8192084, 0, 131072, -8192083, 0, 131072, -8192082, 0, 131072, -8192081, 0, 131072, -8192080, 0, 131072, -8192079, 0, 131072, -8192078, 0, 131072, -8192077, 0, 131072, -8192076, 0, 131072, -8192075, 0, 131072, -8192074, 0, 131072, -8192073, 0, 131072, -8192072, 0, 131072, -8192071, 0, 131072, -8192070, 0, 131072, -8192069, 0, 131072, -8192068, 0, 131072, -8192067, 0, 131072, -8192066, 0, 131072, -8192065, 0, 131072, -8192064, 0, 131072, -8192063, 0, 131072, -8192062, 0, 131072, -8192061, 0, 131072, -8192060, 0, 131072, -8192059, 0, 131072, -8192058, 0, 131072, -8192057, 0, 131072, -8192056, 0, 131072, -8192055, 0, 131072, -8192054, 0, 131072, -8192053, 0, 131072, -8192052, 0, 131072, -8192051, 0, 131072, -8192050, 0, 131072, -8192049, 0, 131072, -8192048, 0, 131072, -8192047, 0, 131072, -8192046, 0, 131072, -8192045, 0, 131072, -8192044, 0, 131072, -8192043, 0, 131072, -8192042, 0, 131072, -8192041, 0, 131072, -8192040, 0, 131072, -8192039, 0, 131072, -8192038, 0, 131072, -8192037, 0, 131072, -8192036, 0, 131072, -8192035, 0, 131072, -8192034, 0, 131072, -8192033, 0, 131072, -8192032, 0, 131072, -8192031, 0, 131072, -8192030, 0, 131072, -8192029, 0, 131072, -8192028, 0, 131072, -8192027, 0, 131072, -8192026, 0, 131072, -8192025, 0, 131072, -8192024, 0, 131072, -8192023, 0, 131072, -8192022, 0, 131072, -8192021, 0, 131072, -8192020, 0, 131072, -8192019, 0, 131072, -8192018, 0, 131072, -8192017, 0, 131072, -8192016, 0, 131072, -8192015, 0, 131072, -8192014, 0, 131072, -8192013, 0, 131072, -8192012, 0, 131072, -8192011, 0, 131072, -8192010, 0, 131072, -8192009, 0, 131072, -8192008, 0, 131072, -8192007, 0, 131072, -8192006, 0, 131072, -8192005, 0, 131072, -8192004, 0, 131072, -8192003, 0, 131072, -8192002, 0, 131072, -8192001, 0, 131072, -8257536, 0, 131072, -8257535, 0, 131072, -8257534, 0, 131072, -8257533, 0, 131072, -8257532, 0, 131072, -8257531, 0, 131072, -8257530, 0, 131072, -8257529, 0, 131072, -8257528, 0, 131072, -8257527, 0, 131072, -8257526, 0, 131072, -8257525, 0, 131072, -8257524, 0, 131072, -8257523, 0, 131072, -8257522, 0, 131072, -8257521, 0, 131072, -8257520, 0, 131072, -8257519, 0, 131072, -8257518, 0, 131072, -8257517, 0, 131072, -8257516, 0, 131072, -8257515, 0, 131072, -8257514, 0, 131072, -8257513, 0, 131072, -8257512, 0, 131072, -8257511, 0, 131072, -8257510, 0, 131072, -8257509, 0, 131072, -8257508, 0, 131072, -8257507, 0, 131072, -8257506, 0, 131072, -8257505, 0, 131072, -8257504, 0, 131072, -8257503, 0, 131072, -8257502, 0, 131072, -8257501, 0, 131072, -8257500, 0, 131072, -8257499, 0, 131072, -8257498, 0, 131072, -8257497, 0, 131072, -8257496, 0, 131072, -8257495, 0, 131072, -8257494, 0, 131072, -8257493, 0, 131072, -8257492, 0, 131072, -8257491, 0, 131072, -8257490, 0, 131072, -8257489, 0, 131072, -8257488, 0, 131072, -8257487, 0, 131072, -8126577, 0, 131072, -8126576, 0, 131072, -8126575, 0, 131072, -8126574, 0, 131072, -8126573, 0, 131072, -8126572, 0, 131072, -8126571, 0, 131072, -8126570, 0, 131072, -8126569, 0, 131072, -8126568, 0, 131072, -8126567, 0, 131072, -8126566, 0, 131072, -8126565, 0, 131072, -8126564, 0, 131072, -8126563, 0, 131072, -8126562, 0, 131072, -8126561, 0, 131072, -8126560, 0, 131072, -8126559, 0, 131072, -8126558, 0, 131072, -8126557, 0, 131072, -8126556, 0, 131072, -8126555, 0, 131072, -8126554, 0, 131072, -8126553, 0, 131072, -8126552, 0, 131072, -8126551, 0, 131072, -8126550, 0, 131072, -8126549, 0, 131072, -8126548, 0, 131072, -8126547, 0, 131072, -8126546, 0, 131072, -8126545, 0, 131072, -8126544, 0, 131072, -8126543, 0, 131072, -8126542, 0, 131072, -8126541, 0, 131072, -8126540, 0, 131072, -8126539, 0, 131072, -8126538, 0, 131072, -8126537, 0, 131072, -8126536, 0, 131072, -8126535, 0, 131072, -8126534, 0, 131072, -8126533, 0, 131072, -8126532, 0, 131072, -8126531, 0, 131072, -8126530, 0, 131072, -8126529, 0, 131072, -8126528, 0, 131072, -8126527, 0, 131072, -8126526, 0, 131072, -8126525, 0, 131072, -8126524, 0, 131072, -8126523, 0, 131072, -8126522, 0, 131072, -8126521, 0, 131072, -8126520, 0, 131072, -8126519, 0, 131072, -8126518, 0, 131072, -8126517, 0, 131072, -8126516, 0, 131072, -8126515, 0, 131072, -8126514, 0, 131072, -8126513, 0, 131072, -8126512, 0, 131072, -8126511, 0, 131072, -8126510, 0, 131072, -8126509, 0, 131072, -8126508, 0, 131072, -8126507, 0, 131072, -8126506, 0, 131072, -8126505, 0, 131072, -8126504, 0, 131072, -8126503, 0, 131072, -8126502, 0, 131072, -8126501, 0, 131072, -8126500, 0, 131072, -8126499, 0, 131072, -8126498, 0, 131072, -8126497, 0, 131072, -8126496, 0, 131072, -8126495, 0, 131072, -8126494, 0, 131072, -8126493, 0, 131072, -8126492, 0, 131072, -8126491, 0, 131072, -8126490, 0, 131072, -8126489, 0, 131072, -8126488, 0, 131072, -8126487, 0, 131072, -8126486, 0, 131072, -8126485, 0, 131072, -8126484, 0, 131072, -8126483, 0, 131072, -8126482, 0, 131072, -8126481, 0, 131072, -8126480, 0, 131072, -8126479, 0, 131072, -8126478, 0, 131072, -8126477, 0, 131072, -8126476, 0, 131072, -8126475, 0, 131072, -8126474, 0, 131072, -8126473, 0, 131072, -8126472, 0, 131072, -8126471, 0, 131072, -8126470, 0, 131072, -8126469, 0, 131072, -8126468, 0, 131072, -8126467, 0, 131072, -8126466, 0, 131072, -8126465, 0, 131072, -8192000, 0, 131072, -8191999, 0, 131072, -8191998, 0, 131072, -8191997, 0, 131072, -8191996, 0, 131072, -8191995, 0, 131072, -8191994, 0, 131072, -8191993, 0, 131072, -8191992, 0, 131072, -8191991, 0, 131072, -8191990, 0, 131072, -8191989, 0, 131072, -8191988, 0, 131072, -8191987, 0, 131072, -8191986, 0, 131072, -8191985, 0, 131072, -8191984, 0, 131072, -8191983, 0, 131072, -8191982, 0, 131072, -8191981, 0, 131072, -8191980, 0, 131072, -8191979, 0, 131072, -8191978, 0, 131072, -8191977, 0, 131072, -8191976, 0, 131072, -8191975, 0, 131072, -8191974, 0, 131072, -8191973, 0, 131072, -8191972, 0, 131072, -8191971, 0, 131072, -8191970, 0, 131072, -8191969, 0, 131072, -8191968, 0, 131072, -8191967, 0, 131072, -8191966, 0, 131072, -8191965, 0, 131072, -8191964, 0, 131072, -8191963, 0, 131072, -8191962, 0, 131072, -8191961, 0, 131072, -8191960, 0, 131072, -8191959, 0, 131072, -8191958, 0, 131072, -8191957, 0, 131072, -8191956, 0, 131072, -8191955, 0, 131072, -8191954, 0, 131072, -8191953, 0, 131072, -8191952, 0, 131072, -8191951, 0, 131072, -8191950, 0, 131072, -8191949, 0, 131072, -8061041, 0, 131072, -8061040, 0, 131072, -8061039, 0, 131072, -8061038, 0, 131072, -8061037, 0, 131072, -8061036, 0, 131072, -8061035, 0, 131072, -8061034, 0, 131072, -8061033, 0, 131072, -8061032, 0, 131072, -8061031, 0, 131072, -8061030, 0, 131072, -8061029, 0, 131072, -8061028, 0, 131072, -8061027, 0, 131072, -8061026, 0, 131072, -8061025, 0, 131072, -8061024, 0, 131072, -8061023, 0, 131072, -8061022, 0, 131072, -8061021, 0, 131072, -8061020, 0, 131072, -8061019, 0, 131072, -8061018, 0, 131072, -8061017, 0, 131072, -8061016, 0, 131072, -8061015, 0, 131072, -8061014, 0, 131072, -8061013, 0, 131072, -8061012, 0, 131072, -8061011, 0, 131072, -8061010, 0, 131072, -8061009, 0, 131072, -8061008, 0, 131072, -8061007, 0, 131072, -8061006, 0, 131072, -8061005, 0, 131072, -8061004, 0, 131072, -8061003, 0, 131072, -8061002, 0, 131072, -8061001, 0, 131072, -8061000, 0, 131072, -8060999, 0, 131072, -8060998, 0, 131072, -8060997, 0, 131072, -8060996, 0, 131072, -8060995, 0, 131072, -8060994, 0, 131072, -8060993, 0, 131072, -8060992, 0, 131072, -8060991, 0, 131072, -8060990, 0, 131072, -8060989, 0, 131072, -8060988, 0, 131072, -8060987, 0, 131072, -8060986, 0, 131072, -8060985, 0, 131072, -8060984, 0, 131072, -8060983, 0, 131072, -8060982, 0, 131072, -8060981, 0, 131072, -8060980, 0, 131072, -8060979, 0, 131072, -8060978, 0, 131072, -8060977, 0, 131072, -8060976, 0, 131072, -8060975, 0, 131072, -8060974, 0, 131072, -8060973, 0, 131072, -8060972, 0, 131072, -8060971, 0, 131072, -8060970, 0, 131072, -8060969, 0, 131072, -8060968, 0, 131072, -8060967, 0, 131072, -8060966, 0, 131072, -8060965, 0, 131072, -8060964, 0, 131072, -8060963, 0, 131072, -8060962, 0, 131072, -8060961, 0, 131072, -8060960, 0, 131072, -8060959, 0, 131072, -8060958, 0, 131072, -8060957, 0, 131072, -8060956, 0, 131072, -8060955, 0, 131072, -8060954, 0, 131072, -8060953, 0, 131072, -8060952, 0, 131072, -8060951, 0, 131072, -8060950, 0, 131072, -8060949, 0, 131072, -8060948, 0, 131072, -8060947, 0, 131072, -8060946, 0, 131072, -8060945, 0, 131072, -8060944, 0, 131072, -8060943, 0, 131072, -8060942, 0, 131072, -8060941, 0, 131072, -8060940, 0, 131072, -8060939, 0, 131072, -8060938, 0, 131072, -8060937, 0, 131072, -8060936, 0, 131072, -8060935, 0, 131072, -8060934, 0, 131072, -8060933, 0, 131072, -8060932, 0, 131072, -8060931, 0, 131072, -8060930, 0, 131072, -8060929, 0, 131072, -8126464, 0, 131072, -8126463, 0, 131072, -8126462, 0, 131072, -8126461, 0, 131072, -8126460, 0, 131072, -8126459, 0, 131072, -8126458, 0, 131072, -8126457, 0, 131072, -8126456, 0, 131072, -8126455, 0, 131072, -8126454, 0, 131072, -8126453, 0, 131072, -8126452, 0, 131072, -8126451, 0, 131072, -8126450, 0, 131072, -8126449, 0, 131072, -8126448, 0, 131072, -8126447, 0, 131072, -8126446, 0, 131072, -8126445, 0, 131072, -8126444, 0, 131072, -8126443, 0, 131072, -8126442, 0, 131072, -8126441, 0, 131072, -8126440, 0, 131072, -8126439, 0, 131072, -8126438, 0, 131072, -8126437, 0, 131072, -8126436, 0, 131072, -8126435, 0, 131072, -8126434, 0, 131072, -8126433, 0, 131072, -8126432, 0, 131072, -8126431, 0, 131072, -8126430, 0, 131072, -8126429, 0, 131072, -8126428, 0, 131072, -8126427, 0, 131072, -8126426, 0, 131072, -8126425, 0, 131072, -8126424, 0, 131072, -8126423, 0, 131072, -8126422, 0, 131072, -8126421, 0, 131072, -8126420, 0, 131072, -8126419, 0, 131072, -8126418, 0, 131072, -8126417, 0, 131072, -8126416, 0, 131072, -8126415, 0, 131072, -8126414, 0, 131072, -8126413, 0, 131072, -8126412, 0, 131072, -8126411, 0, 131072, -7995505, 0, 131072, -7995504, 0, 131072, -7995503, 0, 131072, -7995502, 0, 131072, -7995501, 0, 131072, -7995500, 0, 131072, -7995499, 0, 131072, -7995498, 0, 131072, -7995497, 0, 131072, -7995496, 0, 131072, -7995495, 0, 131072, -7995494, 0, 131072, -7995493, 0, 131072, -7995492, 0, 131072, -7995491, 0, 131072, -7995490, 0, 131072, -7995489, 0, 131072, -7995488, 0, 131072, -7995487, 0, 131072, -7995486, 0, 131072, -7995485, 0, 131072, -7995484, 0, 131072, -7995483, 0, 131072, -7995482, 0, 131072, -7995481, 0, 131072, -7995480, 0, 131072, -7995479, 0, 131072, -7995478, 0, 131072, -7995477, 0, 131072, -7995476, 0, 131072, -7995475, 0, 131072, -7995474, 0, 131072, -7995473, 0, 131072, -7995472, 0, 131072, -7995471, 0, 131072, -7995470, 0, 131072, -7995469, 0, 131072, -7995468, 0, 131072, -7995467, 0, 131072, -7995466, 0, 131072, -7995465, 0, 131072, -7995464, 0, 131072, -7995463, 0, 131072, -7995462, 0, 131072, -7995461, 0, 131072, -7995460, 0, 131072, -7995459, 0, 131072, -7995458, 0, 131072, -7995457, 0, 131072, -7995456, 0, 131072, -7995455, 0, 131072, -7995454, 0, 131072, -7995453, 0, 131072, -7995452, 0, 131072, -7995451, 0, 131072, -7995450, 0, 131072, -7995449, 0, 131072, -7995448, 0, 131072, -7995447, 0, 131072, -7995446, 0, 131072, -7995445, 0, 131072, -7995444, 0, 131072, -7995443, 0, 131072, -7995442, 0, 131072, -7995441, 0, 131072, -7995440, 0, 131072, -7995439, 0, 131072, -7995438, 0, 131072, -7995437, 0, 131072, -7995436, 0, 131072, -7995435, 0, 131072, -7995434, 0, 131072, -7995433, 0, 131072, -7995432, 0, 131072, -7995431, 0, 131072, -7995430, 0, 131072, -7995429, 0, 131072, -7995428, 0, 131072, -7995427, 0, 131072, -7995426, 0, 131072, -7995425, 0, 131072, -7995424, 0, 131072, -7995423, 0, 131072, -7995422, 0, 131072, -7995421, 0, 131072, -7995420, 0, 131072, -7995419, 0, 131072, -7995418, 0, 131072, -7995417, 0, 131072, -7995416, 0, 131072, -7995415, 0, 131072, -7995414, 0, 131072, -7995413, 0, 131072, -7995412, 0, 131072, -7995411, 0, 131072, -7995410, 0, 131072, -7995409, 0, 131072, -7995408, 0, 131072, -7995407, 0, 131072, -7995406, 0, 131072, -7995405, 0, 131072, -7995404, 0, 131072, -7995403, 0, 131072, -7995402, 0, 131072, -7995401, 0, 131072, -7995400, 0, 131072, -7995399, 0, 131072, -7995398, 0, 131072, -7995397, 0, 131072, -7995396, 0, 131072, -7995395, 0, 131072, -7995394, 0, 131072, -7995393, 0, 131072, -8060928, 0, 131072, -8060927, 0, 131072, -8060926, 0, 131072, -8060925, 0, 131072, -8060924, 0, 131072, -8060923, 0, 131072, -8060922, 0, 131072, -8060921, 0, 131072, -8060920, 0, 131072, -8060919, 0, 131072, -8060918, 0, 131072, -8060917, 0, 131072, -8060916, 0, 131072, -8060915, 0, 131072, -8060914, 0, 131072, -8060913, 0, 131072, -8060912, 0, 131072, -8060911, 0, 131072, -8060910, 0, 131072, -8060909, 0, 131072, -8060908, 0, 131072, -8060907, 0, 131072, -8060906, 0, 131072, -8060905, 0, 131072, -8060904, 0, 131072, -8060903, 0, 131072, -8060902, 0, 131072, -8060901, 0, 131072, -8060900, 0, 131072, -8060899, 0, 131072, -8060898, 0, 131072, -8060897, 0, 131072, -8060896, 0, 131072, -8060895, 0, 131072, -8060894, 0, 131072, -8060893, 0, 131072, -8060892, 0, 131072, -8060891, 0, 131072, -8060890, 0, 131072, -8060889, 0, 131072, -8060888, 0, 131072, -8060887, 0, 131072, -8060886, 0, 131072, -8060885, 0, 131072, -8060884, 0, 131072, -8060883, 0, 131072, -8060882, 0, 131072, -8060881, 0, 131072, -8060880, 0, 131072, -8060879, 0, 131072, -8060878, 0, 131072, -8060877, 0, 131072, -8060876, 0, 131072, -8060875, 0, 131072, -8060874, 0, 131072, -8060873, 0, 131072, -7929970, 0, 131072, -7929969, 0, 131072, -7929968, 0, 131072, -7929967, 0, 131072, -7929966, 0, 131072, -7929965, 0, 131072, -7929964, 0, 131072, -7929963, 0, 131072, -7929962, 0, 131072, -7929961, 0, 131072, -7929960, 0, 131072, -7929959, 0, 131072, -7929958, 0, 131072, -7929957, 0, 131072, -7929956, 0, 131072, -7929955, 0, 131072, -7929954, 0, 131072, -7929953, 0, 131072, -7929952, 0, 131072, -7929951, 0, 131072, -7929950, 0, 131072, -7929949, 0, 131072, -7929948, 0, 131072, -7929947, 0, 131072, -7929946, 0, 131072, -7929945, 0, 131072, -7929944, 0, 131072, -7929943, 0, 131072, -7929942, 0, 131072, -7929941, 0, 131072, -7929940, 0, 131072, -7929939, 0, 131072, -7929938, 0, 131072, -7929937, 0, 131072, -7929936, 0, 131072, -7929935, 0, 131072, -7929934, 0, 131072, -7929933, 0, 131072, -7929932, 0, 131072, -7929931, 0, 131072, -7929930, 0, 131072, -7929929, 0, 131072, -7929928, 0, 131072, -7929927, 0, 131072, -7929926, 0, 131072, -7929925, 0, 131072, -7929924, 0, 131072, -7929923, 0, 131072, -7929922, 0, 131072, -7929921, 0, 131072, -7929920, 0, 131072, -7929919, 0, 131072, -7929918, 0, 131072, -7929917, 0, 131072, -7929916, 0, 131072, -7929915, 0, 131072, -7929914, 0, 131072, -7929913, 0, 131072, -7929912, 0, 131072, -7929911, 0, 131072, -7929910, 0, 131072, -7929909, 0, 131072, -7929908, 0, 131072, -7929907, 0, 131072, -7929906, 0, 131072, -7929905, 0, 131072, -7929904, 0, 131072, -7929903, 0, 131072, -7929902, 0, 131072, -7929901, 0, 131072, -7929900, 0, 131072, -7929899, 0, 131072, -7929898, 0, 131072, -7929897, 0, 131072, -7929896, 0, 131072, -7929895, 0, 131072, -7929894, 0, 131072, -7929893, 0, 131072, -7929892, 0, 131072, -7929891, 0, 131072, -7929890, 0, 131072, -7929889, 0, 131072, -7929888, 0, 131072, -7929887, 0, 131072, -7929886, 0, 131072, -7929885, 0, 131072, -7929884, 0, 131072, -7929883, 0, 131072, -7929882, 0, 131072, -7929881, 0, 131072, -7929880, 0, 131072, -7929879, 0, 131072, -7929878, 0, 131072, -7929877, 0, 131072, -7929876, 0, 131072, -7929875, 0, 131072, -7929874, 0, 131072, -7929873, 0, 131072, -7929872, 0, 131072, -7929871, 0, 131072, -7929870, 0, 131072, -7929869, 0, 131072, -7929868, 0, 131072, -7929867, 0, 131072, -7929866, 0, 131072, -7929865, 0, 131072, -7929864, 0, 131072, -7929863, 0, 131072, -7929862, 0, 131072, -7929861, 0, 131072, -7929860, 0, 131072, -7929859, 0, 131072, -7929858, 0, 131072, -7929857, 0, 131072, -7995392, 0, 131072, -7995391, 0, 131072, -7995390, 0, 131072, -7995389, 0, 131072, -7995388, 0, 131072, -7995387, 0, 131072, -7995386, 0, 131072, -7995385, 0, 131072, -7995384, 0, 131072, -7995383, 0, 131072, -7995382, 0, 131072, -7995381, 0, 131072, -7995380, 0, 131072, -7995379, 0, 131072, -7995378, 0, 131072, -7995377, 0, 131072, -7995376, 0, 131072, -7995375, 0, 131072, -7995374, 0, 131072, -7995373, 0, 131072, -7995372, 0, 131072, -7995371, 0, 131072, -7995370, 0, 131072, -7995369, 0, 131072, -7995368, 0, 131072, -7995367, 0, 131072, -7995366, 0, 131072, -7995365, 0, 131072, -7995364, 0, 131072, -7995363, 0, 131072, -7995362, 0, 131072, -7995361, 0, 131072, -7995360, 0, 131072, -7995359, 0, 131072, -7995358, 0, 131072, -7995357, 0, 131072, -7995356, 0, 131072, -7995355, 0, 131072, -7995354, 0, 131072, -7995353, 0, 131072, -7995352, 0, 131072, -7995351, 0, 131072, -7995350, 0, 131072, -7995349, 0, 131072, -7995348, 0, 131072, -7995347, 0, 131072, -7995346, 0, 131072, -7995345, 0, 131072, -7995344, 0, 131072, -7995343, 0, 131072, -7995342, 0, 131072, -7995341, 0, 131072, -7995340, 0, 131072, -7995339, 0, 131072, -7995338, 0, 131072, -7995337, 0, 131072, -7995336, 0, 131072, -7995335, 0, 131072, -7864434, 0, 131072, -7864433, 0, 131072, -7864432, 0, 131072, -7864431, 0, 131072, -7864430, 0, 131072, -7864429, 0, 131072, -7864428, 0, 131072, -7864427, 0, 131072, -7864426, 0, 131072, -7864425, 0, 131072, -7864424, 0, 131072, -7864423, 0, 131072, -7864422, 0, 131072, -7864421, 0, 131072, -7864420, 0, 131072, -7864419, 0, 131072, -7864418, 0, 131072, -7864417, 0, 131072, -7864416, 0, 131072, -7864415, 0, 131072, -7864414, 0, 131072, -7864413, 0, 131072, -7864412, 0, 131072, -7864411, 0, 131072, -7864410, 0, 131072, -7864409, 0, 131072, -7864408, 0, 131072, -7864407, 0, 131072, -7864406, 0, 131072, -7864405, 0, 131072, -7864404, 0, 131072, -7864403, 0, 131072, -7864402, 0, 131072, -7864401, 0, 131072, -7864400, 0, 131072, -7864399, 0, 131072, -7864398, 0, 131072, -7864397, 0, 131072, -7864396, 0, 131072, -7864395, 0, 131072, -7864394, 0, 131072, -7864393, 0, 131072, -7864392, 0, 131072, -7864391, 0, 131072, -7864390, 0, 131072, -7864389, 0, 131072, -7864388, 0, 131072, -7864387, 0, 131072, -7864386, 0, 131072, -7864385, 0, 131072, -7864384, 0, 131072, -7864383, 0, 131072, -7864382, 0, 131072, -7864381, 0, 131072, -7864380, 0, 131072, -7864379, 0, 131072, -7864378, 0, 131072, -7864377, 0, 131072, -7864376, 0, 131072, -7864375, 0, 131072, -7864374, 0, 131072, -7864373, 0, 131072, -7864372, 0, 131072, -7864371, 0, 131072, -7864370, 0, 131072, -7864369, 0, 131072, -7864368, 0, 131072, -7864367, 0, 131072, -7864366, 0, 131072, -7864365, 0, 131072, -7864364, 0, 131072, -7864363, 0, 131072, -7864362, 0, 131072, -7864361, 0, 131072, -7864360, 0, 131072, -7864359, 0, 131072, -7864358, 0, 131072, -7864357, 0, 131072, -7864356, 0, 131072, -7864355, 0, 131072, -7864354, 0, 131072, -7864353, 0, 131072, -7864352, 0, 131072, -7864351, 0, 131072, -7864350, 0, 131072, -7864349, 0, 131072, -7864348, 0, 131072, -7864347, 0, 131072, -7864346, 0, 131072, -7864345, 0, 131072, -7864344, 0, 131072, -7864343, 0, 131072, -7864342, 0, 131072, -7864341, 0, 131072, -7864340, 0, 131072, -7864339, 0, 131072, -7864338, 0, 131072, -7864337, 0, 131072, -7864336, 0, 131072, -7864335, 0, 131072, -7864334, 0, 131072, -7864333, 0, 131072, -7864332, 0, 131072, -7864331, 0, 131072, -7864330, 0, 131072, -7864329, 0, 131072, -7864328, 0, 131072, -7864327, 0, 131072, -7864326, 0, 131072, -7864325, 0, 131072, -7864324, 0, 131072, -7864323, 0, 131072, -7864322, 0, 131072, -7864321, 0, 131072, -7929856, 0, 131072, -7929855, 0, 131072, -7929854, 0, 131072, -7929853, 0, 131072, -7929852, 0, 131072, -7929851, 0, 131072, -7929850, 0, 131072, -7929849, 0, 131072, -7929848, 0, 131072, -7929847, 0, 131072, -7929846, 0, 131072, -7929845, 0, 131072, -7929844, 0, 131072, -7929843, 0, 131072, -7929842, 0, 131072, -7929841, 0, 131072, -7929840, 0, 131072, -7929839, 0, 131072, -7929838, 0, 131072, -7929837, 0, 131072, -7929836, 0, 131072, -7929835, 0, 131072, -7929834, 0, 131072, -7929833, 0, 131072, -7929832, 0, 131072, -7929831, 0, 131072, -7929830, 0, 131072, -7929829, 0, 131072, -7929828, 0, 131072, -7929827, 0, 131072, -7929826, 0, 131072, -7929825, 0, 131072, -7929824, 0, 131072, -7929823, 0, 131072, -7929822, 0, 131072, -7929821, 0, 131072, -7929820, 0, 131072, -7929819, 0, 131072, -7929818, 0, 131072, -7929817, 0, 131072, -7929816, 0, 131072, -7929815, 0, 131072, -7929814, 0, 131072, -7929813, 0, 131072, -7929812, 0, 131072, -7929811, 0, 131072, -7929810, 0, 131072, -7929809, 0, 131072, -7929808, 0, 131072, -7929807, 0, 131072, -7929806, 0, 131072, -7929805, 0, 131072, -7929804, 0, 131072, -7929803, 0, 131072, -7929802, 0, 131072, -7929801, 0, 131072, -7929800, 0, 131072, -7929799, 0, 131072, -7929798, 0, 131072, -7929797, 0, 131072, -7798898, 0, 131072, -7798897, 0, 131072, -7798896, 0, 131072, -7798895, 0, 131072, -7798894, 0, 131072, -7798893, 0, 131072, -7798892, 0, 131072, -7798891, 0, 131072, -7798890, 0, 131072, -7798889, 0, 131072, -7798888, 0, 131072, -7798887, 0, 131072, -7798886, 0, 131072, -7798885, 0, 131072, -7798884, 0, 131072, -7798883, 0, 131072, -7798882, 0, 131072, -7798881, 0, 131072, -7798880, 0, 131072, -7798879, 0, 131072, -7798878, 0, 131072, -7798877, 0, 131072, -7798876, 0, 131072, -7798875, 0, 131072, -7798874, 0, 131072, -7798873, 0, 131072, -7798872, 0, 131072, -7798871, 0, 131072, -7798870, 0, 131072, -7798869, 0, 131072, -7798868, 0, 131072, -7798867, 0, 131072, -7798866, 0, 131072, -7798865, 0, 131072, -7798864, 0, 131072, -7798863, 0, 131072, -7798862, 0, 131072, -7798861, 0, 131072, -7798860, 0, 131072, -7798859, 0, 131072, -7798858, 0, 131072, -7798857, 0, 131072, -7798856, 0, 131072, -7798855, 0, 131072, -7798854, 0, 131072, -7798853, 0, 131072, -7798852, 0, 131072, -7798851, 0, 131072, -7798850, 0, 131072, -7798849, 0, 131072, -7798848, 0, 131072, -7798847, 0, 131072, -7798846, 0, 131072, -7798845, 0, 131072, -7798844, 0, 131072, -7798843, 0, 131072, -7798842, 0, 131072, -7798841, 0, 131072, -7798840, 0, 131072, -7798839, 0, 131072, -7798838, 0, 131072, -7798837, 0, 131072, -7798836, 0, 131072, -7798835, 0, 131072, -7798834, 0, 131072, -7798833, 0, 131072, -7798832, 0, 131072, -7798831, 0, 131072, -7798830, 0, 131072, -7798829, 0, 131072, -7798828, 0, 131072, -7798827, 0, 131072, -7798826, 0, 131072, -7798825, 0, 131072, -7798824, 0, 131072, -7798823, 0, 131072, -7798822, 0, 131072, -7798821, 0, 131072, -7798820, 0, 131072, -7798819, 0, 131072, -7798818, 0, 131072, -7798817, 0, 131072, -7798816, 0, 131072, -7798815, 0, 131072, -7798814, 0, 131072, -7798813, 0, 131072, -7798812, 0, 131072, -7798811, 0, 131072, -7798810, 0, 131072, -7798809, 0, 131072, -7798808, 0, 131072, -7798807, 0, 131072, -7798806, 0, 131072, -7798805, 0, 131072, -7798804, 0, 131072, -7798803, 0, 131072, -7798802, 0, 131072, -7798801, 0, 131072, -7798800, 0, 131072, -7798799, 0, 131072, -7798798, 0, 131072, -7798797, 0, 131072, -7798796, 0, 131072, -7798795, 0, 131072, -7798794, 0, 131072, -7798793, 0, 131072, -7798792, 0, 131072, -7798791, 0, 131072, -7798790, 0, 131072, -7798789, 0, 131072, -7798788, 0, 131072, -7798787, 0, 131072, -7798786, 0, 131072, -7798785, 0, 131072, -7864320, 0, 131072, -7864319, 0, 131072, -7864318, 0, 131072, -7864317, 0, 131072, -7864316, 0, 131072, -7864315, 0, 131072, -7864314, 0, 131072, -7864313, 0, 131072, -7864312, 0, 131072, -7864311, 0, 131072, -7864310, 0, 131072, -7864309, 0, 131072, -7864308, 0, 131072, -7864307, 0, 131072, -7864306, 0, 131072, -7864305, 0, 131072, -7864304, 0, 131072, -7864303, 0, 131072, -7864302, 0, 131072, -7864301, 0, 131072, -7864300, 0, 131072, -7864299, 0, 131072, -7864298, 0, 131072, -7864297, 0, 131072, -7864296, 0, 131072, -7864295, 0, 131072, -7864294, 0, 131072, -7864293, 0, 131072, -7864292, 0, 131072, -7864291, 0, 131072, -7864290, 0, 131072, -7864289, 0, 131072, -7864288, 0, 131072, -7864287, 0, 131072, -7864286, 0, 131072, -7864285, 0, 131072, -7864284, 0, 131072, -7864283, 0, 131072, -7864282, 0, 131072, -7864281, 0, 131072, -7864280, 0, 131072, -7864279, 0, 131072, -7864278, 0, 131072, -7864277, 0, 131072, -7864276, 0, 131072, -7864275, 0, 131072, -7864274, 0, 131072, -7864273, 0, 131072, -7864272, 0, 131072, -7864271, 0, 131072, -7864270, 0, 131072, -7864269, 0, 131072, -7864268, 0, 131072, -7864267, 0, 131072, -7864266, 0, 131072, -7864265, 0, 131072, -7864264, 0, 131072, -7864263, 0, 131072, -7864262, 0, 131072, -7864261, 0, 131072, -7864260, 0, 131072, -7864259, 0, 131072, -7733363, 0, 131072, -7733362, 0, 131072, -7733361, 0, 131072, -7733360, 0, 131072, -7733359, 0, 131072, -7733358, 0, 131072, -7733357, 0, 131072, -7733356, 0, 131072, -7733355, 0, 131072, -7733354, 0, 131072, -7733353, 0, 131072, -7733352, 0, 131072, -7733351, 0, 131072, -7733350, 0, 131072, -7733349, 0, 131072, -7733348, 0, 131072, -7733347, 0, 131072, -7733346, 0, 131072, -7733345, 0, 131072, -7733344, 0, 131072, -7733343, 0, 131072, -7733342, 0, 131072, -7733341, 0, 131072, -7733340, 0, 131072, -7733339, 0, 131072, -7733338, 0, 131072, -7733337, 0, 131072, -7733336, 0, 131072, -7733335, 0, 131072, -7733334, 0, 131072, -7733333, 0, 131072, -7733332, 0, 131072, -7733331, 0, 131072, -7733330, 0, 131072, -7733329, 0, 131072, -7733328, 0, 131072, -7733327, 0, 131072, -7733326, 0, 131072, -7733325, 0, 131072, -7733324, 0, 131072, -7733323, 0, 131072, -7733322, 0, 131072, -7733321, 0, 131072, -7733320, 0, 131072, -7733319, 0, 131072, -7733318, 0, 131072, -7733317, 0, 131072, -7733316, 0, 131072, -7733315, 0, 131072, -7733314, 0, 131072, -7733313, 0, 131072, -7733312, 0, 131072, -7733311, 0, 131072, -7733310, 0, 131072, -7733309, 0, 131072, -7733308, 0, 131072, -7733307, 0, 131072, -7733306, 0, 131072, -7733305, 0, 131072, -7733304, 0, 131072, -7733303, 0, 131072, -7733302, 0, 131072, -7733301, 0, 131072, -7733300, 0, 131072, -7733299, 0, 131072, -7733298, 0, 131072, -7733297, 0, 131072, -7733296, 0, 131072, -7733295, 0, 131072, -7733294, 0, 131072, -7733293, 0, 131072, -7733292, 0, 131072, -7733291, 0, 131072, -7733290, 0, 131072, -7733289, 0, 131072, -7733288, 0, 131072, -7733287, 0, 131072, -7733286, 0, 131072, -7733285, 0, 131072, -7733284, 0, 131072, -7733283, 0, 131072, -7733282, 0, 131072, -7733281, 0, 131072, -7733280, 0, 131072, -7733279, 0, 131072, -7733278, 0, 131072, -7733277, 0, 131072, -7733276, 0, 131072, -7733275, 0, 131072, -7733274, 0, 131072, -7733273, 0, 131072, -7733272, 0, 131072, -7733271, 0, 131072, -7733270, 0, 131072, -7733269, 0, 131072, -7733268, 0, 131072, -7733267, 0, 131072, -7733266, 0, 131072, -7733265, 0, 131072, -7733264, 0, 131072, -7733263, 0, 131072, -7733262, 0, 131072, -7733261, 0, 131072, -7733260, 0, 131072, -7733259, 0, 131072, -7733258, 0, 131072, -7733257, 0, 131072, -7733256, 0, 131072, -7733255, 0, 131072, -7733254, 0, 131072, -7733253, 0, 131072, -7733252, 0, 131072, -7733251, 0, 131072, -7733250, 0, 131072, -7733249, 0, 131072, -7798784, 0, 131072, -7798783, 0, 131072, -7798782, 0, 131072, -7798781, 0, 131072, -7798780, 0, 131072, -7798779, 0, 131072, -7798778, 0, 131072, -7798777, 0, 131072, -7798776, 0, 131072, -7798775, 0, 131072, -7798774, 0, 131072, -7798773, 0, 131072, -7798772, 0, 131072, -7798771, 0, 131072, -7798770, 0, 131072, -7798769, 0, 131072, -7798768, 0, 131072, -7798767, 0, 131072, -7798766, 0, 131072, -7798765, 0, 131072, -7798764, 0, 131072, -7798763, 0, 131072, -7798762, 0, 131072, -7798761, 0, 131072, -7798760, 0, 131072, -7798759, 0, 131072, -7798758, 0, 131072, -7798757, 0, 131072, -7798756, 0, 131072, -7798755, 0, 131072, -7798754, 0, 131072, -7798753, 0, 131072, -7798752, 0, 131072, -7798751, 0, 131072, -7798750, 0, 131072, -7798749, 0, 131072, -7798748, 0, 131072, -7798747, 0, 131072, -7798746, 0, 131072, -7798745, 0, 131072, -7798744, 0, 131072, -7798743, 0, 131072, -7798742, 0, 131072, -7798741, 0, 131072, -7798740, 0, 131072, -7798739, 0, 131072, -7798738, 0, 131072, -7798737, 0, 131072, -7798736, 0, 131072, -7798735, 0, 131072, -7798734, 0, 131072, -7798733, 0, 131072, -7798732, 0, 131072, -7798731, 0, 131072, -7798730, 0, 131072, -7798729, 0, 131072, -7798728, 0, 131072, -7798727, 0, 131072, -7798726, 0, 131072, -7798725, 0, 131072, -7798724, 0, 131072, -7798723, 0, 131072, -7798722, 0, 131072, -7667827, 0, 131072, -7667826, 0, 131072, -7667825, 0, 131072, -7667824, 0, 131072, -7667823, 0, 131072, -7667822, 0, 131072, -7667821, 0, 131072, -7667820, 0, 131072, -7667819, 0, 131072, -7667818, 0, 131072, -7667817, 0, 131072, -7667816, 0, 131072, -7667815, 0, 131072, -7667814, 0, 131072, -7667813, 0, 131072, -7667812, 0, 131072, -7667811, 0, 131072, -7667810, 0, 131072, -7667809, 0, 131072, -7667808, 0, 131072, -7667807, 0, 131072, -7667806, 0, 131072, -7667805, 0, 131072, -7667804, 0, 131072, -7667803, 0, 131072, -7667802, 0, 131072, -7667801, 0, 131072, -7667800, 0, 131072, -7667799, 0, 131072, -7667798, 0, 131072, -7667797, 0, 131072, -7667796, 0, 131072, -7667795, 0, 131072, -7667794, 0, 131072, -7667793, 0, 131072, -7667792, 0, 131072, -7667791, 0, 131072, -7667790, 0, 131072, -7667789, 0, 131072, -7667788, 0, 131072, -7667787, 0, 131072, -7667786, 0, 131072, -7667785, 0, 131072, -7667784, 0, 131072, -7667783, 0, 131072, -7667782, 0, 131072, -7667781, 0, 131072, -7667780, 0, 131072, -7667779, 0, 131072, -7667778, 0, 131072, -7667777, 0, 131072, -7667776, 0, 131072, -7667775, 0, 131072, -7667774, 0, 131072, -7667773, 0, 131072, -7667772, 0, 131072, -7667771, 0, 131072, -7667770, 0, 131072, -7667769, 0, 131072, -7667768, 0, 131072, -7667767, 0, 131072, -7667766, 0, 131072, -7667765, 0, 131072, -7667764, 0, 131072, -7667763, 0, 131072, -7667762, 0, 131072, -7667761, 0, 131072, -7667760, 0, 131072, -7667759, 0, 131072, -7667758, 0, 131072, -7667757, 0, 131072, -7667756, 0, 131072, -7667755, 0, 131072, -7667754, 0, 131072, -7667753, 0, 131072, -7667752, 0, 131072, -7667751, 0, 131072, -7667750, 0, 131072, -7667749, 0, 131072, -7667748, 0, 131072, -7667747, 0, 131072, -7667746, 0, 131072, -7667745, 0, 131072, -7667744, 0, 131072, -7667743, 0, 131072, -7667742, 0, 131072, -7667741, 0, 131072, -7667740, 0, 131072, -7667739, 0, 131072, -7667738, 0, 131072, -7667737, 0, 131072, -7667736, 0, 131072, -7667735, 0, 131072, -7667734, 0, 131072, -7667733, 0, 131072, -7667732, 0, 131072, -7667731, 0, 131072, -7667730, 0, 131072, -7667729, 0, 131072, -7667728, 0, 131072, -7667727, 0, 131072, -7667726, 0, 131072, -7667725, 0, 131072, -7667724, 0, 131072, -7667723, 0, 131072, -7667722, 0, 131072, -7667721, 0, 131072, -7667720, 0, 131072, -7667719, 0, 131072, -7667718, 0, 131072, -7667717, 0, 131072, -7667716, 0, 131072, -7667715, 0, 131072, -7667714, 0, 131072, -7667713, 0, 131072, -7733248, 0, 131072, -7733247, 0, 131072, -7733246, 0, 131072, -7733245, 0, 131072, -7733244, 0, 131072, -7733243, 0, 131072, -7733242, 0, 131072, -7733241, 0, 131072, -7733240, 0, 131072, -7733239, 0, 131072, -7733238, 0, 131072, -7733237, 0, 131072, -7733236, 0, 131072, -7733235, 0, 131072, -7733234, 0, 131072, -7733233, 0, 131072, -7733232, 0, 131072, -7733231, 0, 131072, -7733230, 0, 131072, -7733229, 0, 131072, -7733228, 0, 131072, -7733227, 0, 131072, -7733226, 0, 131072, -7733225, 0, 131072, -7733224, 0, 131072, -7733223, 0, 131072, -7733222, 0, 131072, -7733221, 0, 131072, -7733220, 0, 131072, -7733219, 0, 131072, -7733218, 0, 131072, -7733217, 0, 131072, -7733216, 0, 131072, -7733215, 0, 131072, -7733214, 0, 131072, -7733213, 0, 131072, -7733212, 0, 131072, -7733211, 0, 131072, -7733210, 0, 131072, -7733209, 0, 131072, -7733208, 0, 131072, -7733207, 0, 131072, -7733206, 0, 131072, -7733205, 0, 131072, -7733204, 0, 131072, -7733203, 0, 131072, -7733202, 0, 131072, -7733201, 0, 131072, -7733200, 0, 131072, -7733199, 0, 131072, -7733198, 0, 131072, -7733197, 0, 131072, -7733196, 0, 131072, -7733195, 0, 131072, -7733194, 0, 131072, -7733193, 0, 131072, -7733192, 0, 131072, -7733191, 0, 131072, -7733190, 0, 131072, -7733189, 0, 131072, -7733188, 0, 131072, -7733187, 0, 131072, -7733186, 0, 131072, -7733185, 0, 131072, -7733184, 0, 131072, -7602291, 0, 131072, -7602290, 0, 131072, -7602289, 0, 131072, -7602288, 0, 131072, -7602287, 0, 131072, -7602286, 0, 131072, -7602285, 0, 131072, -7602284, 0, 131072, -7602283, 0, 131072, -7602282, 0, 131072, -7602281, 0, 131072, -7602280, 0, 131072, -7602279, 0, 131072, -7602278, 0, 131072, -7602277, 0, 131072, -7602276, 0, 131072, -7602275, 0, 131072, -7602274, 0, 131072, -7602273, 0, 131072, -7602272, 0, 131072, -7602271, 0, 131072, -7602270, 0, 131072, -7602269, 0, 131072, -7602268, 0, 131072, -7602267, 0, 131072, -7602266, 0, 131072, -7602265, 0, 131072, -7602264, 0, 131072, -7602263, 0, 131072, -7602262, 0, 131072, -7602261, 0, 131072, -7602260, 0, 131072, -7602259, 0, 131072, -7602258, 0, 131072, -7602257, 0, 131072, -7602256, 0, 131072, -7602255, 0, 131072, -7602254, 0, 131072, -7602253, 0, 131072, -7602252, 0, 131072, -7602251, 0, 131072, -7602250, 0, 131072, -7602249, 0, 131072, -7602248, 0, 131072, -7602247, 0, 131072, -7602246, 0, 131072, -7602245, 0, 131072, -7602244, 0, 131072, -7602243, 0, 131072, -7602242, 0, 131072, -7602241, 0, 131072, -7602240, 0, 131072, -7602239, 0, 131072, -7602238, 0, 131072, -7602237, 0, 131072, -7602236, 0, 131072, -7602235, 0, 131072, -7602234, 0, 131072, -7602233, 0, 131072, -7602232, 0, 131072, -7602231, 0, 131072, -7602230, 0, 131072, -7602229, 0, 131072, -7602228, 0, 131072, -7602227, 0, 131072, -7602226, 0, 131072, -7602225, 0, 131072, -7602224, 0, 131072, -7602223, 0, 131072, -7602222, 0, 131072, -7602221, 0, 131072, -7602220, 0, 131072, -7602219, 0, 131072, -7602218, 0, 131072, -7602217, 0, 131072, -7602216, 0, 131072, -7602215, 0, 131072, -7602214, 0, 131072, -7602213, 0, 131072, -7602212, 0, 131072, -7602211, 0, 131072, -7602210, 0, 131072, -7602209, 0, 131072, -7602208, 0, 131072, -7602207, 0, 131072, -7602206, 0, 131072, -7602205, 0, 131072, -7602204, 0, 131072, -7602203, 0, 131072, -7602202, 0, 131072, -7602201, 0, 131072, -7602200, 0, 131072, -7602199, 0, 131072, -7602198, 0, 131072, -7602197, 0, 131072, -7602196, 0, 131072, -7602195, 0, 131072, -7602194, 0, 131072, -7602193, 0, 131072, -7602192, 0, 131072, -7602191, 0, 131072, -7602190, 0, 131072, -7602189, 0, 131072, -7602188, 0, 131072, -7602187, 0, 131072, -7602186, 0, 131072, -7602185, 0, 131072, -7602184, 0, 131072, -7602183, 0, 131072, -7602182, 0, 131072, -7602181, 0, 131072, -7602180, 0, 131072, -7602179, 0, 131072, -7602178, 0, 131072, -7602177, 0, 131072, -7667712, 0, 131072, -7667711, 0, 131072, -7667710, 0, 131072, -7667709, 0, 131072, -7667708, 0, 131072, -7667707, 0, 131072, -7667706, 0, 131072, -7667705, 0, 131072, -7667704, 0, 131072, -7667703, 0, 131072, -7667702, 0, 131072, -7667701, 0, 131072, -7667700, 0, 131072, -7667699, 0, 131072, -7667698, 0, 131072, -7667697, 0, 131072, -7667696, 0, 131072, -7667695, 0, 131072, -7667694, 0, 131072, -7667693, 0, 131072, -7667692, 0, 131072, -7667691, 0, 131072, -7667690, 0, 131072, -7667689, 0, 131072, -7667688, 0, 131072, -7667687, 0, 131072, -7667686, 0, 131072, -7667685, 0, 131072, -7667684, 0, 131072, -7667683, 0, 131072, -7667682, 0, 131072, -7667681, 0, 131072, -7667680, 0, 131072, -7667679, 0, 131072, -7667678, 0, 131072, -7667677, 0, 131072, -7667676, 0, 131072, -7667675, 0, 131072, -7667674, 0, 131072, -7667673, 0, 131072, -7667672, 0, 131072, -7667671, 0, 131072, -7667670, 0, 131072, -7667669, 0, 131072, -7667668, 0, 131072, -7667667, 0, 131072, -7667666, 0, 131072, -7667665, 0, 131072, -7667664, 0, 131072, -7667663, 0, 131072, -7667662, 0, 131072, -7667661, 0, 131072, -7667660, 0, 131072, -7667659, 0, 131072, -7667658, 0, 131072, -7667657, 0, 131072, -7667656, 0, 131072, -7667655, 0, 131072, -7667654, 0, 131072, -7667653, 0, 131072, -7667652, 0, 131072, -7667651, 0, 131072, -7667650, 0, 131072, -7667649, 0, 131072, -7667648, 0, 131072, -7667647, 0, 131072, -7667646, 0, 131072, -7536755, 0, 131072, -7536754, 0, 131072, -7536753, 0, 131072, -7536752, 0, 131072, -7536751, 0, 131072, -7536750, 0, 131072, -7536749, 0, 131072, -7536748, 0, 131072, -7536747, 0, 131072, -7536746, 0, 131072, -7536745, 0, 131072, -7536744, 0, 131072, -7536743, 0, 131072, -7536742, 0, 131072, -7536741, 0, 131072, -7536740, 0, 131072, -7536739, 0, 131072, -7536738, 0, 131072, -7536737, 0, 131072, -7536736, 0, 131072, -7536735, 0, 131072, -7536734, 0, 131072, -7536733, 0, 131072, -7536732, 0, 131072, -7536731, 0, 131072, -7536730, 0, 131072, -7536729, 0, 131072, -7536728, 0, 131072, -7536727, 0, 131072, -7536726, 0, 131072, -7536725, 0, 131072, -7536724, 0, 131072, -7536723, 0, 131072, -7536722, 0, 131072, -7536721, 0, 131072, -7536720, 0, 131072, -7536719, 0, 131072, -7536718, 0, 131072, -7536717, 0, 131072, -7536716, 0, 131072, -7536715, 0, 131072, -7536714, 0, 131072, -7536713, 0, 131072, -7536712, 0, 131072, -7536711, 0, 131072, -7536710, 0, 131072, -7536709, 0, 131072, -7536708, 0, 131072, -7536707, 0, 131072, -7536706, 0, 131072, -7536705, 0, 131072, -7536704, 0, 131072, -7536703, 0, 131072, -7536702, 0, 131072, -7536701, 0, 131072, -7536700, 0, 131072, -7536699, 0, 131072, -7536698, 0, 131072, -7536697, 0, 131072, -7536696, 0, 131072, -7536695, 0, 131072, -7536694, 0, 131072, -7536693, 0, 131072, -7536692, 0, 131072, -7536691, 0, 131072, -7536690, 0, 131072, -7536689, 0, 131072, -7536688, 0, 131072, -7536687, 0, 131072, -7536686, 0, 131072, -7536685, 0, 131072, -7536684, 0, 131072, -7536683, 0, 131072, -7536682, 0, 131072, -7536681, 0, 131072, -7536680, 0, 131072, -7536679, 0, 131072, -7536678, 0, 131072, -7536677, 0, 131072, -7536676, 0, 131072, -7536675, 0, 131072, -7536674, 0, 131072, -7536673, 0, 131072, -7536672, 0, 131072, -7536671, 0, 131072, -7536670, 0, 131072, -7536669, 0, 131072, -7536668, 0, 131072, -7536667, 0, 131072, -7536666, 0, 131072, -7536665, 0, 131072, -7536664, 0, 131072, -7536663, 0, 131072, -7536662, 0, 131072, -7536661, 0, 131072, -7536660, 0, 131072, -7536659, 0, 131072, -7536658, 0, 131072, -7536657, 0, 131072, -7536656, 0, 131072, -7536655, 0, 131072, -7536654, 0, 131072, -7536653, 0, 131072, -7536652, 0, 131072, -7536651, 0, 131072, -7536650, 0, 131072, -7536649, 0, 131072, -7536648, 0, 131072, -7536647, 0, 131072, -7536646, 0, 131072, -7536645, 0, 131072, -7536644, 0, 131072, -7536643, 0, 131072, -7536642, 0, 131072, -7536641, 0, 131072, -7602176, 0, 131072, -7602175, 0, 131072, -7602174, 0, 131072, -7602173, 0, 131072, -7602172, 0, 131072, -7602171, 0, 131072, -7602170, 0, 131072, -7602169, 0, 131072, -7602168, 0, 131072, -7602167, 0, 131072, -7602166, 0, 131072, -7602165, 0, 131072, -7602164, 0, 131072, -7602163, 0, 131072, -7602162, 0, 131072, -7602161, 0, 131072, -7602160, 0, 131072, -7602159, 0, 131072, -7602158, 0, 131072, -7602157, 0, 131072, -7602156, 0, 131072, -7602155, 0, 131072, -7602154, 0, 131072, -7602153, 0, 131072, -7602152, 0, 131072, -7602151, 0, 131072, -7602150, 0, 131072, -7602149, 0, 131072, -7602148, 0, 131072, -7602147, 0, 131072, -7602146, 0, 131072, -7602145, 0, 131072, -7602144, 0, 131072, -7602143, 0, 131072, -7602142, 0, 131072, -7602141, 0, 131072, -7602140, 0, 131072, -7602139, 0, 131072, -7602138, 0, 131072, -7602137, 0, 131072, -7602136, 0, 131072, -7602135, 0, 131072, -7602134, 0, 131072, -7602133, 0, 131072, -7602132, 0, 131072, -7602131, 0, 131072, -7602130, 0, 131072, -7602129, 0, 131072, -7602128, 0, 131072, -7602127, 0, 131072, -7602126, 0, 131072, -7602125, 0, 131072, -7602124, 0, 131072, -7602123, 0, 131072, -7602122, 0, 131072, -7602121, 0, 131072, -7602120, 0, 131072, -7602119, 0, 131072, -7602118, 0, 131072, -7602117, 0, 131072, -7602116, 0, 131072, -7602115, 0, 131072, -7602114, 0, 131072, -7602113, 0, 131072, -7602112, 0, 131072, -7602111, 0, 131072, -7602110, 0, 131072, -7602109, 0, 131072, -7471219, 0, 131072, -7471218, 0, 131072, -7471217, 0, 131072, -7471216, 0, 131072, -7471215, 0, 131072, -7471214, 0, 131072, -7471213, 0, 131072, -7471212, 0, 131072, -7471211, 0, 131072, -7471210, 0, 131072, -7471209, 0, 131072, -7471208, 0, 131072, -7471207, 0, 131072, -7471206, 0, 131072, -7471205, 0, 131072, -7471204, 0, 131072, -7471203, 0, 131072, -7471202, 0, 131072, -7471201, 0, 131072, -7471200, 0, 131072, -7471199, 0, 131072, -7471198, 0, 131072, -7471197, 0, 131072, -7471196, 0, 131072, -7471195, 0, 131072, -7471194, 0, 131072, -7471193, 0, 131072, -7471192, 0, 131072, -7471191, 0, 131072, -7471190, 0, 131072, -7471189, 0, 131072, -7471188, 0, 131072, -7471187, 0, 131072, -7471186, 0, 131072, -7471185, 0, 131072, -7471184, 0, 131072, -7471183, 0, 131072, -7471182, 0, 131072, -7471181, 0, 131072, -7471180, 0, 131072, -7471179, 0, 131072, -7471178, 0, 131072, -7471177, 0, 131072, -7471176, 0, 131072, -7471175, 0, 131072, -7471174, 0, 131072, -7471173, 0, 131072, -7471172, 0, 131072, -7471171, 0, 131072, -7471170, 0, 131072, -7471169, 0, 131072, -7471168, 0, 131072, -7471167, 0, 131072, -7471166, 0, 131072, -7471165, 0, 131072, -7471164, 0, 131072, -7471163, 0, 131072, -7471162, 0, 131072, -7471161, 0, 131072, -7471160, 0, 131072, -7471159, 0, 131072, -7471158, 0, 131072, -7471157, 0, 131072, -7471156, 0, 131072, -7471155, 0, 131072, -7471154, 0, 131072, -7471153, 0, 131072, -7471152, 0, 131072, -7471151, 0, 131072, -7471150, 0, 131072, -7471149, 0, 131072, -7471148, 0, 131072, -7471147, 0, 131072, -7471146, 0, 131072, -7471145, 0, 131072, -7471144, 0, 131072, -7471143, 0, 131072, -7471142, 0, 131072, -7471141, 0, 131072, -7471140, 0, 131072, -7471139, 0, 131072, -7471138, 0, 131072, -7471137, 0, 131072, -7471136, 0, 131072, -7471135, 0, 131072, -7471134, 0, 131072, -7471133, 0, 131072, -7471132, 0, 131072, -7471131, 0, 131072, -7471130, 0, 131072, -7471129, 0, 131072, -7471128, 0, 131072, -7471127, 0, 131072, -7471126, 0, 131072, -7471125, 0, 131072, -7471124, 0, 131072, -7471123, 0, 131072, -7471122, 0, 131072, -7471121, 0, 131072, -7471120, 0, 131072, -7471119, 0, 131072, -7471118, 0, 131072, -7471117, 0, 131072, -7471116, 0, 131072, -7471115, 0, 131072, -7471114, 0, 131072, -7471113, 0, 131072, -7471112, 0, 131072, -7471111, 0, 131072, -7471110, 0, 131072, -7471109, 0, 131072, -7471108, 0, 131072, -7471107, 0, 131072, -7471106, 0, 131072, -7471105, 0, 131072, -7536640, 0, 131072, -7536639, 0, 131072, -7536638, 0, 131072, -7536637, 0, 131072, -7536636, 0, 131072, -7536635, 0, 131072, -7536634, 0, 131072, -7536633, 0, 131072, -7536632, 0, 131072, -7536631, 0, 131072, -7536630, 0, 131072, -7536629, 0, 131072, -7536628, 0, 131072, -7536627, 0, 131072, -7536626, 0, 131072, -7536625, 0, 131072, -7536624, 0, 131072, -7536623, 0, 131072, -7536622, 0, 131072, -7536621, 0, 131072, -7536620, 0, 131072, -7536619, 0, 131072, -7536618, 0, 131072, -7536617, 0, 131072, -7536616, 0, 131072, -7536615, 0, 131072, -7536614, 0, 131072, -7536613, 0, 131072, -7536612, 0, 131072, -7536611, 0, 131072, -7536610, 0, 131072, -7536609, 0, 131072, -7536608, 0, 131072, -7536607, 0, 131072, -7536606, 0, 131072, -7536605, 0, 131072, -7536604, 0, 131072, -7536603, 0, 131072, -7536602, 0, 131072, -7536601, 0, 131072, -7536600, 0, 131072, -7536599, 0, 131072, -7536598, 0, 131072, -7536597, 0, 131072, -7536596, 0, 131072, -7536595, 0, 131072, -7536594, 0, 131072, -7536593, 0, 131072, -7536592, 0, 131072, -7536591, 0, 131072, -7536590, 0, 131072, -7536589, 0, 131072, -7536588, 0, 131072, -7536587, 0, 131072, -7536586, 0, 131072, -7536585, 0, 131072, -7536584, 0, 131072, -7536583, 0, 131072, -7536582, 0, 131072, -7536581, 0, 131072, -7536580, 0, 131072, -7536579, 0, 131072, -7536578, 0, 131072, -7536577, 0, 131072, -7536576, 0, 131072, -7536575, 0, 131072, -7536574, 0, 131072, -7536573, 0, 131072, -7536572, 0, 131072, -7536571, 0, 131072, -7405683, 0, 131072, -7405682, 0, 131072, -7405681, 0, 131072, -7405680, 0, 131072, -7405679, 0, 131072, -7405678, 0, 131072, -7405677, 0, 131072, -7405676, 0, 131072, -7405675, 0, 131072, -7405674, 0, 131072, -7405673, 0, 131072, -7405672, 0, 131072, -7405671, 0, 131072, -7405670, 0, 131072, -7405669, 0, 131072, -7405668, 0, 131072, -7405667, 0, 131072, -7405666, 0, 131072, -7405665, 0, 131072, -7405664, 0, 131072, -7405663, 0, 131072, -7405662, 0, 131072, -7405661, 0, 131072, -7405660, 0, 131072, -7405659, 0, 131072, -7405658, 0, 131072, -7405657, 0, 131072, -7405656, 0, 131072, -7405655, 0, 131072, -7405654, 0, 131072, -7405653, 0, 131072, -7405652, 0, 131072, -7405651, 0, 131072, -7405650, 0, 131072, -7405649, 0, 131072, -7405648, 0, 131072, -7405647, 0, 131072, -7405646, 0, 131072, -7405645, 0, 131072, -7405644, 0, 131072, -7405643, 0, 131072, -7405642, 0, 131072, -7405641, 0, 131072, -7405640, 0, 131072, -7405639, 0, 131072, -7405638, 0, 131072, -7405637, 0, 131072, -7405636, 0, 131072, -7405635, 0, 131072, -7405634, 0, 131072, -7405633, 0, 131072, -7405632, 0, 131072, -7405631, 0, 131072, -7405630, 0, 131072, -7405629, 0, 131072, -7405628, 0, 131072, -7405627, 0, 131072, -7405626, 0, 131072, -7405625, 0, 131072, -7405624, 0, 131072, -7405623, 0, 131072, -7405622, 0, 131072, -7405621, 0, 131072, -7405620, 0, 131072, -7405619, 0, 131072, -7405618, 0, 131072, -7405617, 0, 131072, -7405616, 0, 131072, -7405615, 0, 131072, -7405614, 0, 131072, -7405613, 0, 131072, -7405612, 0, 131072, -7405611, 0, 131072, -7405610, 0, 131072, -7405609, 0, 131072, -7405608, 0, 131072, -7405607, 0, 131072, -7405606, 0, 131072, -7405605, 0, 131072, -7405604, 0, 131072, -7405603, 0, 131072, -7405602, 0, 131072, -7405601, 0, 131072, -7405600, 0, 131072, -7405599, 0, 131072, -7405598, 0, 131072, -7405597, 0, 131072, -7405596, 0, 131072, -7405595, 0, 131072, -7405594, 0, 131072, -7405593, 0, 131072, -7405592, 0, 131072, -7405591, 0, 131072, -7405590, 0, 131072, -7405589, 0, 131072, -7405588, 0, 131072, -7405587, 0, 131072, -7405586, 0, 131072, -7405585, 0, 131072, -7405584, 0, 131072, -7405583, 0, 131072, -7405582, 0, 131072, -7405581, 0, 131072, -7405580, 0, 131072, -7405579, 0, 131072, -7405578, 0, 131072, -7405577, 0, 131072, -7405576, 0, 131072, -7405575, 0, 131072, -7405574, 0, 131072, -7405573, 0, 131072, -7405572, 0, 131072, -7405571, 0, 131072, -7405570, 0, 131072, -7405569, 0, 131072, -7471104, 0, 131072, -7471103, 0, 131072, -7471102, 0, 131072, -7471101, 0, 131072, -7471100, 0, 131072, -7471099, 0, 131072, -7471098, 0, 131072, -7471097, 0, 131072, -7471096, 0, 131072, -7471095, 0, 131072, -7471094, 0, 131072, -7471093, 0, 131072, -7471092, 0, 131072, -7471091, 0, 131072, -7471090, 0, 131072, -7471089, 0, 131072, -7471088, 0, 131072, -7471087, 0, 131072, -7471086, 0, 131072, -7471085, 0, 131072, -7471084, 0, 131072, -7471083, 0, 131072, -7471082, 0, 131072, -7471081, 0, 131072, -7471080, 0, 131072, -7471079, 0, 131072, -7471078, 0, 131072, -7471077, 0, 131072, -7471076, 0, 131072, -7471075, 0, 131072, -7471074, 0, 131072, -7471073, 0, 131072, -7471072, 0, 131072, -7471071, 0, 131072, -7471070, 0, 131072, -7471069, 0, 131072, -7471068, 0, 131072, -7471067, 0, 131072, -7471066, 0, 131072, -7471065, 0, 131072, -7471064, 0, 131072, -7471063, 0, 131072, -7471062, 0, 131072, -7471061, 0, 131072, -7471060, 0, 131072, -7471059, 0, 131072, -7471058, 0, 131072, -7471057, 0, 131072, -7471056, 0, 131072, -7471055, 0, 131072, -7471054, 0, 131072, -7471053, 0, 131072, -7471052, 0, 131072, -7471051, 0, 131072, -7471050, 0, 131072, -7471049, 0, 131072, -7471048, 0, 131072, -7471047, 0, 131072, -7471046, 0, 131072, -7471045, 0, 131072, -7471044, 0, 131072, -7471043, 0, 131072, -7471042, 0, 131072, -7471041, 0, 131072, -7471040, 0, 131072, -7471039, 0, 131072, -7471038, 0, 131072, -7471037, 0, 131072, -7471036, 0, 131072, -7471035, 0, 131072, -7471034, 0, 131072, -7340147, 0, 131072, -7340146, 0, 131072, -7340145, 0, 131072, -7340144, 0, 131072, -7340143, 0, 131072, -7340142, 0, 131072, -7340141, 0, 131072, -7340140, 0, 131072, -7340139, 0, 131072, -7340138, 0, 131072, -7340137, 0, 131072, -7340136, 0, 131072, -7340135, 0, 131072, -7340134, 0, 131072, -7340133, 0, 131072, -7340132, 0, 131072, -7340131, 0, 131072, -7340130, 0, 131072, -7340129, 0, 131072, -7340128, 0, 131072, -7340127, 0, 131072, -7340126, 0, 131072, -7340125, 0, 131072, -7340124, 0, 131072, -7340123, 0, 131072, -7340122, 0, 131072, -7340121, 0, 131072, -7340120, 0, 131072, -7340119, 0, 131072, -7340118, 0, 131072, -7340117, 0, 131072, -7340116, 0, 131072, -7340115, 0, 131072, -7340114, 0, 131072, -7340113, 0, 131072, -7340112, 0, 131072, -7340111, 0, 131072, -7340110, 0, 131072, -7340109, 0, 131072, -7340108, 0, 131072, -7340107, 0, 131072, -7340106, 0, 131072, -7340105, 0, 131072, -7340104, 0, 131072, -7340103, 0, 131072, -7340102, 0, 131072, -7340101, 0, 131072, -7340100, 0, 131072, -7340099, 0, 131072, -7340098, 0, 131072, -7340097, 0, 131072, -7340096, 0, 131072, -7340095, 0, 131072, -7340094, 0, 131072, -7340093, 0, 131072, -7340092, 0, 131072, -7340091, 0, 131072, -7340090, 0, 131072, -7340089, 0, 131072, -7340088, 0, 131072, -7340087, 0, 131072, -7340086, 0, 131072, -7340085, 0, 131072, -7340084, 0, 131072, -7340083, 0, 131072, -7340082, 0, 131072, -7340081, 0, 131072, -7340080, 0, 131072, -7340079, 0, 131072, -7340078, 0, 131072, -7340077, 0, 131072, -7340076, 0, 131072, -7340075, 0, 131072, -7340074, 0, 131072, -7340073, 0, 131072, -7340072, 0, 131072, -7340071, 0, 131072, -7340070, 0, 131072, -7340069, 0, 131072, -7340068, 0, 131072, -7340067, 0, 131072, -7340066, 0, 131072, -7340065, 0, 131072, -7340064, 0, 131072, -7340063, 0, 131072, -7340062, 0, 131072, -7340061, 0, 131072, -7340060, 0, 131072, -7340059, 0, 131072, -7340058, 0, 131072, -7340057, 0, 131072, -7340056, 0, 131072, -7340055, 0, 131072, -7340054, 0, 131072, -7340053, 0, 131072, -7340052, 0, 131072, -7340051, 0, 131072, -7340050, 0, 131072, -7340049, 0, 131072, -7340048, 0, 131072, -7340047, 0, 131072, -7340046, 0, 131072, -7340045, 0, 131072, -7340044, 0, 131072, -7340043, 0, 131072, -7340042, 0, 131072, -7340041, 0, 131072, -7340040, 0, 131072, -7340039, 0, 131072, -7340038, 0, 131072, -7340037, 0, 131072, -7340036, 0, 131072, -7340035, 0, 131072, -7340034, 0, 131072, -7340033, 0, 131072, -7405568, 0, 131072, -7405567, 0, 131072, -7405566, 0, 131072, -7405565, 0, 131072, -7405564, 0, 131072, -7405563, 0, 131072, -7405562, 0, 131072, -7405561, 0, 131072, -7405560, 0, 131072, -7405559, 0, 131072, -7405558, 0, 131072, -7405557, 0, 131072, -7405556, 0, 131072, -7405555, 0, 131072, -7405554, 0, 131072, -7405553, 0, 131072, -7405552, 0, 131072, -7405551, 0, 131072, -7405550, 0, 131072, -7405549, 0, 131072, -7405548, 0, 131072, -7405547, 0, 131072, -7405546, 0, 131072, -7405545, 0, 131072, -7405544, 0, 131072, -7405543, 0, 131072, -7405542, 0, 131072, -7405541, 0, 131072, -7405540, 0, 131072, -7405539, 0, 131072, -7405538, 0, 131072, -7405537, 0, 131072, -7405536, 0, 131072, -7405535, 0, 131072, -7405534, 0, 131072, -7405533, 0, 131072, -7405532, 0, 131072, -7405531, 0, 131072, -7405530, 0, 131072, -7405529, 0, 131072, -7405528, 0, 131072, -7405527, 0, 131072, -7405526, 0, 131072, -7405525, 0, 131072, -7405524, 0, 131072, -7405523, 0, 131072, -7405522, 0, 131072, -7405521, 0, 131072, -7405520, 0, 131072, -7405519, 0, 131072, -7405518, 0, 131072, -7405517, 0, 131072, -7405516, 0, 131072, -7405515, 0, 131072, -7405514, 0, 131072, -7405513, 0, 131072, -7405512, 0, 131072, -7405511, 0, 131072, -7405510, 0, 131072, -7405509, 0, 131072, -7405508, 0, 131072, -7405507, 0, 131072, -7405506, 0, 131072, -7405505, 0, 131072, -7405504, 0, 131072, -7405503, 0, 131072, -7405502, 0, 131072, -7405501, 0, 131072, -7405500, 0, 131072, -7405499, 0, 131072, -7405498, 0, 131072, -7405497, 0, 131072, -7405496, 0, 131072, -7274611, 0, 131072, -7274610, 0, 131072, -7274609, 0, 131072, -7274608, 0, 131072, -7274607, 0, 131072, -7274606, 0, 131072, -7274605, 0, 131072, -7274604, 0, 131072, -7274603, 0, 131072, -7274602, 0, 131072, -7274601, 0, 131072, -7274600, 0, 131072, -7274599, 0, 131072, -7274598, 0, 131072, -7274597, 0, 131072, -7274596, 0, 131072, -7274595, 0, 131072, -7274594, 0, 131072, -7274593, 0, 131072, -7274592, 0, 131072, -7274591, 0, 131072, -7274590, 0, 131072, -7274589, 0, 131072, -7274588, 0, 131072, -7274587, 0, 131072, -7274586, 0, 131072, -7274585, 0, 131072, -7274584, 0, 131072, -7274583, 0, 131072, -7274582, 0, 131072, -7274581, 0, 131072, -7274580, 0, 131072, -7274579, 0, 131072, -7274578, 0, 131072, -7274577, 0, 131072, -7274576, 0, 131072, -7274575, 0, 131072, -7274574, 0, 131072, -7274573, 0, 131072, -7274572, 0, 131072, -7274571, 0, 131072, -7274570, 0, 131072, -7274569, 0, 131072, -7274568, 0, 131072, -7274567, 0, 131072, -7274566, 0, 131072, -7274565, 0, 131072, -7274564, 0, 131072, -7274563, 0, 131072, -7274562, 0, 131072, -7274561, 0, 131072, -7274560, 0, 131072, -7274559, 0, 131072, -7274558, 0, 131072, -7274557, 0, 131072, -7274556, 0, 131072, -7274555, 0, 131072, -7274554, 0, 131072, -7274553, 0, 131072, -7274552, 0, 131072, -7274551, 0, 131072, -7274550, 0, 131072, -7274549, 0, 131072, -7274548, 0, 131072, -7274547, 0, 131072, -7274546, 0, 131072, -7274545, 0, 131072, -7274544, 0, 131072, -7274543, 0, 131072, -7274542, 0, 131072, -7274541, 0, 131072, -7274540, 0, 131072, -7274539, 0, 131072, -7274538, 0, 131072, -7274537, 0, 131072, -7274536, 0, 131072, -7274535, 0, 131072, -7274534, 0, 131072, -7274533, 0, 131072, -7274532, 0, 131072, -7274531, 0, 131072, -7274530, 0, 131072, -7274529, 0, 131072, -7274528, 0, 131072, -7274527, 0, 131072, -7274526, 0, 131072, -7274525, 0, 131072, -7274524, 0, 131072, -7274523, 0, 131072, -7274522, 0, 131072, -7274521, 0, 131072, -7274520, 0, 131072, -7274519, 0, 131072, -7274518, 0, 131072, -7274517, 0, 131072, -7274516, 0, 131072, -7274515, 0, 131072, -7274514, 0, 131072, -7274513, 0, 131072, -7274512, 0, 131072, -7274511, 0, 131072, -7274510, 0, 131072, -7274509, 0, 131072, -7274508, 0, 131072, -7274507, 0, 131072, -7274506, 0, 131072, -7274505, 0, 131072, -7274504, 0, 131072, -7274503, 0, 131072, -7274502, 0, 131072, -7274501, 0, 131072, -7274500, 0, 131072, -7274499, 0, 131072, -7274498, 0, 131072, -7274497, 0, 131072, -7340032, 0, 131072, -7340031, 0, 131072, -7340030, 0, 131072, -7340029, 0, 131072, -7340028, 0, 131072, -7340027, 0, 131072, -7340026, 0, 131072, -7340025, 0, 131072, -7340024, 0, 131072, -7340023, 0, 131072, -7340022, 0, 131072, -7340021, 0, 131072, -7340020, 0, 131072, -7340019, 0, 131072, -7340018, 0, 131072, -7340017, 0, 131072, -7340016, 0, 131072, -7340015, 0, 131072, -7340014, 0, 131072, -7340013, 0, 131072, -7340012, 0, 131072, -7340011, 0, 131072, -7340010, 0, 131072, -7340009, 0, 131072, -7340008, 0, 131072, -7340007, 0, 131072, -7340006, 0, 131072, -7340005, 0, 131072, -7340004, 0, 131072, -7340003, 0, 131072, -7340002, 0, 131072, -7340001, 0, 131072, -7340000, 0, 131072, -7339999, 0, 131072, -7339998, 0, 131072, -7339997, 0, 131072, -7339996, 0, 131072, -7339995, 0, 131072, -7339994, 0, 131072, -7339993, 0, 131072, -7339992, 0, 131072, -7339991, 0, 131072, -7339990, 0, 131072, -7339989, 0, 131072, -7339988, 0, 131072, -7339987, 0, 131072, -7339986, 0, 131072, -7339985, 0, 131072, -7339984, 0, 131072, -7339983, 0, 131072, -7339982, 0, 131072, -7339981, 0, 131072, -7339980, 0, 131072, -7339979, 0, 131072, -7339978, 0, 131072, -7339977, 0, 131072, -7339976, 0, 131072, -7339975, 0, 131072, -7339974, 0, 131072, -7339973, 0, 131072, -7339972, 0, 131072, -7339971, 0, 131072, -7339970, 0, 131072, -7339969, 0, 131072, -7339968, 0, 131072, -7339967, 0, 131072, -7339966, 0, 131072, -7339965, 0, 131072, -7339964, 0, 131072, -7339963, 0, 131072, -7339962, 0, 131072, -7339961, 0, 131072, -7339960, 0, 131072, -7339959, 0, 131072, -7339958, 0, 131072, -7209075, 0, 131072, -7209074, 0, 131072, -7209073, 0, 131072, -7209072, 0, 131072, -7209071, 0, 131072, -7209070, 0, 131072, -7209069, 0, 131072, -7209068, 0, 131072, -7209067, 0, 131072, -7209066, 0, 131072, -7209065, 0, 131072, -7209064, 0, 131072, -7209063, 0, 131072, -7209062, 0, 131072, -7209061, 0, 131072, -7209060, 0, 131072, -7209059, 0, 131072, -7209058, 0, 131072, -7209057, 0, 131072, -7209056, 0, 131072, -7209055, 0, 131072, -7209054, 0, 131072, -7209053, 0, 131072, -7209052, 0, 131072, -7209051, 0, 131072, -7209050, 0, 131072, -7209049, 0, 131072, -7209048, 0, 131072, -7209047, 0, 131072, -7209046, 0, 131072, -7209045, 0, 131072, -7209044, 0, 131072, -7209043, 0, 131072, -7209042, 0, 131072, -7209041, 0, 131072, -7209040, 0, 131072, -7209039, 0, 131072, -7209038, 0, 131072, -7209037, 0, 131072, -7209036, 0, 131072, -7209035, 0, 131072, -7209034, 0, 131072, -7209033, 0, 131072, -7209032, 0, 131072, -7209031, 0, 131072, -7209030, 0, 131072, -7209029, 0, 131072, -7209028, 0, 131072, -7209027, 0, 131072, -7209026, 0, 131072, -7209025, 0, 131072, -7209024, 0, 131072, -7209023, 0, 131072, -7209022, 0, 131072, -7209021, 0, 131072, -7209020, 0, 131072, -7209019, 0, 131072, -7209018, 0, 131072, -7209017, 0, 131072, -7209016, 0, 131072, -7209015, 0, 131072, -7209014, 0, 131072, -7209013, 0, 131072, -7209012, 0, 131072, -7209011, 0, 131072, -7209010, 0, 131072, -7209009, 0, 131072, -7209008, 0, 131072, -7209007, 0, 131072, -7209006, 0, 131072, -7209005, 0, 131072, -7209004, 0, 131072, -7209003, 0, 131072, -7209002, 0, 131072, -7209001, 0, 131072, -7209000, 0, 131072, -7208999, 0, 131072, -7208998, 0, 131072, -7208997, 0, 131072, -7208996, 0, 131072, -7208995, 0, 131072, -7208994, 0, 131072, -7208993, 0, 131072, -7208992, 0, 131072, -7208991, 0, 131072, -7208990, 0, 131072, -7208989, 0, 131072, -7208988, 0, 131072, -7208987, 0, 131072, -7208986, 0, 131072, -7208985, 0, 131072, -7208984, 0, 131072, -7208983, 0, 131072, -7208982, 0, 131072, -7208981, 0, 131072, -7208980, 0, 131072, -7208979, 0, 131072, -7208978, 0, 131072, -7208977, 0, 131072, -7208976, 0, 131072, -7208975, 0, 131072, -7208974, 0, 131072, -7208973, 0, 131072, -7208972, 0, 131072, -7208971, 0, 131072, -7208970, 0, 131072, -7208969, 0, 131072, -7208968, 0, 131072, -7208967, 0, 131072, -7208966, 0, 131072, -7208965, 0, 131072, -7208964, 0, 131072, -7208963, 0, 131072, -7208962, 0, 131072, -7208961, 0, 131072, -7274496, 0, 131072, -7274495, 0, 131072, -7274494, 0, 131072, -7274493, 0, 131072, -7274492, 0, 131072, -7274491, 0, 131072, -7274490, 0, 131072, -7274489, 0, 131072, -7274488, 0, 131072, -7274487, 0, 131072, -7274486, 0, 131072, -7274485, 0, 131072, -7274484, 0, 131072, -7274483, 0, 131072, -7274482, 0, 131072, -7274481, 0, 131072, -7274480, 0, 131072, -7274479, 0, 131072, -7274478, 0, 131072, -7274477, 0, 131072, -7274476, 0, 131072, -7274475, 0, 131072, -7274474, 0, 131072, -7274473, 0, 131072, -7274472, 0, 131072, -7274471, 0, 131072, -7274470, 0, 131072, -7274469, 0, 131072, -7274468, 0, 131072, -7274467, 0, 131072, -7274466, 0, 131072, -7274465, 0, 131072, -7274464, 0, 131072, -7274463, 0, 131072, -7274462, 0, 131072, -7274461, 0, 131072, -7274460, 0, 131072, -7274459, 0, 131072, -7274458, 0, 131072, -7274457, 0, 131072, -7274456, 0, 131072, -7274455, 0, 131072, -7274454, 0, 131072, -7274453, 0, 131072, -7274452, 0, 131072, -7274451, 0, 131072, -7274450, 0, 131072, -7274449, 0, 131072, -7274448, 0, 131072, -7274447, 0, 131072, -7274446, 0, 131072, -7274445, 0, 131072, -7274444, 0, 131072, -7274443, 0, 131072, -7274442, 0, 131072, -7274441, 0, 131072, -7274440, 0, 131072, -7274439, 0, 131072, -7274438, 0, 131072, -7274437, 0, 131072, -7274436, 0, 131072, -7274435, 0, 131072, -7274434, 0, 131072, -7274433, 0, 131072, -7274432, 0, 131072, -7274431, 0, 131072, -7274430, 0, 131072, -7274429, 0, 131072, -7274428, 0, 131072, -7274427, 0, 131072, -7274426, 0, 131072, -7274425, 0, 131072, -7274424, 0, 131072, -7274423, 0, 131072, -7274422, 0, 131072, -7274421, 0, 131072, -7143538, 0, 131072, -7143537, 0, 131072, -7143536, 0, 131072, -7143535, 0, 131072, -7143534, 0, 131072, -7143533, 0, 131072, -7143532, 0, 131072, -7143531, 0, 131072, -7143530, 0, 131072, -7143529, 0, 131072, -7143528, 0, 131072, -7143527, 0, 131072, -7143526, 0, 131072, -7143525, 0, 131072, -7143524, 0, 131072, -7143523, 0, 131072, -7143522, 0, 131072, -7143521, 0, 131072, -7143520, 0, 131072, -7143519, 0, 131072, -7143518, 0, 131072, -7143517, 0, 131072, -7143516, 0, 131072, -7143515, 0, 131072, -7143514, 0, 131072, -7143513, 0, 131072, -7143512, 0, 131072, -7143511, 0, 131072, -7143510, 0, 131072, -7143509, 0, 131072, -7143508, 0, 131072, -7143507, 0, 131072, -7143506, 0, 131072, -7143505, 0, 131072, -7143504, 0, 131072, -7143503, 0, 131072, -7143502, 0, 131072, -7143501, 0, 131072, -7143500, 0, 131072, -7143499, 0, 131072, -7143498, 0, 131072, -7143497, 0, 131072, -7143496, 0, 131072, -7143495, 0, 131072, -7143494, 0, 131072, -7143493, 0, 131072, -7143492, 0, 131072, -7143491, 0, 131072, -7143490, 0, 131072, -7143489, 0, 131072, -7143488, 0, 131072, -7143487, 0, 131072, -7143486, 0, 131072, -7143485, 0, 131072, -7143484, 0, 131072, -7143483, 0, 131072, -7143482, 0, 131072, -7143481, 0, 131072, -7143480, 0, 131072, -7143479, 0, 131072, -7143478, 0, 131072, -7143477, 0, 131072, -7143476, 0, 131072, -7143475, 0, 131072, -7143474, 0, 131072, -7143473, 0, 131072, -7143472, 0, 131072, -7143471, 0, 131072, -7143470, 0, 131072, -7143469, 0, 131072, -7143468, 0, 131072, -7143467, 0, 131072, -7143466, 0, 131072, -7143465, 0, 131072, -7143464, 0, 131072, -7143463, 0, 131072, -7143462, 0, 131072, -7143461, 0, 131072, -7143460, 0, 131072, -7143459, 0, 131072, -7143458, 0, 131072, -7143457, 0, 131072, -7143456, 0, 131072, -7143455, 0, 131072, -7143454, 0, 131072, -7143453, 0, 131072, -7143452, 0, 131072, -7143451, 0, 131072, -7143450, 0, 131072, -7143449, 0, 131072, -7143448, 0, 131072, -7143447, 0, 131072, -7143446, 0, 131072, -7143445, 0, 131072, -7143444, 0, 131072, -7143443, 0, 131072, -7143442, 0, 131072, -7143441, 0, 131072, -7143440, 0, 131072, -7143439, 0, 131072, -7143438, 0, 131072, -7143437, 0, 131072, -7143436, 0, 131072, -7143435, 0, 131072, -7143434, 0, 131072, -7143433, 0, 131072, -7143432, 0, 131072, -7143431, 0, 131072, -7143430, 0, 131072, -7143429, 0, 131072, -7143428, 0, 131072, -7143427, 0, 131072, -7143426, 0, 131072, -7143425, 0, 131072, -7208960, 0, 131072, -7208959, 0, 131072, -7208958, 0, 131072, -7208957, 0, 131072, -7208956, 0, 131072, -7208955, 0, 131072, -7208954, 0, 131072, -7208953, 0, 131072, -7208952, 0, 131072, -7208951, 0, 131072, -7208950, 0, 131072, -7208949, 0, 131072, -7208948, 0, 131072, -7208947, 0, 131072, -7208946, 0, 131072, -7208945, 0, 131072, -7208944, 0, 131072, -7208943, 0, 131072, -7208942, 0, 131072, -7208941, 0, 131072, -7208940, 0, 131072, -7208939, 0, 131072, -7208938, 0, 131072, -7208937, 0, 131072, -7208936, 0, 131072, -7208935, 0, 131072, -7208934, 0, 131072, -7208933, 0, 131072, -7208932, 0, 131072, -7208931, 0, 131072, -7208930, 0, 131072, -7208929, 0, 131072, -7208928, 0, 131072, -7208927, 0, 131072, -7208926, 0, 131072, -7208925, 0, 131072, -7208924, 0, 131072, -7208923, 0, 131072, -7208922, 0, 131072, -7208921, 0, 131072, -7208920, 0, 131072, -7208919, 0, 131072, -7208918, 0, 131072, -7208917, 0, 131072, -7208916, 0, 131072, -7208915, 0, 131072, -7208914, 0, 131072, -7208913, 0, 131072, -7208912, 0, 131072, -7208911, 0, 131072, -7208910, 0, 131072, -7208909, 0, 131072, -7208908, 0, 131072, -7208907, 0, 131072, -7208906, 0, 131072, -7208905, 0, 131072, -7208904, 0, 131072, -7208903, 0, 131072, -7208902, 0, 131072, -7208901, 0, 131072, -7208900, 0, 131072, -7208899, 0, 131072, -7208898, 0, 131072, -7208897, 0, 131072, -7208896, 0, 131072, -7208895, 0, 131072, -7208894, 0, 131072, -7208893, 0, 131072, -7208892, 0, 131072, -7208891, 0, 131072, -7208890, 0, 131072, -7208889, 0, 131072, -7208888, 0, 131072, -7208887, 0, 131072, -7208886, 0, 131072, -7208885, 0, 131072, -7208884, 0, 131072, -7208883, 0, 131072, -7078002, 0, 131072, -7078001, 0, 131072, -7078000, 0, 131072, -7077999, 0, 131072, -7077998, 0, 131072, -7077997, 0, 131072, -7077996, 0, 131072, -7077995, 0, 131072, -7077994, 0, 131072, -7077993, 0, 131072, -7077992, 0, 131072, -7077991, 0, 131072, -7077990, 0, 131072, -7077989, 0, 131072, -7077988, 0, 131072, -7077987, 0, 131072, -7077986, 0, 131072, -7077985, 0, 131072, -7077984, 0, 131072, -7077983, 0, 131072, -7077982, 0, 131072, -7077981, 0, 131072, -7077980, 0, 131072, -7077979, 0, 131072, -7077978, 0, 131072, -7077977, 0, 131072, -7077976, 0, 131072, -7077975, 0, 131072, -7077974, 0, 131072, -7077973, 0, 131072, -7077972, 0, 131072, -7077971, 0, 131072, -7077970, 0, 131072, -7077969, 0, 131072, -7077968, 0, 131072, -7077967, 0, 131072, -7077966, 0, 131072, -7077965, 0, 131072, -7077964, 0, 131072, -7077963, 0, 131072, -7077962, 0, 131072, -7077961, 0, 131072, -7077960, 0, 131072, -7077959, 0, 131072, -7077958, 0, 131072, -7077957, 0, 131072, -7077956, 0, 131072, -7077955, 0, 131072, -7077954, 0, 131072, -7077953, 0, 131072, -7077952, 0, 131072, -7077951, 0, 131072, -7077950, 0, 131072, -7077949, 0, 131072, -7077948, 0, 131072, -7077947, 0, 131072, -7077946, 0, 131072, -7077945, 0, 131072, -7077944, 0, 131072, -7077943, 0, 131072, -7077942, 0, 131072, -7077941, 0, 131072, -7077940, 0, 131072, -7077939, 0, 131072, -7077938, 0, 131072, -7077937, 0, 131072, -7077936, 0, 131072, -7077935, 0, 131072, -7077934, 0, 131072, -7077933, 0, 131072, -7077932, 0, 131072, -7077931, 0, 131072, -7077930, 0, 131072, -7077929, 0, 131072, -7077928, 0, 131072, -7077927, 0, 131072, -7077926, 0, 131072, -7077925, 0, 131072, -7077924, 0, 131072, -7077923, 0, 131072, -7077922, 0, 131072, -7077921, 0, 131072, -7077920, 0, 131072, -7077919, 0, 131072, -7077918, 0, 131072, -7077917, 0, 131072, -7077916, 0, 131072, -7077915, 0, 131072, -7077914, 0, 131072, -7077913, 0, 131072, -7077912, 0, 131072, -7077911, 0, 131072, -7077910, 0, 131072, -7077909, 0, 131072, -7077908, 0, 131072, -7077907, 0, 131072, -7077906, 0, 131072, -7077905, 0, 131072, -7077904, 0, 131072, -7077903, 0, 131072, -7077902, 0, 131072, -7077901, 0, 131072, -7077900, 0, 131072, -7077899, 0, 131072, -7077898, 0, 131072, -7077897, 0, 131072, -7077896, 0, 131072, -7077895, 0, 131072, -7077894, 0, 131072, -7077893, 0, 131072, -7077892, 0, 131072, -7077891, 0, 131072, -7077890, 0, 131072, -7077889, 0, 131072, -7143424, 0, 131072, -7143423, 0, 131072, -7143422, 0, 131072, -7143421, 0, 131072, -7143420, 0, 131072, -7143419, 0, 131072, -7143418, 0, 131072, -7143417, 0, 131072, -7143416, 0, 131072, -7143415, 0, 131072, -7143414, 0, 131072, -7143413, 0, 131072, -7143412, 0, 131072, -7143411, 0, 131072, -7143410, 0, 131072, -7143409, 0, 131072, -7143408, 0, 131072, -7143407, 0, 131072, -7143406, 0, 131072, -7143405, 0, 131072, -7143404, 0, 131072, -7143403, 0, 131072, -7143402, 0, 131072, -7143401, 0, 131072, -7143400, 0, 131072, -7143399, 0, 131072, -7143398, 0, 131072, -7143397, 0, 131072, -7143396, 0, 131072, -7143395, 0, 131072, -7143394, 0, 131072, -7143393, 0, 131072, -7143392, 0, 131072, -7143391, 0, 131072, -7143390, 0, 131072, -7143389, 0, 131072, -7143388, 0, 131072, -7143387, 0, 131072, -7143386, 0, 131072, -7143385, 0, 131072, -7143384, 0, 131072, -7143383, 0, 131072, -7143382, 0, 131072, -7143381, 0, 131072, -7143380, 0, 131072, -7143379, 0, 131072, -7143378, 0, 131072, -7143377, 0, 131072, -7143376, 0, 131072, -7143375, 0, 131072, -7143374, 0, 131072, -7143373, 0, 131072, -7143372, 0, 131072, -7143371, 0, 131072, -7143370, 0, 131072, -7143369, 0, 131072, -7143368, 0, 131072, -7143367, 0, 131072, -7143366, 0, 131072, -7143365, 0, 131072, -7143364, 0, 131072, -7143363, 0, 131072, -7143362, 0, 131072, -7143361, 0, 131072, -7143360, 0, 131072, -7143359, 0, 131072, -7143358, 0, 131072, -7143357, 0, 131072, -7143356, 0, 131072, -7143355, 0, 131072, -7143354, 0, 131072, -7143353, 0, 131072, -7143352, 0, 131072, -7143351, 0, 131072, -7143350, 0, 131072, -7143349, 0, 131072, -7143348, 0, 131072, -7143347, 0, 131072, -7143346, 0, 131072, -7012466, 0, 131072, -7012465, 0, 131072, -7012464, 0, 131072, -7012463, 0, 131072, -7012462, 0, 131072, -7012461, 0, 131072, -7012460, 0, 131072, -7012459, 0, 131072, -7012458, 0, 131072, -7012457, 0, 131072, -7012456, 0, 131072, -7012455, 0, 131072, -7012454, 0, 131072, -7012453, 0, 131072, -7012452, 0, 131072, -7012451, 0, 131072, -7012450, 0, 131072, -7012449, 0, 131072, -7012448, 0, 131072, -7012447, 0, 131072, -7012446, 0, 131072, -7012445, 0, 131072, -7012444, 0, 131072, -7012443, 0, 131072, -7012442, 0, 131072, -7012441, 0, 131072, -7012440, 0, 131072, -7012439, 0, 131072, -7012438, 0, 131072, -7012437, 0, 131072, -7012436, 0, 131072, -7012435, 0, 131072, -7012434, 0, 131072, -7012433, 0, 131072, -7012432, 0, 131072, -7012431, 0, 131072, -7012430, 0, 131072, -7012429, 0, 131072, -7012428, 0, 131072, -7012427, 0, 131072, -7012426, 0, 131072, -7012425, 0, 131072, -7012424, 0, 131072, -7012423, 0, 131072, -7012422, 0, 131072, -7012421, 0, 131072, -7012420, 0, 131072, -7012419, 0, 131072, -7012418, 0, 131072, -7012417, 0, 131072, -7012416, 0, 131072, -7012415, 0, 131072, -7012414, 0, 131072, -7012413, 0, 131072, -7012412, 0, 131072, -7012411, 0, 131072, -7012410, 0, 131072, -7012409, 0, 131072, -7012408, 0, 131072, -7012407, 0, 131072, -7012406, 0, 131072, -7012405, 0, 131072, -7012404, 0, 131072, -7012403, 0, 131072, -7012402, 0, 131072, -7012401, 0, 131072, -7012400, 0, 131072, -7012399, 0, 131072, -7012398, 0, 131072, -7012397, 0, 131072, -7012396, 0, 131072, -7012395, 0, 131072, -7012394, 0, 131072, -7012393, 0, 131072, -7012392, 0, 131072, -7012391, 0, 131072, -7012390, 0, 131072, -7012389, 0, 131072, -7012388, 0, 131072, -7012387, 0, 131072, -7012386, 0, 131072, -7012385, 0, 131072, -7012384, 0, 131072, -7012383, 0, 131072, -7012382, 0, 131072, -7012381, 0, 131072, -7012380, 0, 131072, -7012379, 0, 131072, -7012378, 0, 131072, -7012377, 0, 131072, -7012376, 0, 131072, -7012375, 0, 131072, -7012374, 0, 131072, -7012373, 0, 131072, -7012372, 0, 131072, -7012371, 0, 131072, -7012370, 0, 131072, -7012369, 0, 131072, -7012368, 0, 131072, -7012367, 0, 131072, -7012366, 0, 131072, -7012365, 0, 131072, -7012364, 0, 131072, -7012363, 0, 131072, -7012362, 0, 131072, -7012361, 0, 131072, -7012360, 0, 131072, -7012359, 0, 131072, -7012358, 0, 131072, -7012357, 0, 131072, -7012356, 0, 131072, -7012355, 0, 131072, -7012354, 0, 131072, -7012353, 0, 131072, -7077888, 0, 131072, -7077887, 0, 131072, -7077886, 0, 131072, -7077885, 0, 131072, -7077884, 0, 131072, -7077883, 0, 131072, -7077882, 0, 131072, -7077881, 0, 131072, -7077880, 0, 131072, -7077879, 0, 131072, -7077878, 0, 131072, -7077877, 0, 131072, -7077876, 0, 131072, -7077875, 0, 131072, -7077874, 0, 131072, -7077873, 0, 131072, -7077872, 0, 131072, -7077871, 0, 131072, -7077870, 0, 131072, -7077869, 0, 131072, -7077868, 0, 131072, -7077867, 0, 131072, -7077866, 0, 131072, -7077865, 0, 131072, -7077864, 0, 131072, -7077863, 0, 131072, -7077862, 0, 131072, -7077861, 0, 131072, -7077860, 0, 131072, -7077859, 0, 131072, -7077858, 0, 131072, -7077857, 0, 131072, -7077856, 0, 131072, -7077855, 0, 131072, -7077854, 0, 131072, -7077853, 0, 131072, -7077852, 0, 131072, -7077851, 0, 131072, -7077850, 0, 131072, -7077849, 0, 131072, -7077848, 0, 131072, -7077847, 0, 131072, -7077846, 0, 131072, -7077845, 0, 131072, -7077844, 0, 131072, -7077843, 0, 131072, -7077842, 0, 131072, -7077841, 0, 131072, -7077840, 0, 131072, -7077839, 0, 131072, -7077838, 0, 131072, -7077837, 0, 131072, -7077836, 0, 131072, -7077835, 0, 131072, -7077834, 0, 131072, -7077833, 0, 131072, -7077832, 0, 131072, -7077831, 0, 131072, -7077830, 0, 131072, -7077829, 0, 131072, -7077828, 0, 131072, -7077827, 0, 131072, -7077826, 0, 131072, -7077825, 0, 131072, -7077824, 0, 131072, -7077823, 0, 131072, -7077822, 0, 131072, -7077821, 0, 131072, -7077820, 0, 131072, -7077819, 0, 131072, -7077818, 0, 131072, -7077817, 0, 131072, -7077816, 0, 131072, -7077815, 0, 131072, -7077814, 0, 131072, -7077813, 0, 131072, -7077812, 0, 131072, -7077811, 0, 131072, -7077810, 0, 131072, -7077809, 0, 131072, -7077808, 0, 131072, -6946929, 0, 131072, -6946928, 0, 131072, -6946927, 0, 131072, -6946926, 0, 131072, -6946925, 0, 131072, -6946924, 0, 131072, -6946923, 0, 131072, -6946922, 0, 131072, -6946921, 0, 131072, -6946920, 0, 131072, -6946919, 0, 131072, -6946918, 0, 131072, -6946917, 0, 131072, -6946916, 0, 131072, -6946915, 0, 131072, -6946914, 0, 131072, -6946913, 0, 131072, -6946912, 0, 131072, -6946911, 0, 131072, -6946910, 0, 131072, -6946909, 0, 131072, -6946908, 0, 131072, -6946907, 0, 131072, -6946906, 0, 131072, -6946905, 0, 131072, -6946904, 0, 131072, -6946903, 0, 131072, -6946902, 0, 131072, -6946901, 0, 131072, -6946900, 0, 131072, -6946899, 0, 131072, -6946898, 0, 131072, -6946897, 0, 131072, -6946896, 0, 131072, -6946895, 0, 131072, -6946894, 0, 131072, -6946893, 0, 131072, -6946892, 0, 131072, -6946891, 0, 131072, -6946890, 0, 131072, -6946889, 0, 131072, -6946888, 0, 131072, -6946887, 0, 131072, -6946886, 0, 131072, -6946885, 0, 131072, -6946884, 0, 131072, -6946883, 0, 131072, -6946882, 0, 131072, -6946881, 0, 131072, -6946880, 0, 131072, -6946879, 0, 131072, -6946878, 0, 131072, -6946877, 0, 131072, -6946876, 0, 131072, -6946875, 0, 131072, -6946874, 0, 131072, -6946873, 0, 131072, -6946872, 0, 131072, -6946871, 0, 131072, -6946870, 0, 131072, -6946869, 0, 131072, -6946868, 0, 131072, -6946867, 0, 131072, -6946866, 0, 131072, -6946865, 0, 131072, -6946864, 0, 131072, -6946863, 0, 131072, -6946862, 0, 131072, -6946861, 0, 131072, -6946860, 0, 131072, -6946859, 0, 131072, -6946858, 0, 131072, -6946857, 0, 131072, -6946856, 0, 131072, -6946855, 0, 131072, -6946854, 0, 131072, -6946853, 0, 131072, -6946852, 0, 131072, -6946851, 0, 131072, -6946850, 0, 131072, -6946849, 0, 131072, -6946848, 0, 131072, -6946847, 0, 131072, -6946846, 0, 131072, -6946845, 0, 131072, -6946844, 0, 131072, -6946843, 0, 131072, -6946842, 0, 131072, -6946841, 0, 131072, -6946840, 0, 131072, -6946839, 0, 131072, -6946838, 0, 131072, -6946837, 0, 131072, -6946836, 0, 131072, -6946835, 0, 131072, -6946834, 0, 131072, -6946833, 0, 131072, -6946832, 0, 131072, -6946831, 0, 131072, -6946830, 0, 131072, -6946829, 0, 131072, -6946828, 0, 131072, -6946827, 0, 131072, -6946826, 0, 131072, -6946825, 0, 131072, -6946824, 0, 131072, -6946823, 0, 131072, -6946822, 0, 131072, -6946821, 0, 131072, -6946820, 0, 131072, -6946819, 0, 131072, -6946818, 0, 131072, -6946817, 0, 131072, -7012352, 0, 131072, -7012351, 0, 131072, -7012350, 0, 131072, -7012349, 0, 131072, -7012348, 0, 131072, -7012347, 0, 131072, -7012346, 0, 131072, -7012345, 0, 131072, -7012344, 0, 131072, -7012343, 0, 131072, -7012342, 0, 131072, -7012341, 0, 131072, -7012340, 0, 131072, -7012339, 0, 131072, -7012338, 0, 131072, -7012337, 0, 131072, -7012336, 0, 131072, -7012335, 0, 131072, -7012334, 0, 131072, -7012333, 0, 131072, -7012332, 0, 131072, -7012331, 0, 131072, -7012330, 0, 131072, -7012329, 0, 131072, -7012328, 0, 131072, -7012327, 0, 131072, -7012326, 0, 131072, -7012325, 0, 131072, -7012324, 0, 131072, -7012323, 0, 131072, -7012322, 0, 131072, -7012321, 0, 131072, -7012320, 0, 131072, -7012319, 0, 131072, -7012318, 0, 131072, -7012317, 0, 131072, -7012316, 0, 131072, -7012315, 0, 131072, -7012314, 0, 131072, -7012313, 0, 131072, -7012312, 0, 131072, -7012311, 0, 131072, -7012310, 0, 131072, -7012309, 0, 131072, -7012308, 0, 131072, -7012307, 0, 131072, -7012306, 0, 131072, -7012305, 0, 131072, -7012304, 0, 131072, -7012303, 0, 131072, -7012302, 0, 131072, -7012301, 0, 131072, -7012300, 0, 131072, -7012299, 0, 131072, -7012298, 0, 131072, -7012297, 0, 131072, -7012296, 0, 131072, -7012295, 0, 131072, -7012294, 0, 131072, -7012293, 0, 131072, -7012292, 0, 131072, -7012291, 0, 131072, -7012290, 0, 131072, -7012289, 0, 131072, -7012288, 0, 131072, -7012287, 0, 131072, -7012286, 0, 131072, -7012285, 0, 131072, -7012284, 0, 131072, -7012283, 0, 131072, -7012282, 0, 131072, -7012281, 0, 131072, -7012280, 0, 131072, -7012279, 0, 131072, -7012278, 0, 131072, -7012277, 0, 131072, -7012276, 0, 131072, -7012275, 0, 131072, -7012274, 0, 131072, -7012273, 0, 131072, -7012272, 0, 131072, -7012271, 0, 131072, -7012270, 0, 131072, -6881393, 0, 131072, -6881392, 0, 131072, -6881391, 0, 131072, -6881390, 0, 131072, -6881389, 0, 131072, -6881388, 0, 131072, -6881387, 0, 131072, -6881386, 0, 131072, -6881385, 0, 131072, -6881384, 0, 131072, -6881383, 0, 131072, -6881382, 0, 131072, -6881381, 0, 131072, -6881380, 0, 131072, -6881379, 0, 131072, -6881378, 0, 131072, -6881377, 0, 131072, -6881376, 0, 131072, -6881375, 0, 131072, -6881374, 0, 131072, -6881373, 0, 131072, -6881372, 0, 131072, -6881371, 0, 131072, -6881370, 0, 131072, -6881369, 0, 131072, -6881368, 0, 131072, -6881367, 0, 131072, -6881366, 0, 131072, -6881365, 0, 131072, -6881364, 0, 131072, -6881363, 0, 131072, -6881362, 0, 131072, -6881361, 0, 131072, -6881360, 0, 131072, -6881359, 0, 131072, -6881358, 0, 131072, -6881357, 0, 131072, -6881356, 0, 131072, -6881355, 0, 131072, -6881354, 0, 131072, -6881353, 0, 131072, -6881352, 0, 131072, -6881351, 0, 131072, -6881350, 0, 131072, -6881349, 0, 131072, -6881348, 0, 131072, -6881347, 0, 131072, -6881346, 0, 131072, -6881345, 0, 131072, -6881344, 0, 131072, -6881343, 0, 131072, -6881342, 0, 131072, -6881341, 0, 131072, -6881340, 0, 131072, -6881339, 0, 131072, -6881338, 0, 131072, -6881337, 0, 131072, -6881336, 0, 131072, -6881335, 0, 131072, -6881334, 0, 131072, -6881333, 0, 131072, -6881332, 0, 131072, -6881331, 0, 131072, -6881330, 0, 131072, -6881329, 0, 131072, -6881328, 0, 131072, -6881327, 0, 131072, -6881326, 0, 131072, -6881325, 0, 131072, -6881324, 0, 131072, -6881323, 0, 131072, -6881322, 0, 131072, -6881321, 0, 131072, -6881320, 0, 131072, -6881319, 0, 131072, -6881318, 0, 131072, -6881317, 0, 131072, -6881316, 0, 131072, -6881315, 0, 131072, -6881314, 0, 131072, -6881313, 0, 131072, -6881312, 0, 131072, -6881311, 0, 131072, -6881310, 0, 131072, -6881309, 0, 131072, -6881308, 0, 131072, -6881307, 0, 131072, -6881306, 0, 131072, -6881305, 0, 131072, -6881304, 0, 131072, -6881303, 0, 131072, -6881302, 0, 131072, -6881301, 0, 131072, -6881300, 0, 131072, -6881299, 0, 131072, -6881298, 0, 131072, -6881297, 0, 131072, -6881296, 0, 131072, -6881295, 0, 131072, -6881294, 0, 131072, -6881293, 0, 131072, -6881292, 0, 131072, -6881291, 0, 131072, -6881290, 0, 131072, -6881289, 0, 131072, -6881288, 0, 131072, -6881287, 0, 131072, -6881286, 0, 131072, -6881285, 0, 131072, -6881284, 0, 131072, -6881283, 0, 131072, -6881282, 0, 131072, -6881281, 0, 131072, -6946816, 0, 131072, -6946815, 0, 131072, -6946814, 0, 131072, -6946813, 0, 131072, -6946812, 0, 131072, -6946811, 0, 131072, -6946810, 0, 131072, -6946809, 0, 131072, -6946808, 0, 131072, -6946807, 0, 131072, -6946806, 0, 131072, -6946805, 0, 131072, -6946804, 0, 131072, -6946803, 0, 131072, -6946802, 0, 131072, -6946801, 0, 131072, -6946800, 0, 131072, -6946799, 0, 131072, -6946798, 0, 131072, -6946797, 0, 131072, -6946796, 0, 131072, -6946795, 0, 131072, -6946794, 0, 131072, -6946793, 0, 131072, -6946792, 0, 131072, -6946791, 0, 131072, -6946790, 0, 131072, -6946789, 0, 131072, -6946788, 0, 131072, -6946787, 0, 131072, -6946786, 0, 131072, -6946785, 0, 131072, -6946784, 0, 131072, -6946783, 0, 131072, -6946782, 0, 131072, -6946781, 0, 131072, -6946780, 0, 131072, -6946779, 0, 131072, -6946778, 0, 131072, -6946777, 0, 131072, -6946776, 0, 131072, -6946775, 0, 131072, -6946774, 0, 131072, -6946773, 0, 131072, -6946772, 0, 131072, -6946771, 0, 131072, -6946770, 0, 131072, -6946769, 0, 131072, -6946768, 0, 131072, -6946767, 0, 131072, -6946766, 0, 131072, -6946765, 0, 131072, -6946764, 0, 131072, -6946763, 0, 131072, -6946762, 0, 131072, -6946761, 0, 131072, -6946760, 0, 131072, -6946759, 0, 131072, -6946758, 0, 131072, -6946757, 0, 131072, -6946756, 0, 131072, -6946755, 0, 131072, -6946754, 0, 131072, -6946753, 0, 131072, -6946752, 0, 131072, -6946751, 0, 131072, -6946750, 0, 131072, -6946749, 0, 131072, -6946748, 0, 131072, -6946747, 0, 131072, -6946746, 0, 131072, -6946745, 0, 131072, -6946744, 0, 131072, -6946743, 0, 131072, -6946742, 0, 131072, -6946741, 0, 131072, -6946740, 0, 131072, -6946739, 0, 131072, -6946738, 0, 131072, -6946737, 0, 131072, -6946736, 0, 131072, -6946735, 0, 131072, -6946734, 0, 131072, -6946733, 0, 131072, -6815857, 0, 131072, -6815856, 0, 131072, -6815855, 0, 131072, -6815854, 0, 131072, -6815853, 0, 131072, -6815852, 0, 131072, -6815851, 0, 131072, -6815850, 0, 131072, -6815849, 0, 131072, -6815848, 0, 131072, -6815847, 0, 131072, -6815846, 0, 131072, -6815845, 0, 131072, -6815844, 0, 131072, -6815843, 0, 131072, -6815842, 0, 131072, -6815841, 0, 131072, -6815840, 0, 131072, -6815839, 0, 131072, -6815838, 0, 131072, -6815837, 0, 131072, -6815836, 0, 131072, -6815835, 0, 131072, -6815834, 0, 131072, -6815833, 0, 131072, -6815832, 0, 131072, -6815831, 0, 131072, -6815830, 0, 131072, -6815829, 0, 131072, -6815828, 0, 131072, -6815827, 0, 131072, -6815826, 0, 131072, -6815825, 0, 131072, -6815824, 0, 131072, -6815823, 0, 131072, -6815822, 0, 131072, -6815821, 0, 131072, -6815820, 0, 131072, -6815819, 0, 131072, -6815818, 0, 131072, -6815817, 0, 131072, -6815816, 0, 131072, -6815815, 0, 131072, -6815814, 0, 131072, -6815813, 0, 131072, -6815812, 0, 131072, -6815811, 0, 131072, -6815810, 0, 131072, -6815809, 0, 131072, -6815808, 0, 131072, -6815807, 0, 131072, -6815806, 0, 131072, -6815805, 0, 131072, -6815804, 0, 131072, -6815803, 0, 131072, -6815802, 0, 131072, -6815801, 0, 131072, -6815800, 0, 131072, -6815799, 0, 131072, -6815798, 0, 131072, -6815797, 0, 131072, -6815796, 0, 131072, -6815795, 0, 131072, -6815794, 0, 131072, -6815793, 0, 131072, -6815792, 0, 131072, -6815791, 0, 131072, -6815790, 0, 131072, -6815789, 0, 131072, -6815788, 0, 131072, -6815787, 0, 131072, -6815786, 0, 131072, -6815785, 0, 131072, -6815784, 0, 131072, -6815783, 0, 131072, -6815782, 0, 131072, -6815781, 0, 131072, -6815780, 0, 131072, -6815779, 0, 131072, -6815778, 0, 131072, -6815777, 0, 131072, -6815776, 0, 131072, -6815775, 0, 131072, -6815774, 0, 131072, -6815773, 0, 131072, -6815772, 0, 131072, -6815771, 0, 131072, -6815770, 0, 131072, -6815769, 0, 131072, -6815768, 0, 131072, -6815767, 0, 131072, -6815766, 0, 131072, -6815765, 0, 131072, -6815764, 0, 131072, -6815763, 0, 131072, -6815762, 0, 131072, -6815761, 0, 131072, -6815760, 0, 131072, -6815759, 0, 131072, -6815758, 0, 131072, -6815757, 0, 131072, -6815756, 0, 131072, -6815755, 0, 131072, -6815754, 0, 131072, -6815753, 0, 131072, -6815752, 0, 131072, -6815751, 0, 131072, -6815750, 0, 131072, -6815749, 0, 131072, -6815748, 0, 131072, -6815747, 0, 131072, -6815746, 0, 131072, -6815745, 0, 131072, -6881280, 0, 131072, -6881279, 0, 131072, -6881278, 0, 131072, -6881277, 0, 131072, -6881276, 0, 131072, -6881275, 0, 131072, -6881274, 0, 131072, -6881273, 0, 131072, -6881272, 0, 131072, -6881271, 0, 131072, -6881270, 0, 131072, -6881269, 0, 131072, -6881268, 0, 131072, -6881267, 0, 131072, -6881266, 0, 131072, -6881265, 0, 131072, -6881264, 0, 131072, -6881263, 0, 131072, -6881262, 0, 131072, -6881261, 0, 131072, -6881260, 0, 131072, -6881259, 0, 131072, -6881258, 0, 131072, -6881257, 0, 131072, -6881256, 0, 131072, -6881255, 0, 131072, -6881254, 0, 131072, -6881253, 0, 131072, -6881252, 0, 131072, -6881251, 0, 131072, -6881250, 0, 131072, -6881249, 0, 131072, -6881248, 0, 131072, -6881247, 0, 131072, -6881246, 0, 131072, -6881245, 0, 131072, -6881244, 0, 131072, -6881243, 0, 131072, -6881242, 0, 131072, -6881241, 0, 131072, -6881240, 0, 131072, -6881239, 0, 131072, -6881238, 0, 131072, -6881237, 0, 131072, -6881236, 0, 131072, -6881235, 0, 131072, -6881234, 0, 131072, -6881233, 0, 131072, -6881232, 0, 131072, -6881231, 0, 131072, -6881230, 0, 131072, -6881229, 0, 131072, -6881228, 0, 131072, -6881227, 0, 131072, -6881226, 0, 131072, -6881225, 0, 131072, -6881224, 0, 131072, -6881223, 0, 131072, -6881222, 0, 131072, -6881221, 0, 131072, -6881220, 0, 131072, -6881219, 0, 131072, -6881218, 0, 131072, -6881217, 0, 131072, -6881216, 0, 131072, -6881215, 0, 131072, -6881214, 0, 131072, -6881213, 0, 131072, -6881212, 0, 131072, -6881211, 0, 131072, -6881210, 0, 131072, -6881209, 0, 131072, -6881208, 0, 131072, -6881207, 0, 131072, -6881206, 0, 131072, -6881205, 0, 131072, -6881204, 0, 131072, -6881203, 0, 131072, -6881202, 0, 131072, -6881201, 0, 131072, -6881200, 0, 131072, -6881199, 0, 131072, -6881198, 0, 131072, -6881197, 0, 131072, -6881196, 0, 131072, -6881195, 0, 131072, -6750320, 0, 131072, -6750319, 0, 131072, -6750318, 0, 131072, -6750317, 0, 131072, -6750316, 0, 131072, -6750315, 0, 131072, -6750314, 0, 131072, -6750313, 0, 131072, -6750312, 0, 131072, -6750311, 0, 131072, -6750310, 0, 131072, -6750309, 0, 131072, -6750308, 0, 131072, -6750307, 0, 131072, -6750306, 0, 131072, -6750305, 0, 131072, -6750304, 0, 131072, -6750303, 0, 131072, -6750302, 0, 131072, -6750301, 0, 131072, -6750300, 0, 131072, -6750299, 0, 131072, -6750298, 0, 131072, -6750297, 0, 131072, -6750296, 0, 131072, -6750295, 0, 131072, -6750294, 0, 131072, -6750293, 0, 131072, -6750292, 0, 131072, -6750291, 0, 131072, -6750290, 0, 131072, -6750289, 0, 131072, -6750288, 0, 131072, -6750287, 0, 131072, -6750286, 0, 131072, -6750285, 0, 131072, -6750284, 0, 131072, -6750283, 0, 131072, -6750282, 0, 131072, -6750281, 0, 131072, -6750280, 0, 131072, -6750279, 0, 131072, -6750278, 0, 131072, -6750277, 0, 131072, -6750276, 0, 131072, -6750275, 0, 131072, -6750274, 0, 131072, -6750273, 0, 131072, -6750272, 0, 131072, -6750271, 0, 131072, -6750270, 0, 131072, -6750269, 0, 131072, -6750268, 0, 131072, -6750267, 0, 131072, -6750266, 0, 131072, -6750265, 0, 131072, -6750264, 0, 131072, -6750263, 0, 131072, -6750262, 0, 131072, -6750261, 0, 131072, -6750260, 0, 131072, -6750259, 0, 131072, -6750258, 0, 131072, -6750257, 0, 131072, -6750256, 0, 131072, -6750255, 0, 131072, -6750254, 0, 131072, -6750253, 0, 131072, -6750252, 0, 131072, -6750251, 0, 131072, -6750250, 0, 131072, -6750249, 0, 131072, -6750248, 0, 131072, -6750247, 0, 131072, -6750246, 0, 131072, -6750245, 0, 131072, -6750244, 0, 131072, -6750243, 0, 131072, -6750242, 0, 131072, -6750241, 0, 131072, -6750240, 0, 131072, -6750239, 0, 131072, -6750238, 0, 131072, -6750237, 0, 131072, -6750236, 0, 131072, -6750235, 0, 131072, -6750234, 0, 131072, -6750233, 0, 131072, -6750232, 0, 131072, -6750231, 0, 131072, -6750230, 0, 131072, -6750229, 0, 131072, -6750228, 0, 131072, -6750227, 0, 131072, -6750226, 0, 131072, -6750225, 0, 131072, -6750224, 0, 131072, -6750223, 0, 131072, -6750222, 0, 131072, -6750221, 0, 131072, -6750220, 0, 131072, -6750219, 0, 131072, -6750218, 0, 131072, -6750217, 0, 131072, -6750216, 0, 131072, -6750215, 0, 131072, -6750214, 0, 131072, -6750213, 0, 131072, -6750212, 0, 131072, -6750211, 0, 131072, -6750210, 0, 131072, -6750209, 0, 131072, -6815744, 0, 131072, -6815743, 0, 131072, -6815742, 0, 131072, -6815741, 0, 131072, -6815740, 0, 131072, -6815739, 0, 131072, -6815738, 0, 131072, -6815737, 0, 131072, -6815736, 0, 131072, -6815735, 0, 131072, -6815734, 0, 131072, -6815733, 0, 131072, -6815732, 0, 131072, -6815731, 0, 131072, -6815730, 0, 131072, -6815729, 0, 131072, -6815728, 0, 131072, -6815727, 0, 131072, -6815726, 0, 131072, -6815725, 0, 131072, -6815724, 0, 131072, -6815723, 0, 131072, -6815722, 0, 131072, -6815721, 0, 131072, -6815720, 0, 131072, -6815719, 0, 131072, -6815718, 0, 131072, -6815717, 0, 131072, -6815716, 0, 131072, -6815715, 0, 131072, -6815714, 0, 131072, -6815713, 0, 131072, -6815712, 0, 131072, -6815711, 0, 131072, -6815710, 0, 131072, -6815709, 0, 131072, -6815708, 0, 131072, -6815707, 0, 131072, -6815706, 0, 131072, -6815705, 0, 131072, -6815704, 0, 131072, -6815703, 0, 131072, -6815702, 0, 131072, -6815701, 0, 131072, -6815700, 0, 131072, -6815699, 0, 131072, -6815698, 0, 131072, -6815697, 0, 131072, -6815696, 0, 131072, -6815695, 0, 131072, -6815694, 0, 131072, -6815693, 0, 131072, -6815692, 0, 131072, -6815691, 0, 131072, -6815690, 0, 131072, -6815689, 0, 131072, -6815688, 0, 131072, -6815687, 0, 131072, -6815686, 0, 131072, -6815685, 0, 131072, -6815684, 0, 131072, -6815683, 0, 131072, -6815682, 0, 131072, -6815681, 0, 131072, -6815680, 0, 131072, -6815679, 0, 131072, -6815678, 0, 131072, -6815677, 0, 131072, -6815676, 0, 131072, -6815675, 0, 131072, -6815674, 0, 131072, -6815673, 0, 131072, -6815672, 0, 131072, -6815671, 0, 131072, -6815670, 0, 131072, -6815669, 0, 131072, -6815668, 0, 131072, -6815667, 0, 131072, -6815666, 0, 131072, -6815665, 0, 131072, -6815664, 0, 131072, -6815663, 0, 131072, -6815662, 0, 131072, -6815661, 0, 131072, -6815660, 0, 131072, -6815659, 0, 131072, -6815658, 0, 131072, -6684784, 0, 131072, -6684783, 0, 131072, -6684782, 0, 131072, -6684781, 0, 131072, -6684780, 0, 131072, -6684779, 0, 131072, -6684778, 0, 131072, -6684777, 0, 131072, -6684776, 0, 131072, -6684775, 0, 131072, -6684774, 0, 131072, -6684773, 0, 131072, -6684772, 0, 131072, -6684771, 0, 131072, -6684770, 0, 131072, -6684769, 0, 131072, -6684768, 0, 131072, -6684767, 0, 131072, -6684766, 0, 131072, -6684765, 0, 131072, -6684764, 0, 131072, -6684763, 0, 131072, -6684762, 0, 131072, -6684761, 0, 131072, -6684760, 0, 131072, -6684759, 0, 131072, -6684758, 0, 131072, -6684757, 0, 131072, -6684756, 0, 131072, -6684755, 0, 131072, -6684754, 0, 131072, -6684753, 0, 131072, -6684752, 0, 131072, -6684751, 0, 131072, -6684750, 0, 131072, -6684749, 0, 131072, -6684748, 0, 131072, -6684747, 0, 131072, -6684746, 0, 131072, -6684745, 0, 131072, -6684744, 0, 131072, -6684743, 0, 131072, -6684742, 0, 131072, -6684741, 0, 131072, -6684740, 0, 131072, -6684739, 0, 131072, -6684738, 0, 131072, -6684737, 0, 131072, -6684736, 0, 131072, -6684735, 0, 131072, -6684734, 0, 131072, -6684733, 0, 131072, -6684732, 0, 131072, -6684731, 0, 131072, -6684730, 0, 131072, -6684729, 0, 131072, -6684728, 0, 131072, -6684727, 0, 131072, -6684726, 0, 131072, -6684725, 0, 131072, -6684724, 0, 131072, -6684723, 0, 131072, -6684722, 0, 131072, -6684721, 0, 131072, -6684720, 0, 131072, -6684719, 0, 131072, -6684718, 0, 131072, -6684717, 0, 131072, -6684716, 0, 131072, -6684715, 0, 131072, -6684714, 0, 131072, -6684713, 0, 131072, -6684712, 0, 131072, -6684711, 0, 131072, -6684710, 0, 131072, -6684709, 0, 131072, -6684708, 0, 131072, -6684707, 0, 131072, -6684706, 0, 131072, -6684705, 0, 131072, -6684704, 0, 131072, -6684703, 0, 131072, -6684702, 0, 131072, -6684701, 0, 131072, -6684700, 0, 131072, -6684699, 0, 131072, -6684698, 0, 131072, -6684697, 0, 131072, -6684696, 0, 131072, -6684695, 0, 131072, -6684694, 0, 131072, -6684693, 0, 131072, -6684692, 0, 131072, -6684691, 0, 131072, -6684690, 0, 131072, -6684689, 0, 131072, -6684688, 0, 131072, -6684687, 0, 131072, -6684686, 0, 131072, -6684685, 0, 131072, -6684684, 0, 131072, -6684683, 0, 131072, -6684682, 0, 131072, -6684681, 0, 131072, -6684680, 0, 131072, -6684679, 0, 131072, -6684678, 0, 131072, -6684677, 0, 131072, -6684676, 0, 131072, -6684675, 0, 131072, -6684674, 0, 131072, -6684673, 0, 131072, -6750208, 0, 131072, -6750207, 0, 131072, -6750206, 0, 131072, -6750205, 0, 131072, -6750204, 0, 131072, -6750203, 0, 131072, -6750202, 0, 131072, -6750201, 0, 131072, -6750200, 0, 131072, -6750199, 0, 131072, -6750198, 0, 131072, -6750197, 0, 131072, -6750196, 0, 131072, -6750195, 0, 131072, -6750194, 0, 131072, -6750193, 0, 131072, -6750192, 0, 131072, -6750191, 0, 131072, -6750190, 0, 131072, -6750189, 0, 131072, -6750188, 0, 131072, -6750187, 0, 131072, -6750186, 0, 131072, -6750185, 0, 131072, -6750184, 0, 131072, -6750183, 0, 131072, -6750182, 0, 131072, -6750181, 0, 131072, -6750180, 0, 131072, -6750179, 0, 131072, -6750178, 0, 131072, -6750177, 0, 131072, -6750176, 0, 131072, -6750175, 0, 131072, -6750174, 0, 131072, -6750173, 0, 131072, -6750172, 0, 131072, -6750171, 0, 131072, -6750170, 0, 131072, -6750169, 0, 131072, -6750168, 0, 131072, -6750167, 0, 131072, -6750166, 0, 131072, -6750165, 0, 131072, -6750164, 0, 131072, -6750163, 0, 131072, -6750162, 0, 131072, -6750161, 0, 131072, -6750160, 0, 131072, -6750159, 0, 131072, -6750158, 0, 131072, -6750157, 0, 131072, -6750156, 0, 131072, -6750155, 0, 131072, -6750154, 0, 131072, -6750153, 0, 131072, -6750152, 0, 131072, -6750151, 0, 131072, -6750150, 0, 131072, -6750149, 0, 131072, -6750148, 0, 131072, -6750147, 0, 131072, -6750146, 0, 131072, -6750145, 0, 131072, -6750144, 0, 131072, -6750143, 0, 131072, -6750142, 0, 131072, -6750141, 0, 131072, -6750140, 0, 131072, -6750139, 0, 131072, -6750138, 0, 131072, -6750137, 0, 131072, -6750136, 0, 131072, -6750135, 0, 131072, -6750134, 0, 131072, -6750133, 0, 131072, -6750132, 0, 131072, -6750131, 0, 131072, -6750130, 0, 131072, -6750129, 0, 131072, -6750128, 0, 131072, -6750127, 0, 131072, -6750126, 0, 131072, -6750125, 0, 131072, -6750124, 0, 131072, -6750123, 0, 131072, -6750122, 0, 131072, -6750121, 0, 131072, -6750120, 0, 131072, -6619247, 0, 131072, -6619246, 0, 131072, -6619245, 0, 131072, -6619244, 0, 131072, -6619243, 0, 131072, -6619242, 0, 131072, -6619241, 0, 131072, -6619240, 0, 131072, -6619239, 0, 131072, -6619238, 0, 131072, -6619237, 0, 131072, -6619236, 0, 131072, -6619235, 0, 131072, -6619234, 0, 131072, -6619233, 0, 131072, -6619232, 0, 131072, -6619231, 0, 131072, -6619230, 0, 131072, -6619229, 0, 131072, -6619228, 0, 131072, -6619227, 0, 131072, -6619226, 0, 131072, -6619225, 0, 131072, -6619224, 0, 131072, -6619223, 0, 131072, -6619222, 0, 131072, -6619221, 0, 131072, -6619220, 0, 131072, -6619219, 0, 131072, -6619218, 0, 131072, -6619217, 0, 131072, -6619216, 0, 131072, -6619215, 0, 131072, -6619214, 0, 131072, -6619213, 0, 131072, -6619212, 0, 131072, -6619211, 0, 131072, -6619210, 0, 131072, -6619209, 0, 131072, -6619208, 0, 131072, -6619207, 0, 131072, -6619206, 0, 131072, -6619205, 0, 131072, -6619204, 0, 131072, -6619203, 0, 131072, -6619202, 0, 131072, -6619201, 0, 131072, -6619200, 0, 131072, -6619199, 0, 131072, -6619198, 0, 131072, -6619197, 0, 131072, -6619196, 0, 131072, -6619195, 0, 131072, -6619194, 0, 131072, -6619193, 0, 131072, -6619192, 0, 131072, -6619191, 0, 131072, -6619190, 0, 131072, -6619189, 0, 131072, -6619188, 0, 131072, -6619187, 0, 131072, -6619186, 0, 131072, -6619185, 0, 131072, -6619184, 0, 131072, -6619183, 0, 131072, -6619182, 0, 131072, -6619181, 0, 131072, -6619180, 0, 131072, -6619179, 0, 131072, -6619178, 0, 131072, -6619177, 0, 131072, -6619176, 0, 131072, -6619175, 0, 131072, -6619174, 0, 131072, -6619173, 0, 131072, -6619172, 0, 131072, -6619171, 0, 131072, -6619170, 0, 131072, -6619169, 0, 131072, -6619168, 0, 131072, -6619167, 0, 131072, -6619166, 0, 131072, -6619165, 0, 131072, -6619164, 0, 131072, -6619163, 0, 131072, -6619162, 0, 131072, -6619161, 0, 131072, -6619160, 0, 131072, -6619159, 0, 131072, -6619158, 0, 131072, -6619157, 0, 131072, -6619156, 0, 131072, -6619155, 0, 131072, -6619154, 0, 131072, -6619153, 0, 131072, -6619152, 0, 131072, -6619151, 0, 131072, -6619150, 0, 131072, -6619149, 0, 131072, -6619148, 0, 131072, -6619147, 0, 131072, -6619146, 0, 131072, -6619145, 0, 131072, -6619144, 0, 131072, -6619143, 0, 131072, -6619142, 0, 131072, -6619141, 0, 131072, -6619140, 0, 131072, -6619139, 0, 131072, -6619138, 0, 131072, -6619137, 0, 131072, -6684672, 0, 131072, -6684671, 0, 131072, -6684670, 0, 131072, -6684669, 0, 131072, -6684668, 0, 131072, -6684667, 0, 131072, -6684666, 0, 131072, -6684665, 0, 131072, -6684664, 0, 131072, -6684663, 0, 131072, -6684662, 0, 131072, -6684661, 0, 131072, -6684660, 0, 131072, -6684659, 0, 131072, -6684658, 0, 131072, -6684657, 0, 131072, -6684656, 0, 131072, -6684655, 0, 131072, -6684654, 0, 131072, -6684653, 0, 131072, -6684652, 0, 131072, -6684651, 0, 131072, -6684650, 0, 131072, -6684649, 0, 131072, -6684648, 0, 131072, -6684647, 0, 131072, -6684646, 0, 131072, -6684645, 0, 131072, -6684644, 0, 131072, -6684643, 0, 131072, -6684642, 0, 131072, -6684641, 0, 131072, -6684640, 0, 131072, -6684639, 0, 131072, -6684638, 0, 131072, -6684637, 0, 131072, -6684636, 0, 131072, -6684635, 0, 131072, -6684634, 0, 131072, -6684633, 0, 131072, -6684632, 0, 131072, -6684631, 0, 131072, -6684630, 0, 131072, -6684629, 0, 131072, -6684628, 0, 131072, -6684627, 0, 131072, -6684626, 0, 131072, -6684625, 0, 131072, -6684624, 0, 131072, -6684623, 0, 131072, -6684622, 0, 131072, -6684621, 0, 131072, -6684620, 0, 131072, -6684619, 0, 131072, -6684618, 0, 131072, -6684617, 0, 131072, -6684616, 0, 131072, -6684615, 0, 131072, -6684614, 0, 131072, -6684613, 0, 131072, -6684612, 0, 131072, -6684611, 0, 131072, -6684610, 0, 131072, -6684609, 0, 131072, -6684608, 0, 131072, -6684607, 0, 131072, -6684606, 0, 131072, -6684605, 0, 131072, -6684604, 0, 131072, -6684603, 0, 131072, -6684602, 0, 131072, -6684601, 0, 131072, -6684600, 0, 131072, -6684599, 0, 131072, -6684598, 0, 131072, -6684597, 0, 131072, -6684596, 0, 131072, -6684595, 0, 131072, -6684594, 0, 131072, -6684593, 0, 131072, -6684592, 0, 131072, -6684591, 0, 131072, -6684590, 0, 131072, -6684589, 0, 131072, -6684588, 0, 131072, -6684587, 0, 131072, -6684586, 0, 131072, -6684585, 0, 131072, -6684584, 0, 131072, -6684583, 0, 131072, -6553711, 0, 131072, -6553710, 0, 131072, -6553709, 0, 131072, -6553708, 0, 131072, -6553707, 0, 131072, -6553706, 0, 131072, -6553705, 0, 131072, -6553704, 0, 131072, -6553703, 0, 131072, -6553702, 0, 131072, -6553701, 0, 131072, -6553700, 0, 131072, -6553699, 0, 131072, -6553698, 0, 131072, -6553697, 0, 131072, -6553696, 0, 131072, -6553695, 0, 131072, -6553694, 0, 131072, -6553693, 0, 131072, -6553692, 0, 131072, -6553691, 0, 131072, -6553690, 0, 131072, -6553689, 0, 131072, -6553688, 0, 131072, -6553687, 0, 131072, -6553686, 0, 131072, -6553685, 0, 131072, -6553684, 0, 131072, -6553683, 0, 131072, -6553682, 0, 131072, -6553681, 0, 131072, -6553680, 0, 131072, -6553679, 0, 131072, -6553678, 0, 131072, -6553677, 0, 131072, -6553676, 0, 131072, -6553675, 0, 131072, -6553674, 0, 131072, -6553673, 0, 131072, -6553672, 0, 131072, -6553671, 0, 131072, -6553670, 0, 131072, -6553669, 0, 131072, -6553668, 0, 131072, -6553667, 0, 131072, -6553666, 0, 131072, -6553665, 0, 131072, -6553664, 0, 131072, -6553663, 0, 131072, -6553662, 0, 131072, -6553661, 0, 131072, -6553660, 0, 131072, -6553659, 0, 131072, -6553658, 0, 131072, -6553657, 0, 131072, -6553656, 0, 131072, -6553655, 0, 131072, -6553654, 0, 131072, -6553653, 0, 131072, -6553652, 0, 131072, -6553651, 0, 131072, -6553650, 0, 131072, -6553649, 0, 131072, -6553648, 0, 131072, -6553647, 0, 131072, -6553646, 0, 131072, -6553645, 0, 131072, -6553644, 0, 131072, -6553643, 0, 131072, -6553642, 0, 131072, -6553641, 0, 131072, -6553640, 0, 131072, -6553639, 0, 131072, -6553638, 0, 131072, -6553637, 0, 131072, -6553636, 0, 131072, -6553635, 0, 131072, -6553634, 0, 131072, -6553633, 0, 131072, -6553632, 0, 131072, -6553631, 0, 131072, -6553630, 0, 131072, -6553629, 0, 131072, -6553628, 0, 131072, -6553627, 0, 131072, -6553626, 0, 131072, -6553625, 0, 131072, -6553624, 0, 131072, -6553623, 0, 131072, -6553622, 0, 131072, -6553621, 0, 131072, -6553620, 0, 131072, -6553619, 0, 131072, -6553618, 0, 131072, -6553617, 0, 131072, -6553616, 0, 131072, -6553615, 0, 131072, -6553614, 0, 131072, -6553613, 0, 131072, -6553612, 0, 131072, -6553611, 0, 131072, -6553610, 0, 131072, -6553609, 0, 131072, -6553608, 0, 131072, -6553607, 0, 131072, -6553606, 0, 131072, -6553605, 0, 131072, -6553604, 0, 131072, -6553603, 0, 131072, -6553602, 0, 131072, -6553601, 0, 131072, -6619136, 0, 131072, -6619135, 0, 131072, -6619134, 0, 131072, -6619133, 0, 131072, -6619132, 0, 131072, -6619131, 0, 131072, -6619130, 0, 131072, -6619129, 0, 131072, -6619128, 0, 131072, -6619127, 0, 131072, -6619126, 0, 131072, -6619125, 0, 131072, -6619124, 0, 131072, -6619123, 0, 131072, -6619122, 0, 131072, -6619121, 0, 131072, -6619120, 0, 131072, -6619119, 0, 131072, -6619118, 0, 131072, -6619117, 0, 131072, -6619116, 0, 131072, -6619115, 0, 131072, -6619114, 0, 131072, -6619113, 0, 131072, -6619112, 0, 131072, -6619111, 0, 131072, -6619110, 0, 131072, -6619109, 0, 131072, -6619108, 0, 131072, -6619107, 0, 131072, -6619106, 0, 131072, -6619105, 0, 131072, -6619104, 0, 131072, -6619103, 0, 131072, -6619102, 0, 131072, -6619101, 0, 131072, -6619100, 0, 131072, -6619099, 0, 131072, -6619098, 0, 131072, -6619097, 0, 131072, -6619096, 0, 131072, -6619095, 0, 131072, -6619094, 0, 131072, -6619093, 0, 131072, -6619092, 0, 131072, -6619091, 0, 131072, -6619090, 0, 131072, -6619089, 0, 131072, -6619088, 0, 131072, -6619087, 0, 131072, -6619086, 0, 131072, -6619085, 0, 131072, -6619084, 0, 131072, -6619083, 0, 131072, -6619082, 0, 131072, -6619081, 0, 131072, -6619080, 0, 131072, -6619079, 0, 131072, -6619078, 0, 131072, -6619077, 0, 131072, -6619076, 0, 131072, -6619075, 0, 131072, -6619074, 0, 131072, -6619073, 0, 131072, -6619072, 0, 131072, -6619071, 0, 131072, -6619070, 0, 131072, -6619069, 0, 131072, -6619068, 0, 131072, -6619067, 0, 131072, -6619066, 0, 131072, -6619065, 0, 131072, -6619064, 0, 131072, -6619063, 0, 131072, -6619062, 0, 131072, -6619061, 0, 131072, -6619060, 0, 131072, -6619059, 0, 131072, -6619058, 0, 131072, -6619057, 0, 131072, -6619056, 0, 131072, -6619055, 0, 131072, -6619054, 0, 131072, -6619053, 0, 131072, -6619052, 0, 131072, -6619051, 0, 131072, -6619050, 0, 131072, -6619049, 0, 131072, -6619048, 0, 131072, -6619047, 0, 131072, -6619046, 0, 131072, -6619045, 0, 131072, -6488174, 0, 131072, -6488173, 0, 131072, -6488172, 0, 131072, -6488171, 0, 131072, -6488170, 0, 131072, -6488169, 0, 131072, -6488168, 0, 131072, -6488167, 0, 131072, -6488166, 0, 131072, -6488165, 0, 131072, -6488164, 0, 131072, -6488163, 0, 131072, -6488162, 0, 131072, -6488161, 0, 131072, -6488160, 0, 131072, -6488159, 0, 131072, -6488158, 0, 131072, -6488157, 0, 131072, -6488156, 0, 131072, -6488155, 0, 131072, -6488154, 0, 131072, -6488153, 0, 131072, -6488152, 0, 131072, -6488151, 0, 131072, -6488150, 0, 131072, -6488149, 0, 131072, -6488148, 0, 131072, -6488147, 0, 131072, -6488146, 0, 131072, -6488145, 0, 131072, -6488144, 0, 131072, -6488143, 0, 131072, -6488142, 0, 131072, -6488141, 0, 131072, -6488140, 0, 131072, -6488139, 0, 131072, -6488138, 0, 131072, -6488137, 0, 131072, -6488136, 0, 131072, -6488135, 0, 131072, -6488134, 0, 131072, -6488133, 0, 131072, -6488132, 0, 131072, -6488131, 0, 131072, -6488130, 0, 131072, -6488129, 0, 131072, -6488128, 0, 131072, -6488127, 0, 131072, -6488126, 0, 131072, -6488125, 0, 131072, -6488124, 0, 131072, -6488123, 0, 131072, -6488122, 0, 131072, -6488121, 0, 131072, -6488120, 0, 131072, -6488119, 0, 131072, -6488118, 0, 131072, -6488117, 0, 131072, -6488116, 0, 131072, -6488115, 0, 131072, -6488114, 0, 131072, -6488113, 0, 131072, -6488112, 0, 131072, -6488111, 0, 131072, -6488110, 0, 131072, -6488109, 0, 131072, -6488108, 0, 131072, -6488107, 0, 131072, -6488106, 0, 131072, -6488105, 0, 131072, -6488104, 0, 131072, -6488103, 0, 131072, -6488102, 0, 131072, -6488101, 0, 131072, -6488100, 0, 131072, -6488099, 0, 131072, -6488098, 0, 131072, -6488097, 0, 131072, -6488096, 0, 131072, -6488095, 0, 131072, -6488094, 0, 131072, -6488093, 0, 131072, -6488092, 0, 131072, -6488091, 0, 131072, -6488090, 0, 131072, -6488089, 0, 131072, -6488088, 0, 131072, -6488087, 0, 131072, -6488086, 0, 131072, -6488085, 0, 131072, -6488084, 0, 131072, -6488083, 0, 131072, -6488082, 0, 131072, -6488081, 0, 131072, -6488080, 0, 131072, -6488079, 0, 131072, -6488078, 0, 131072, -6488077, 0, 131072, -6488076, 0, 131072, -6488075, 0, 131072, -6488074, 0, 131072, -6488073, 0, 131072, -6488072, 0, 131072, -6488071, 0, 131072, -6488070, 0, 131072, -6488069, 0, 131072, -6488068, 0, 131072, -6488067, 0, 131072, -6488066, 0, 131072, -6488065, 0, 131072, -6553600, 0, 131072, -6553599, 0, 131072, -6553598, 0, 131072, -6553597, 0, 131072, -6553596, 0, 131072, -6553595, 0, 131072, -6553594, 0, 131072, -6553593, 0, 131072, -6553592, 0, 131072, -6553591, 0, 131072, -6553590, 0, 131072, -6553589, 0, 131072, -6553588, 0, 131072, -6553587, 0, 131072, -6553586, 0, 131072, -6553585, 0, 131072, -6553584, 0, 131072, -6553583, 0, 131072, -6553582, 0, 131072, -6553581, 0, 131072, -6553580, 0, 131072, -6553579, 0, 131072, -6553578, 0, 131072, -6553577, 0, 131072, -6553576, 0, 131072, -6553575, 0, 131072, -6553574, 0, 131072, -6553573, 0, 131072, -6553572, 0, 131072, -6553571, 0, 131072, -6553570, 0, 131072, -6553569, 0, 131072, -6553568, 0, 131072, -6553567, 0, 131072, -6553566, 0, 131072, -6553565, 0, 131072, -6553564, 0, 131072, -6553563, 0, 131072, -6553562, 0, 131072, -6553561, 0, 131072, -6553560, 0, 131072, -6553559, 0, 131072, -6553558, 0, 131072, -6553557, 0, 131072, -6553556, 0, 131072, -6553555, 0, 131072, -6553554, 0, 131072, -6553553, 0, 131072, -6553552, 0, 131072, -6553551, 0, 131072, -6553550, 0, 131072, -6553549, 0, 131072, -6553548, 0, 131072, -6553547, 0, 131072, -6553546, 0, 131072, -6553545, 0, 131072, -6553544, 0, 131072, -6553543, 0, 131072, -6553542, 0, 131072, -6553541, 0, 131072, -6553540, 0, 131072, -6553539, 0, 131072, -6553538, 0, 131072, -6553537, 0, 131072, -6553536, 0, 131072, -6553535, 0, 131072, -6553534, 0, 131072, -6553533, 0, 131072, -6553532, 0, 131072, -6553531, 0, 131072, -6553530, 0, 131072, -6553529, 0, 131072, -6553528, 0, 131072, -6553527, 0, 131072, -6553526, 0, 131072, -6553525, 0, 131072, -6553524, 0, 131072, -6553523, 0, 131072, -6553522, 0, 131072, -6553521, 0, 131072, -6553520, 0, 131072, -6553519, 0, 131072, -6553518, 0, 131072, -6553517, 0, 131072, -6553516, 0, 131072, -6553515, 0, 131072, -6553514, 0, 131072, -6553513, 0, 131072, -6553512, 0, 131072, -6553511, 0, 131072, -6553510, 0, 131072, -6553509, 0, 131072, -6553508, 0, 131072, -6422638, 0, 131072, -6422637, 0, 131072, -6422636, 0, 131072, -6422635, 0, 131072, -6422634, 0, 131072, -6422633, 0, 131072, -6422632, 0, 131072, -6422631, 0, 131072, -6422630, 0, 131072, -6422629, 0, 131072, -6422628, 0, 131072, -6422627, 0, 131072, -6422626, 0, 131072, -6422625, 0, 131072, -6422624, 0, 131072, -6422623, 0, 131072, -6422622, 0, 131072, -6422621, 0, 131072, -6422620, 0, 131072, -6422619, 0, 131072, -6422618, 0, 131072, -6422617, 0, 131072, -6422616, 0, 131072, -6422615, 0, 131072, -6422614, 0, 131072, -6422613, 0, 131072, -6422612, 0, 131072, -6422611, 0, 131072, -6422610, 0, 131072, -6422609, 0, 131072, -6422608, 0, 131072, -6422607, 0, 131072, -6422606, 0, 131072, -6422605, 0, 131072, -6422604, 0, 131072, -6422603, 0, 131072, -6422602, 0, 131072, -6422601, 0, 131072, -6422600, 0, 131072, -6422599, 0, 131072, -6422598, 0, 131072, -6422597, 0, 131072, -6422596, 0, 131072, -6422595, 0, 131072, -6422594, 0, 131072, -6422593, 0, 131072, -6422592, 0, 131072, -6422591, 0, 131072, -6422590, 0, 131072, -6422589, 0, 131072, -6422588, 0, 131072, -6422587, 0, 131072, -6422586, 0, 131072, -6422585, 0, 131072, -6422584, 0, 131072, -6422583, 0, 131072, -6422582, 0, 131072, -6422581, 0, 131072, -6422580, 0, 131072, -6422579, 0, 131072, -6422578, 0, 131072, -6422577, 0, 131072, -6422576, 0, 131072, -6422575, 0, 131072, -6422574, 0, 131072, -6422573, 0, 131072, -6422572, 0, 131072, -6422571, 0, 131072, -6422570, 0, 131072, -6422569, 0, 131072, -6422568, 0, 131072, -6422567, 0, 131072, -6422566, 0, 131072, -6422565, 0, 131072, -6422564, 0, 131072, -6422563, 0, 131072, -6422562, 0, 131072, -6422561, 0, 131072, -6422560, 0, 131072, -6422559, 0, 131072, -6422558, 0, 131072, -6422557, 0, 131072, -6422556, 0, 131072, -6422555, 0, 131072, -6422554, 0, 131072, -6422553, 0, 131072, -6422552, 0, 131072, -6422551, 0, 131072, -6422550, 0, 131072, -6422549, 0, 131072, -6422548, 0, 131072, -6422547, 0, 131072, -6422546, 0, 131072, -6422545, 0, 131072, -6422544, 0, 131072, -6422543, 0, 131072, -6422542, 0, 131072, -6422541, 0, 131072, -6422540, 0, 131072, -6422539, 0, 131072, -6422538, 0, 131072, -6422537, 0, 131072, -6422536, 0, 131072, -6422535, 0, 131072, -6422534, 0, 131072, -6422533, 0, 131072, -6422532, 0, 131072, -6422531, 0, 131072, -6422530, 0, 131072, -6422529, 0, 131072, -6488064, 0, 131072, -6488063, 0, 131072, -6488062, 0, 131072, -6488061, 0, 131072, -6488060, 0, 131072, -6488059, 0, 131072, -6488058, 0, 131072, -6488057, 0, 131072, -6488056, 0, 131072, -6488055, 0, 131072, -6488054, 0, 131072, -6488053, 0, 131072, -6488052, 0, 131072, -6488051, 0, 131072, -6488050, 0, 131072, -6488049, 0, 131072, -6488048, 0, 131072, -6488047, 0, 131072, -6488046, 0, 131072, -6488045, 0, 131072, -6488044, 0, 131072, -6488043, 0, 131072, -6488042, 0, 131072, -6488041, 0, 131072, -6488040, 0, 131072, -6488039, 0, 131072, -6488038, 0, 131072, -6488037, 0, 131072, -6488036, 0, 131072, -6488035, 0, 131072, -6488034, 0, 131072, -6488033, 0, 131072, -6488032, 0, 131072, -6488031, 0, 131072, -6488030, 0, 131072, -6488029, 0, 131072, -6488028, 0, 131072, -6488027, 0, 131072, -6488026, 0, 131072, -6488025, 0, 131072, -6488024, 0, 131072, -6488023, 0, 131072, -6488022, 0, 131072, -6488021, 0, 131072, -6488020, 0, 131072, -6488019, 0, 131072, -6488018, 0, 131072, -6488017, 0, 131072, -6488016, 0, 131072, -6488015, 0, 131072, -6488014, 0, 131072, -6488013, 0, 131072, -6488012, 0, 131072, -6488011, 0, 131072, -6488010, 0, 131072, -6488009, 0, 131072, -6488008, 0, 131072, -6488007, 0, 131072, -6488006, 0, 131072, -6488005, 0, 131072, -6488004, 0, 131072, -6488003, 0, 131072, -6488002, 0, 131072, -6488001, 0, 131072, -6488000, 0, 131072, -6487999, 0, 131072, -6487998, 0, 131072, -6487997, 0, 131072, -6487996, 0, 131072, -6487995, 0, 131072, -6487994, 0, 131072, -6487993, 0, 131072, -6487992, 0, 131072, -6487991, 0, 131072, -6487990, 0, 131072, -6487989, 0, 131072, -6487988, 0, 131072, -6487987, 0, 131072, -6487986, 0, 131072, -6487985, 0, 131072, -6487984, 0, 131072, -6487983, 0, 131072, -6487982, 0, 131072, -6487981, 0, 131072, -6487980, 0, 131072, -6487979, 0, 131072, -6487978, 0, 131072, -6487977, 0, 131072, -6487976, 0, 131072, -6487975, 0, 131072, -6487974, 0, 131072, -6487973, 0, 131072, -6487972, 0, 131072, -6487971, 0, 131072, -6487970, 0, 131072, -6357101, 0, 131072, -6357100, 0, 131072, -6357099, 0, 131072, -6357098, 0, 131072, -6357097, 0, 131072, -6357096, 0, 131072, -6357095, 0, 131072, -6357094, 0, 131072, -6357093, 0, 131072, -6357092, 0, 131072, -6357091, 0, 131072, -6357090, 0, 131072, -6357089, 0, 131072, -6357088, 0, 131072, -6357087, 0, 131072, -6357086, 0, 131072, -6357085, 0, 131072, -6357084, 0, 131072, -6357083, 0, 131072, -6357082, 0, 131072, -6357081, 0, 131072, -6357080, 0, 131072, -6357079, 0, 131072, -6357078, 0, 131072, -6357077, 0, 131072, -6357076, 0, 131072, -6357075, 0, 131072, -6357074, 0, 131072, -6357073, 0, 131072, -6357072, 0, 131072, -6357071, 0, 131072, -6357070, 0, 131072, -6357069, 0, 131072, -6357068, 0, 131072, -6357067, 0, 131072, -6357066, 0, 131072, -6357065, 0, 131072, -6357064, 0, 131072, -6357063, 0, 131072, -6357062, 0, 131072, -6357061, 0, 131072, -6357060, 0, 131072, -6357059, 0, 131072, -6357058, 0, 131072, -6357057, 0, 131072, -6357056, 0, 131072, -6357055, 0, 131072, -6357054, 0, 131072, -6357053, 0, 131072, -6357052, 0, 131072, -6357051, 0, 131072, -6357050, 0, 131072, -6357049, 0, 131072, -6357048, 0, 131072, -6357047, 0, 131072, -6357046, 0, 131072, -6357045, 0, 131072, -6357044, 0, 131072, -6357043, 0, 131072, -6357042, 0, 131072, -6357041, 0, 131072, -6357040, 0, 131072, -6357039, 0, 131072, -6357038, 0, 131072, -6357037, 0, 131072, -6357036, 0, 131072, -6357035, 0, 131072, -6357034, 0, 131072, -6357033, 0, 131072, -6357032, 0, 131072, -6357031, 0, 131072, -6357030, 0, 131072, -6357029, 0, 131072, -6357028, 0, 131072, -6357027, 0, 131072, -6357026, 0, 131072, -6357025, 0, 131072, -6357024, 0, 131072, -6357023, 0, 131072, -6357022, 0, 131072, -6357021, 0, 131072, -6357020, 0, 131072, -6357019, 0, 131072, -6357018, 0, 131072, -6357017, 0, 131072, -6357016, 0, 131072, -6357015, 0, 131072, -6357014, 0, 131072, -6357013, 0, 131072, -6357012, 0, 131072, -6357011, 0, 131072, -6357010, 0, 131072, -6357009, 0, 131072, -6357008, 0, 131072, -6357007, 0, 131072, -6357006, 0, 131072, -6357005, 0, 131072, -6357004, 0, 131072, -6357003, 0, 131072, -6357002, 0, 131072, -6357001, 0, 131072, -6357000, 0, 131072, -6356999, 0, 131072, -6356998, 0, 131072, -6356997, 0, 131072, -6356996, 0, 131072, -6356995, 0, 131072, -6356994, 0, 131072, -6356993, 0, 131072, -6422528, 0, 131072, -6422527, 0, 131072, -6422526, 0, 131072, -6422525, 0, 131072, -6422524, 0, 131072, -6422523, 0, 131072, -6422522, 0, 131072, -6422521, 0, 131072, -6422520, 0, 131072, -6422519, 0, 131072, -6422518, 0, 131072, -6422517, 0, 131072, -6422516, 0, 131072, -6422515, 0, 131072, -6422514, 0, 131072, -6422513, 0, 131072, -6422512, 0, 131072, -6422511, 0, 131072, -6422510, 0, 131072, -6422509, 0, 131072, -6422508, 0, 131072, -6422507, 0, 131072, -6422506, 0, 131072, -6422505, 0, 131072, -6422504, 0, 131072, -6422503, 0, 131072, -6422502, 0, 131072, -6422501, 0, 131072, -6422500, 0, 131072, -6422499, 0, 131072, -6422498, 0, 131072, -6422497, 0, 131072, -6422496, 0, 131072, -6422495, 0, 131072, -6422494, 0, 131072, -6422493, 0, 131072, -6422492, 0, 131072, -6422491, 0, 131072, -6422490, 0, 131072, -6422489, 0, 131072, -6422488, 0, 131072, -6422487, 0, 131072, -6422486, 0, 131072, -6422485, 0, 131072, -6422484, 0, 131072, -6422483, 0, 131072, -6422482, 0, 131072, -6422481, 0, 131072, -6422480, 0, 131072, -6422479, 0, 131072, -6422478, 0, 131072, -6422477, 0, 131072, -6422476, 0, 131072, -6422475, 0, 131072, -6422474, 0, 131072, -6422473, 0, 131072, -6422472, 0, 131072, -6422471, 0, 131072, -6422470, 0, 131072, -6422469, 0, 131072, -6422468, 0, 131072, -6422467, 0, 131072, -6422466, 0, 131072, -6422465, 0, 131072, -6422464, 0, 131072, -6422463, 0, 131072, -6422462, 0, 131072, -6422461, 0, 131072, -6422460, 0, 131072, -6422459, 0, 131072, -6422458, 0, 131072, -6422457, 0, 131072, -6422456, 0, 131072, -6422455, 0, 131072, -6422454, 0, 131072, -6422453, 0, 131072, -6422452, 0, 131072, -6422451, 0, 131072, -6422450, 0, 131072, -6422449, 0, 131072, -6422448, 0, 131072, -6422447, 0, 131072, -6422446, 0, 131072, -6422445, 0, 131072, -6422444, 0, 131072, -6422443, 0, 131072, -6422442, 0, 131072, -6422441, 0, 131072, -6422440, 0, 131072, -6422439, 0, 131072, -6422438, 0, 131072, -6422437, 0, 131072, -6422436, 0, 131072, -6422435, 0, 131072, -6422434, 0, 131072, -6422433, 0, 131072, -6291565, 0, 131072, -6291564, 0, 131072, -6291563, 0, 131072, -6291562, 0, 131072, -6291561, 0, 131072, -6291560, 0, 131072, -6291559, 0, 131072, -6291558, 0, 131072, -6291557, 0, 131072, -6291556, 0, 131072, -6291555, 0, 131072, -6291554, 0, 131072, -6291553, 0, 131072, -6291552, 0, 131072, -6291551, 0, 131072, -6291550, 0, 131072, -6291549, 0, 131072, -6291548, 0, 131072, -6291547, 0, 131072, -6291546, 0, 131072, -6291545, 0, 131072, -6291544, 0, 131072, -6291543, 0, 131072, -6291542, 0, 131072, -6291541, 0, 131072, -6291540, 0, 131072, -6291539, 0, 131072, -6291538, 0, 131072, -6291537, 0, 131072, -6291536, 0, 131072, -6291535, 0, 131072, -6291534, 0, 131072, -6291533, 0, 131072, -6291532, 0, 131072, -6291531, 0, 131072, -6291530, 0, 131072, -6291529, 0, 131072, -6291528, 0, 131072, -6291527, 0, 131072, -6291526, 0, 131072, -6291525, 0, 131072, -6291524, 0, 131072, -6291523, 0, 131072, -6291522, 0, 131072, -6291521, 0, 131072, -6291520, 0, 131072, -6291519, 0, 131072, -6291518, 0, 131072, -6291517, 0, 131072, -6291516, 0, 131072, -6291515, 0, 131072, -6291514, 0, 131072, -6291513, 0, 131072, -6291512, 0, 131072, -6291511, 0, 131072, -6291510, 0, 131072, -6291509, 0, 131072, -6291508, 0, 131072, -6291507, 0, 131072, -6291506, 0, 131072, -6291505, 0, 131072, -6291504, 0, 131072, -6291503, 0, 131072, -6291502, 0, 131072, -6291501, 0, 131072, -6291500, 0, 131072, -6291499, 0, 131072, -6291498, 0, 131072, -6291497, 0, 131072, -6291496, 0, 131072, -6291495, 0, 131072, -6291494, 0, 131072, -6291493, 0, 131072, -6291492, 0, 131072, -6291491, 0, 131072, -6291490, 0, 131072, -6291489, 0, 131072, -6291488, 0, 131072, -6291487, 0, 131072, -6291486, 0, 131072, -6291485, 0, 131072, -6291484, 0, 131072, -6291483, 0, 131072, -6291482, 0, 131072, -6291481, 0, 131072, -6291480, 0, 131072, -6291479, 0, 131072, -6291478, 0, 131072, -6291477, 0, 131072, -6291476, 0, 131072, -6291475, 0, 131072, -6291474, 0, 131072, -6291473, 0, 131072, -6291472, 0, 131072, -6291471, 0, 131072, -6291470, 0, 131072, -6291469, 0, 131072, -6291468, 0, 131072, -6291467, 0, 131072, -6291466, 0, 131072, -6291465, 0, 131072, -6291464, 0, 131072, -6291463, 0, 131072, -6291462, 0, 131072, -6291461, 0, 131072, -6291460, 0, 131072, -6291459, 0, 131072, -6291458, 0, 131072, -6291457, 0, 131072, -6356992, 0, 131072, -6356991, 0, 131072, -6356990, 0, 131072, -6356989, 0, 131072, -6356988, 0, 131072, -6356987, 0, 131072, -6356986, 0, 131072, -6356985, 0, 131072, -6356984, 0, 131072, -6356983, 0, 131072, -6356982, 0, 131072, -6356981, 0, 131072, -6356980, 0, 131072, -6356979, 0, 131072, -6356978, 0, 131072, -6356977, 0, 131072, -6356976, 0, 131072, -6356975, 0, 131072, -6356974, 0, 131072, -6356973, 0, 131072, -6356972, 0, 131072, -6356971, 0, 131072, -6356970, 0, 131072, -6356969, 0, 131072, -6356968, 0, 131072, -6356967, 0, 131072, -6356966, 0, 131072, -6356965, 0, 131072, -6356964, 0, 131072, -6356963, 0, 131072, -6356962, 0, 131072, -6356961, 0, 131072, -6356960, 0, 131072, -6356959, 0, 131072, -6356958, 0, 131072, -6356957, 0, 131072, -6356956, 0, 131072, -6356955, 0, 131072, -6356954, 0, 131072, -6356953, 0, 131072, -6356952, 0, 131072, -6356951, 0, 131072, -6356950, 0, 131072, -6356949, 0, 131072, -6356948, 0, 131072, -6356947, 0, 131072, -6356946, 0, 131072, -6356945, 0, 131072, -6356944, 0, 131072, -6356943, 0, 131072, -6356942, 0, 131072, -6356941, 0, 131072, -6356940, 0, 131072, -6356939, 0, 131072, -6356938, 0, 131072, -6356937, 0, 131072, -6356936, 0, 131072, -6356935, 0, 131072, -6356934, 0, 131072, -6356933, 0, 131072, -6356932, 0, 131072, -6356931, 0, 131072, -6356930, 0, 131072, -6356929, 0, 131072, -6356928, 0, 131072, -6356927, 0, 131072, -6356926, 0, 131072, -6356925, 0, 131072, -6356924, 0, 131072, -6356923, 0, 131072, -6356922, 0, 131072, -6356921, 0, 131072, -6356920, 0, 131072, -6356919, 0, 131072, -6356918, 0, 131072, -6356917, 0, 131072, -6356916, 0, 131072, -6356915, 0, 131072, -6356914, 0, 131072, -6356913, 0, 131072, -6356912, 0, 131072, -6356911, 0, 131072, -6356910, 0, 131072, -6356909, 0, 131072, -6356908, 0, 131072, -6356907, 0, 131072, -6356906, 0, 131072, -6356905, 0, 131072, -6356904, 0, 131072, -6356903, 0, 131072, -6356902, 0, 131072, -6356901, 0, 131072, -6356900, 0, 131072, -6356899, 0, 131072, -6356898, 0, 131072, -6356897, 0, 131072, -6356896, 0, 131072, -6356895, 0, 131072, -6226029, 0, 131072, -6226028, 0, 131072, -6226027, 0, 131072, -6226026, 0, 131072, -6226025, 0, 131072, -6226024, 0, 131072, -6226023, 0, 131072, -6226022, 0, 131072, -6226021, 0, 131072, -6226020, 0, 131072, -6226019, 0, 131072, -6226018, 0, 131072, -6226017, 0, 131072, -6226016, 0, 131072, -6226015, 0, 131072, -6226014, 0, 131072, -6226013, 0, 131072, -6226012, 0, 131072, -6226011, 0, 131072, -6226010, 0, 131072, -6226009, 0, 131072, -6226008, 0, 131072, -6226007, 0, 131072, -6226006, 0, 131072, -6226005, 0, 131072, -6226004, 0, 131072, -6226003, 0, 131072, -6226002, 0, 131072, -6226001, 0, 131072, -6226000, 0, 131072, -6225999, 0, 131072, -6225998, 0, 131072, -6225997, 0, 131072, -6225996, 0, 131072, -6225995, 0, 131072, -6225994, 0, 131072, -6225993, 0, 131072, -6225992, 0, 131072, -6225991, 0, 131072, -6225990, 0, 131072, -6225989, 0, 131072, -6225988, 0, 131072, -6225987, 0, 131072, -6225986, 0, 131072, -6225985, 0, 131072, -6225984, 0, 131072, -6225983, 0, 131072, -6225982, 0, 131072, -6225981, 0, 131072, -6225980, 0, 131072, -6225979, 0, 131072, -6225978, 0, 131072, -6225977, 0, 131072, -6225976, 0, 131072, -6225975, 0, 131072, -6225974, 0, 131072, -6225973, 0, 131072, -6225972, 0, 131072, -6225971, 0, 131072, -6225970, 0, 131072, -6225969, 0, 131072, -6225968, 0, 131072, -6225967, 0, 131072, -6225966, 0, 131072, -6225965, 0, 131072, -6225964, 0, 131072, -6225963, 0, 131072, -6225962, 0, 131072, -6225961, 0, 131072, -6225960, 0, 131072, -6225959, 0, 131072, -6225958, 0, 131072, -6225957, 0, 131072, -6225956, 0, 131072, -6225955, 0, 131072, -6225954, 0, 131072, -6225953, 0, 131072, -6225952, 0, 131072, -6225951, 0, 131072, -6225950, 0, 131072, -6225949, 0, 131072, -6225948, 0, 131072, -6225947, 0, 131072, -6225946, 0, 131072, -6225945, 0, 131072, -6225944, 0, 131072, -6225943, 0, 131072, -6225942, 0, 131072, -6225941, 0, 131072, -6225940, 0, 131072, -6225939, 0, 131072, -6225938, 0, 131072, -6225937, 0, 131072, -6225936, 0, 131072, -6225935, 0, 131072, -6225934, 0, 131072, -6225933, 0, 131072, -6225932, 0, 131072, -6225931, 0, 131072, -6225930, 0, 131072, -6225929, 0, 131072, -6225928, 0, 131072, -6225927, 0, 131072, -6225926, 0, 131072, -6225925, 0, 131072, -6225924, 0, 131072, -6225923, 0, 131072, -6225922, 0, 131072, -6225921, 0, 131072, -6291456, 0, 131072, -6291455, 0, 131072, -6291454, 0, 131072, -6291453, 0, 131072, -6291452, 0, 131072, -6291451, 0, 131072, -6291450, 0, 131072, -6291449, 0, 131072, -6291448, 0, 131072, -6291447, 0, 131072, -6291446, 0, 131072, -6291445, 0, 131072, -6291444, 0, 131072, -6291443, 0, 131072, -6291442, 0, 131072, -6291441, 0, 131072, -6291440, 0, 131072, -6291439, 0, 131072, -6291438, 0, 131072, -6291437, 0, 131072, -6291436, 0, 131072, -6291435, 0, 131072, -6291434, 0, 131072, -6291433, 0, 131072, -6291432, 0, 131072, -6291431, 0, 131072, -6291430, 0, 131072, -6291429, 0, 131072, -6291428, 0, 131072, -6291427, 0, 131072, -6291426, 0, 131072, -6291425, 0, 131072, -6291424, 0, 131072, -6291423, 0, 131072, -6291422, 0, 131072, -6291421, 0, 131072, -6291420, 0, 131072, -6291419, 0, 131072, -6291418, 0, 131072, -6291417, 0, 131072, -6291416, 0, 131072, -6291415, 0, 131072, -6291414, 0, 131072, -6291413, 0, 131072, -6291412, 0, 131072, -6291411, 0, 131072, -6291410, 0, 131072, -6291409, 0, 131072, -6291408, 0, 131072, -6291407, 0, 131072, -6291406, 0, 131072, -6291405, 0, 131072, -6291404, 0, 131072, -6291403, 0, 131072, -6291402, 0, 131072, -6291401, 0, 131072, -6291400, 0, 131072, -6291399, 0, 131072, -6291398, 0, 131072, -6291397, 0, 131072, -6291396, 0, 131072, -6291395, 0, 131072, -6291394, 0, 131072, -6291393, 0, 131072, -6291392, 0, 131072, -6291391, 0, 131072, -6291390, 0, 131072, -6291389, 0, 131072, -6291388, 0, 131072, -6291387, 0, 131072, -6291386, 0, 131072, -6291385, 0, 131072, -6291384, 0, 131072, -6291383, 0, 131072, -6291382, 0, 131072, -6291381, 0, 131072, -6291380, 0, 131072, -6291379, 0, 131072, -6291378, 0, 131072, -6291377, 0, 131072, -6291376, 0, 131072, -6291375, 0, 131072, -6291374, 0, 131072, -6291373, 0, 131072, -6291372, 0, 131072, -6291371, 0, 131072, -6291370, 0, 131072, -6291369, 0, 131072, -6291368, 0, 131072, -6291367, 0, 131072, -6291366, 0, 131072, -6291365, 0, 131072, -6291364, 0, 131072, -6291363, 0, 131072, -6291362, 0, 131072, -6291361, 0, 131072, -6291360, 0, 131072, -6291359, 0, 131072, -6291358, 0, 131072, -6160492, 0, 131072, -6160491, 0, 131072, -6160490, 0, 131072, -6160489, 0, 131072, -6160488, 0, 131072, -6160487, 0, 131072, -6160486, 0, 131072, -6160485, 0, 131072, -6160484, 0, 131072, -6160483, 0, 131072, -6160482, 0, 131072, -6160481, 0, 131072, -6160480, 0, 131072, -6160479, 0, 131072, -6160478, 0, 131072, -6160477, 0, 131072, -6160476, 0, 131072, -6160475, 0, 131072, -6160474, 0, 131072, -6160473, 0, 131072, -6160472, 0, 131072, -6160471, 0, 131072, -6160470, 0, 131072, -6160469, 0, 131072, -6160468, 0, 131072, -6160467, 0, 131072, -6160466, 0, 131072, -6160465, 0, 131072, -6160464, 0, 131072, -6160463, 0, 131072, -6160462, 0, 131072, -6160461, 0, 131072, -6160460, 0, 131072, -6160459, 0, 131072, -6160458, 0, 131072, -6160457, 0, 131072, -6160456, 0, 131072, -6160455, 0, 131072, -6160454, 0, 131072, -6160453, 0, 131072, -6160452, 0, 131072, -6160451, 0, 131072, -6160450, 0, 131072, -6160449, 0, 131072, -6160448, 0, 131072, -6160447, 0, 131072, -6160446, 0, 131072, -6160445, 0, 131072, -6160444, 0, 131072, -6160443, 0, 131072, -6160442, 0, 131072, -6160441, 0, 131072, -6160440, 0, 131072, -6160439, 0, 131072, -6160438, 0, 131072, -6160437, 0, 131072, -6160436, 0, 131072, -6160435, 0, 131072, -6160434, 0, 131072, -6160433, 0, 131072, -6160432, 0, 131072, -6160431, 0, 131072, -6160430, 0, 131072, -6160429, 0, 131072, -6160428, 0, 131072, -6160427, 0, 131072, -6160426, 0, 131072, -6160425, 0, 131072, -6160424, 0, 131072, -6160423, 0, 131072, -6160422, 0, 131072, -6160421, 0, 131072, -6160420, 0, 131072, -6160419, 0, 131072, -6160418, 0, 131072, -6160417, 0, 131072, -6160416, 0, 131072, -6160415, 0, 131072, -6160414, 0, 131072, -6160413, 0, 131072, -6160412, 0, 131072, -6160411, 0, 131072, -6160410, 0, 131072, -6160409, 0, 131072, -6160408, 0, 131072, -6160407, 0, 131072, -6160406, 0, 131072, -6160405, 0, 131072, -6160404, 0, 131072, -6160403, 0, 131072, -6160402, 0, 131072, -6160401, 0, 131072, -6160400, 0, 131072, -6160399, 0, 131072, -6160398, 0, 131072, -6160397, 0, 131072, -6160396, 0, 131072, -6160395, 0, 131072, -6160394, 0, 131072, -6160393, 0, 131072, -6160392, 0, 131072, -6160391, 0, 131072, -6160390, 0, 131072, -6160389, 0, 131072, -6160388, 0, 131072, -6160387, 0, 131072, -6160386, 0, 131072, -6160385, 0, 131072, -6225920, 0, 131072, -6225919, 0, 131072, -6225918, 0, 131072, -6225917, 0, 131072, -6225916, 0, 131072, -6225915, 0, 131072, -6225914, 0, 131072, -6225913, 0, 131072, -6225912, 0, 131072, -6225911, 0, 131072, -6225910, 0, 131072, -6225909, 0, 131072, -6225908, 0, 131072, -6225907, 0, 131072, -6225906, 0, 131072, -6225905, 0, 131072, -6225904, 0, 131072, -6225903, 0, 131072, -6225902, 0, 131072, -6225901, 0, 131072, -6225900, 0, 131072, -6225899, 0, 131072, -6225898, 0, 131072, -6225897, 0, 131072, -6225896, 0, 131072, -6225895, 0, 131072, -6225894, 0, 131072, -6225893, 0, 131072, -6225892, 0, 131072, -6225891, 0, 131072, -6225890, 0, 131072, -6225889, 0, 131072, -6225888, 0, 131072, -6225887, 0, 131072, -6225886, 0, 131072, -6225885, 0, 131072, -6225884, 0, 131072, -6225883, 0, 131072, -6225882, 0, 131072, -6225881, 0, 131072, -6225880, 0, 131072, -6225879, 0, 131072, -6225878, 0, 131072, -6225877, 0, 131072, -6225876, 0, 131072, -6225875, 0, 131072, -6225874, 0, 131072, -6225873, 0, 131072, -6225872, 0, 131072, -6225871, 0, 131072, -6225870, 0, 131072, -6225869, 0, 131072, -6225868, 0, 131072, -6225867, 0, 131072, -6225866, 0, 131072, -6225865, 0, 131072, -6225864, 0, 131072, -6225863, 0, 131072, -6225862, 0, 131072, -6225861, 0, 131072, -6225860, 0, 131072, -6225859, 0, 131072, -6225858, 0, 131072, -6225857, 0, 131072, -6225856, 0, 131072, -6225855, 0, 131072, -6225854, 0, 131072, -6225853, 0, 131072, -6225852, 0, 131072, -6225851, 0, 131072, -6225850, 0, 131072, -6225849, 0, 131072, -6225848, 0, 131072, -6225847, 0, 131072, -6225846, 0, 131072, -6225845, 0, 131072, -6225844, 0, 131072, -6225843, 0, 131072, -6225842, 0, 131072, -6225841, 0, 131072, -6225840, 0, 131072, -6225839, 0, 131072, -6225838, 0, 131072, -6225837, 0, 131072, -6225836, 0, 131072, -6225835, 0, 131072, -6225834, 0, 131072, -6225833, 0, 131072, -6225832, 0, 131072, -6225831, 0, 131072, -6225830, 0, 131072, -6225829, 0, 131072, -6225828, 0, 131072, -6225827, 0, 131072, -6225826, 0, 131072, -6225825, 0, 131072, -6225824, 0, 131072, -6225823, 0, 131072, -6225822, 0, 131072, -6225821, 0, 131072, -6225820, 0, 131072, -6094956, 0, 131072, -6094955, 0, 131072, -6094954, 0, 131072, -6094953, 0, 131072, -6094952, 0, 131072, -6094951, 0, 131072, -6094950, 0, 131072, -6094949, 0, 131072, -6094948, 0, 131072, -6094947, 0, 131072, -6094946, 0, 131072, -6094945, 0, 131072, -6094944, 0, 131072, -6094943, 0, 131072, -6094942, 0, 131072, -6094941, 0, 131072, -6094940, 0, 131072, -6094939, 0, 131072, -6094938, 0, 131072, -6094937, 0, 131072, -6094936, 0, 131072, -6094935, 0, 131072, -6094934, 0, 131072, -6094933, 0, 131072, -6094932, 0, 131072, -6094931, 0, 131072, -6094930, 0, 131072, -6094929, 0, 131072, -6094928, 0, 131072, -6094927, 0, 131072, -6094926, 0, 131072, -6094925, 0, 131072, -6094924, 0, 131072, -6094923, 0, 131072, -6094922, 0, 131072, -6094921, 0, 131072, -6094920, 0, 131072, -6094919, 0, 131072, -6094918, 0, 131072, -6094917, 0, 131072, -6094916, 0, 131072, -6094915, 0, 131072, -6094914, 0, 131072, -6094913, 0, 131072, -6094912, 0, 131072, -6094911, 0, 131072, -6094910, 0, 131072, -6094909, 0, 131072, -6094908, 0, 131072, -6094907, 0, 131072, -6094906, 0, 131072, -6094905, 0, 131072, -6094904, 0, 131072, -6094903, 0, 131072, -6094902, 0, 131072, -6094901, 0, 131072, -6094900, 0, 131072, -6094899, 0, 131072, -6094898, 0, 131072, -6094897, 0, 131072, -6094896, 0, 131072, -6094895, 0, 131072, -6094894, 0, 131072, -6094893, 0, 131072, -6094892, 0, 131072, -6094891, 0, 131072, -6094890, 0, 131072, -6094889, 0, 131072, -6094888, 0, 131072, -6094887, 0, 131072, -6094886, 0, 131072, -6094885, 0, 131072, -6094884, 0, 131072, -6094883, 0, 131072, -6094882, 0, 131072, -6094881, 0, 131072, -6094880, 0, 131072, -6094879, 0, 131072, -6094878, 0, 131072, -6094877, 0, 131072, -6094876, 0, 131072, -6094875, 0, 131072, -6094874, 0, 131072, -6094873, 0, 131072, -6094872, 0, 131072, -6094871, 0, 131072, -6094870, 0, 131072, -6094869, 0, 131072, -6094868, 0, 131072, -6094867, 0, 131072, -6094866, 0, 131072, -6094865, 0, 131072, -6094864, 0, 131072, -6094863, 0, 131072, -6094862, 0, 131072, -6094861, 0, 131072, -6094860, 0, 131072, -6094859, 0, 131072, -6094858, 0, 131072, -6094857, 0, 131072, -6094856, 0, 131072, -6094855, 0, 131072, -6094854, 0, 131072, -6094853, 0, 131072, -6094852, 0, 131072, -6094851, 0, 131072, -6094850, 0, 131072, -6094849, 0, 131072, -6160384, 0, 131072, -6160383, 0, 131072, -6160382, 0, 131072, -6160381, 0, 131072, -6160380, 0, 131072, -6160379, 0, 131072, -6160378, 0, 131072, -6160377, 0, 131072, -6160376, 0, 131072, -6160375, 0, 131072, -6160374, 0, 131072, -6160373, 0, 131072, -6160372, 0, 131072, -6160371, 0, 131072, -6160370, 0, 131072, -6160369, 0, 131072, -6160368, 0, 131072, -6160367, 0, 131072, -6160366, 0, 131072, -6160365, 0, 131072, -6160364, 0, 131072, -6160363, 0, 131072, -6160362, 0, 131072, -6160361, 0, 131072, -6160360, 0, 131072, -6160359, 0, 131072, -6160358, 0, 131072, -6160357, 0, 131072, -6160356, 0, 131072, -6160355, 0, 131072, -6160354, 0, 131072, -6160353, 0, 131072, -6160352, 0, 131072, -6160351, 0, 131072, -6160350, 0, 131072, -6160349, 0, 131072, -6160348, 0, 131072, -6160347, 0, 131072, -6160346, 0, 131072, -6160345, 0, 131072, -6160344, 0, 131072, -6160343, 0, 131072, -6160342, 0, 131072, -6160341, 0, 131072, -6160340, 0, 131072, -6160339, 0, 131072, -6160338, 0, 131072, -6160337, 0, 131072, -6160336, 0, 131072, -6160335, 0, 131072, -6160334, 0, 131072, -6160333, 0, 131072, -6160332, 0, 131072, -6160331, 0, 131072, -6160330, 0, 131072, -6160329, 0, 131072, -6160328, 0, 131072, -6160327, 0, 131072, -6160326, 0, 131072, -6160325, 0, 131072, -6160324, 0, 131072, -6160323, 0, 131072, -6160322, 0, 131072, -6160321, 0, 131072, -6160320, 0, 131072, -6160319, 0, 131072, -6160318, 0, 131072, -6160317, 0, 131072, -6160316, 0, 131072, -6160315, 0, 131072, -6160314, 0, 131072, -6160313, 0, 131072, -6160312, 0, 131072, -6160311, 0, 131072, -6160310, 0, 131072, -6160309, 0, 131072, -6160308, 0, 131072, -6160307, 0, 131072, -6160306, 0, 131072, -6160305, 0, 131072, -6160304, 0, 131072, -6160303, 0, 131072, -6160302, 0, 131072, -6160301, 0, 131072, -6160300, 0, 131072, -6160299, 0, 131072, -6160298, 0, 131072, -6160297, 0, 131072, -6160296, 0, 131072, -6160295, 0, 131072, -6160294, 0, 131072, -6160293, 0, 131072, -6160292, 0, 131072, -6160291, 0, 131072, -6160290, 0, 131072, -6160289, 0, 131072, -6160288, 0, 131072, -6160287, 0, 131072, -6160286, 0, 131072, -6160285, 0, 131072, -6160284, 0, 131072, -6160283, 0, 131072, -6029420, 0, 131072, -6029419, 0, 131072, -6029418, 0, 131072, -6029417, 0, 131072, -6029416, 0, 131072, -6029415, 0, 131072, -6029414, 0, 131072, -6029413, 0, 131072, -6029412, 0, 131072, -6029411, 0, 131072, -6029410, 0, 131072, -6029409, 0, 131072, -6029408, 0, 131072, -6029407, 0, 131072, -6029406, 0, 131072, -6029405, 0, 131072, -6029404, 0, 131072, -6029403, 0, 131072, -6029402, 0, 131072, -6029401, 0, 131072, -6029400, 0, 131072, -6029399, 0, 131072, -6029398, 0, 131072, -6029397, 0, 131072, -6029396, 0, 131072, -6029395, 0, 131072, -6029394, 0, 131072, -6029393, 0, 131072, -6029392, 0, 131072, -6029391, 0, 131072, -6029390, 0, 131072, -6029389, 0, 131072, -6029388, 0, 131072, -6029387, 0, 131072, -6029386, 0, 131072, -6029385, 0, 131072, -6029384, 0, 131072, -6029383, 0, 131072, -6029382, 0, 131072, -6029381, 0, 131072, -6029380, 0, 131072, -6029379, 0, 131072, -6029378, 0, 131072, -6029377, 0, 131072, -6029376, 0, 131072, -6029375, 0, 131072, -6029374, 0, 131072, -6029373, 0, 131072, -6029372, 0, 131072, -6029371, 0, 131072, -6029370, 0, 131072, -6029369, 0, 131072, -6029368, 0, 131072, -6029367, 0, 131072, -6029366, 0, 131072, -6029365, 0, 131072, -6029364, 0, 131072, -6029363, 0, 131072, -6029362, 0, 131072, -6029361, 0, 131072, -6029360, 0, 131072, -6029359, 0, 131072, -6029358, 0, 131072, -6029357, 0, 131072, -6029356, 0, 131072, -6029355, 0, 131072, -6029354, 0, 131072, -6029353, 0, 131072, -6029352, 0, 131072, -6029351, 0, 131072, -6029350, 0, 131072, -6029349, 0, 131072, -6029348, 0, 131072, -6029347, 0, 131072, -6029346, 0, 131072, -6029345, 0, 131072, -6029344, 0, 131072, -6029343, 0, 131072, -6029342, 0, 131072, -6029341, 0, 131072, -6029340, 0, 131072, -6029339, 0, 131072, -6029338, 0, 131072, -6029337, 0, 131072, -6029336, 0, 131072, -6029335, 0, 131072, -6029334, 0, 131072, -6029333, 0, 131072, -6029332, 0, 131072, -6029331, 0, 131072, -6029330, 0, 131072, -6029329, 0, 131072, -6029328, 0, 131072, -6029327, 0, 131072, -6029326, 0, 131072, -6029325, 0, 131072, -6029324, 0, 131072, -6029323, 0, 131072, -6029322, 0, 131072, -6029321, 0, 131072, -6029320, 0, 131072, -6029319, 0, 131072, -6029318, 0, 131072, -6029317, 0, 131072, -6029316, 0, 131072, -6029315, 0, 131072, -6029314, 0, 131072, -6029313, 0, 131072, -6094848, 0, 131072, -6094847, 0, 131072, -6094846, 0, 131072, -6094845, 0, 131072, -6094844, 0, 131072, -6094843, 0, 131072, -6094842, 0, 131072, -6094841, 0, 131072, -6094840, 0, 131072, -6094839, 0, 131072, -6094838, 0, 131072, -6094837, 0, 131072, -6094836, 0, 131072, -6094835, 0, 131072, -6094834, 0, 131072, -6094833, 0, 131072, -6094832, 0, 131072, -6094831, 0, 131072, -6094830, 0, 131072, -6094829, 0, 131072, -6094828, 0, 131072, -6094827, 0, 131072, -6094826, 0, 131072, -6094825, 0, 131072, -6094824, 0, 131072, -6094823, 0, 131072, -6094822, 0, 131072, -6094821, 0, 131072, -6094820, 0, 131072, -6094819, 0, 131072, -6094818, 0, 131072, -6094817, 0, 131072, -6094816, 0, 131072, -6094815, 0, 131072, -6094814, 0, 131072, -6094813, 0, 131072, -6094812, 0, 131072, -6094811, 0, 131072, -6094810, 0, 131072, -6094809, 0, 131072, -6094808, 0, 131072, -6094807, 0, 131072, -6094806, 0, 131072, -6094805, 0, 131072, -6094804, 0, 131072, -6094803, 0, 131072, -6094802, 0, 131072, -6094801, 0, 131072, -6094800, 0, 131072, -6094799, 0, 131072, -6094798, 0, 131072, -6094797, 0, 131072, -6094796, 0, 131072, -6094795, 0, 131072, -6094794, 0, 131072, -6094793, 0, 131072, -6094792, 0, 131072, -6094791, 0, 131072, -6094790, 0, 131072, -6094789, 0, 131072, -6094788, 0, 131072, -6094787, 0, 131072, -6094786, 0, 131072, -6094785, 0, 131072, -6094784, 0, 131072, -6094783, 0, 131072, -6094782, 0, 131072, -6094781, 0, 131072, -6094780, 0, 131072, -6094779, 0, 131072, -6094778, 0, 131072, -6094777, 0, 131072, -6094776, 0, 131072, -6094775, 0, 131072, -6094774, 0, 131072, -6094773, 0, 131072, -6094772, 0, 131072, -6094771, 0, 131072, -6094770, 0, 131072, -6094769, 0, 131072, -6094768, 0, 131072, -6094767, 0, 131072, -6094766, 0, 131072, -6094765, 0, 131072, -6094764, 0, 131072, -6094763, 0, 131072, -6094762, 0, 131072, -6094761, 0, 131072, -6094760, 0, 131072, -6094759, 0, 131072, -6094758, 0, 131072, -6094757, 0, 131072, -6094756, 0, 131072, -6094755, 0, 131072, -6094754, 0, 131072, -6094753, 0, 131072, -6094752, 0, 131072, -6094751, 0, 131072, -6094750, 0, 131072, -6094749, 0, 131072, -6094748, 0, 131072, -6094747, 0, 131072, -6094746, 0, 131072, -6094745, 0, 131072, -5963881, 0, 131072, -5963880, 0, 131072, -5963879, 0, 131072, -5963878, 0, 131072, -5963877, 0, 131072, -5963876, 0, 131072, -5963875, 0, 131072, -5963874, 0, 131072, -5963873, 0, 131072, -5963872, 0, 131072, -5963871, 0, 131072, -5963870, 0, 131072, -5963869, 0, 131072, -5963868, 0, 131072, -5963867, 0, 131072, -5963866, 0, 131072, -5963865, 0, 131072, -5963864, 0, 131072, -5963863, 0, 131072, -5963862, 0, 131072, -5963861, 0, 131072, -5963860, 0, 131072, -5963859, 0, 131072, -5963858, 0, 131072, -5963857, 0, 131072, -5963856, 0, 131072, -5963855, 0, 131072, -5963854, 0, 131072, -5963853, 0, 131072, -5963852, 0, 131072, -5963851, 0, 131072, -5963850, 0, 131072, -5963849, 0, 131072, -5963848, 0, 131072, -5963847, 0, 131072, -5963846, 0, 131072, -5963845, 0, 131072, -5963844, 0, 131072, -5963843, 0, 131072, -5963842, 0, 131072, -5963841, 0, 131072, -5963840, 0, 131072, -5963839, 0, 131072, -5963838, 0, 131072, -5963837, 0, 131072, -5963836, 0, 131072, -5963835, 0, 131072, -5963834, 0, 131072, -5963833, 0, 131072, -5963832, 0, 131072, -5963831, 0, 131072, -5963830, 0, 131072, -5963829, 0, 131072, -5963828, 0, 131072, -5963827, 0, 131072, -5963826, 0, 131072, -5963825, 0, 131072, -5963824, 0, 131072, -5963823, 0, 131072, -5963822, 0, 131072, -5963821, 0, 131072, -5963820, 0, 131072, -5963819, 0, 131072, -5963818, 0, 131072, -5963817, 0, 131072, -5963816, 0, 131072, -5963815, 0, 131072, -5963814, 0, 131072, -5963813, 0, 131072, -5963812, 0, 131072, -5963811, 0, 131072, -5963810, 0, 131072, -5963809, 0, 131072, -5963808, 0, 131072, -5963807, 0, 131072, -5963806, 0, 131072, -5963805, 0, 131072, -5963804, 0, 131072, -5963803, 0, 131072, -5963802, 0, 131072, -5963801, 0, 131072, -5963800, 0, 131072, -5963799, 0, 131072, -5963798, 0, 131072, -5963797, 0, 131072, -5963796, 0, 131072, -5963795, 0, 131072, -5963794, 0, 131072, -5963793, 0, 131072, -5963792, 0, 131072, -5963791, 0, 131072, -5963790, 0, 131072, -5963789, 0, 131072, -5963788, 0, 131072, -5963787, 0, 131072, -5963786, 0, 131072, -5963785, 0, 131072, -5963784, 0, 131072, -5963783, 0, 131072, -5963782, 0, 131072, -5963781, 0, 131072, -5963780, 0, 131072, -5963779, 0, 131072, -5963778, 0, 131072, -5963777, 0, 131072, -6029312, 0, 131072, -6029311, 0, 131072, -6029310, 0, 131072, -6029309, 0, 131072, -6029308, 0, 131072, -6029307, 0, 131072, -6029306, 0, 131072, -6029305, 0, 131072, -6029304, 0, 131072, -6029303, 0, 131072, -6029302, 0, 131072, -6029301, 0, 131072, -6029300, 0, 131072, -6029299, 0, 131072, -6029298, 0, 131072, -6029297, 0, 131072, -6029296, 0, 131072, -6029295, 0, 131072, -6029294, 0, 131072, -6029293, 0, 131072, -6029292, 0, 131072, -6029291, 0, 131072, -6029290, 0, 131072, -6029289, 0, 131072, -6029288, 0, 131072, -6029287, 0, 131072, -6029286, 0, 131072, -6029285, 0, 131072, -6029284, 0, 131072, -6029283, 0, 131072, -6029282, 0, 131072, -6029281, 0, 131072, -6029280, 0, 131072, -6029279, 0, 131072, -6029278, 0, 131072, -6029277, 0, 131072, -6029276, 0, 131072, -6029275, 0, 131072, -6029274, 0, 131072, -6029273, 0, 131072, -6029272, 0, 131072, -6029271, 0, 131072, -6029270, 0, 131072, -6029269, 0, 131072, -6029268, 0, 131072, -6029267, 0, 131072, -6029266, 0, 131072, -6029265, 0, 131072, -6029264, 0, 131072, -6029263, 0, 131072, -6029262, 0, 131072, -6029261, 0, 131072, -6029260, 0, 131072, -6029259, 0, 131072, -6029258, 0, 131072, -6029257, 0, 131072, -6029256, 0, 131072, -6029255, 0, 131072, -6029254, 0, 131072, -6029253, 0, 131072, -6029252, 0, 131072, -6029251, 0, 131072, -6029250, 0, 131072, -6029249, 0, 131072, -6029248, 0, 131072, -6029247, 0, 131072, -6029246, 0, 131072, -6029245, 0, 131072, -6029244, 0, 131072, -6029243, 0, 131072, -6029242, 0, 131072, -6029241, 0, 131072, -6029240, 0, 131072, -6029239, 0, 131072, -6029238, 0, 131072, -6029237, 0, 131072, -6029236, 0, 131072, -6029235, 0, 131072, -6029234, 0, 131072, -6029233, 0, 131072, -6029232, 0, 131072, -6029231, 0, 131072, -6029230, 0, 131072, -6029229, 0, 131072, -6029228, 0, 131072, -6029227, 0, 131072, -6029226, 0, 131072, -6029225, 0, 131072, -6029224, 0, 131072, -6029223, 0, 131072, -6029222, 0, 131072, -6029221, 0, 131072, -6029220, 0, 131072, -6029219, 0, 131072, -6029218, 0, 131072, -6029217, 0, 131072, -6029216, 0, 131072, -6029215, 0, 131072, -6029214, 0, 131072, -6029213, 0, 131072, -6029212, 0, 131072, -6029211, 0, 131072, -6029210, 0, 131072, -6029209, 0, 131072, -6029208, 0, 131072, -5898344, 0, 131072, -5898343, 0, 131072, -5898342, 0, 131072, -5898341, 0, 131072, -5898340, 0, 131072, -5898339, 0, 131072, -5898338, 0, 131072, -5898337, 0, 131072, -5898336, 0, 131072, -5898335, 0, 131072, -5898334, 0, 131072, -5898333, 0, 131072, -5898332, 0, 131072, -5898331, 0, 131072, -5898330, 0, 131072, -5898329, 0, 131072, -5898328, 0, 131072, -5898327, 0, 131072, -5898326, 0, 131072, -5898325, 0, 131072, -5898324, 0, 131072, -5898323, 0, 131072, -5898322, 0, 131072, -5898321, 0, 131072, -5898320, 0, 131072, -5898319, 0, 131072, -5898318, 0, 131072, -5898317, 0, 131072, -5898316, 0, 131072, -5898315, 0, 131072, -5898314, 0, 131072, -5898313, 0, 131072, -5898312, 0, 131072, -5898311, 0, 131072, -5898310, 0, 131072, -5898309, 0, 131072, -5898308, 0, 131072, -5898307, 0, 131072, -5898306, 0, 131072, -5898305, 0, 131072, -5898304, 0, 131072, -5898303, 0, 131072, -5898302, 0, 131072, -5898301, 0, 131072, -5898300, 0, 131072, -5898299, 0, 131072, -5898298, 0, 131072, -5898297, 0, 131072, -5898296, 0, 131072, -5898295, 0, 131072, -5898294, 0, 131072, -5898293, 0, 131072, -5898292, 0, 131072, -5898291, 0, 131072, -5898290, 0, 131072, -5898289, 0, 131072, -5898288, 0, 131072, -5898287, 0, 131072, -5898286, 0, 131072, -5898285, 0, 131072, -5898284, 0, 131072, -5898283, 0, 131072, -5898282, 0, 131072, -5898281, 0, 131072, -5898280, 0, 131072, -5898279, 0, 131072, -5898278, 0, 131072, -5898277, 0, 131072, -5898276, 0, 131072, -5898275, 0, 131072, -5898274, 0, 131072, -5898273, 0, 131072, -5898272, 0, 131072, -5898271, 0, 131072, -5898270, 0, 131072, -5898269, 0, 131072, -5898268, 0, 131072, -5898267, 0, 131072, -5898266, 0, 131072, -5898265, 0, 131072, -5898264, 0, 131072, -5898263, 0, 131072, -5898262, 0, 131072, -5898261, 0, 131072, -5898260, 0, 131072, -5898259, 0, 131072, -5898258, 0, 131072, -5898257, 0, 131072, -5898256, 0, 131072, -5898255, 0, 131072, -5898254, 0, 131072, -5898253, 0, 131072, -5898252, 0, 131072, -5898251, 0, 131072, -5898250, 0, 131072, -5898249, 0, 131072, -5898248, 0, 131072, -5898247, 0, 131072, -5898246, 0, 131072, -5898245, 0, 131072, -5898244, 0, 131072, -5898243, 0, 131072, -5898242, 0, 131072, -5898241, 0, 131072, -5963776, 0, 131072, -5963775, 0, 131072, -5963774, 0, 131072, -5963773, 0, 131072, -5963772, 0, 131072, -5963771, 0, 131072, -5963770, 0, 131072, -5963769, 0, 131072, -5963768, 0, 131072, -5963767, 0, 131072, -5963766, 0, 131072, -5963765, 0, 131072, -5963764, 0, 131072, -5963763, 0, 131072, -5963762, 0, 131072, -5963761, 0, 131072, -5963760, 0, 131072, -5963759, 0, 131072, -5963758, 0, 131072, -5963757, 0, 131072, -5963756, 0, 131072, -5963755, 0, 131072, -5963754, 0, 131072, -5963753, 0, 131072, -5963752, 0, 131072, -5963751, 0, 131072, -5963750, 0, 131072, -5963749, 0, 131072, -5963748, 0, 131072, -5963747, 0, 131072, -5963746, 0, 131072, -5963745, 0, 131072, -5963744, 0, 131072, -5963743, 0, 131072, -5963742, 0, 131072, -5963741, 0, 131072, -5963740, 0, 131072, -5963739, 0, 131072, -5963738, 0, 131072, -5963737, 0, 131072, -5963736, 0, 131072, -5963735, 0, 131072, -5963734, 0, 131072, -5963733, 0, 131072, -5963732, 0, 131072, -5963731, 0, 131072, -5963730, 0, 131072, -5963729, 0, 131072, -5963728, 0, 131072, -5963727, 0, 131072, -5963726, 0, 131072, -5963725, 0, 131072, -5963724, 0, 131072, -5963723, 0, 131072, -5963722, 0, 131072, -5963721, 0, 131072, -5963720, 0, 131072, -5963719, 0, 131072, -5963718, 0, 131072, -5963717, 0, 131072, -5963716, 0, 131072, -5963715, 0, 131072, -5963714, 0, 131072, -5963713, 0, 131072, -5963712, 0, 131072, -5963711, 0, 131072, -5963710, 0, 131072, -5963709, 0, 131072, -5963708, 0, 131072, -5963707, 0, 131072, -5963706, 0, 131072, -5963705, 0, 131072, -5963704, 0, 131072, -5963703, 0, 131072, -5963702, 0, 131072, -5963701, 0, 131072, -5963700, 0, 131072, -5963699, 0, 131072, -5963698, 0, 131072, -5963697, 0, 131072, -5963696, 0, 131072, -5963695, 0, 131072, -5963694, 0, 131072, -5963693, 0, 131072, -5963692, 0, 131072, -5963691, 0, 131072, -5963690, 0, 131072, -5963689, 0, 131072, -5963688, 0, 131072, -5963687, 0, 131072, -5963686, 0, 131072, -5963685, 0, 131072, -5963684, 0, 131072, -5963683, 0, 131072, -5963682, 0, 131072, -5963681, 0, 131072, -5963680, 0, 131072, -5963679, 0, 131072, -5963678, 0, 131072, -5963677, 0, 131072, -5963676, 0, 131072, -5963675, 0, 131072, -5963674, 0, 131072, -5963673, 0, 131072, -5963672, 0, 131072, -5963671, 0, 131072, -5963670, 0, 131072, -5832808, 0, 131072, -5832807, 0, 131072, -5832806, 0, 131072, -5832805, 0, 131072, -5832804, 0, 131072, -5832803, 0, 131072, -5832802, 0, 131072, -5832801, 0, 131072, -5832800, 0, 131072, -5832799, 0, 131072, -5832798, 0, 131072, -5832797, 0, 131072, -5832796, 0, 131072, -5832795, 0, 131072, -5832794, 0, 131072, -5832793, 0, 131072, -5832792, 0, 131072, -5832791, 0, 131072, -5832790, 0, 131072, -5832789, 0, 131072, -5832788, 0, 131072, -5832787, 0, 131072, -5832786, 0, 131072, -5832785, 0, 131072, -5832784, 0, 131072, -5832783, 0, 131072, -5832782, 0, 131072, -5832781, 0, 131072, -5832780, 0, 131072, -5832779, 0, 131072, -5832778, 0, 131072, -5832777, 0, 131072, -5832776, 0, 131072, -5832775, 0, 131072, -5832774, 0, 131072, -5832773, 0, 131072, -5832772, 0, 131072, -5832771, 0, 131072, -5832770, 0, 131072, -5832769, 0, 131072, -5832768, 0, 131072, -5832767, 0, 131072, -5832766, 0, 131072, -5832765, 0, 131072, -5832764, 0, 131072, -5832763, 0, 131072, -5832762, 0, 131072, -5832761, 0, 131072, -5832760, 0, 131072, -5832759, 0, 131072, -5832758, 0, 131072, -5832757, 0, 131072, -5832756, 0, 131072, -5832755, 0, 131072, -5832754, 0, 131072, -5832753, 0, 131072, -5832752, 0, 131072, -5832751, 0, 131072, -5832750, 0, 131072, -5832749, 0, 131072, -5832748, 0, 131072, -5832747, 0, 131072, -5832746, 0, 131072, -5832745, 0, 131072, -5832744, 0, 131072, -5832743, 0, 131072, -5832742, 0, 131072, -5832741, 0, 131072, -5832740, 0, 131072, -5832739, 0, 131072, -5832738, 0, 131072, -5832737, 0, 131072, -5832736, 0, 131072, -5832735, 0, 131072, -5832734, 0, 131072, -5832733, 0, 131072, -5832732, 0, 131072, -5832731, 0, 131072, -5832730, 0, 131072, -5832729, 0, 131072, -5832728, 0, 131072, -5832727, 0, 131072, -5832726, 0, 131072, -5832725, 0, 131072, -5832724, 0, 131072, -5832723, 0, 131072, -5832722, 0, 131072, -5832721, 0, 131072, -5832720, 0, 131072, -5832719, 0, 131072, -5832718, 0, 131072, -5832717, 0, 131072, -5832716, 0, 131072, -5832715, 0, 131072, -5832714, 0, 131072, -5832713, 0, 131072, -5832712, 0, 131072, -5832711, 0, 131072, -5832710, 0, 131072, -5832709, 0, 131072, -5832708, 0, 131072, -5832707, 0, 131072, -5832706, 0, 131072, -5832705, 0, 131072, -5898240, 0, 131072, -5898239, 0, 131072, -5898238, 0, 131072, -5898237, 0, 131072, -5898236, 0, 131072, -5898235, 0, 131072, -5898234, 0, 131072, -5898233, 0, 131072, -5898232, 0, 131072, -5898231, 0, 131072, -5898230, 0, 131072, -5898229, 0, 131072, -5898228, 0, 131072, -5898227, 0, 131072, -5898226, 0, 131072, -5898225, 0, 131072, -5898224, 0, 131072, -5898223, 0, 131072, -5898222, 0, 131072, -5898221, 0, 131072, -5898220, 0, 131072, -5898219, 0, 131072, -5898218, 0, 131072, -5898217, 0, 131072, -5898216, 0, 131072, -5898215, 0, 131072, -5898214, 0, 131072, -5898213, 0, 131072, -5898212, 0, 131072, -5898211, 0, 131072, -5898210, 0, 131072, -5898209, 0, 131072, -5898208, 0, 131072, -5898207, 0, 131072, -5898206, 0, 131072, -5898205, 0, 131072, -5898204, 0, 131072, -5898203, 0, 131072, -5898202, 0, 131072, -5898201, 0, 131072, -5898200, 0, 131072, -5898199, 0, 131072, -5898198, 0, 131072, -5898197, 0, 131072, -5898196, 0, 131072, -5898195, 0, 131072, -5898194, 0, 131072, -5898193, 0, 131072, -5898192, 0, 131072, -5898191, 0, 131072, -5898190, 0, 131072, -5898189, 0, 131072, -5898188, 0, 131072, -5898187, 0, 131072, -5898186, 0, 131072, -5898185, 0, 131072, -5898184, 0, 131072, -5898183, 0, 131072, -5898182, 0, 131072, -5898181, 0, 131072, -5898180, 0, 131072, -5898179, 0, 131072, -5898178, 0, 131072, -5898177, 0, 131072, -5898176, 0, 131072, -5898175, 0, 131072, -5898174, 0, 131072, -5898173, 0, 131072, -5898172, 0, 131072, -5898171, 0, 131072, -5898170, 0, 131072, -5898169, 0, 131072, -5898168, 0, 131072, -5898167, 0, 131072, -5898166, 0, 131072, -5898165, 0, 131072, -5898164, 0, 131072, -5898163, 0, 131072, -5898162, 0, 131072, -5898161, 0, 131072, -5898160, 0, 131072, -5898159, 0, 131072, -5898158, 0, 131072, -5898157, 0, 131072, -5898156, 0, 131072, -5898155, 0, 131072, -5898154, 0, 131072, -5898153, 0, 131072, -5898152, 0, 131072, -5898151, 0, 131072, -5898150, 0, 131072, -5898149, 0, 131072, -5898148, 0, 131072, -5898147, 0, 131072, -5898146, 0, 131072, -5898145, 0, 131072, -5898144, 0, 131072, -5898143, 0, 131072, -5898142, 0, 131072, -5898141, 0, 131072, -5898140, 0, 131072, -5898139, 0, 131072, -5898138, 0, 131072, -5898137, 0, 131072, -5898136, 0, 131072, -5898135, 0, 131072, -5898134, 0, 131072, -5898133, 0, 131072, -5767271, 0, 131072, -5767270, 0, 131072, -5767269, 0, 131072, -5767268, 0, 131072, -5767267, 0, 131072, -5767266, 0, 131072, -5767265, 0, 131072, -5767264, 0, 131072, -5767263, 0, 131072, -5767262, 0, 131072, -5767261, 0, 131072, -5767260, 0, 131072, -5767259, 0, 131072, -5767258, 0, 131072, -5767257, 0, 131072, -5767256, 0, 131072, -5767255, 0, 131072, -5767254, 0, 131072, -5767253, 0, 131072, -5767252, 0, 131072, -5767251, 0, 131072, -5767250, 0, 131072, -5767249, 0, 131072, -5767248, 0, 131072, -5767247, 0, 131072, -5767246, 0, 131072, -5767245, 0, 131072, -5767244, 0, 131072, -5767243, 0, 131072, -5767242, 0, 131072, -5767241, 0, 131072, -5767240, 0, 131072, -5767239, 0, 131072, -5767238, 0, 131072, -5767237, 0, 131072, -5767236, 0, 131072, -5767235, 0, 131072, -5767234, 0, 131072, -5767233, 0, 131072, -5767232, 0, 131072, -5767231, 0, 131072, -5767230, 0, 131072, -5767229, 0, 131072, -5767228, 0, 131072, -5767227, 0, 131072, -5767226, 0, 131072, -5767225, 0, 131072, -5767224, 0, 131072, -5767223, 0, 131072, -5767222, 0, 131072, -5767221, 0, 131072, -5767220, 0, 131072, -5767219, 0, 131072, -5767218, 0, 131072, -5767217, 0, 131072, -5767216, 0, 131072, -5767215, 0, 131072, -5767214, 0, 131072, -5767213, 0, 131072, -5767212, 0, 131072, -5767211, 0, 131072, -5767210, 0, 131072, -5767209, 0, 131072, -5767208, 0, 131072, -5767207, 0, 131072, -5767206, 0, 131072, -5767205, 0, 131072, -5767204, 0, 131072, -5767203, 0, 131072, -5767202, 0, 131072, -5767201, 0, 131072, -5767200, 0, 131072, -5767199, 0, 131072, -5767198, 0, 131072, -5767197, 0, 131072, -5767196, 0, 131072, -5767195, 0, 131072, -5767194, 0, 131072, -5767193, 0, 131072, -5767192, 0, 131072, -5767191, 0, 131072, -5767190, 0, 131072, -5767189, 0, 131072, -5767188, 0, 131072, -5767187, 0, 131072, -5767186, 0, 131072, -5767185, 0, 131072, -5767184, 0, 131072, -5767183, 0, 131072, -5767182, 0, 131072, -5767181, 0, 131072, -5767180, 0, 131072, -5767179, 0, 131072, -5767178, 0, 131072, -5767177, 0, 131072, -5767176, 0, 131072, -5767175, 0, 131072, -5767174, 0, 131072, -5767173, 0, 131072, -5767172, 0, 131072, -5767171, 0, 131072, -5767170, 0, 131072, -5767169, 0, 131072, -5832704, 0, 131072, -5832703, 0, 131072, -5832702, 0, 131072, -5832701, 0, 131072, -5832700, 0, 131072, -5832699, 0, 131072, -5832698, 0, 131072, -5832697, 0, 131072, -5832696, 0, 131072, -5832695, 0, 131072, -5832694, 0, 131072, -5832693, 0, 131072, -5832692, 0, 131072, -5832691, 0, 131072, -5832690, 0, 131072, -5832689, 0, 131072, -5832688, 0, 131072, -5832687, 0, 131072, -5832686, 0, 131072, -5832685, 0, 131072, -5832684, 0, 131072, -5832683, 0, 131072, -5832682, 0, 131072, -5832681, 0, 131072, -5832680, 0, 131072, -5832679, 0, 131072, -5832678, 0, 131072, -5832677, 0, 131072, -5832676, 0, 131072, -5832675, 0, 131072, -5832674, 0, 131072, -5832673, 0, 131072, -5832672, 0, 131072, -5832671, 0, 131072, -5832670, 0, 131072, -5832669, 0, 131072, -5832668, 0, 131072, -5832667, 0, 131072, -5832666, 0, 131072, -5832665, 0, 131072, -5832664, 0, 131072, -5832663, 0, 131072, -5832662, 0, 131072, -5832661, 0, 131072, -5832660, 0, 131072, -5832659, 0, 131072, -5832658, 0, 131072, -5832657, 0, 131072, -5832656, 0, 131072, -5832655, 0, 131072, -5832654, 0, 131072, -5832653, 0, 131072, -5832652, 0, 131072, -5832651, 0, 131072, -5832650, 0, 131072, -5832649, 0, 131072, -5832648, 0, 131072, -5832647, 0, 131072, -5832646, 0, 131072, -5832645, 0, 131072, -5832644, 0, 131072, -5832643, 0, 131072, -5832642, 0, 131072, -5832641, 0, 131072, -5832640, 0, 131072, -5832639, 0, 131072, -5832638, 0, 131072, -5832637, 0, 131072, -5832636, 0, 131072, -5832635, 0, 131072, -5832634, 0, 131072, -5832633, 0, 131072, -5832632, 0, 131072, -5832631, 0, 131072, -5832630, 0, 131072, -5832629, 0, 131072, -5832628, 0, 131072, -5832627, 0, 131072, -5832626, 0, 131072, -5832625, 0, 131072, -5832624, 0, 131072, -5832623, 0, 131072, -5832622, 0, 131072, -5832621, 0, 131072, -5832620, 0, 131072, -5832619, 0, 131072, -5832618, 0, 131072, -5832617, 0, 131072, -5832616, 0, 131072, -5832615, 0, 131072, -5832614, 0, 131072, -5832613, 0, 131072, -5832612, 0, 131072, -5832611, 0, 131072, -5832610, 0, 131072, -5832609, 0, 131072, -5832608, 0, 131072, -5832607, 0, 131072, -5832606, 0, 131072, -5832605, 0, 131072, -5832604, 0, 131072, -5832603, 0, 131072, -5832602, 0, 131072, -5832601, 0, 131072, -5832600, 0, 131072, -5832599, 0, 131072, -5832598, 0, 131072, -5832597, 0, 131072, -5832596, 0, 131072, -5701734, 0, 131072, -5701733, 0, 131072, -5701732, 0, 131072, -5701731, 0, 131072, -5701730, 0, 131072, -5701729, 0, 131072, -5701728, 0, 131072, -5701727, 0, 131072, -5701726, 0, 131072, -5701725, 0, 131072, -5701724, 0, 131072, -5701723, 0, 131072, -5701722, 0, 131072, -5701721, 0, 131072, -5701720, 0, 131072, -5701719, 0, 131072, -5701718, 0, 131072, -5701717, 0, 131072, -5701716, 0, 131072, -5701715, 0, 131072, -5701714, 0, 131072, -5701713, 0, 131072, -5701712, 0, 131072, -5701711, 0, 131072, -5701710, 0, 131072, -5701709, 0, 131072, -5701708, 0, 131072, -5701707, 0, 131072, -5701706, 0, 131072, -5701705, 0, 131072, -5701704, 0, 131072, -5701703, 0, 131072, -5701702, 0, 131072, -5701701, 0, 131072, -5701700, 0, 131072, -5701699, 0, 131072, -5701698, 0, 131072, -5701697, 0, 131072, -5701696, 0, 131072, -5701695, 0, 131072, -5701694, 0, 131072, -5701693, 0, 131072, -5701692, 0, 131072, -5701691, 0, 131072, -5701690, 0, 131072, -5701689, 0, 131072, -5701688, 0, 131072, -5701687, 0, 131072, -5701686, 0, 131072, -5701685, 0, 131072, -5701684, 0, 131072, -5701683, 0, 131072, -5701682, 0, 131072, -5701681, 0, 131072, -5701680, 0, 131072, -5701679, 0, 131072, -5701678, 0, 131072, -5701677, 0, 131072, -5701676, 0, 131072, -5701675, 0, 131072, -5701674, 0, 131072, -5701673, 0, 131072, -5701672, 0, 131072, -5701671, 0, 131072, -5701670, 0, 131072, -5701669, 0, 131072, -5701668, 0, 131072, -5701667, 0, 131072, -5701666, 0, 131072, -5701665, 0, 131072, -5701664, 0, 131072, -5701663, 0, 131072, -5701662, 0, 131072, -5701661, 0, 131072, -5701660, 0, 131072, -5701659, 0, 131072, -5701658, 0, 131072, -5701657, 0, 131072, -5701656, 0, 131072, -5701655, 0, 131072, -5701654, 0, 131072, -5701653, 0, 131072, -5701652, 0, 131072, -5701651, 0, 131072, -5701650, 0, 131072, -5701649, 0, 131072, -5701648, 0, 131072, -5701647, 0, 131072, -5701646, 0, 131072, -5701645, 0, 131072, -5701644, 0, 131072, -5701643, 0, 131072, -5701642, 0, 131072, -5701641, 0, 131072, -5701640, 0, 131072, -5701639, 0, 131072, -5701638, 0, 131072, -5701637, 0, 131072, -5701636, 0, 131072, -5701635, 0, 131072, -5701634, 0, 131072, -5701633, 0, 131072, -5767168, 0, 131072, -5767167, 0, 131072, -5767166, 0, 131072, -5767165, 0, 131072, -5767164, 0, 131072, -5767163, 0, 131072, -5767162, 0, 131072, -5767161, 0, 131072, -5767160, 0, 131072, -5767159, 0, 131072, -5767158, 0, 131072, -5767157, 0, 131072, -5767156, 0, 131072, -5767155, 0, 131072, -5767154, 0, 131072, -5767153, 0, 131072, -5767152, 0, 131072, -5767151, 0, 131072, -5767150, 0, 131072, -5767149, 0, 131072, -5767148, 0, 131072, -5767147, 0, 131072, -5767146, 0, 131072, -5767145, 0, 131072, -5767144, 0, 131072, -5767143, 0, 131072, -5767142, 0, 131072, -5767141, 0, 131072, -5767140, 0, 131072, -5767139, 0, 131072, -5767138, 0, 131072, -5767137, 0, 131072, -5767136, 0, 131072, -5767135, 0, 131072, -5767134, 0, 131072, -5767133, 0, 131072, -5767132, 0, 131072, -5767131, 0, 131072, -5767130, 0, 131072, -5767129, 0, 131072, -5767128, 0, 131072, -5767127, 0, 131072, -5767126, 0, 131072, -5767125, 0, 131072, -5767124, 0, 131072, -5767123, 0, 131072, -5767122, 0, 131072, -5767121, 0, 131072, -5767120, 0, 131072, -5767119, 0, 131072, -5767118, 0, 131072, -5767117, 0, 131072, -5767116, 0, 131072, -5767115, 0, 131072, -5767114, 0, 131072, -5767113, 0, 131072, -5767112, 0, 131072, -5767111, 0, 131072, -5767110, 0, 131072, -5767109, 0, 131072, -5767108, 0, 131072, -5767107, 0, 131072, -5767106, 0, 131072, -5767105, 0, 131072, -5767104, 0, 131072, -5767103, 0, 131072, -5767102, 0, 131072, -5767101, 0, 131072, -5767100, 0, 131072, -5767099, 0, 131072, -5767098, 0, 131072, -5767097, 0, 131072, -5767096, 0, 131072, -5767095, 0, 131072, -5767094, 0, 131072, -5767093, 0, 131072, -5767092, 0, 131072, -5767091, 0, 131072, -5767090, 0, 131072, -5767089, 0, 131072, -5767088, 0, 131072, -5767087, 0, 131072, -5767086, 0, 131072, -5767085, 0, 131072, -5767084, 0, 131072, -5767083, 0, 131072, -5767082, 0, 131072, -5767081, 0, 131072, -5767080, 0, 131072, -5767079, 0, 131072, -5767078, 0, 131072, -5767077, 0, 131072, -5767076, 0, 131072, -5767075, 0, 131072, -5767074, 0, 131072, -5767073, 0, 131072, -5767072, 0, 131072, -5767071, 0, 131072, -5767070, 0, 131072, -5767069, 0, 131072, -5767068, 0, 131072, -5767067, 0, 131072, -5767066, 0, 131072, -5767065, 0, 131072, -5767064, 0, 131072, -5767063, 0, 131072, -5767062, 0, 131072, -5767061, 0, 131072, -5767060, 0, 131072, -5767059, 0, 131072, -5767058, 0, 131072, -5636197, 0, 131072, -5636196, 0, 131072, -5636195, 0, 131072, -5636194, 0, 131072, -5636193, 0, 131072, -5636192, 0, 131072, -5636191, 0, 131072, -5636190, 0, 131072, -5636189, 0, 131072, -5636188, 0, 131072, -5636187, 0, 131072, -5636186, 0, 131072, -5636185, 0, 131072, -5636184, 0, 131072, -5636183, 0, 131072, -5636182, 0, 131072, -5636181, 0, 131072, -5636180, 0, 131072, -5636179, 0, 131072, -5636178, 0, 131072, -5636177, 0, 131072, -5636176, 0, 131072, -5636175, 0, 131072, -5636174, 0, 131072, -5636173, 0, 131072, -5636172, 0, 131072, -5636171, 0, 131072, -5636170, 0, 131072, -5636169, 0, 131072, -5636168, 0, 131072, -5636167, 0, 131072, -5636166, 0, 131072, -5636165, 0, 131072, -5636164, 0, 131072, -5636163, 0, 131072, -5636162, 0, 131072, -5636161, 0, 131072, -5636160, 0, 131072, -5636159, 0, 131072, -5636158, 0, 131072, -5636157, 0, 131072, -5636156, 0, 131072, -5636155, 0, 131072, -5636154, 0, 131072, -5636153, 0, 131072, -5636152, 0, 131072, -5636151, 0, 131072, -5636150, 0, 131072, -5636149, 0, 131072, -5636148, 0, 131072, -5636147, 0, 131072, -5636146, 0, 131072, -5636145, 0, 131072, -5636144, 0, 131072, -5636143, 0, 131072, -5636142, 0, 131072, -5636141, 0, 131072, -5636140, 0, 131072, -5636139, 0, 131072, -5636138, 0, 131072, -5636137, 0, 131072, -5636136, 0, 131072, -5636135, 0, 131072, -5636134, 0, 131072, -5636133, 0, 131072, -5636132, 0, 131072, -5636131, 0, 131072, -5636130, 0, 131072, -5636129, 0, 131072, -5636128, 0, 131072, -5636127, 0, 131072, -5636126, 0, 131072, -5636125, 0, 131072, -5636124, 0, 131072, -5636123, 0, 131072, -5636122, 0, 131072, -5636121, 0, 131072, -5636120, 0, 131072, -5636119, 0, 131072, -5636118, 0, 131072, -5636117, 0, 131072, -5636116, 0, 131072, -5636115, 0, 131072, -5636114, 0, 131072, -5636113, 0, 131072, -5636112, 0, 131072, -5636111, 0, 131072, -5636110, 0, 131072, -5636109, 0, 131072, -5636108, 0, 131072, -5636107, 0, 131072, -5636106, 0, 131072, -5636105, 0, 131072, -5636104, 0, 131072, -5636103, 0, 131072, -5636102, 0, 131072, -5636101, 0, 131072, -5636100, 0, 131072, -5636099, 0, 131072, -5636098, 0, 131072, -5636097, 0, 131072, -5701632, 0, 131072, -5701631, 0, 131072, -5701630, 0, 131072, -5701629, 0, 131072, -5701628, 0, 131072, -5701627, 0, 131072, -5701626, 0, 131072, -5701625, 0, 131072, -5701624, 0, 131072, -5701623, 0, 131072, -5701622, 0, 131072, -5701621, 0, 131072, -5701620, 0, 131072, -5701619, 0, 131072, -5701618, 0, 131072, -5701617, 0, 131072, -5701616, 0, 131072, -5701615, 0, 131072, -5701614, 0, 131072, -5701613, 0, 131072, -5701612, 0, 131072, -5701611, 0, 131072, -5701610, 0, 131072, -5701609, 0, 131072, -5701608, 0, 131072, -5701607, 0, 131072, -5701606, 0, 131072, -5701605, 0, 131072, -5701604, 0, 131072, -5701603, 0, 131072, -5701602, 0, 131072, -5701601, 0, 131072, -5701600, 0, 131072, -5701599, 0, 131072, -5701598, 0, 131072, -5701597, 0, 131072, -5701596, 0, 131072, -5701595, 0, 131072, -5701594, 0, 131072, -5701593, 0, 131072, -5701592, 0, 131072, -5701591, 0, 131072, -5701590, 0, 131072, -5701589, 0, 131072, -5701588, 0, 131072, -5701587, 0, 131072, -5701586, 0, 131072, -5701585, 0, 131072, -5701584, 0, 131072, -5701583, 0, 131072, -5701582, 0, 131072, -5701581, 0, 131072, -5701580, 0, 131072, -5701579, 0, 131072, -5701578, 0, 131072, -5701577, 0, 131072, -5701576, 0, 131072, -5701575, 0, 131072, -5701574, 0, 131072, -5701573, 0, 131072, -5701572, 0, 131072, -5701571, 0, 131072, -5701570, 0, 131072, -5701569, 0, 131072, -5701568, 0, 131072, -5701567, 0, 131072, -5701566, 0, 131072, -5701565, 0, 131072, -5701564, 0, 131072, -5701563, 0, 131072, -5701562, 0, 131072, -5701561, 0, 131072, -5701560, 0, 131072, -5701559, 0, 131072, -5701558, 0, 131072, -5701557, 0, 131072, -5701556, 0, 131072, -5701555, 0, 131072, -5701554, 0, 131072, -5701553, 0, 131072, -5701552, 0, 131072, -5701551, 0, 131072, -5701550, 0, 131072, -5701549, 0, 131072, -5701548, 0, 131072, -5701547, 0, 131072, -5701546, 0, 131072, -5701545, 0, 131072, -5701544, 0, 131072, -5701543, 0, 131072, -5701542, 0, 131072, -5701541, 0, 131072, -5701540, 0, 131072, -5701539, 0, 131072, -5701538, 0, 131072, -5701537, 0, 131072, -5701536, 0, 131072, -5701535, 0, 131072, -5701534, 0, 131072, -5701533, 0, 131072, -5701532, 0, 131072, -5701531, 0, 131072, -5701530, 0, 131072, -5701529, 0, 131072, -5701528, 0, 131072, -5701527, 0, 131072, -5701526, 0, 131072, -5701525, 0, 131072, -5701524, 0, 131072, -5701523, 0, 131072, -5701522, 0, 131072, -5701521, 0, 131072, -5570660, 0, 131072, -5570659, 0, 131072, -5570658, 0, 131072, -5570657, 0, 131072, -5570656, 0, 131072, -5570655, 0, 131072, -5570654, 0, 131072, -5570653, 0, 131072, -5570652, 0, 131072, -5570651, 0, 131072, -5570650, 0, 131072, -5570649, 0, 131072, -5570648, 0, 131072, -5570647, 0, 131072, -5570646, 0, 131072, -5570645, 0, 131072, -5570644, 0, 131072, -5570643, 0, 131072, -5570642, 0, 131072, -5570641, 0, 131072, -5570640, 0, 131072, -5570639, 0, 131072, -5570638, 0, 131072, -5570637, 0, 131072, -5570636, 0, 131072, -5570635, 0, 131072, -5570634, 0, 131072, -5570633, 0, 131072, -5570632, 0, 131072, -5570631, 0, 131072, -5570630, 0, 131072, -5570629, 0, 131072, -5570628, 0, 131072, -5570627, 0, 131072, -5570626, 0, 131072, -5570625, 0, 131072, -5570624, 0, 131072, -5570623, 0, 131072, -5570622, 0, 131072, -5570621, 0, 131072, -5570620, 0, 131072, -5570619, 0, 131072, -5570618, 0, 131072, -5570617, 0, 131072, -5570616, 0, 131072, -5570615, 0, 131072, -5570614, 0, 131072, -5570613, 0, 131072, -5570612, 0, 131072, -5570611, 0, 131072, -5570610, 0, 131072, -5570609, 0, 131072, -5570608, 0, 131072, -5570607, 0, 131072, -5570606, 0, 131072, -5570605, 0, 131072, -5570604, 0, 131072, -5570603, 0, 131072, -5570602, 0, 131072, -5570601, 0, 131072, -5570600, 0, 131072, -5570599, 0, 131072, -5570598, 0, 131072, -5570597, 0, 131072, -5570596, 0, 131072, -5570595, 0, 131072, -5570594, 0, 131072, -5570593, 0, 131072, -5570592, 0, 131072, -5570591, 0, 131072, -5570590, 0, 131072, -5570589, 0, 131072, -5570588, 0, 131072, -5570587, 0, 131072, -5570586, 0, 131072, -5570585, 0, 131072, -5570584, 0, 131072, -5570583, 0, 131072, -5570582, 0, 131072, -5570581, 0, 131072, -5570580, 0, 131072, -5570579, 0, 131072, -5570578, 0, 131072, -5570577, 0, 131072, -5570576, 0, 131072, -5570575, 0, 131072, -5570574, 0, 131072, -5570573, 0, 131072, -5570572, 0, 131072, -5570571, 0, 131072, -5570570, 0, 131072, -5570569, 0, 131072, -5570568, 0, 131072, -5570567, 0, 131072, -5570566, 0, 131072, -5570565, 0, 131072, -5570564, 0, 131072, -5570563, 0, 131072, -5570562, 0, 131072, -5570561, 0, 131072, -5636096, 0, 131072, -5636095, 0, 131072, -5636094, 0, 131072, -5636093, 0, 131072, -5636092, 0, 131072, -5636091, 0, 131072, -5636090, 0, 131072, -5636089, 0, 131072, -5636088, 0, 131072, -5636087, 0, 131072, -5636086, 0, 131072, -5636085, 0, 131072, -5636084, 0, 131072, -5636083, 0, 131072, -5636082, 0, 131072, -5636081, 0, 131072, -5636080, 0, 131072, -5636079, 0, 131072, -5636078, 0, 131072, -5636077, 0, 131072, -5636076, 0, 131072, -5636075, 0, 131072, -5636074, 0, 131072, -5636073, 0, 131072, -5636072, 0, 131072, -5636071, 0, 131072, -5636070, 0, 131072, -5636069, 0, 131072, -5636068, 0, 131072, -5636067, 0, 131072, -5636066, 0, 131072, -5636065, 0, 131072, -5636064, 0, 131072, -5636063, 0, 131072, -5636062, 0, 131072, -5636061, 0, 131072, -5636060, 0, 131072, -5636059, 0, 131072, -5636058, 0, 131072, -5636057, 0, 131072, -5636056, 0, 131072, -5636055, 0, 131072, -5636054, 0, 131072, -5636053, 0, 131072, -5636052, 0, 131072, -5636051, 0, 131072, -5636050, 0, 131072, -5636049, 0, 131072, -5636048, 0, 131072, -5636047, 0, 131072, -5636046, 0, 131072, -5636045, 0, 131072, -5636044, 0, 131072, -5636043, 0, 131072, -5636042, 0, 131072, -5636041, 0, 131072, -5636040, 0, 131072, -5636039, 0, 131072, -5636038, 0, 131072, -5636037, 0, 131072, -5636036, 0, 131072, -5636035, 0, 131072, -5636034, 0, 131072, -5636033, 0, 131072, -5636032, 0, 131072, -5636031, 0, 131072, -5636030, 0, 131072, -5636029, 0, 131072, -5636028, 0, 131072, -5636027, 0, 131072, -5636026, 0, 131072, -5636025, 0, 131072, -5636024, 0, 131072, -5636023, 0, 131072, -5636022, 0, 131072, -5636021, 0, 131072, -5636020, 0, 131072, -5636019, 0, 131072, -5636018, 0, 131072, -5636017, 0, 131072, -5636016, 0, 131072, -5636015, 0, 131072, -5636014, 0, 131072, -5636013, 0, 131072, -5636012, 0, 131072, -5636011, 0, 131072, -5636010, 0, 131072, -5636009, 0, 131072, -5636008, 0, 131072, -5636007, 0, 131072, -5636006, 0, 131072, -5636005, 0, 131072, -5636004, 0, 131072, -5636003, 0, 131072, -5636002, 0, 131072, -5636001, 0, 131072, -5636000, 0, 131072, -5635999, 0, 131072, -5635998, 0, 131072, -5635997, 0, 131072, -5635996, 0, 131072, -5635995, 0, 131072, -5635994, 0, 131072, -5635993, 0, 131072, -5635992, 0, 131072, -5635991, 0, 131072, -5635990, 0, 131072, -5635989, 0, 131072, -5635988, 0, 131072, -5635987, 0, 131072, -5635986, 0, 131072, -5635985, 0, 131072, -5635984, 0, 131072, -5505123, 0, 131072, -5505122, 0, 131072, -5505121, 0, 131072, -5505120, 0, 131072, -5505119, 0, 131072, -5505118, 0, 131072, -5505117, 0, 131072, -5505116, 0, 131072, -5505115, 0, 131072, -5505114, 0, 131072, -5505113, 0, 131072, -5505112, 0, 131072, -5505111, 0, 131072, -5505110, 0, 131072, -5505109, 0, 131072, -5505108, 0, 131072, -5505107, 0, 131072, -5505106, 0, 131072, -5505105, 0, 131072, -5505104, 0, 131072, -5505103, 0, 131072, -5505102, 0, 131072, -5505101, 0, 131072, -5505100, 0, 131072, -5505099, 0, 131072, -5505098, 0, 131072, -5505097, 0, 131072, -5505096, 0, 131072, -5505095, 0, 131072, -5505094, 0, 131072, -5505093, 0, 131072, -5505092, 0, 131072, -5505091, 0, 131072, -5505090, 0, 131072, -5505089, 0, 131072, -5505088, 0, 131072, -5505087, 0, 131072, -5505086, 0, 131072, -5505085, 0, 131072, -5505084, 0, 131072, -5505083, 0, 131072, -5505082, 0, 131072, -5505081, 0, 131072, -5505080, 0, 131072, -5505079, 0, 131072, -5505078, 0, 131072, -5505077, 0, 131072, -5505076, 0, 131072, -5505075, 0, 131072, -5505074, 0, 131072, -5505073, 0, 131072, -5505072, 0, 131072, -5505071, 0, 131072, -5505070, 0, 131072, -5505069, 0, 131072, -5505068, 0, 131072, -5505067, 0, 131072, -5505066, 0, 131072, -5505065, 0, 131072, -5505064, 0, 131072, -5505063, 0, 131072, -5505062, 0, 131072, -5505061, 0, 131072, -5505060, 0, 131072, -5505059, 0, 131072, -5505058, 0, 131072, -5505057, 0, 131072, -5505056, 0, 131072, -5505055, 0, 131072, -5505054, 0, 131072, -5505053, 0, 131072, -5505052, 0, 131072, -5505051, 0, 131072, -5505050, 0, 131072, -5505049, 0, 131072, -5505048, 0, 131072, -5505047, 0, 131072, -5505046, 0, 131072, -5505045, 0, 131072, -5505044, 0, 131072, -5505043, 0, 131072, -5505042, 0, 131072, -5505041, 0, 131072, -5505040, 0, 131072, -5505039, 0, 131072, -5505038, 0, 131072, -5505037, 0, 131072, -5505036, 0, 131072, -5505035, 0, 131072, -5505034, 0, 131072, -5505033, 0, 131072, -5505032, 0, 131072, -5505031, 0, 131072, -5505030, 0, 131072, -5505029, 0, 131072, -5505028, 0, 131072, -5505027, 0, 131072, -5505026, 0, 131072, -5505025, 0, 131072, -5570560, 0, 131072, -5570559, 0, 131072, -5570558, 0, 131072, -5570557, 0, 131072, -5570556, 0, 131072, -5570555, 0, 131072, -5570554, 0, 131072, -5570553, 0, 131072, -5570552, 0, 131072, -5570551, 0, 131072, -5570550, 0, 131072, -5570549, 0, 131072, -5570548, 0, 131072, -5570547, 0, 131072, -5570546, 0, 131072, -5570545, 0, 131072, -5570544, 0, 131072, -5570543, 0, 131072, -5570542, 0, 131072, -5570541, 0, 131072, -5570540, 0, 131072, -5570539, 0, 131072, -5570538, 0, 131072, -5570537, 0, 131072, -5570536, 0, 131072, -5570535, 0, 131072, -5570534, 0, 131072, -5570533, 0, 131072, -5570532, 0, 131072, -5570531, 0, 131072, -5570530, 0, 131072, -5570529, 0, 131072, -5570528, 0, 131072, -5570527, 0, 131072, -5570526, 0, 131072, -5570525, 0, 131072, -5570524, 0, 131072, -5570523, 0, 131072, -5570522, 0, 131072, -5570521, 0, 131072, -5570520, 0, 131072, -5570519, 0, 131072, -5570518, 0, 131072, -5570517, 0, 131072, -5570516, 0, 131072, -5570515, 0, 131072, -5570514, 0, 131072, -5570513, 0, 131072, -5570512, 0, 131072, -5570511, 0, 131072, -5570510, 0, 131072, -5570509, 0, 131072, -5570508, 0, 131072, -5570507, 0, 131072, -5570506, 0, 131072, -5570505, 0, 131072, -5570504, 0, 131072, -5570503, 0, 131072, -5570502, 0, 131072, -5570501, 0, 131072, -5570500, 0, 131072, -5570499, 0, 131072, -5570498, 0, 131072, -5570497, 0, 131072, -5570496, 0, 131072, -5570495, 0, 131072, -5570494, 0, 131072, -5570493, 0, 131072, -5570492, 0, 131072, -5570491, 0, 131072, -5570490, 0, 131072, -5570489, 0, 131072, -5570488, 0, 131072, -5570487, 0, 131072, -5570486, 0, 131072, -5570485, 0, 131072, -5570484, 0, 131072, -5570483, 0, 131072, -5570482, 0, 131072, -5570481, 0, 131072, -5570480, 0, 131072, -5570479, 0, 131072, -5570478, 0, 131072, -5570477, 0, 131072, -5570476, 0, 131072, -5570475, 0, 131072, -5570474, 0, 131072, -5570473, 0, 131072, -5570472, 0, 131072, -5570471, 0, 131072, -5570470, 0, 131072, -5570469, 0, 131072, -5570468, 0, 131072, -5570467, 0, 131072, -5570466, 0, 131072, -5570465, 0, 131072, -5570464, 0, 131072, -5570463, 0, 131072, -5570462, 0, 131072, -5570461, 0, 131072, -5570460, 0, 131072, -5570459, 0, 131072, -5570458, 0, 131072, -5570457, 0, 131072, -5570456, 0, 131072, -5570455, 0, 131072, -5570454, 0, 131072, -5570453, 0, 131072, -5570452, 0, 131072, -5570451, 0, 131072, -5570450, 0, 131072, -5570449, 0, 131072, -5570448, 0, 131072, -5570447, 0, 131072, -5439586, 0, 131072, -5439585, 0, 131072, -5439584, 0, 131072, -5439583, 0, 131072, -5439582, 0, 131072, -5439581, 0, 131072, -5439580, 0, 131072, -5439579, 0, 131072, -5439578, 0, 131072, -5439577, 0, 131072, -5439576, 0, 131072, -5439575, 0, 131072, -5439574, 0, 131072, -5439573, 0, 131072, -5439572, 0, 131072, -5439571, 0, 131072, -5439570, 0, 131072, -5439569, 0, 131072, -5439568, 0, 131072, -5439567, 0, 131072, -5439566, 0, 131072, -5439565, 0, 131072, -5439564, 0, 131072, -5439563, 0, 131072, -5439562, 0, 131072, -5439561, 0, 131072, -5439560, 0, 131072, -5439559, 0, 131072, -5439558, 0, 131072, -5439557, 0, 131072, -5439556, 0, 131072, -5439555, 0, 131072, -5439554, 0, 131072, -5439553, 0, 131072, -5439552, 0, 131072, -5439551, 0, 131072, -5439550, 0, 131072, -5439549, 0, 131072, -5439548, 0, 131072, -5439547, 0, 131072, -5439546, 0, 131072, -5439545, 0, 131072, -5439544, 0, 131072, -5439543, 0, 131072, -5439542, 0, 131072, -5439541, 0, 131072, -5439540, 0, 131072, -5439539, 0, 131072, -5439538, 0, 131072, -5439537, 0, 131072, -5439536, 0, 131072, -5439535, 0, 131072, -5439534, 0, 131072, -5439533, 0, 131072, -5439532, 0, 131072, -5439531, 0, 131072, -5439530, 0, 131072, -5439529, 0, 131072, -5439528, 0, 131072, -5439527, 0, 131072, -5439526, 0, 131072, -5439525, 0, 131072, -5439524, 0, 131072, -5439523, 0, 131072, -5439522, 0, 131072, -5439521, 0, 131072, -5439520, 0, 131072, -5439519, 0, 131072, -5439518, 0, 131072, -5439517, 0, 131072, -5439516, 0, 131072, -5439515, 0, 131072, -5439514, 0, 131072, -5439513, 0, 131072, -5439512, 0, 131072, -5439511, 0, 131072, -5439510, 0, 131072, -5439509, 0, 131072, -5439508, 0, 131072, -5439507, 0, 131072, -5439506, 0, 131072, -5439505, 0, 131072, -5439504, 0, 131072, -5439503, 0, 131072, -5439502, 0, 131072, -5439501, 0, 131072, -5439500, 0, 131072, -5439499, 0, 131072, -5439498, 0, 131072, -5439497, 0, 131072, -5439496, 0, 131072, -5439495, 0, 131072, -5439494, 0, 131072, -5439493, 0, 131072, -5439492, 0, 131072, -5439491, 0, 131072, -5439490, 0, 131072, -5439489, 0, 131072, -5505024, 0, 131072, -5505023, 0, 131072, -5505022, 0, 131072, -5505021, 0, 131072, -5505020, 0, 131072, -5505019, 0, 131072, -5505018, 0, 131072, -5505017, 0, 131072, -5505016, 0, 131072, -5505015, 0, 131072, -5505014, 0, 131072, -5505013, 0, 131072, -5505012, 0, 131072, -5505011, 0, 131072, -5505010, 0, 131072, -5505009, 0, 131072, -5505008, 0, 131072, -5505007, 0, 131072, -5505006, 0, 131072, -5505005, 0, 131072, -5505004, 0, 131072, -5505003, 0, 131072, -5505002, 0, 131072, -5505001, 0, 131072, -5505000, 0, 131072, -5504999, 0, 131072, -5504998, 0, 131072, -5504997, 0, 131072, -5504996, 0, 131072, -5504995, 0, 131072, -5504994, 0, 131072, -5504993, 0, 131072, -5504992, 0, 131072, -5504991, 0, 131072, -5504990, 0, 131072, -5504989, 0, 131072, -5504988, 0, 131072, -5504987, 0, 131072, -5504986, 0, 131072, -5504985, 0, 131072, -5504984, 0, 131072, -5504983, 0, 131072, -5504982, 0, 131072, -5504981, 0, 131072, -5504980, 0, 131072, -5504979, 0, 131072, -5504978, 0, 131072, -5504977, 0, 131072, -5504976, 0, 131072, -5504975, 0, 131072, -5504974, 0, 131072, -5504973, 0, 131072, -5504972, 0, 131072, -5504971, 0, 131072, -5504970, 0, 131072, -5504969, 0, 131072, -5504968, 0, 131072, -5504967, 0, 131072, -5504966, 0, 131072, -5504965, 0, 131072, -5504964, 0, 131072, -5504963, 0, 131072, -5504962, 0, 131072, -5504961, 0, 131072, -5504960, 0, 131072, -5504959, 0, 131072, -5504958, 0, 131072, -5504957, 0, 131072, -5504956, 0, 131072, -5504955, 0, 131072, -5504954, 0, 131072, -5504953, 0, 131072, -5504952, 0, 131072, -5504951, 0, 131072, -5504950, 0, 131072, -5504949, 0, 131072, -5504948, 0, 131072, -5504947, 0, 131072, -5504946, 0, 131072, -5504945, 0, 131072, -5504944, 0, 131072, -5504943, 0, 131072, -5504942, 0, 131072, -5504941, 0, 131072, -5504940, 0, 131072, -5504939, 0, 131072, -5504938, 0, 131072, -5504937, 0, 131072, -5504936, 0, 131072, -5504935, 0, 131072, -5504934, 0, 131072, -5504933, 0, 131072, -5504932, 0, 131072, -5504931, 0, 131072, -5504930, 0, 131072, -5504929, 0, 131072, -5504928, 0, 131072, -5504927, 0, 131072, -5504926, 0, 131072, -5504925, 0, 131072, -5504924, 0, 131072, -5504923, 0, 131072, -5504922, 0, 131072, -5504921, 0, 131072, -5504920, 0, 131072, -5504919, 0, 131072, -5504918, 0, 131072, -5504917, 0, 131072, -5504916, 0, 131072, -5504915, 0, 131072, -5504914, 0, 131072, -5504913, 0, 131072, -5504912, 0, 131072, -5504911, 0, 131072, -5504910, 0, 131072, -5504909, 0, 131072, -5374049, 0, 131072, -5374048, 0, 131072, -5374047, 0, 131072, -5374046, 0, 131072, -5374045, 0, 131072, -5374044, 0, 131072, -5374043, 0, 131072, -5374042, 0, 131072, -5374041, 0, 131072, -5374040, 0, 131072, -5374039, 0, 131072, -5374038, 0, 131072, -5374037, 0, 131072, -5374036, 0, 131072, -5374035, 0, 131072, -5374034, 0, 131072, -5374033, 0, 131072, -5374032, 0, 131072, -5374031, 0, 131072, -5374030, 0, 131072, -5374029, 0, 131072, -5374028, 0, 131072, -5374027, 0, 131072, -5374026, 0, 131072, -5374025, 0, 131072, -5374024, 0, 131072, -5374023, 0, 131072, -5374022, 0, 131072, -5374021, 0, 131072, -5374020, 0, 131072, -5374019, 0, 131072, -5374018, 0, 131072, -5374017, 0, 131072, -5374016, 0, 131072, -5374015, 0, 131072, -5374014, 0, 131072, -5374013, 0, 131072, -5374012, 0, 131072, -5374011, 0, 131072, -5374010, 0, 131072, -5374009, 0, 131072, -5374008, 0, 131072, -5374007, 0, 131072, -5374006, 0, 131072, -5374005, 0, 131072, -5374004, 0, 131072, -5374003, 0, 131072, -5374002, 0, 131072, -5374001, 0, 131072, -5374000, 0, 131072, -5373999, 0, 131072, -5373998, 0, 131072, -5373997, 0, 131072, -5373996, 0, 131072, -5373995, 0, 131072, -5373994, 0, 131072, -5373993, 0, 131072, -5373992, 0, 131072, -5373991, 0, 131072, -5373990, 0, 131072, -5373989, 0, 131072, -5373988, 0, 131072, -5373987, 0, 131072, -5373986, 0, 131072, -5373985, 0, 131072, -5373984, 0, 131072, -5373983, 0, 131072, -5373982, 0, 131072, -5373981, 0, 131072, -5373980, 0, 131072, -5373979, 0, 131072, -5373978, 0, 131072, -5373977, 0, 131072, -5373976, 0, 131072, -5373975, 0, 131072, -5373974, 0, 131072, -5373973, 0, 131072, -5373972, 0, 131072, -5373971, 0, 131072, -5373970, 0, 131072, -5373969, 0, 131072, -5373968, 0, 131072, -5373967, 0, 131072, -5373966, 0, 131072, -5373965, 0, 131072, -5373964, 0, 131072, -5373963, 0, 131072, -5373962, 0, 131072, -5373961, 0, 131072, -5373960, 0, 131072, -5373959, 0, 131072, -5373958, 0, 131072, -5373957, 0, 131072, -5373956, 0, 131072, -5373955, 0, 131072, -5373954, 0, 131072, -5373953, 0, 131072, -5439488, 0, 131072, -5439487, 0, 131072, -5439486, 0, 131072, -5439485, 0, 131072, -5439484, 0, 131072, -5439483, 0, 131072, -5439482, 0, 131072, -5439481, 0, 131072, -5439480, 0, 131072, -5439479, 0, 131072, -5439478, 0, 131072, -5439477, 0, 131072, -5439476, 0, 131072, -5439475, 0, 131072, -5439474, 0, 131072, -5439473, 0, 131072, -5439472, 0, 131072, -5439471, 0, 131072, -5439470, 0, 131072, -5439469, 0, 131072, -5439468, 0, 131072, -5439467, 0, 131072, -5439466, 0, 131072, -5439465, 0, 131072, -5439464, 0, 131072, -5439463, 0, 131072, -5439462, 0, 131072, -5439461, 0, 131072, -5439460, 0, 131072, -5439459, 0, 131072, -5439458, 0, 131072, -5439457, 0, 131072, -5439456, 0, 131072, -5439455, 0, 131072, -5439454, 0, 131072, -5439453, 0, 131072, -5439452, 0, 131072, -5439451, 0, 131072, -5439450, 0, 131072, -5439449, 0, 131072, -5439448, 0, 131072, -5439447, 0, 131072, -5439446, 0, 131072, -5439445, 0, 131072, -5439444, 0, 131072, -5439443, 0, 131072, -5439442, 0, 131072, -5439441, 0, 131072, -5439440, 0, 131072, -5439439, 0, 131072, -5439438, 0, 131072, -5439437, 0, 131072, -5439436, 0, 131072, -5439435, 0, 131072, -5439434, 0, 131072, -5439433, 0, 131072, -5439432, 0, 131072, -5439431, 0, 131072, -5439430, 0, 131072, -5439429, 0, 131072, -5439428, 0, 131072, -5439427, 0, 131072, -5439426, 0, 131072, -5439425, 0, 131072, -5439424, 0, 131072, -5439423, 0, 131072, -5439422, 0, 131072, -5439421, 0, 131072, -5439420, 0, 131072, -5439419, 0, 131072, -5439418, 0, 131072, -5439417, 0, 131072, -5439416, 0, 131072, -5439415, 0, 131072, -5439414, 0, 131072, -5439413, 0, 131072, -5439412, 0, 131072, -5439411, 0, 131072, -5439410, 0, 131072, -5439409, 0, 131072, -5439408, 0, 131072, -5439407, 0, 131072, -5439406, 0, 131072, -5439405, 0, 131072, -5439404, 0, 131072, -5439403, 0, 131072, -5439402, 0, 131072, -5439401, 0, 131072, -5439400, 0, 131072, -5439399, 0, 131072, -5439398, 0, 131072, -5439397, 0, 131072, -5439396, 0, 131072, -5439395, 0, 131072, -5439394, 0, 131072, -5439393, 0, 131072, -5439392, 0, 131072, -5439391, 0, 131072, -5439390, 0, 131072, -5439389, 0, 131072, -5439388, 0, 131072, -5439387, 0, 131072, -5439386, 0, 131072, -5439385, 0, 131072, -5439384, 0, 131072, -5439383, 0, 131072, -5439382, 0, 131072, -5439381, 0, 131072, -5439380, 0, 131072, -5439379, 0, 131072, -5439378, 0, 131072, -5439377, 0, 131072, -5439376, 0, 131072, -5439375, 0, 131072, -5439374, 0, 131072, -5439373, 0, 131072, -5439372, 0, 131072, -5308513, 0, 131072, -5308512, 0, 131072, -5308511, 0, 131072, -5308510, 0, 131072, -5308509, 0, 131072, -5308508, 0, 131072, -5308507, 0, 131072, -5308506, 0, 131072, -5308505, 0, 131072, -5308504, 0, 131072, -5308503, 0, 131072, -5308502, 0, 131072, -5308501, 0, 131072, -5308500, 0, 131072, -5308499, 0, 131072, -5308498, 0, 131072, -5308497, 0, 131072, -5308496, 0, 131072, -5308495, 0, 131072, -5308494, 0, 131072, -5308493, 0, 131072, -5308492, 0, 131072, -5308491, 0, 131072, -5308490, 0, 131072, -5308489, 0, 131072, -5308488, 0, 131072, -5308487, 0, 131072, -5308486, 0, 131072, -5308485, 0, 131072, -5308484, 0, 131072, -5308483, 0, 131072, -5308482, 0, 131072, -5308481, 0, 131072, -5308480, 0, 131072, -5308479, 0, 131072, -5308478, 0, 131072, -5308477, 0, 131072, -5308476, 0, 131072, -5308475, 0, 131072, -5308474, 0, 131072, -5308473, 0, 131072, -5308472, 0, 131072, -5308471, 0, 131072, -5308470, 0, 131072, -5308469, 0, 131072, -5308468, 0, 131072, -5308467, 0, 131072, -5308466, 0, 131072, -5308465, 0, 131072, -5308464, 0, 131072, -5308463, 0, 131072, -5308462, 0, 131072, -5308461, 0, 131072, -5308460, 0, 131072, -5308459, 0, 131072, -5308458, 0, 131072, -5308457, 0, 131072, -5308456, 0, 131072, -5308455, 0, 131072, -5308454, 0, 131072, -5308453, 0, 131072, -5308452, 0, 131072, -5308451, 0, 131072, -5308450, 0, 131072, -5308449, 0, 131072, -5308448, 0, 131072, -5308447, 0, 131072, -5308446, 0, 131072, -5308445, 0, 131072, -5308444, 0, 131072, -5308443, 0, 131072, -5308442, 0, 131072, -5308441, 0, 131072, -5308440, 0, 131072, -5308439, 0, 131072, -5308438, 0, 131072, -5308437, 0, 131072, -5308436, 0, 131072, -5308435, 0, 131072, -5308434, 0, 131072, -5308433, 0, 131072, -5308432, 0, 131072, -5308431, 0, 131072, -5308430, 0, 131072, -5308429, 0, 131072, -5308428, 0, 131072, -5308427, 0, 131072, -5308426, 0, 131072, -5308425, 0, 131072, -5308424, 0, 131072, -5308423, 0, 131072, -5308422, 0, 131072, -5308421, 0, 131072, -5308420, 0, 131072, -5308419, 0, 131072, -5308418, 0, 131072, -5308417, 0, 131072, -5373952, 0, 131072, -5373951, 0, 131072, -5373950, 0, 131072, -5373949, 0, 131072, -5373948, 0, 131072, -5373947, 0, 131072, -5373946, 0, 131072, -5373945, 0, 131072, -5373944, 0, 131072, -5373943, 0, 131072, -5373942, 0, 131072, -5373941, 0, 131072, -5373940, 0, 131072, -5373939, 0, 131072, -5373938, 0, 131072, -5373937, 0, 131072, -5373936, 0, 131072, -5373935, 0, 131072, -5373934, 0, 131072, -5373933, 0, 131072, -5373932, 0, 131072, -5373931, 0, 131072, -5373930, 0, 131072, -5373929, 0, 131072, -5373928, 0, 131072, -5373927, 0, 131072, -5373926, 0, 131072, -5373925, 0, 131072, -5373924, 0, 131072, -5373923, 0, 131072, -5373922, 0, 131072, -5373921, 0, 131072, -5373920, 0, 131072, -5373919, 0, 131072, -5373918, 0, 131072, -5373917, 0, 131072, -5373916, 0, 131072, -5373915, 0, 131072, -5373914, 0, 131072, -5373913, 0, 131072, -5373912, 0, 131072, -5373911, 0, 131072, -5373910, 0, 131072, -5373909, 0, 131072, -5373908, 0, 131072, -5373907, 0, 131072, -5373906, 0, 131072, -5373905, 0, 131072, -5373904, 0, 131072, -5373903, 0, 131072, -5373902, 0, 131072, -5373901, 0, 131072, -5373900, 0, 131072, -5373899, 0, 131072, -5373898, 0, 131072, -5373897, 0, 131072, -5373896, 0, 131072, -5373895, 0, 131072, -5373894, 0, 131072, -5373893, 0, 131072, -5373892, 0, 131072, -5373891, 0, 131072, -5373890, 0, 131072, -5373889, 0, 131072, -5373888, 0, 131072, -5373887, 0, 131072, -5373886, 0, 131072, -5373885, 0, 131072, -5373884, 0, 131072, -5373883, 0, 131072, -5373882, 0, 131072, -5373881, 0, 131072, -5373880, 0, 131072, -5373879, 0, 131072, -5373878, 0, 131072, -5373877, 0, 131072, -5373876, 0, 131072, -5373875, 0, 131072, -5373874, 0, 131072, -5373873, 0, 131072, -5373872, 0, 131072, -5373871, 0, 131072, -5373870, 0, 131072, -5373869, 0, 131072, -5373868, 0, 131072, -5373867, 0, 131072, -5373866, 0, 131072, -5373865, 0, 131072, -5373864, 0, 131072, -5373863, 0, 131072, -5373862, 0, 131072, -5373861, 0, 131072, -5373860, 0, 131072, -5373859, 0, 131072, -5373858, 0, 131072, -5373857, 0, 131072, -5373856, 0, 131072, -5373855, 0, 131072, -5373854, 0, 131072, -5373853, 0, 131072, -5373852, 0, 131072, -5373851, 0, 131072, -5373850, 0, 131072, -5373849, 0, 131072, -5373848, 0, 131072, -5373847, 0, 131072, -5373846, 0, 131072, -5373845, 0, 131072, -5373844, 0, 131072, -5373843, 0, 131072, -5373842, 0, 131072, -5373841, 0, 131072, -5373840, 0, 131072, -5373839, 0, 131072, -5373838, 0, 131072, -5373837, 0, 131072, -5373836, 0, 131072, -5373835, 0, 131072, -5242977, 0, 131072, -5242976, 0, 131072, -5242975, 0, 131072, -5242974, 0, 131072, -5242973, 0, 131072, -5242972, 0, 131072, -5242971, 0, 131072, -5242970, 0, 131072, -5242969, 0, 131072, -5242968, 0, 131072, -5242967, 0, 131072, -5242966, 0, 131072, -5242965, 0, 131072, -5242964, 0, 131072, -5242963, 0, 131072, -5242962, 0, 131072, -5242961, 0, 131072, -5242960, 0, 131072, -5242959, 0, 131072, -5242958, 0, 131072, -5242957, 0, 131072, -5242956, 0, 131072, -5242955, 0, 131072, -5242954, 0, 131072, -5242953, 0, 131072, -5242952, 0, 131072, -5242951, 0, 131072, -5242950, 0, 131072, -5242949, 0, 131072, -5242948, 0, 131072, -5242947, 0, 131072, -5242946, 0, 131072, -5242945, 0, 131072, -5242944, 0, 131072, -5242943, 0, 131072, -5242942, 0, 131072, -5242941, 0, 131072, -5242940, 0, 131072, -5242939, 0, 131072, -5242938, 0, 131072, -5242937, 0, 131072, -5242936, 0, 131072, -5242935, 0, 131072, -5242934, 0, 131072, -5242933, 0, 131072, -5242932, 0, 131072, -5242931, 0, 131072, -5242930, 0, 131072, -5242929, 0, 131072, -5242928, 0, 131072, -5242927, 0, 131072, -5242926, 0, 131072, -5242925, 0, 131072, -5242924, 0, 131072, -5242923, 0, 131072, -5242922, 0, 131072, -5242921, 0, 131072, -5242920, 0, 131072, -5242919, 0, 131072, -5242918, 0, 131072, -5242917, 0, 131072, -5242916, 0, 131072, -5242915, 0, 131072, -5242914, 0, 131072, -5242913, 0, 131072, -5242912, 0, 131072, -5242911, 0, 131072, -5242910, 0, 131072, -5242909, 0, 131072, -5242908, 0, 131072, -5242907, 0, 131072, -5242906, 0, 131072, -5242905, 0, 131072, -5242904, 0, 131072, -5242903, 0, 131072, -5242902, 0, 131072, -5242901, 0, 131072, -5242900, 0, 131072, -5242899, 0, 131072, -5242898, 0, 131072, -5242897, 0, 131072, -5242896, 0, 131072, -5242895, 0, 131072, -5242894, 0, 131072, -5242893, 0, 131072, -5242892, 0, 131072, -5242891, 0, 131072, -5242890, 0, 131072, -5242889, 0, 131072, -5242888, 0, 131072, -5242887, 0, 131072, -5242886, 0, 131072, -5242885, 0, 131072, -5242884, 0, 131072, -5242883, 0, 131072, -5242882, 0, 131072, -5242881, 0, 131072, -5308416, 0, 131072, -5308415, 0, 131072, -5308414, 0, 131072, -5308413, 0, 131072, -5308412, 0, 131072, -5308411, 0, 131072, -5308410, 0, 131072, -5308409, 0, 131072, -5308408, 0, 131072, -5308407, 0, 131072, -5308406, 0, 131072, -5308405, 0, 131072, -5308404, 0, 131072, -5308403, 0, 131072, -5308402, 0, 131072, -5308401, 0, 131072, -5308400, 0, 131072, -5308399, 0, 131072, -5308398, 0, 131072, -5308397, 0, 131072, -5308396, 0, 131072, -5308395, 0, 131072, -5308394, 0, 131072, -5308393, 0, 131072, -5308392, 0, 131072, -5308391, 0, 131072, -5308390, 0, 131072, -5308389, 0, 131072, -5308388, 0, 131072, -5308387, 0, 131072, -5308386, 0, 131072, -5308385, 0, 131072, -5308384, 0, 131072, -5308383, 0, 131072, -5308382, 0, 131072, -5308381, 0, 131072, -5308380, 0, 131072, -5308379, 0, 131072, -5308378, 0, 131072, -5308377, 0, 131072, -5308376, 0, 131072, -5308375, 0, 131072, -5308374, 0, 131072, -5308373, 0, 131072, -5308372, 0, 131072, -5308371, 0, 131072, -5308370, 0, 131072, -5308369, 0, 131072, -5308368, 0, 131072, -5308367, 0, 131072, -5308366, 0, 131072, -5308365, 0, 131072, -5308364, 0, 131072, -5308363, 0, 131072, -5308362, 0, 131072, -5308361, 0, 131072, -5308360, 0, 131072, -5308359, 0, 131072, -5308358, 0, 131072, -5308357, 0, 131072, -5308356, 0, 131072, -5308355, 0, 131072, -5308354, 0, 131072, -5308353, 0, 131072, -5308352, 0, 131072, -5308351, 0, 131072, -5308350, 0, 131072, -5308349, 0, 131072, -5308348, 0, 131072, -5308347, 0, 131072, -5308346, 0, 131072, -5308345, 0, 131072, -5308344, 0, 131072, -5308343, 0, 131072, -5308342, 0, 131072, -5308341, 0, 131072, -5308340, 0, 131072, -5308339, 0, 131072, -5308338, 0, 131072, -5308337, 0, 131072, -5308336, 0, 131072, -5308335, 0, 131072, -5308334, 0, 131072, -5308333, 0, 131072, -5308332, 0, 131072, -5308331, 0, 131072, -5308330, 0, 131072, -5308329, 0, 131072, -5308328, 0, 131072, -5308327, 0, 131072, -5308326, 0, 131072, -5308325, 0, 131072, -5308324, 0, 131072, -5308323, 0, 131072, -5308322, 0, 131072, -5308321, 0, 131072, -5308320, 0, 131072, -5308319, 0, 131072, -5308318, 0, 131072, -5308317, 0, 131072, -5308316, 0, 131072, -5308315, 0, 131072, -5308314, 0, 131072, -5308313, 0, 131072, -5308312, 0, 131072, -5308311, 0, 131072, -5308310, 0, 131072, -5308309, 0, 131072, -5308308, 0, 131072, -5308307, 0, 131072, -5308306, 0, 131072, -5308305, 0, 131072, -5308304, 0, 131072, -5308303, 0, 131072, -5308302, 0, 131072, -5308301, 0, 131072, -5308300, 0, 131072, -5308299, 0, 131072, -5308298, 0, 131072, -5177441, 0, 131072, -5177440, 0, 131072, -5177439, 0, 131072, -5177438, 0, 131072, -5177437, 0, 131072, -5177436, 0, 131072, -5177435, 0, 131072, -5177434, 0, 131072, -5177433, 0, 131072, -5177432, 0, 131072, -5177431, 0, 131072, -5177430, 0, 131072, -5177429, 0, 131072, -5177428, 0, 131072, -5177427, 0, 131072, -5177426, 0, 131072, -5177425, 0, 131072, -5177424, 0, 131072, -5177423, 0, 131072, -5177422, 0, 131072, -5177421, 0, 131072, -5177420, 0, 131072, -5177419, 0, 131072, -5177418, 0, 131072, -5177417, 0, 131072, -5177416, 0, 131072, -5177415, 0, 131072, -5177414, 0, 131072, -5177413, 0, 131072, -5177412, 0, 131072, -5177411, 0, 131072, -5177410, 0, 131072, -5177409, 0, 131072, -5177408, 0, 131072, -5177407, 0, 131072, -5177406, 0, 131072, -5177405, 0, 131072, -5177404, 0, 131072, -5177403, 0, 131072, -5177402, 0, 131072, -5177401, 0, 131072, -5177400, 0, 131072, -5177399, 0, 131072, -5177398, 0, 131072, -5177397, 0, 131072, -5177396, 0, 131072, -5177395, 0, 131072, -5177394, 0, 131072, -5177393, 0, 131072, -5177392, 0, 131072, -5177391, 0, 131072, -5177390, 0, 131072, -5177389, 0, 131072, -5177388, 0, 131072, -5177387, 0, 131072, -5177386, 0, 131072, -5177385, 0, 131072, -5177384, 0, 131072, -5177383, 0, 131072, -5177382, 0, 131072, -5177381, 0, 131072, -5177380, 0, 131072, -5177379, 0, 131072, -5177378, 0, 131072, -5177377, 0, 131072, -5177376, 0, 131072, -5177375, 0, 131072, -5177374, 0, 131072, -5177373, 0, 131072, -5177372, 0, 131072, -5177371, 0, 131072, -5177370, 0, 131072, -5177369, 0, 131072, -5177368, 0, 131072, -5177367, 0, 131072, -5177366, 0, 131072, -5177365, 0, 131072, -5177364, 0, 131072, -5177363, 0, 131072, -5177362, 0, 131072, -5177361, 0, 131072, -5177360, 0, 131072, -5177359, 0, 131072, -5177358, 0, 131072, -5177357, 0, 131072, -5177356, 0, 131072, -5177355, 0, 131072, -5177354, 0, 131072, -5177353, 0, 131072, -5177352, 0, 131072, -5177351, 0, 131072, -5177350, 0, 131072, -5177349, 0, 131072, -5177348, 0, 131072, -5177347, 0, 131072, -5177346, 0, 131072, -5177345, 0, 131072, -5242880, 0, 131072, -5242879, 0, 131072, -5242878, 0, 131072, -5242877, 0, 131072, -5242876, 0, 131072, -5242875, 0, 131072, -5242874, 0, 131072, -5242873, 0, 131072, -5242872, 0, 131072, -5242871, 0, 131072, -5242870, 0, 131072, -5242869, 0, 131072, -5242868, 0, 131072, -5242867, 0, 131072, -5242866, 0, 131072, -5242865, 0, 131072, -5242864, 0, 131072, -5242863, 0, 131072, -5242862, 0, 131072, -5242861, 0, 131072, -5242860, 0, 131072, -5242859, 0, 131072, -5242858, 0, 131072, -5242857, 0, 131072, -5242856, 0, 131072, -5242855, 0, 131072, -5242854, 0, 131072, -5242853, 0, 131072, -5242852, 0, 131072, -5242851, 0, 131072, -5242850, 0, 131072, -5242849, 0, 131072, -5242848, 0, 131072, -5242847, 0, 131072, -5242846, 0, 131072, -5242845, 0, 131072, -5242844, 0, 131072, -5242843, 0, 131072, -5242842, 0, 131072, -5242841, 0, 131072, -5242840, 0, 131072, -5242839, 0, 131072, -5242838, 0, 131072, -5242837, 0, 131072, -5242836, 0, 131072, -5242835, 0, 131072, -5242834, 0, 131072, -5242833, 0, 131072, -5242832, 0, 131072, -5242831, 0, 131072, -5242830, 0, 131072, -5242829, 0, 131072, -5242828, 0, 131072, -5242827, 0, 131072, -5242826, 0, 131072, -5242825, 0, 131072, -5242824, 0, 131072, -5242823, 0, 131072, -5242822, 0, 131072, -5242821, 0, 131072, -5242820, 0, 131072, -5242819, 0, 131072, -5242818, 0, 131072, -5242817, 0, 131072, -5242816, 0, 131072, -5242815, 0, 131072, -5242814, 0, 131072, -5242813, 0, 131072, -5242812, 0, 131072, -5242811, 0, 131072, -5242810, 0, 131072, -5242809, 0, 131072, -5242808, 0, 131072, -5242807, 0, 131072, -5242806, 0, 131072, -5242805, 0, 131072, -5242804, 0, 131072, -5242803, 0, 131072, -5242802, 0, 131072, -5242801, 0, 131072, -5242800, 0, 131072, -5242799, 0, 131072, -5242798, 0, 131072, -5242797, 0, 131072, -5242796, 0, 131072, -5242795, 0, 131072, -5242794, 0, 131072, -5242793, 0, 131072, -5242792, 0, 131072, -5242791, 0, 131072, -5242790, 0, 131072, -5242789, 0, 131072, -5242788, 0, 131072, -5242787, 0, 131072, -5242786, 0, 131072, -5242785, 0, 131072, -5242784, 0, 131072, -5242783, 0, 131072, -5242782, 0, 131072, -5242781, 0, 131072, -5242780, 0, 131072, -5242779, 0, 131072, -5242778, 0, 131072, -5242777, 0, 131072, -5242776, 0, 131072, -5242775, 0, 131072, -5242774, 0, 131072, -5242773, 0, 131072, -5242772, 0, 131072, -5242771, 0, 131072, -5242770, 0, 131072, -5242769, 0, 131072, -5242768, 0, 131072, -5242767, 0, 131072, -5242766, 0, 131072, -5242765, 0, 131072, -5242764, 0, 131072, -5242763, 0, 131072, -5242762, 0, 131072, -5242761, 0, 131072, -5242760, 0, 131072, -5111905, 0, 131072, -5111904, 0, 131072, -5111903, 0, 131072, -5111902, 0, 131072, -5111901, 0, 131072, -5111900, 0, 131072, -5111899, 0, 131072, -5111898, 0, 131072, -5111897, 0, 131072, -5111896, 0, 131072, -5111895, 0, 131072, -5111894, 0, 131072, -5111893, 0, 131072, -5111892, 0, 131072, -5111891, 0, 131072, -5111890, 0, 131072, -5111889, 0, 131072, -5111888, 0, 131072, -5111887, 0, 131072, -5111886, 0, 131072, -5111885, 0, 131072, -5111884, 0, 131072, -5111883, 0, 131072, -5111882, 0, 131072, -5111881, 0, 131072, -5111880, 0, 131072, -5111879, 0, 131072, -5111878, 0, 131072, -5111877, 0, 131072, -5111876, 0, 131072, -5111875, 0, 131072, -5111874, 0, 131072, -5111873, 0, 131072, -5111872, 0, 131072, -5111871, 0, 131072, -5111870, 0, 131072, -5111869, 0, 131072, -5111868, 0, 131072, -5111867, 0, 131072, -5111866, 0, 131072, -5111865, 0, 131072, -5111864, 0, 131072, -5111863, 0, 131072, -5111862, 0, 131072, -5111861, 0, 131072, -5111860, 0, 131072, -5111859, 0, 131072, -5111858, 0, 131072, -5111857, 0, 131072, -5111856, 0, 131072, -5111855, 0, 131072, -5111854, 0, 131072, -5111853, 0, 131072, -5111852, 0, 131072, -5111851, 0, 131072, -5111850, 0, 131072, -5111849, 0, 131072, -5111848, 0, 131072, -5111847, 0, 131072, -5111846, 0, 131072, -5111845, 0, 131072, -5111844, 0, 131072, -5111843, 0, 131072, -5111842, 0, 131072, -5111841, 0, 131072, -5111840, 0, 131072, -5111839, 0, 131072, -5111838, 0, 131072, -5111837, 0, 131072, -5111836, 0, 131072, -5111835, 0, 131072, -5111834, 0, 131072, -5111833, 0, 131072, -5111832, 0, 131072, -5111831, 0, 131072, -5111830, 0, 131072, -5111829, 0, 131072, -5111828, 0, 131072, -5111827, 0, 131072, -5111826, 0, 131072, -5111825, 0, 131072, -5111824, 0, 131072, -5111823, 0, 131072, -5111822, 0, 131072, -5111821, 0, 131072, -5111820, 0, 131072, -5111819, 0, 131072, -5111818, 0, 131072, -5111817, 0, 131072, -5111816, 0, 131072, -5111815, 0, 131072, -5111814, 0, 131072, -5111813, 0, 131072, -5111812, 0, 131072, -5111811, 0, 131072, -5111810, 0, 131072, -5111809, 0, 131072, -5177344, 0, 131072, -5177343, 0, 131072, -5177342, 0, 131072, -5177341, 0, 131072, -5177340, 0, 131072, -5177339, 0, 131072, -5177338, 0, 131072, -5177337, 0, 131072, -5177336, 0, 131072, -5177335, 0, 131072, -5177334, 0, 131072, -5177333, 0, 131072, -5177332, 0, 131072, -5177331, 0, 131072, -5177330, 0, 131072, -5177329, 0, 131072, -5177328, 0, 131072, -5177327, 0, 131072, -5177326, 0, 131072, -5177325, 0, 131072, -5177324, 0, 131072, -5177323, 0, 131072, -5177322, 0, 131072, -5177321, 0, 131072, -5177320, 0, 131072, -5177319, 0, 131072, -5177318, 0, 131072, -5177317, 0, 131072, -5177316, 0, 131072, -5177315, 0, 131072, -5177314, 0, 131072, -5177313, 0, 131072, -5177312, 0, 131072, -5177311, 0, 131072, -5177310, 0, 131072, -5177309, 0, 131072, -5177308, 0, 131072, -5177307, 0, 131072, -5177306, 0, 131072, -5177305, 0, 131072, -5177304, 0, 131072, -5177303, 0, 131072, -5177302, 0, 131072, -5177301, 0, 131072, -5177300, 0, 131072, -5177299, 0, 131072, -5177298, 0, 131072, -5177297, 0, 131072, -5177296, 0, 131072, -5177295, 0, 131072, -5177294, 0, 131072, -5177293, 0, 131072, -5177292, 0, 131072, -5177291, 0, 131072, -5177290, 0, 131072, -5177289, 0, 131072, -5177288, 0, 131072, -5177287, 0, 131072, -5177286, 0, 131072, -5177285, 0, 131072, -5177284, 0, 131072, -5177283, 0, 131072, -5177282, 0, 131072, -5177281, 0, 131072, -5177280, 0, 131072, -5177279, 0, 131072, -5177278, 0, 131072, -5177277, 0, 131072, -5177276, 0, 131072, -5177275, 0, 131072, -5177274, 0, 131072, -5177273, 0, 131072, -5177272, 0, 131072, -5177271, 0, 131072, -5177270, 0, 131072, -5177269, 0, 131072, -5177268, 0, 131072, -5177267, 0, 131072, -5177266, 0, 131072, -5177265, 0, 131072, -5177264, 0, 131072, -5177263, 0, 131072, -5177262, 0, 131072, -5177261, 0, 131072, -5177260, 0, 131072, -5177259, 0, 131072, -5177258, 0, 131072, -5177257, 0, 131072, -5177256, 0, 131072, -5177255, 0, 131072, -5177254, 0, 131072, -5177253, 0, 131072, -5177252, 0, 131072, -5177251, 0, 131072, -5177250, 0, 131072, -5177249, 0, 131072, -5177248, 0, 131072, -5177247, 0, 131072, -5177246, 0, 131072, -5177245, 0, 131072, -5177244, 0, 131072, -5177243, 0, 131072, -5177242, 0, 131072, -5177241, 0, 131072, -5177240, 0, 131072, -5177239, 0, 131072, -5177238, 0, 131072, -5177237, 0, 131072, -5177236, 0, 131072, -5177235, 0, 131072, -5177234, 0, 131072, -5177233, 0, 131072, -5177232, 0, 131072, -5177231, 0, 131072, -5177230, 0, 131072, -5177229, 0, 131072, -5177228, 0, 131072, -5177227, 0, 131072, -5177226, 0, 131072, -5177225, 0, 131072, -5177224, 0, 131072, -5177223, 0, 131072, -5046370, 0, 131072, -5046369, 0, 131072, -5046368, 0, 131072, -5046367, 0, 131072, -5046366, 0, 131072, -5046365, 0, 131072, -5046364, 0, 131072, -5046363, 0, 131072, -5046362, 0, 131072, -5046361, 0, 131072, -5046360, 0, 131072, -5046359, 0, 131072, -5046358, 0, 131072, -5046357, 0, 131072, -5046356, 0, 131072, -5046355, 0, 131072, -5046354, 0, 131072, -5046353, 0, 131072, -5046352, 0, 131072, -5046351, 0, 131072, -5046350, 0, 131072, -5046349, 0, 131072, -5046348, 0, 131072, -5046347, 0, 131072, -5046346, 0, 131072, -5046345, 0, 131072, -5046344, 0, 131072, -5046343, 0, 131072, -5046342, 0, 131072, -5046341, 0, 131072, -5046340, 0, 131072, -5046339, 0, 131072, -5046338, 0, 131072, -5046337, 0, 131072, -5046336, 0, 131072, -5046335, 0, 131072, -5046334, 0, 131072, -5046333, 0, 131072, -5046332, 0, 131072, -5046331, 0, 131072, -5046330, 0, 131072, -5046329, 0, 131072, -5046328, 0, 131072, -5046327, 0, 131072, -5046326, 0, 131072, -5046325, 0, 131072, -5046324, 0, 131072, -5046323, 0, 131072, -5046322, 0, 131072, -5046321, 0, 131072, -5046320, 0, 131072, -5046319, 0, 131072, -5046318, 0, 131072, -5046317, 0, 131072, -5046316, 0, 131072, -5046315, 0, 131072, -5046314, 0, 131072, -5046313, 0, 131072, -5046312, 0, 131072, -5046311, 0, 131072, -5046310, 0, 131072, -5046309, 0, 131072, -5046308, 0, 131072, -5046307, 0, 131072, -5046306, 0, 131072, -5046305, 0, 131072, -5046304, 0, 131072, -5046303, 0, 131072, -5046302, 0, 131072, -5046301, 0, 131072, -5046300, 0, 131072, -5046299, 0, 131072, -5046298, 0, 131072, -5046297, 0, 131072, -5046296, 0, 131072, -5046295, 0, 131072, -5046294, 0, 131072, -5046293, 0, 131072, -5046292, 0, 131072, -5046291, 0, 131072, -5046290, 0, 131072, -5046289, 0, 131072, -5046288, 0, 131072, -5046287, 0, 131072, -5046286, 0, 131072, -5046285, 0, 131072, -5046284, 0, 131072, -5046283, 0, 131072, -5046282, 0, 131072, -5046281, 0, 131072, -5046280, 0, 131072, -5046279, 0, 131072, -5046278, 0, 131072, -5046277, 0, 131072, -5046276, 0, 131072, -5046275, 0, 131072, -5046274, 0, 131072, -5046273, 0, 131072, -5111808, 0, 131072, -5111807, 0, 131072, -5111806, 0, 131072, -5111805, 0, 131072, -5111804, 0, 131072, -5111803, 0, 131072, -5111802, 0, 131072, -5111801, 0, 131072, -5111800, 0, 131072, -5111799, 0, 131072, -5111798, 0, 131072, -5111797, 0, 131072, -5111796, 0, 131072, -5111795, 0, 131072, -5111794, 0, 131072, -5111793, 0, 131072, -5111792, 0, 131072, -5111791, 0, 131072, -5111790, 0, 131072, -5111789, 0, 131072, -5111788, 0, 131072, -5111787, 0, 131072, -5111786, 0, 131072, -5111785, 0, 131072, -5111784, 0, 131072, -5111783, 0, 131072, -5111782, 0, 131072, -5111781, 0, 131072, -5111780, 0, 131072, -5111779, 0, 131072, -5111778, 0, 131072, -5111777, 0, 131072, -5111776, 0, 131072, -5111775, 0, 131072, -5111774, 0, 131072, -5111773, 0, 131072, -5111772, 0, 131072, -5111771, 0, 131072, -5111770, 0, 131072, -5111769, 0, 131072, -5111768, 0, 131072, -5111767, 0, 131072, -5111766, 0, 131072, -5111765, 0, 131072, -5111764, 0, 131072, -5111763, 0, 131072, -5111762, 0, 131072, -5111761, 0, 131072, -5111760, 0, 131072, -5111759, 0, 131072, -5111758, 0, 131072, -5111757, 0, 131072, -5111756, 0, 131072, -5111755, 0, 131072, -5111754, 0, 131072, -5111753, 0, 131072, -5111752, 0, 131072, -5111751, 0, 131072, -5111750, 0, 131072, -5111749, 0, 131072, -5111748, 0, 131072, -5111747, 0, 131072, -5111746, 0, 131072, -5111745, 0, 131072, -5111744, 0, 131072, -5111743, 0, 131072, -5111742, 0, 131072, -5111741, 0, 131072, -5111740, 0, 131072, -5111739, 0, 131072, -5111738, 0, 131072, -5111737, 0, 131072, -5111736, 0, 131072, -5111735, 0, 131072, -5111734, 0, 131072, -5111733, 0, 131072, -5111732, 0, 131072, -5111731, 0, 131072, -5111730, 0, 131072, -5111729, 0, 131072, -5111728, 0, 131072, -5111727, 0, 131072, -5111726, 0, 131072, -5111725, 0, 131072, -5111724, 0, 131072, -5111723, 0, 131072, -5111722, 0, 131072, -5111721, 0, 131072, -5111720, 0, 131072, -5111719, 0, 131072, -5111718, 0, 131072, -5111717, 0, 131072, -5111716, 0, 131072, -5111715, 0, 131072, -5111714, 0, 131072, -5111713, 0, 131072, -5111712, 0, 131072, -5111711, 0, 131072, -5111710, 0, 131072, -5111709, 0, 131072, -5111708, 0, 131072, -5111707, 0, 131072, -5111706, 0, 131072, -5111705, 0, 131072, -5111704, 0, 131072, -5111703, 0, 131072, -5111702, 0, 131072, -5111701, 0, 131072, -5111700, 0, 131072, -5111699, 0, 131072, -5111698, 0, 131072, -5111697, 0, 131072, -5111696, 0, 131072, -5111695, 0, 131072, -5111694, 0, 131072, -5111693, 0, 131072, -5111692, 0, 131072, -5111691, 0, 131072, -5111690, 0, 131072, -5111689, 0, 131072, -5111688, 0, 131072, -5111687, 0, 131072, -5111686, 0, 131072, -4980834, 0, 131072, -4980833, 0, 131072, -4980832, 0, 131072, -4980831, 0, 131072, -4980830, 0, 131072, -4980829, 0, 131072, -4980828, 0, 131072, -4980827, 0, 131072, -4980826, 0, 131072, -4980825, 0, 131072, -4980824, 0, 131072, -4980823, 0, 131072, -4980822, 0, 131072, -4980821, 0, 131072, -4980820, 0, 131072, -4980819, 0, 131072, -4980818, 0, 131072, -4980817, 0, 131072, -4980816, 0, 131072, -4980815, 0, 131072, -4980814, 0, 131072, -4980813, 0, 131072, -4980812, 0, 131072, -4980811, 0, 131072, -4980810, 0, 131072, -4980809, 0, 131072, -4980808, 0, 131072, -4980807, 0, 131072, -4980806, 0, 131072, -4980805, 0, 131072, -4980804, 0, 131072, -4980803, 0, 131072, -4980802, 0, 131072, -4980801, 0, 131072, -4980800, 0, 131072, -4980799, 0, 131072, -4980798, 0, 131072, -4980797, 0, 131072, -4980796, 0, 131072, -4980795, 0, 131072, -4980794, 0, 131072, -4980793, 0, 131072, -4980792, 0, 131072, -4980791, 0, 131072, -4980790, 0, 131072, -4980789, 0, 131072, -4980788, 0, 131072, -4980787, 0, 131072, -4980786, 0, 131072, -4980785, 0, 131072, -4980784, 0, 131072, -4980783, 0, 131072, -4980782, 0, 131072, -4980781, 0, 131072, -4980780, 0, 131072, -4980779, 0, 131072, -4980778, 0, 131072, -4980777, 0, 131072, -4980776, 0, 131072, -4980775, 0, 131072, -4980774, 0, 131072, -4980773, 0, 131072, -4980772, 0, 131072, -4980771, 0, 131072, -4980770, 0, 131072, -4980769, 0, 131072, -4980768, 0, 131072, -4980767, 0, 131072, -4980766, 0, 131072, -4980765, 0, 131072, -4980764, 0, 131072, -4980763, 0, 131072, -4980762, 0, 131072, -4980761, 0, 131072, -4980760, 0, 131072, -4980759, 0, 131072, -4980758, 0, 131072, -4980757, 0, 131072, -4980756, 0, 131072, -4980755, 0, 131072, -4980754, 0, 131072, -4980753, 0, 131072, -4980752, 0, 131072, -4980751, 0, 131072, -4980750, 0, 131072, -4980749, 0, 131072, -4980748, 0, 131072, -4980747, 0, 131072, -4980746, 0, 131072, -4980745, 0, 131072, -4980744, 0, 131072, -4980743, 0, 131072, -4980742, 0, 131072, -4980741, 0, 131072, -4980740, 0, 131072, -4980739, 0, 131072, -4980738, 0, 131072, -4980737, 0, 131072, -5046272, 0, 131072, -5046271, 0, 131072, -5046270, 0, 131072, -5046269, 0, 131072, -5046268, 0, 131072, -5046267, 0, 131072, -5046266, 0, 131072, -5046265, 0, 131072, -5046264, 0, 131072, -5046263, 0, 131072, -5046262, 0, 131072, -5046261, 0, 131072, -5046260, 0, 131072, -5046259, 0, 131072, -5046258, 0, 131072, -5046257, 0, 131072, -5046256, 0, 131072, -5046255, 0, 131072, -5046254, 0, 131072, -5046253, 0, 131072, -5046252, 0, 131072, -5046251, 0, 131072, -5046250, 0, 131072, -5046249, 0, 131072, -5046248, 0, 131072, -5046247, 0, 131072, -5046246, 0, 131072, -5046245, 0, 131072, -5046244, 0, 131072, -5046243, 0, 131072, -5046242, 0, 131072, -5046241, 0, 131072, -5046240, 0, 131072, -5046239, 0, 131072, -5046238, 0, 131072, -5046237, 0, 131072, -5046236, 0, 131072, -5046235, 0, 131072, -5046234, 0, 131072, -5046233, 0, 131072, -5046232, 0, 131072, -5046231, 0, 131072, -5046230, 0, 131072, -5046229, 0, 131072, -5046228, 0, 131072, -5046227, 0, 131072, -5046226, 0, 131072, -5046225, 0, 131072, -5046224, 0, 131072, -5046223, 0, 131072, -5046222, 0, 131072, -5046221, 0, 131072, -5046220, 0, 131072, -5046219, 0, 131072, -5046218, 0, 131072, -5046217, 0, 131072, -5046216, 0, 131072, -5046215, 0, 131072, -5046214, 0, 131072, -5046213, 0, 131072, -5046212, 0, 131072, -5046211, 0, 131072, -5046210, 0, 131072, -5046209, 0, 131072, -5046208, 0, 131072, -5046207, 0, 131072, -5046206, 0, 131072, -5046205, 0, 131072, -5046204, 0, 131072, -5046203, 0, 131072, -5046202, 0, 131072, -5046201, 0, 131072, -5046200, 0, 131072, -5046199, 0, 131072, -5046198, 0, 131072, -5046197, 0, 131072, -5046196, 0, 131072, -5046195, 0, 131072, -5046194, 0, 131072, -5046193, 0, 131072, -5046192, 0, 131072, -5046191, 0, 131072, -5046190, 0, 131072, -5046189, 0, 131072, -5046188, 0, 131072, -5046187, 0, 131072, -5046186, 0, 131072, -5046185, 0, 131072, -5046184, 0, 131072, -5046183, 0, 131072, -5046182, 0, 131072, -5046181, 0, 131072, -5046180, 0, 131072, -5046179, 0, 131072, -5046178, 0, 131072, -5046177, 0, 131072, -5046176, 0, 131072, -5046175, 0, 131072, -5046174, 0, 131072, -5046173, 0, 131072, -5046172, 0, 131072, -5046171, 0, 131072, -5046170, 0, 131072, -5046169, 0, 131072, -5046168, 0, 131072, -5046167, 0, 131072, -5046166, 0, 131072, -5046165, 0, 131072, -5046164, 0, 131072, -5046163, 0, 131072, -5046162, 0, 131072, -5046161, 0, 131072, -5046160, 0, 131072, -5046159, 0, 131072, -5046158, 0, 131072, -5046157, 0, 131072, -5046156, 0, 131072, -5046155, 0, 131072, -5046154, 0, 131072, -5046153, 0, 131072, -5046152, 0, 131072, -5046151, 0, 131072, -5046150, 0, 131072, -5046149, 0, 131072, -5046148, 0, 131072, -4915298, 0, 131072, -4915297, 0, 131072, -4915296, 0, 131072, -4915295, 0, 131072, -4915294, 0, 131072, -4915293, 0, 131072, -4915292, 0, 131072, -4915291, 0, 131072, -4915290, 0, 131072, -4915289, 0, 131072, -4915288, 0, 131072, -4915287, 0, 131072, -4915286, 0, 131072, -4915285, 0, 131072, -4915284, 0, 131072, -4915283, 0, 131072, -4915282, 0, 131072, -4915281, 0, 131072, -4915280, 0, 131072, -4915279, 0, 131072, -4915278, 0, 131072, -4915277, 0, 131072, -4915276, 0, 131072, -4915275, 0, 131072, -4915274, 0, 131072, -4915273, 0, 131072, -4915272, 0, 131072, -4915271, 0, 131072, -4915270, 0, 131072, -4915269, 0, 131072, -4915268, 0, 131072, -4915267, 0, 131072, -4915266, 0, 131072, -4915265, 0, 131072, -4915264, 0, 131072, -4915263, 0, 131072, -4915262, 0, 131072, -4915261, 0, 131072, -4915260, 0, 131072, -4915259, 0, 131072, -4915258, 0, 131072, -4915257, 0, 131072, -4915256, 0, 131072, -4915255, 0, 131072, -4915254, 0, 131072, -4915253, 0, 131072, -4915252, 0, 131072, -4915251, 0, 131072, -4915250, 0, 131072, -4915249, 0, 131072, -4915248, 0, 131072, -4915247, 0, 131072, -4915246, 0, 131072, -4915245, 0, 131072, -4915244, 0, 131072, -4915243, 0, 131072, -4915242, 0, 131072, -4915241, 0, 131072, -4915240, 0, 131072, -4915239, 0, 131072, -4915238, 0, 131072, -4915237, 0, 131072, -4915236, 0, 131072, -4915235, 0, 131072, -4915234, 0, 131072, -4915233, 0, 131072, -4915232, 0, 131072, -4915231, 0, 131072, -4915230, 0, 131072, -4915229, 0, 131072, -4915228, 0, 131072, -4915227, 0, 131072, -4915226, 0, 131072, -4915225, 0, 131072, -4915224, 0, 131072, -4915223, 0, 131072, -4915222, 0, 131072, -4915221, 0, 131072, -4915220, 0, 131072, -4915219, 0, 131072, -4915218, 0, 131072, -4915217, 0, 131072, -4915216, 0, 131072, -4915215, 0, 131072, -4915214, 0, 131072, -4915213, 0, 131072, -4915212, 0, 131072, -4915211, 0, 131072, -4915210, 0, 131072, -4915209, 0, 131072, -4915208, 0, 131072, -4915207, 0, 131072, -4915206, 0, 131072, -4915205, 0, 131072, -4915204, 0, 131072, -4915203, 0, 131072, -4915202, 0, 131072, -4915201, 0, 131072, -4980736, 0, 131072, -4980735, 0, 131072, -4980734, 0, 131072, -4980733, 0, 131072, -4980732, 0, 131072, -4980731, 0, 131072, -4980730, 0, 131072, -4980729, 0, 131072, -4980728, 0, 131072, -4980727, 0, 131072, -4980726, 0, 131072, -4980725, 0, 131072, -4980724, 0, 131072, -4980723, 0, 131072, -4980722, 0, 131072, -4980721, 0, 131072, -4980720, 0, 131072, -4980719, 0, 131072, -4980718, 0, 131072, -4980717, 0, 131072, -4980716, 0, 131072, -4980715, 0, 131072, -4980714, 0, 131072, -4980713, 0, 131072, -4980712, 0, 131072, -4980711, 0, 131072, -4980710, 0, 131072, -4980709, 0, 131072, -4980708, 0, 131072, -4980707, 0, 131072, -4980706, 0, 131072, -4980705, 0, 131072, -4980704, 0, 131072, -4980703, 0, 131072, -4980702, 0, 131072, -4980701, 0, 131072, -4980700, 0, 131072, -4980699, 0, 131072, -4980698, 0, 131072, -4980697, 0, 131072, -4980696, 0, 131072, -4980695, 0, 131072, -4980694, 0, 131072, -4980693, 0, 131072, -4980692, 0, 131072, -4980691, 0, 131072, -4980690, 0, 131072, -4980689, 0, 131072, -4980688, 0, 131072, -4980687, 0, 131072, -4980686, 0, 131072, -4980685, 0, 131072, -4980684, 0, 131072, -4980683, 0, 131072, -4980682, 0, 131072, -4980681, 0, 131072, -4980680, 0, 131072, -4980679, 0, 131072, -4980678, 0, 131072, -4980677, 0, 131072, -4980676, 0, 131072, -4980675, 0, 131072, -4980674, 0, 131072, -4980673, 0, 131072, -4980672, 0, 131072, -4980671, 0, 131072, -4980670, 0, 131072, -4980669, 0, 131072, -4980668, 0, 131072, -4980667, 0, 131072, -4980666, 0, 131072, -4980665, 0, 131072, -4980664, 0, 131072, -4980663, 0, 131072, -4980662, 0, 131072, -4980661, 0, 131072, -4980660, 0, 131072, -4980659, 0, 131072, -4980658, 0, 131072, -4980657, 0, 131072, -4980656, 0, 131072, -4980655, 0, 131072, -4980654, 0, 131072, -4980653, 0, 131072, -4980652, 0, 131072, -4980651, 0, 131072, -4980650, 0, 131072, -4980649, 0, 131072, -4980648, 0, 131072, -4980647, 0, 131072, -4980646, 0, 131072, -4980645, 0, 131072, -4980644, 0, 131072, -4980643, 0, 131072, -4980642, 0, 131072, -4980641, 0, 131072, -4980640, 0, 131072, -4980639, 0, 131072, -4980638, 0, 131072, -4980637, 0, 131072, -4980636, 0, 131072, -4980635, 0, 131072, -4980634, 0, 131072, -4980633, 0, 131072, -4980632, 0, 131072, -4980631, 0, 131072, -4980630, 0, 131072, -4980629, 0, 131072, -4980628, 0, 131072, -4980627, 0, 131072, -4980626, 0, 131072, -4980625, 0, 131072, -4980624, 0, 131072, -4980623, 0, 131072, -4980622, 0, 131072, -4980621, 0, 131072, -4980620, 0, 131072, -4980619, 0, 131072, -4980618, 0, 131072, -4980617, 0, 131072, -4980616, 0, 131072, -4980615, 0, 131072, -4980614, 0, 131072, -4980613, 0, 131072, -4980612, 0, 131072, -4980611, 0, 131072, -4849763, 0, 131072, -4849762, 0, 131072, -4849761, 0, 131072, -4849760, 0, 131072, -4849759, 0, 131072, -4849758, 0, 131072, -4849757, 0, 131072, -4849756, 0, 131072, -4849755, 0, 131072, -4849754, 0, 131072, -4849753, 0, 131072, -4849752, 0, 131072, -4849751, 0, 131072, -4849750, 0, 131072, -4849749, 0, 131072, -4849748, 0, 131072, -4849747, 0, 131072, -4849746, 0, 131072, -4849745, 0, 131072, -4849744, 0, 131072, -4849743, 0, 131072, -4849742, 0, 131072, -4849741, 0, 131072, -4849740, 0, 131072, -4849739, 0, 131072, -4849738, 0, 131072, -4849737, 0, 131072, -4849736, 0, 131072, -4849735, 0, 131072, -4849734, 0, 131072, -4849733, 0, 131072, -4849732, 0, 131072, -4849731, 0, 131072, -4849730, 0, 131072, -4849729, 0, 131072, -4849728, 0, 131072, -4849727, 0, 131072, -4849726, 0, 131072, -4849725, 0, 131072, -4849724, 0, 131072, -4849723, 0, 131072, -4849722, 0, 131072, -4849721, 0, 131072, -4849720, 0, 131072, -4849719, 0, 131072, -4849718, 0, 131072, -4849717, 0, 131072, -4849716, 0, 131072, -4849715, 0, 131072, -4849714, 0, 131072, -4849713, 0, 131072, -4849712, 0, 131072, -4849711, 0, 131072, -4849710, 0, 131072, -4849709, 0, 131072, -4849708, 0, 131072, -4849707, 0, 131072, -4849706, 0, 131072, -4849705, 0, 131072, -4849704, 0, 131072, -4849703, 0, 131072, -4849702, 0, 131072, -4849701, 0, 131072, -4849700, 0, 131072, -4849699, 0, 131072, -4849698, 0, 131072, -4849697, 0, 131072, -4849696, 0, 131072, -4849695, 0, 131072, -4849694, 0, 131072, -4849693, 0, 131072, -4849692, 0, 131072, -4849691, 0, 131072, -4849690, 0, 131072, -4849689, 0, 131072, -4849688, 0, 131072, -4849687, 0, 131072, -4849686, 0, 131072, -4849685, 0, 131072, -4849684, 0, 131072, -4849683, 0, 131072, -4849682, 0, 131072, -4849681, 0, 131072, -4849680, 0, 131072, -4849679, 0, 131072, -4849678, 0, 131072, -4849677, 0, 131072, -4849676, 0, 131072, -4849675, 0, 131072, -4849674, 0, 131072, -4849673, 0, 131072, -4849672, 0, 131072, -4849671, 0, 131072, -4849670, 0, 131072, -4849669, 0, 131072, -4849668, 0, 131072, -4849667, 0, 131072, -4849666, 0, 131072, -4849665, 0, 131072, -4915200, 0, 131072, -4915199, 0, 131072, -4915198, 0, 131072, -4915197, 0, 131072, -4915196, 0, 131072, -4915195, 0, 131072, -4915194, 0, 131072, -4915193, 0, 131072, -4915192, 0, 131072, -4915191, 0, 131072, -4915190, 0, 131072, -4915189, 0, 131072, -4915188, 0, 131072, -4915187, 0, 131072, -4915186, 0, 131072, -4915185, 0, 131072, -4915184, 0, 131072, -4915183, 0, 131072, -4915182, 0, 131072, -4915181, 0, 131072, -4915180, 0, 131072, -4915179, 0, 131072, -4915178, 0, 131072, -4915177, 0, 131072, -4915176, 0, 131072, -4915175, 0, 131072, -4915174, 0, 131072, -4915173, 0, 131072, -4915172, 0, 131072, -4915171, 0, 131072, -4915170, 0, 131072, -4915169, 0, 131072, -4915168, 0, 131072, -4915167, 0, 131072, -4915166, 0, 131072, -4915165, 0, 131072, -4915164, 0, 131072, -4915163, 0, 131072, -4915162, 0, 131072, -4915161, 0, 131072, -4915160, 0, 131072, -4915159, 0, 131072, -4915158, 0, 131072, -4915157, 0, 131072, -4915156, 0, 131072, -4915155, 0, 131072, -4915154, 0, 131072, -4915153, 0, 131072, -4915152, 0, 131072, -4915151, 0, 131072, -4915150, 0, 131072, -4915149, 0, 131072, -4915148, 0, 131072, -4915147, 0, 131072, -4915146, 0, 131072, -4915145, 0, 131072, -4915144, 0, 131072, -4915143, 0, 131072, -4915142, 0, 131072, -4915141, 0, 131072, -4915140, 0, 131072, -4915139, 0, 131072, -4915138, 0, 131072, -4915137, 0, 131072, -4915136, 0, 131072, -4915135, 0, 131072, -4915134, 0, 131072, -4915133, 0, 131072, -4915132, 0, 131072, -4915131, 0, 131072, -4915130, 0, 131072, -4915129, 0, 131072, -4915128, 0, 131072, -4915127, 0, 131072, -4915126, 0, 131072, -4915125, 0, 131072, -4915124, 0, 131072, -4915123, 0, 131072, -4915122, 0, 131072, -4915121, 0, 131072, -4915120, 0, 131072, -4915119, 0, 131072, -4915118, 0, 131072, -4915117, 0, 131072, -4915116, 0, 131072, -4915115, 0, 131072, -4915114, 0, 131072, -4915113, 0, 131072, -4915112, 0, 131072, -4915111, 0, 131072, -4915110, 0, 131072, -4915109, 0, 131072, -4915108, 0, 131072, -4915107, 0, 131072, -4915106, 0, 131072, -4915105, 0, 131072, -4915104, 0, 131072, -4915103, 0, 131072, -4915102, 0, 131072, -4915101, 0, 131072, -4915100, 0, 131072, -4915099, 0, 131072, -4915098, 0, 131072, -4915097, 0, 131072, -4915096, 0, 131072, -4915095, 0, 131072, -4915094, 0, 131072, -4915093, 0, 131072, -4915092, 0, 131072, -4915091, 0, 131072, -4915090, 0, 131072, -4915089, 0, 131072, -4915088, 0, 131072, -4915087, 0, 131072, -4915086, 0, 131072, -4915085, 0, 131072, -4915084, 0, 131072, -4915083, 0, 131072, -4915082, 0, 131072, -4915081, 0, 131072, -4915080, 0, 131072, -4915079, 0, 131072, -4915078, 0, 131072, -4915077, 0, 131072, -4915076, 0, 131072, -4915075, 0, 131072, -4915074, 0, 131072, -4784227, 0, 131072, -4784226, 0, 131072, -4784225, 0, 131072, -4784224, 0, 131072, -4784223, 0, 131072, -4784222, 0, 131072, -4784221, 0, 131072, -4784220, 0, 131072, -4784219, 0, 131072, -4784218, 0, 131072, -4784217, 0, 131072, -4784216, 0, 131072, -4784215, 0, 131072, -4784214, 0, 131072, -4784213, 0, 131072, -4784212, 0, 131072, -4784211, 0, 131072, -4784210, 0, 131072, -4784209, 0, 131072, -4784208, 0, 131072, -4784207, 0, 131072, -4784206, 0, 131072, -4784205, 0, 131072, -4784204, 0, 131072, -4784203, 0, 131072, -4784202, 0, 131072, -4784201, 0, 131072, -4784200, 0, 131072, -4784199, 0, 131072, -4784198, 0, 131072, -4784197, 0, 131072, -4784196, 0, 131072, -4784195, 0, 131072, -4784194, 0, 131072, -4784193, 0, 131072, -4784192, 0, 131072, -4784191, 0, 131072, -4784190, 0, 131072, -4784189, 0, 131072, -4784188, 0, 131072, -4784187, 0, 131072, -4784186, 0, 131072, -4784185, 0, 131072, -4784184, 0, 131072, -4784183, 0, 131072, -4784182, 0, 131072, -4784181, 0, 131072, -4784180, 0, 131072, -4784179, 0, 131072, -4784178, 0, 131072, -4784177, 0, 131072, -4784176, 0, 131072, -4784175, 0, 131072, -4784174, 0, 131072, -4784173, 0, 131072, -4784172, 0, 131072, -4784171, 0, 131072, -4784170, 0, 131072, -4784169, 0, 131072, -4784168, 0, 131072, -4784167, 0, 131072, -4784166, 0, 131072, -4784165, 0, 131072, -4784164, 0, 131072, -4784163, 0, 131072, -4784162, 0, 131072, -4784161, 0, 131072, -4784160, 0, 131072, -4784159, 0, 131072, -4784158, 0, 131072, -4784157, 0, 131072, -4784156, 0, 131072, -4784155, 0, 131072, -4784154, 0, 131072, -4784153, 0, 131072, -4784152, 0, 131072, -4784151, 0, 131072, -4784150, 0, 131072, -4784149, 0, 131072, -4784148, 0, 131072, -4784147, 0, 131072, -4784146, 0, 131072, -4784145, 0, 131072, -4784144, 0, 131072, -4784143, 0, 131072, -4784142, 0, 131072, -4784141, 0, 131072, -4784140, 0, 131072, -4784139, 0, 131072, -4784138, 0, 131072, -4784137, 0, 131072, -4784136, 0, 131072, -4784135, 0, 131072, -4784134, 0, 131072, -4784133, 0, 131072, -4784132, 0, 131072, -4784131, 0, 131072, -4784130, 0, 131072, -4784129, 0, 131072, -4849664, 0, 131072, -4849663, 0, 131072, -4849662, 0, 131072, -4849661, 0, 131072, -4849660, 0, 131072, -4849659, 0, 131072, -4849658, 0, 131072, -4849657, 0, 131072, -4849656, 0, 131072, -4849655, 0, 131072, -4849654, 0, 131072, -4849653, 0, 131072, -4849652, 0, 131072, -4849651, 0, 131072, -4849650, 0, 131072, -4849649, 0, 131072, -4849648, 0, 131072, -4849647, 0, 131072, -4849646, 0, 131072, -4849645, 0, 131072, -4849644, 0, 131072, -4849643, 0, 131072, -4849642, 0, 131072, -4849641, 0, 131072, -4849640, 0, 131072, -4849639, 0, 131072, -4849638, 0, 131072, -4849637, 0, 131072, -4849636, 0, 131072, -4849635, 0, 131072, -4849634, 0, 131072, -4849633, 0, 131072, -4849632, 0, 131072, -4849631, 0, 131072, -4849630, 0, 131072, -4849629, 0, 131072, -4849628, 0, 131072, -4849627, 0, 131072, -4849626, 0, 131072, -4849625, 0, 131072, -4849624, 0, 131072, -4849623, 0, 131072, -4849622, 0, 131072, -4849621, 0, 131072, -4849620, 0, 131072, -4849619, 0, 131072, -4849618, 0, 131072, -4849617, 0, 131072, -4849616, 0, 131072, -4849615, 0, 131072, -4849614, 0, 131072, -4849613, 0, 131072, -4849612, 0, 131072, -4849611, 0, 131072, -4849610, 0, 131072, -4849609, 0, 131072, -4849608, 0, 131072, -4849607, 0, 131072, -4849606, 0, 131072, -4849605, 0, 131072, -4849604, 0, 131072, -4849603, 0, 131072, -4849602, 0, 131072, -4849601, 0, 131072, -4849600, 0, 131072, -4849599, 0, 131072, -4849598, 0, 131072, -4849597, 0, 131072, -4849596, 0, 131072, -4849595, 0, 131072, -4849594, 0, 131072, -4849593, 0, 131072, -4849592, 0, 131072, -4849591, 0, 131072, -4849590, 0, 131072, -4849589, 0, 131072, -4849588, 0, 131072, -4849587, 0, 131072, -4849586, 0, 131072, -4849585, 0, 131072, -4849584, 0, 131072, -4849583, 0, 131072, -4849582, 0, 131072, -4849581, 0, 131072, -4849580, 0, 131072, -4849579, 0, 131072, -4849578, 0, 131072, -4849577, 0, 131072, -4849576, 0, 131072, -4849575, 0, 131072, -4849574, 0, 131072, -4849573, 0, 131072, -4849572, 0, 131072, -4849571, 0, 131072, -4849570, 0, 131072, -4849569, 0, 131072, -4849568, 0, 131072, -4849567, 0, 131072, -4849566, 0, 131072, -4849565, 0, 131072, -4849564, 0, 131072, -4849563, 0, 131072, -4849562, 0, 131072, -4849561, 0, 131072, -4849560, 0, 131072, -4849559, 0, 131072, -4849558, 0, 131072, -4849557, 0, 131072, -4849556, 0, 131072, -4849555, 0, 131072, -4849554, 0, 131072, -4849553, 0, 131072, -4849552, 0, 131072, -4849551, 0, 131072, -4849550, 0, 131072, -4849549, 0, 131072, -4849548, 0, 131072, -4849547, 0, 131072, -4849546, 0, 131072, -4849545, 0, 131072, -4849544, 0, 131072, -4849543, 0, 131072, -4849542, 0, 131072, -4849541, 0, 131072, -4849540, 0, 131072, -4849539, 0, 131072, -4849538, 0, 131072, -4849537, 0, 131072, -4718691, 0, 131072, -4718690, 0, 131072, -4718689, 0, 131072, -4718688, 0, 131072, -4718687, 0, 131072, -4718686, 0, 131072, -4718685, 0, 131072, -4718684, 0, 131072, -4718683, 0, 131072, -4718682, 0, 131072, -4718681, 0, 131072, -4718680, 0, 131072, -4718679, 0, 131072, -4718678, 0, 131072, -4718677, 0, 131072, -4718676, 0, 131072, -4718675, 0, 131072, -4718674, 0, 131072, -4718673, 0, 131072, -4718672, 0, 131072, -4718671, 0, 131072, -4718670, 0, 131072, -4718669, 0, 131072, -4718668, 0, 131072, -4718667, 0, 131072, -4718666, 0, 131072, -4718665, 0, 131072, -4718664, 0, 131072, -4718663, 0, 131072, -4718662, 0, 131072, -4718661, 0, 131072, -4718660, 0, 131072, -4718659, 0, 131072, -4718658, 0, 131072, -4718657, 0, 131072, -4718656, 0, 131072, -4718655, 0, 131072, -4718654, 0, 131072, -4718653, 0, 131072, -4718652, 0, 131072, -4718651, 0, 131072, -4718650, 0, 131072, -4718649, 0, 131072, -4718648, 0, 131072, -4718647, 0, 131072, -4718646, 0, 131072, -4718645, 0, 131072, -4718644, 0, 131072, -4718643, 0, 131072, -4718642, 0, 131072, -4718641, 0, 131072, -4718640, 0, 131072, -4718639, 0, 131072, -4718638, 0, 131072, -4718637, 0, 131072, -4718636, 0, 131072, -4718635, 0, 131072, -4718634, 0, 131072, -4718633, 0, 131072, -4718632, 0, 131072, -4718631, 0, 131072, -4718630, 0, 131072, -4718629, 0, 131072, -4718628, 0, 131072, -4718627, 0, 131072, -4718626, 0, 131072, -4718625, 0, 131072, -4718624, 0, 131072, -4718623, 0, 131072, -4718622, 0, 131072, -4718621, 0, 131072, -4718620, 0, 131072, -4718619, 0, 131072, -4718618, 0, 131072, -4718617, 0, 131072, -4718616, 0, 131072, -4718615, 0, 131072, -4718614, 0, 131072, -4718613, 0, 131072, -4718612, 0, 131072, -4718611, 0, 131072, -4718610, 0, 131072, -4718609, 0, 131072, -4718608, 0, 131072, -4718607, 0, 131072, -4718606, 0, 131072, -4718605, 0, 131072, -4718604, 0, 131072, -4718603, 0, 131072, -4718602, 0, 131072, -4718601, 0, 131072, -4718600, 0, 131072, -4718599, 0, 131072, -4718598, 0, 131072, -4718597, 0, 131072, -4718596, 0, 131072, -4718595, 0, 131072, -4718594, 0, 131072, -4718593, 0, 131072, -4784128, 0, 131072, -4784127, 0, 131072, -4784126, 0, 131072, -4784125, 0, 131072, -4784124, 0, 131072, -4784123, 0, 131072, -4784122, 0, 131072, -4784121, 0, 131072, -4784120, 0, 131072, -4784119, 0, 131072, -4784118, 0, 131072, -4784117, 0, 131072, -4784116, 0, 131072, -4784115, 0, 131072, -4784114, 0, 131072, -4784113, 0, 131072, -4784112, 0, 131072, -4784111, 0, 131072, -4784110, 0, 131072, -4784109, 0, 131072, -4784108, 0, 131072, -4784107, 0, 131072, -4784106, 0, 131072, -4784105, 0, 131072, -4784104, 0, 131072, -4784103, 0, 131072, -4784102, 0, 131072, -4784101, 0, 131072, -4784100, 0, 131072, -4784099, 0, 131072, -4784098, 0, 131072, -4784097, 0, 131072, -4784096, 0, 131072, -4784095, 0, 131072, -4784094, 0, 131072, -4784093, 0, 131072, -4784092, 0, 131072, -4784091, 0, 131072, -4784090, 0, 131072, -4784089, 0, 131072, -4784088, 0, 131072, -4784087, 0, 131072, -4784086, 0, 131072, -4784085, 0, 131072, -4784084, 0, 131072, -4784083, 0, 131072, -4784082, 0, 131072, -4784081, 0, 131072, -4784080, 0, 131072, -4784079, 0, 131072, -4784078, 0, 131072, -4784077, 0, 131072, -4784076, 0, 131072, -4784075, 0, 131072, -4784074, 0, 131072, -4784073, 0, 131072, -4784072, 0, 131072, -4784071, 0, 131072, -4784070, 0, 131072, -4784069, 0, 131072, -4784068, 0, 131072, -4784067, 0, 131072, -4784066, 0, 131072, -4784065, 0, 131072, -4784064, 0, 131072, -4784063, 0, 131072, -4784062, 0, 131072, -4784061, 0, 131072, -4784060, 0, 131072, -4784059, 0, 131072, -4784058, 0, 131072, -4784057, 0, 131072, -4784056, 0, 131072, -4784055, 0, 131072, -4784054, 0, 131072, -4784053, 0, 131072, -4784052, 0, 131072, -4784051, 0, 131072, -4784050, 0, 131072, -4784049, 0, 131072, -4784048, 0, 131072, -4784047, 0, 131072, -4784046, 0, 131072, -4784045, 0, 131072, -4784044, 0, 131072, -4784043, 0, 131072, -4784042, 0, 131072, -4784041, 0, 131072, -4784040, 0, 131072, -4784039, 0, 131072, -4784038, 0, 131072, -4784037, 0, 131072, -4784036, 0, 131072, -4784035, 0, 131072, -4784034, 0, 131072, -4784033, 0, 131072, -4784032, 0, 131072, -4784031, 0, 131072, -4784030, 0, 131072, -4784029, 0, 131072, -4784028, 0, 131072, -4784027, 0, 131072, -4784026, 0, 131072, -4784025, 0, 131072, -4784024, 0, 131072, -4784023, 0, 131072, -4784022, 0, 131072, -4784021, 0, 131072, -4784020, 0, 131072, -4784019, 0, 131072, -4784018, 0, 131072, -4784017, 0, 131072, -4784016, 0, 131072, -4784015, 0, 131072, -4784014, 0, 131072, -4784013, 0, 131072, -4784012, 0, 131072, -4784011, 0, 131072, -4784010, 0, 131072, -4784009, 0, 131072, -4784008, 0, 131072, -4784007, 0, 131072, -4784006, 0, 131072, -4784005, 0, 131072, -4784004, 0, 131072, -4784003, 0, 131072, -4784002, 0, 131072, -4784001, 0, 131072, -4784000, 0, 131072, -4783999, 0, 131072, -4653156, 0, 131072, -4653155, 0, 131072, -4653154, 0, 131072, -4653153, 0, 131072, -4653152, 0, 131072, -4653151, 0, 131072, -4653150, 0, 131072, -4653149, 0, 131072, -4653148, 0, 131072, -4653147, 0, 131072, -4653146, 0, 131072, -4653145, 0, 131072, -4653144, 0, 131072, -4653143, 0, 131072, -4653142, 0, 131072, -4653141, 0, 131072, -4653140, 0, 131072, -4653139, 0, 131072, -4653138, 0, 131072, -4653137, 0, 131072, -4653136, 0, 131072, -4653135, 0, 131072, -4653134, 0, 131072, -4653133, 0, 131072, -4653132, 0, 131072, -4653131, 0, 131072, -4653130, 0, 131072, -4653129, 0, 131072, -4653128, 0, 131072, -4653127, 0, 131072, -4653126, 0, 131072, -4653125, 0, 131072, -4653124, 0, 131072, -4653123, 0, 131072, -4653122, 0, 131072, -4653121, 0, 131072, -4653120, 0, 131072, -4653119, 0, 131072, -4653118, 0, 131072, -4653117, 0, 131072, -4653116, 0, 131072, -4653115, 0, 131072, -4653114, 0, 131072, -4653113, 0, 131072, -4653112, 0, 131072, -4653111, 0, 131072, -4653110, 0, 131072, -4653109, 0, 131072, -4653108, 0, 131072, -4653107, 0, 131072, -4653106, 0, 131072, -4653105, 0, 131072, -4653104, 0, 131072, -4653103, 0, 131072, -4653102, 0, 131072, -4653101, 0, 131072, -4653100, 0, 131072, -4653099, 0, 131072, -4653098, 0, 131072, -4653097, 0, 131072, -4653096, 0, 131072, -4653095, 0, 131072, -4653094, 0, 131072, -4653093, 0, 131072, -4653092, 0, 131072, -4653091, 0, 131072, -4653090, 0, 131072, -4653089, 0, 131072, -4653088, 0, 131072, -4653087, 0, 131072, -4653086, 0, 131072, -4653085, 0, 131072, -4653084, 0, 131072, -4653083, 0, 131072, -4653082, 0, 131072, -4653081, 0, 131072, -4653080, 0, 131072, -4653079, 0, 131072, -4653078, 0, 131072, -4653077, 0, 131072, -4653076, 0, 131072, -4653075, 0, 131072, -4653074, 0, 131072, -4653073, 0, 131072, -4653072, 0, 131072, -4653071, 0, 131072, -4653070, 0, 131072, -4653069, 0, 131072, -4653068, 0, 131072, -4653067, 0, 131072, -4653066, 0, 131072, -4653065, 0, 131072, -4653064, 0, 131072, -4653063, 0, 131072, -4653062, 0, 131072, -4653061, 0, 131072, -4653060, 0, 131072, -4653059, 0, 131072, -4653058, 0, 131072, -4653057, 0, 131072, -4718592, 0, 131072, -4718591, 0, 131072, -4718590, 0, 131072, -4718589, 0, 131072, -4718588, 0, 131072, -4718587, 0, 131072, -4718586, 0, 131072, -4718585, 0, 131072, -4718584, 0, 131072, -4718583, 0, 131072, -4718582, 0, 131072, -4718581, 0, 131072, -4718580, 0, 131072, -4718579, 0, 131072, -4718578, 0, 131072, -4718577, 0, 131072, -4718576, 0, 131072, -4718575, 0, 131072, -4718574, 0, 131072, -4718573, 0, 131072, -4718572, 0, 131072, -4718571, 0, 131072, -4718570, 0, 131072, -4718569, 0, 131072, -4718568, 0, 131072, -4718567, 0, 131072, -4718566, 0, 131072, -4718565, 0, 131072, -4718564, 0, 131072, -4718563, 0, 131072, -4718562, 0, 131072, -4718561, 0, 131072, -4718560, 0, 131072, -4718559, 0, 131072, -4718558, 0, 131072, -4718557, 0, 131072, -4718556, 0, 131072, -4718555, 0, 131072, -4718554, 0, 131072, -4718553, 0, 131072, -4718552, 0, 131072, -4718551, 0, 131072, -4718550, 0, 131072, -4718549, 0, 131072, -4718548, 0, 131072, -4718547, 0, 131072, -4718546, 0, 131072, -4718545, 0, 131072, -4718544, 0, 131072, -4718543, 0, 131072, -4718542, 0, 131072, -4718541, 0, 131072, -4718540, 0, 131072, -4718539, 0, 131072, -4718538, 0, 131072, -4718537, 0, 131072, -4718536, 0, 131072, -4718535, 0, 131072, -4718534, 0, 131072, -4718533, 0, 131072, -4718532, 0, 131072, -4718531, 0, 131072, -4718530, 0, 131072, -4718529, 0, 131072, -4718528, 0, 131072, -4718527, 0, 131072, -4718526, 0, 131072, -4718525, 0, 131072, -4718524, 0, 131072, -4718523, 0, 131072, -4718522, 0, 131072, -4718521, 0, 131072, -4718520, 0, 131072, -4718519, 0, 131072, -4718518, 0, 131072, -4718517, 0, 131072, -4718516, 0, 131072, -4718515, 0, 131072, -4718514, 0, 131072, -4718513, 0, 131072, -4718512, 0, 131072, -4718511, 0, 131072, -4718510, 0, 131072, -4718509, 0, 131072, -4718508, 0, 131072, -4718507, 0, 131072, -4718506, 0, 131072, -4718505, 0, 131072, -4718504, 0, 131072, -4718503, 0, 131072, -4718502, 0, 131072, -4718501, 0, 131072, -4718500, 0, 131072, -4718499, 0, 131072, -4718498, 0, 131072, -4718497, 0, 131072, -4718496, 0, 131072, -4718495, 0, 131072, -4718494, 0, 131072, -4718493, 0, 131072, -4718492, 0, 131072, -4718491, 0, 131072, -4718490, 0, 131072, -4718489, 0, 131072, -4718488, 0, 131072, -4718487, 0, 131072, -4718486, 0, 131072, -4718485, 0, 131072, -4718484, 0, 131072, -4718483, 0, 131072, -4718482, 0, 131072, -4718481, 0, 131072, -4718480, 0, 131072, -4718479, 0, 131072, -4718478, 0, 131072, -4718477, 0, 131072, -4718476, 0, 131072, -4718475, 0, 131072, -4718474, 0, 131072, -4718473, 0, 131072, -4718472, 0, 131072, -4718471, 0, 131072, -4718470, 0, 131072, -4718469, 0, 131072, -4718468, 0, 131072, -4718467, 0, 131072, -4718466, 0, 131072, -4718465, 0, 131072, -4718464, 0, 131072, -4718463, 0, 131072, -4718462, 0, 131072, -4587620, 0, 131072, -4587619, 0, 131072, -4587618, 0, 131072, -4587617, 0, 131072, -4587616, 0, 131072, -4587615, 0, 131072, -4587614, 0, 131072, -4587613, 0, 131072, -4587612, 0, 131072, -4587611, 0, 131072, -4587610, 0, 131072, -4587609, 0, 131072, -4587608, 0, 131072, -4587607, 0, 131072, -4587606, 0, 131072, -4587605, 0, 131072, -4587604, 0, 131072, -4587603, 0, 131072, -4587602, 0, 131072, -4587601, 0, 131072, -4587600, 0, 131072, -4587599, 0, 131072, -4587598, 0, 131072, -4587597, 0, 131072, -4587596, 0, 131072, -4587595, 0, 131072, -4587594, 0, 131072, -4587593, 0, 131072, -4587592, 0, 131072, -4587591, 0, 131072, -4587590, 0, 131072, -4587589, 0, 131072, -4587588, 0, 131072, -4587587, 0, 131072, -4587586, 0, 131072, -4587585, 0, 131072, -4587584, 0, 131072, -4587583, 0, 131072, -4587582, 0, 131072, -4587581, 0, 131072, -4587580, 0, 131072, -4587579, 0, 131072, -4587578, 0, 131072, -4587577, 0, 131072, -4587576, 0, 131072, -4587575, 0, 131072, -4587574, 0, 131072, -4587573, 0, 131072, -4587572, 0, 131072, -4587571, 0, 131072, -4587570, 0, 131072, -4587569, 0, 131072, -4587568, 0, 131072, -4587567, 0, 131072, -4587566, 0, 131072, -4587565, 0, 131072, -4587564, 0, 131072, -4587563, 0, 131072, -4587562, 0, 131072, -4587561, 0, 131072, -4587560, 0, 131072, -4587559, 0, 131072, -4587558, 0, 131072, -4587557, 0, 131072, -4587556, 0, 131072, -4587555, 0, 131072, -4587554, 0, 131072, -4587553, 0, 131072, -4587552, 0, 131072, -4587551, 0, 131072, -4587550, 0, 131072, -4587549, 0, 131072, -4587548, 0, 131072, -4587547, 0, 131072, -4587546, 0, 131072, -4587545, 0, 131072, -4587544, 0, 131072, -4587543, 0, 131072, -4587542, 0, 131072, -4587541, 0, 131072, -4587540, 0, 131072, -4587539, 0, 131072, -4587538, 0, 131072, -4587537, 0, 131072, -4587536, 0, 131072, -4587535, 0, 131072, -4587534, 0, 131072, -4587533, 0, 131072, -4587532, 0, 131072, -4587531, 0, 131072, -4587530, 0, 131072, -4587529, 0, 131072, -4587528, 0, 131072, -4587527, 0, 131072, -4587526, 0, 131072, -4587525, 0, 131072, -4587524, 0, 131072, -4587523, 0, 131072, -4587522, 0, 131072, -4587521, 0, 131072, -4653056, 0, 131072, -4653055, 0, 131072, -4653054, 0, 131072, -4653053, 0, 131072, -4653052, 0, 131072, -4653051, 0, 131072, -4653050, 0, 131072, -4653049, 0, 131072, -4653048, 0, 131072, -4653047, 0, 131072, -4653046, 0, 131072, -4653045, 0, 131072, -4653044, 0, 131072, -4653043, 0, 131072, -4653042, 0, 131072, -4653041, 0, 131072, -4653040, 0, 131072, -4653039, 0, 131072, -4653038, 0, 131072, -4653037, 0, 131072, -4653036, 0, 131072, -4653035, 0, 131072, -4653034, 0, 131072, -4653033, 0, 131072, -4653032, 0, 131072, -4653031, 0, 131072, -4653030, 0, 131072, -4653029, 0, 131072, -4653028, 0, 131072, -4653027, 0, 131072, -4653026, 0, 131072, -4653025, 0, 131072, -4653024, 0, 131072, -4653023, 0, 131072, -4653022, 0, 131072, -4653021, 0, 131072, -4653020, 0, 131072, -4653019, 0, 131072, -4653018, 0, 131072, -4653017, 0, 131072, -4653016, 0, 131072, -4653015, 0, 131072, -4653014, 0, 131072, -4653013, 0, 131072, -4653012, 0, 131072, -4653011, 0, 131072, -4653010, 0, 131072, -4653009, 0, 131072, -4653008, 0, 131072, -4653007, 0, 131072, -4653006, 0, 131072, -4653005, 0, 131072, -4653004, 0, 131072, -4653003, 0, 131072, -4653002, 0, 131072, -4653001, 0, 131072, -4653000, 0, 131072, -4652999, 0, 131072, -4652998, 0, 131072, -4652997, 0, 131072, -4652996, 0, 131072, -4652995, 0, 131072, -4652994, 0, 131072, -4652993, 0, 131072, -4652992, 0, 131072, -4652991, 0, 131072, -4652990, 0, 131072, -4652989, 0, 131072, -4652988, 0, 131072, -4652987, 0, 131072, -4652986, 0, 131072, -4652985, 0, 131072, -4652984, 0, 131072, -4652983, 0, 131072, -4652982, 0, 131072, -4652981, 0, 131072, -4652980, 0, 131072, -4652979, 0, 131072, -4652978, 0, 131072, -4652977, 0, 131072, -4652976, 0, 131072, -4652975, 0, 131072, -4652974, 0, 131072, -4652973, 0, 131072, -4652972, 0, 131072, -4652971, 0, 131072, -4652970, 0, 131072, -4652969, 0, 131072, -4652968, 0, 131072, -4652967, 0, 131072, -4652966, 0, 131072, -4652965, 0, 131072, -4652964, 0, 131072, -4652963, 0, 131072, -4652962, 0, 131072, -4652961, 0, 131072, -4652960, 0, 131072, -4652959, 0, 131072, -4652958, 0, 131072, -4652957, 0, 131072, -4652956, 0, 131072, -4652955, 0, 131072, -4652954, 0, 131072, -4652953, 0, 131072, -4652952, 0, 131072, -4652951, 0, 131072, -4652950, 0, 131072, -4652949, 0, 131072, -4652948, 0, 131072, -4652947, 0, 131072, -4652946, 0, 131072, -4652945, 0, 131072, -4652944, 0, 131072, -4652943, 0, 131072, -4652942, 0, 131072, -4652941, 0, 131072, -4652940, 0, 131072, -4652939, 0, 131072, -4652938, 0, 131072, -4652937, 0, 131072, -4652936, 0, 131072, -4652935, 0, 131072, -4652934, 0, 131072, -4652933, 0, 131072, -4652932, 0, 131072, -4652931, 0, 131072, -4652930, 0, 131072, -4652929, 0, 131072, -4652928, 0, 131072, -4652927, 0, 131072, -4652926, 0, 131072, -4652925, 0, 131072, -4522084, 0, 131072, -4522083, 0, 131072, -4522082, 0, 131072, -4522081, 0, 131072, -4522080, 0, 131072, -4522079, 0, 131072, -4522078, 0, 131072, -4522077, 0, 131072, -4522076, 0, 131072, -4522075, 0, 131072, -4522074, 0, 131072, -4522073, 0, 131072, -4522072, 0, 131072, -4522071, 0, 131072, -4522070, 0, 131072, -4522069, 0, 131072, -4522068, 0, 131072, -4522067, 0, 131072, -4522066, 0, 131072, -4522065, 0, 131072, -4522064, 0, 131072, -4522063, 0, 131072, -4522062, 0, 131072, -4522061, 0, 131072, -4522060, 0, 131072, -4522059, 0, 131072, -4522058, 0, 131072, -4522057, 0, 131072, -4522056, 0, 131072, -4522055, 0, 131072, -4522054, 0, 131072, -4522053, 0, 131072, -4522052, 0, 131072, -4522051, 0, 131072, -4522050, 0, 131072, -4522049, 0, 131072, -4522048, 0, 131072, -4522047, 0, 131072, -4522046, 0, 131072, -4522045, 0, 131072, -4522044, 0, 131072, -4522043, 0, 131072, -4522042, 0, 131072, -4522041, 0, 131072, -4522040, 0, 131072, -4522039, 0, 131072, -4522038, 0, 131072, -4522037, 0, 131072, -4522036, 0, 131072, -4522035, 0, 131072, -4522034, 0, 131072, -4522033, 0, 131072, -4522032, 0, 131072, -4522031, 0, 131072, -4522030, 0, 131072, -4522029, 0, 131072, -4522028, 0, 131072, -4522027, 0, 131072, -4522026, 0, 131072, -4522025, 0, 131072, -4522024, 0, 131072, -4522023, 0, 131072, -4522022, 0, 131072, -4522021, 0, 131072, -4522020, 0, 131072, -4522019, 0, 131072, -4522018, 0, 131072, -4522017, 0, 131072, -4522016, 0, 131072, -4522015, 0, 131072, -4522014, 0, 131072, -4522013, 0, 131072, -4522012, 0, 131072, -4522011, 0, 131072, -4522010, 0, 131072, -4522009, 0, 131072, -4522008, 0, 131072, -4522007, 0, 131072, -4522006, 0, 131072, -4522005, 0, 131072, -4522004, 0, 131072, -4522003, 0, 131072, -4522002, 0, 131072, -4522001, 0, 131072, -4522000, 0, 131072, -4521999, 0, 131072, -4521998, 0, 131072, -4521997, 0, 131072, -4521996, 0, 131072, -4521995, 0, 131072, -4521994, 0, 131072, -4521993, 0, 131072, -4521992, 0, 131072, -4521991, 0, 131072, -4521990, 0, 131072, -4521989, 0, 131072, -4521988, 0, 131072, -4521987, 0, 131072, -4521986, 0, 131072, -4521985, 0, 131072, -4587520, 0, 131072, -4587519, 0, 131072, -4587518, 0, 131072, -4587517, 0, 131072, -4587516, 0, 131072, -4587515, 0, 131072, -4587514, 0, 131072, -4587513, 0, 131072, -4587512, 0, 131072, -4587511, 0, 131072, -4587510, 0, 131072, -4587509, 0, 131072, -4587508, 0, 131072, -4587507, 0, 131072, -4587506, 0, 131072, -4587505, 0, 131072, -4587504, 0, 131072, -4587503, 0, 131072, -4587502, 0, 131072, -4587501, 0, 131072, -4587500, 0, 131072, -4587499, 0, 131072, -4587498, 0, 131072, -4587497, 0, 131072, -4587496, 0, 131072, -4587495, 0, 131072, -4587494, 0, 131072, -4587493, 0, 131072, -4587492, 0, 131072, -4587491, 0, 131072, -4587490, 0, 131072, -4587489, 0, 131072, -4587488, 0, 131072, -4587487, 0, 131072, -4587486, 0, 131072, -4587485, 0, 131072, -4587484, 0, 131072, -4587483, 0, 131072, -4587482, 0, 131072, -4587481, 0, 131072, -4587480, 0, 131072, -4587479, 0, 131072, -4587478, 0, 131072, -4587477, 0, 131072, -4587476, 0, 131072, -4587475, 0, 131072, -4587474, 0, 131072, -4587473, 0, 131072, -4587472, 0, 131072, -4587471, 0, 131072, -4587470, 0, 131072, -4587469, 0, 131072, -4587468, 0, 131072, -4587467, 0, 131072, -4587466, 0, 131072, -4587465, 0, 131072, -4587464, 0, 131072, -4587463, 0, 131072, -4587462, 0, 131072, -4587461, 0, 131072, -4587460, 0, 131072, -4587459, 0, 131072, -4587458, 0, 131072, -4587457, 0, 131072, -4587456, 0, 131072, -4587455, 0, 131072, -4587454, 0, 131072, -4587453, 0, 131072, -4587452, 0, 131072, -4587451, 0, 131072, -4587450, 0, 131072, -4587449, 0, 131072, -4587448, 0, 131072, -4587447, 0, 131072, -4587446, 0, 131072, -4587445, 0, 131072, -4587444, 0, 131072, -4587443, 0, 131072, -4587442, 0, 131072, -4587441, 0, 131072, -4587440, 0, 131072, -4587439, 0, 131072, -4587438, 0, 131072, -4587437, 0, 131072, -4587436, 0, 131072, -4587435, 0, 131072, -4587434, 0, 131072, -4587433, 0, 131072, -4587432, 0, 131072, -4587431, 0, 131072, -4587430, 0, 131072, -4587429, 0, 131072, -4587428, 0, 131072, -4587427, 0, 131072, -4587426, 0, 131072, -4587425, 0, 131072, -4587424, 0, 131072, -4587423, 0, 131072, -4587422, 0, 131072, -4587421, 0, 131072, -4587420, 0, 131072, -4587419, 0, 131072, -4587418, 0, 131072, -4587417, 0, 131072, -4587416, 0, 131072, -4587415, 0, 131072, -4587414, 0, 131072, -4587413, 0, 131072, -4587412, 0, 131072, -4587411, 0, 131072, -4587410, 0, 131072, -4587409, 0, 131072, -4587408, 0, 131072, -4587407, 0, 131072, -4587406, 0, 131072, -4587405, 0, 131072, -4587404, 0, 131072, -4587403, 0, 131072, -4587402, 0, 131072, -4587401, 0, 131072, -4587400, 0, 131072, -4587399, 0, 131072, -4587398, 0, 131072, -4587397, 0, 131072, -4587396, 0, 131072, -4587395, 0, 131072, -4587394, 0, 131072, -4587393, 0, 131072, -4587392, 0, 131072, -4587391, 0, 131072, -4587390, 0, 131072, -4587389, 0, 131072, -4587388, 0, 131072, -4456548, 0, 131072, -4456547, 0, 131072, -4456546, 0, 131072, -4456545, 0, 131072, -4456544, 0, 131072, -4456543, 0, 131072, -4456542, 0, 131072, -4456541, 0, 131072, -4456540, 0, 131072, -4456539, 0, 131072, -4456538, 0, 131072, -4456537, 0, 131072, -4456536, 0, 131072, -4456535, 0, 131072, -4456534, 0, 131072, -4456533, 0, 131072, -4456532, 0, 131072, -4456531, 0, 131072, -4456530, 0, 131072, -4456529, 0, 131072, -4456528, 0, 131072, -4456527, 0, 131072, -4456526, 0, 131072, -4456525, 0, 131072, -4456524, 0, 131072, -4456523, 0, 131072, -4456522, 0, 131072, -4456521, 0, 131072, -4456520, 0, 131072, -4456519, 0, 131072, -4456518, 0, 131072, -4456517, 0, 131072, -4456516, 0, 131072, -4456515, 0, 131072, -4456514, 0, 131072, -4456513, 0, 131072, -4456512, 0, 131072, -4456511, 0, 131072, -4456510, 0, 131072, -4456509, 0, 131072, -4456508, 0, 131072, -4456507, 0, 131072, -4456506, 0, 131072, -4456505, 0, 131072, -4456504, 0, 131072, -4456503, 0, 131072, -4456502, 0, 131072, -4456501, 0, 131072, -4456500, 0, 131072, -4456499, 0, 131072, -4456498, 0, 131072, -4456497, 0, 131072, -4456496, 0, 131072, -4456495, 0, 131072, -4456494, 0, 131072, -4456493, 0, 131072, -4456492, 0, 131072, -4456491, 0, 131072, -4456490, 0, 131072, -4456489, 0, 131072, -4456488, 0, 131072, -4456487, 0, 131072, -4456486, 0, 131072, -4456485, 0, 131072, -4456484, 0, 131072, -4456483, 0, 131072, -4456482, 0, 131072, -4456481, 0, 131072, -4456480, 0, 131072, -4456479, 0, 131072, -4456478, 0, 131072, -4456477, 0, 131072, -4456476, 0, 131072, -4456475, 0, 131072, -4456474, 0, 131072, -4456473, 0, 131072, -4456472, 0, 131072, -4456471, 0, 131072, -4456470, 0, 131072, -4456469, 0, 131072, -4456468, 0, 131072, -4456467, 0, 131072, -4456466, 0, 131072, -4456465, 0, 131072, -4456464, 0, 131072, -4456463, 0, 131072, -4456462, 0, 131072, -4456461, 0, 131072, -4456460, 0, 131072, -4456459, 0, 131072, -4456458, 0, 131072, -4456457, 0, 131072, -4456456, 0, 131072, -4456455, 0, 131072, -4456454, 0, 131072, -4456453, 0, 131072, -4456452, 0, 131072, -4456451, 0, 131072, -4456450, 0, 131072, -4456449, 0, 131072, -4521984, 0, 131072, -4521983, 0, 131072, -4521982, 0, 131072, -4521981, 0, 131072, -4521980, 0, 131072, -4521979, 0, 131072, -4521978, 0, 131072, -4521977, 0, 131072, -4521976, 0, 131072, -4521975, 0, 131072, -4521974, 0, 131072, -4521973, 0, 131072, -4521972, 0, 131072, -4521971, 0, 131072, -4521970, 0, 131072, -4521969, 0, 131072, -4521968, 0, 131072, -4521967, 0, 131072, -4521966, 0, 131072, -4521965, 0, 131072, -4521964, 0, 131072, -4521963, 0, 131072, -4521962, 0, 131072, -4521961, 0, 131072, -4521960, 0, 131072, -4521959, 0, 131072, -4521958, 0, 131072, -4521957, 0, 131072, -4521956, 0, 131072, -4521955, 0, 131072, -4521954, 0, 131072, -4521953, 0, 131072, -4521952, 0, 131072, -4521951, 0, 131072, -4521950, 0, 131072, -4521949, 0, 131072, -4521948, 0, 131072, -4521947, 0, 131072, -4521946, 0, 131072, -4521945, 0, 131072, -4521944, 0, 131072, -4521943, 0, 131072, -4521942, 0, 131072, -4521941, 0, 131072, -4521940, 0, 131072, -4521939, 0, 131072, -4521938, 0, 131072, -4521937, 0, 131072, -4521936, 0, 131072, -4521935, 0, 131072, -4521934, 0, 131072, -4521933, 0, 131072, -4521932, 0, 131072, -4521931, 0, 131072, -4521930, 0, 131072, -4521929, 0, 131072, -4521928, 0, 131072, -4521927, 0, 131072, -4521926, 0, 131072, -4521925, 0, 131072, -4521924, 0, 131072, -4521923, 0, 131072, -4521922, 0, 131072, -4521921, 0, 131072, -4521920, 0, 131072, -4521919, 0, 131072, -4521918, 0, 131072, -4521917, 0, 131072, -4521916, 0, 131072, -4521915, 0, 131072, -4521914, 0, 131072, -4521913, 0, 131072, -4521912, 0, 131072, -4521911, 0, 131072, -4521910, 0, 131072, -4521909, 0, 131072, -4521908, 0, 131072, -4521907, 0, 131072, -4521906, 0, 131072, -4521905, 0, 131072, -4521904, 0, 131072, -4521903, 0, 131072, -4521902, 0, 131072, -4521901, 0, 131072, -4521900, 0, 131072, -4521899, 0, 131072, -4521898, 0, 131072, -4521897, 0, 131072, -4521896, 0, 131072, -4521895, 0, 131072, -4521894, 0, 131072, -4521893, 0, 131072, -4521892, 0, 131072, -4521891, 0, 131072, -4521890, 0, 131072, -4521889, 0, 131072, -4521888, 0, 131072, -4521887, 0, 131072, -4521886, 0, 131072, -4521885, 0, 131072, -4521884, 0, 131072, -4521883, 0, 131072, -4521882, 0, 131072, -4521881, 0, 131072, -4521880, 0, 131072, -4521879, 0, 131072, -4521878, 0, 131072, -4521877, 0, 131072, -4521876, 0, 131072, -4521875, 0, 131072, -4521874, 0, 131072, -4521873, 0, 131072, -4521872, 0, 131072, -4521871, 0, 131072, -4521870, 0, 131072, -4521869, 0, 131072, -4521868, 0, 131072, -4521867, 0, 131072, -4521866, 0, 131072, -4521865, 0, 131072, -4521864, 0, 131072, -4521863, 0, 131072, -4521862, 0, 131072, -4521861, 0, 131072, -4521860, 0, 131072, -4521859, 0, 131072, -4521858, 0, 131072, -4521857, 0, 131072, -4521856, 0, 131072, -4521855, 0, 131072, -4521854, 0, 131072, -4521853, 0, 131072, -4521852, 0, 131072, -4521851, 0, 131072, -4391013, 0, 131072, -4391012, 0, 131072, -4391011, 0, 131072, -4391010, 0, 131072, -4391009, 0, 131072, -4391008, 0, 131072, -4391007, 0, 131072, -4391006, 0, 131072, -4391005, 0, 131072, -4391004, 0, 131072, -4391003, 0, 131072, -4391002, 0, 131072, -4391001, 0, 131072, -4391000, 0, 131072, -4390999, 0, 131072, -4390998, 0, 131072, -4390997, 0, 131072, -4390996, 0, 131072, -4390995, 0, 131072, -4390994, 0, 131072, -4390993, 0, 131072, -4390992, 0, 131072, -4390991, 0, 131072, -4390990, 0, 131072, -4390989, 0, 131072, -4390988, 0, 131072, -4390987, 0, 131072, -4390986, 0, 131072, -4390985, 0, 131072, -4390984, 0, 131072, -4390983, 0, 131072, -4390982, 0, 131072, -4390981, 0, 131072, -4390980, 0, 131072, -4390979, 0, 131072, -4390978, 0, 131072, -4390977, 0, 131072, -4390976, 0, 131072, -4390975, 0, 131072, -4390974, 0, 131072, -4390973, 0, 131072, -4390972, 0, 131072, -4390971, 0, 131072, -4390970, 0, 131072, -4390969, 0, 131072, -4390968, 0, 131072, -4390967, 0, 131072, -4390966, 0, 131072, -4390965, 0, 131072, -4390964, 0, 131072, -4390963, 0, 131072, -4390962, 0, 131072, -4390961, 0, 131072, -4390960, 0, 131072, -4390959, 0, 131072, -4390958, 0, 131072, -4390957, 0, 131072, -4390956, 0, 131072, -4390955, 0, 131072, -4390954, 0, 131072, -4390953, 0, 131072, -4390952, 0, 131072, -4390951, 0, 131072, -4390950, 0, 131072, -4390949, 0, 131072, -4390948, 0, 131072, -4390947, 0, 131072, -4390946, 0, 131072, -4390945, 0, 131072, -4390944, 0, 131072, -4390943, 0, 131072, -4390942, 0, 131072, -4390941, 0, 131072, -4390940, 0, 131072, -4390939, 0, 131072, -4390938, 0, 131072, -4390937, 0, 131072, -4390936, 0, 131072, -4390935, 0, 131072, -4390934, 0, 131072, -4390933, 0, 131072, -4390932, 0, 131072, -4390931, 0, 131072, -4390930, 0, 131072, -4390929, 0, 131072, -4390928, 0, 131072, -4390927, 0, 131072, -4390926, 0, 131072, -4390925, 0, 131072, -4390924, 0, 131072, -4390923, 0, 131072, -4390922, 0, 131072, -4390921, 0, 131072, -4390920, 0, 131072, -4390919, 0, 131072, -4390918, 0, 131072, -4390917, 0, 131072, -4390916, 0, 131072, -4390915, 0, 131072, -4390914, 0, 131072, -4390913, 0, 131072, -4456448, 0, 131072, -4456447, 0, 131072, -4456446, 0, 131072, -4456445, 0, 131072, -4456444, 0, 131072, -4456443, 0, 131072, -4456442, 0, 131072, -4456441, 0, 131072, -4456440, 0, 131072, -4456439, 0, 131072, -4456438, 0, 131072, -4456437, 0, 131072, -4456436, 0, 131072, -4456435, 0, 131072, -4456434, 0, 131072, -4456433, 0, 131072, -4456432, 0, 131072, -4456431, 0, 131072, -4456430, 0, 131072, -4456429, 0, 131072, -4456428, 0, 131072, -4456427, 0, 131072, -4456426, 0, 131072, -4456425, 0, 131072, -4456424, 0, 131072, -4456423, 0, 131072, -4456422, 0, 131072, -4456421, 0, 131072, -4456420, 0, 131072, -4456419, 0, 131072, -4456418, 0, 131072, -4456417, 0, 131072, -4456416, 0, 131072, -4456415, 0, 131072, -4456414, 0, 131072, -4456413, 0, 131072, -4456412, 0, 131072, -4456411, 0, 131072, -4456410, 0, 131072, -4456409, 0, 131072, -4456408, 0, 131072, -4456407, 0, 131072, -4456406, 0, 131072, -4456405, 0, 131072, -4456404, 0, 131072, -4456403, 0, 131072, -4456402, 0, 131072, -4456401, 0, 131072, -4456400, 0, 131072, -4456399, 0, 131072, -4456398, 0, 131072, -4456397, 0, 131072, -4456396, 0, 131072, -4456395, 0, 131072, -4456394, 0, 131072, -4456393, 0, 131072, -4456392, 0, 131072, -4456391, 0, 131072, -4456390, 0, 131072, -4456389, 0, 131072, -4456388, 0, 131072, -4456387, 0, 131072, -4456386, 0, 131072, -4456385, 0, 131072, -4456384, 0, 131072, -4456383, 0, 131072, -4456382, 0, 131072, -4456381, 0, 131072, -4456380, 0, 131072, -4456379, 0, 131072, -4456378, 0, 131072, -4456377, 0, 131072, -4456376, 0, 131072, -4456375, 0, 131072, -4456374, 0, 131072, -4456373, 0, 131072, -4456372, 0, 131072, -4456371, 0, 131072, -4456370, 0, 131072, -4456369, 0, 131072, -4456368, 0, 131072, -4456367, 0, 131072, -4456366, 0, 131072, -4456365, 0, 131072, -4456364, 0, 131072, -4456363, 0, 131072, -4456362, 0, 131072, -4456361, 0, 131072, -4456360, 0, 131072, -4456359, 0, 131072, -4456358, 0, 131072, -4456357, 0, 131072, -4456356, 0, 131072, -4456355, 0, 131072, -4456354, 0, 131072, -4456353, 0, 131072, -4456352, 0, 131072, -4456351, 0, 131072, -4456350, 0, 131072, -4456349, 0, 131072, -4456348, 0, 131072, -4456347, 0, 131072, -4456346, 0, 131072, -4456345, 0, 131072, -4456344, 0, 131072, -4456343, 0, 131072, -4456342, 0, 131072, -4456341, 0, 131072, -4456340, 0, 131072, -4456339, 0, 131072, -4456338, 0, 131072, -4456337, 0, 131072, -4456336, 0, 131072, -4456335, 0, 131072, -4456334, 0, 131072, -4456333, 0, 131072, -4456332, 0, 131072, -4456331, 0, 131072, -4456330, 0, 131072, -4456329, 0, 131072, -4456328, 0, 131072, -4456327, 0, 131072, -4456326, 0, 131072, -4456325, 0, 131072, -4456324, 0, 131072, -4456323, 0, 131072, -4456322, 0, 131072, -4456321, 0, 131072, -4456320, 0, 131072, -4456319, 0, 131072, -4456318, 0, 131072, -4456317, 0, 131072, -4456316, 0, 131072, -4456315, 0, 131072, -4456314, 0, 131072, -4325477, 0, 131072, -4325476, 0, 131072, -4325475, 0, 131072, -4325474, 0, 131072, -4325473, 0, 131072, -4325472, 0, 131072, -4325471, 0, 131072, -4325470, 0, 131072, -4325469, 0, 131072, -4325468, 0, 131072, -4325467, 0, 131072, -4325466, 0, 131072, -4325465, 0, 131072, -4325464, 0, 131072, -4325463, 0, 131072, -4325462, 0, 131072, -4325461, 0, 131072, -4325460, 0, 131072, -4325459, 0, 131072, -4325458, 0, 131072, -4325457, 0, 131072, -4325456, 0, 131072, -4325455, 0, 131072, -4325454, 0, 131072, -4325453, 0, 131072, -4325452, 0, 131072, -4325451, 0, 131072, -4325450, 0, 131072, -4325449, 0, 131072, -4325448, 0, 131072, -4325447, 0, 131072, -4325446, 0, 131072, -4325445, 0, 131072, -4325444, 0, 131072, -4325443, 0, 131072, -4325442, 0, 131072, -4325441, 0, 131072, -4325440, 0, 131072, -4325439, 0, 131072, -4325438, 0, 131072, -4325437, 0, 131072, -4325436, 0, 131072, -4325435, 0, 131072, -4325434, 0, 131072, -4325433, 0, 131072, -4325432, 0, 131072, -4325431, 0, 131072, -4325430, 0, 131072, -4325429, 0, 131072, -4325428, 0, 131072, -4325427, 0, 131072, -4325426, 0, 131072, -4325425, 0, 131072, -4325424, 0, 131072, -4325423, 0, 131072, -4325422, 0, 131072, -4325421, 0, 131072, -4325420, 0, 131072, -4325419, 0, 131072, -4325418, 0, 131072, -4325417, 0, 131072, -4325416, 0, 131072, -4325415, 0, 131072, -4325414, 0, 131072, -4325413, 0, 131072, -4325412, 0, 131072, -4325411, 0, 131072, -4325410, 0, 131072, -4325409, 0, 131072, -4325408, 0, 131072, -4325407, 0, 131072, -4325406, 0, 131072, -4325405, 0, 131072, -4325404, 0, 131072, -4325403, 0, 131072, -4325402, 0, 131072, -4325401, 0, 131072, -4325400, 0, 131072, -4325399, 0, 131072, -4325398, 0, 131072, -4325397, 0, 131072, -4325396, 0, 131072, -4325395, 0, 131072, -4325394, 0, 131072, -4325393, 0, 131072, -4325392, 0, 131072, -4325391, 0, 131072, -4325390, 0, 131072, -4325389, 0, 131072, -4325388, 0, 131072, -4325387, 0, 131072, -4325386, 0, 131072, -4325385, 0, 131072, -4325384, 0, 131072, -4325383, 0, 131072, -4325382, 0, 131072, -4325381, 0, 131072, -4325380, 0, 131072, -4325379, 0, 131072, -4325378, 0, 131072, -4325377, 0, 131072, -4390912, 0, 131072, -4390911, 0, 131072, -4390910, 0, 131072, -4390909, 0, 131072, -4390908, 0, 131072, -4390907, 0, 131072, -4390906, 0, 131072, -4390905, 0, 131072, -4390904, 0, 131072, -4390903, 0, 131072, -4390902, 0, 131072, -4390901, 0, 131072, -4390900, 0, 131072, -4390899, 0, 131072, -4390898, 0, 131072, -4390897, 0, 131072, -4390896, 0, 131072, -4390895, 0, 131072, -4390894, 0, 131072, -4390893, 0, 131072, -4390892, 0, 131072, -4390891, 0, 131072, -4390890, 0, 131072, -4390889, 0, 131072, -4390888, 0, 131072, -4390887, 0, 131072, -4390886, 0, 131072, -4390885, 0, 131072, -4390884, 0, 131072, -4390883, 0, 131072, -4390882, 0, 131072, -4390881, 0, 131072, -4390880, 0, 131072, -4390879, 0, 131072, -4390878, 0, 131072, -4390877, 0, 131072, -4390876, 0, 131072, -4390875, 0, 131072, -4390874, 0, 131072, -4390873, 0, 131072, -4390872, 0, 131072, -4390871, 0, 131072, -4390870, 0, 131072, -4390869, 0, 131072, -4390868, 0, 131072, -4390867, 0, 131072, -4390866, 0, 131072, -4390865, 0, 131072, -4390864, 0, 131072, -4390863, 0, 131072, -4390862, 0, 131072, -4390861, 0, 131072, -4390860, 0, 131072, -4390859, 0, 131072, -4390858, 0, 131072, -4390857, 0, 131072, -4390856, 0, 131072, -4390855, 0, 131072, -4390854, 0, 131072, -4390853, 0, 131072, -4390852, 0, 131072, -4390851, 0, 131072, -4390850, 0, 131072, -4390849, 0, 131072, -4390848, 0, 131072, -4390847, 0, 131072, -4390846, 0, 131072, -4390845, 0, 131072, -4390844, 0, 131072, -4390843, 0, 131072, -4390842, 0, 131072, -4390841, 0, 131072, -4390840, 0, 131072, -4390839, 0, 131072, -4390838, 0, 131072, -4390837, 0, 131072, -4390836, 0, 131072, -4390835, 0, 131072, -4390834, 0, 131072, -4390833, 0, 131072, -4390832, 0, 131072, -4390831, 0, 131072, -4390830, 0, 131072, -4390829, 0, 131072, -4390828, 0, 131072, -4390827, 0, 131072, -4390826, 0, 131072, -4390825, 0, 131072, -4390824, 0, 131072, -4390823, 0, 131072, -4390822, 0, 131072, -4390821, 0, 131072, -4390820, 0, 131072, -4390819, 0, 131072, -4390818, 0, 131072, -4390817, 0, 131072, -4390816, 0, 131072, -4390815, 0, 131072, -4390814, 0, 131072, -4390813, 0, 131072, -4390812, 0, 131072, -4390811, 0, 131072, -4390810, 0, 131072, -4390809, 0, 131072, -4390808, 0, 131072, -4390807, 0, 131072, -4390806, 0, 131072, -4390805, 0, 131072, -4390804, 0, 131072, -4390803, 0, 131072, -4390802, 0, 131072, -4390801, 0, 131072, -4390800, 0, 131072, -4390799, 0, 131072, -4390798, 0, 131072, -4390797, 0, 131072, -4390796, 0, 131072, -4390795, 0, 131072, -4390794, 0, 131072, -4390793, 0, 131072, -4390792, 0, 131072, -4390791, 0, 131072, -4390790, 0, 131072, -4390789, 0, 131072, -4390788, 0, 131072, -4390787, 0, 131072, -4390786, 0, 131072, -4390785, 0, 131072, -4390784, 0, 131072, -4390783, 0, 131072, -4390782, 0, 131072, -4390781, 0, 131072, -4390780, 0, 131072, -4390779, 0, 131072, -4390778, 0, 131072, -4390777, 0, 131072, -4390776, 0, 131072, -4259941, 0, 131072, -4259940, 0, 131072, -4259939, 0, 131072, -4259938, 0, 131072, -4259937, 0, 131072, -4259936, 0, 131072, -4259935, 0, 131072, -4259934, 0, 131072, -4259933, 0, 131072, -4259932, 0, 131072, -4259931, 0, 131072, -4259930, 0, 131072, -4259929, 0, 131072, -4259928, 0, 131072, -4259927, 0, 131072, -4259926, 0, 131072, -4259925, 0, 131072, -4259924, 0, 131072, -4259923, 0, 131072, -4259922, 0, 131072, -4259921, 0, 131072, -4259920, 0, 131072, -4259919, 0, 131072, -4259918, 0, 131072, -4259917, 0, 131072, -4259916, 0, 131072, -4259915, 0, 131072, -4259914, 0, 131072, -4259913, 0, 131072, -4259912, 0, 131072, -4259911, 0, 131072, -4259910, 0, 131072, -4259909, 0, 131072, -4259908, 0, 131072, -4259907, 0, 131072, -4259906, 0, 131072, -4259905, 0, 131072, -4259904, 0, 131072, -4259903, 0, 131072, -4259902, 0, 131072, -4259901, 0, 131072, -4259900, 0, 131072, -4259899, 0, 131072, -4259898, 0, 131072, -4259897, 0, 131072, -4259896, 0, 131072, -4259895, 0, 131072, -4259894, 0, 131072, -4259893, 0, 131072, -4259892, 0, 131072, -4259891, 0, 131072, -4259890, 0, 131072, -4259889, 0, 131072, -4259888, 0, 131072, -4259887, 0, 131072, -4259886, 0, 131072, -4259885, 0, 131072, -4259884, 0, 131072, -4259883, 0, 131072, -4259882, 0, 131072, -4259881, 0, 131072, -4259880, 0, 131072, -4259879, 0, 131072, -4259878, 0, 131072, -4259877, 0, 131072, -4259876, 0, 131072, -4259875, 0, 131072, -4259874, 0, 131072, -4259873, 0, 131072, -4259872, 0, 131072, -4259871, 0, 131072, -4259870, 0, 131072, -4259869, 0, 131072, -4259868, 0, 131072, -4259867, 0, 131072, -4259866, 0, 131072, -4259865, 0, 131072, -4259864, 0, 131072, -4259863, 0, 131072, -4259862, 0, 131072, -4259861, 0, 131072, -4259860, 0, 131072, -4259859, 0, 131072, -4259858, 0, 131072, -4259857, 0, 131072, -4259856, 0, 131072, -4259855, 0, 131072, -4259854, 0, 131072, -4259853, 0, 131072, -4259852, 0, 131072, -4259851, 0, 131072, -4259850, 0, 131072, -4259849, 0, 131072, -4259848, 0, 131072, -4259847, 0, 131072, -4259846, 0, 131072, -4259845, 0, 131072, -4259844, 0, 131072, -4259843, 0, 131072, -4259842, 0, 131072, -4259841, 0, 131072, -4325376, 0, 131072, -4325375, 0, 131072, -4325374, 0, 131072, -4325373, 0, 131072, -4325372, 0, 131072, -4325371, 0, 131072, -4325370, 0, 131072, -4325369, 0, 131072, -4325368, 0, 131072, -4325367, 0, 131072, -4325366, 0, 131072, -4325365, 0, 131072, -4325364, 0, 131072, -4325363, 0, 131072, -4325362, 0, 131072, -4325361, 0, 131072, -4325360, 0, 131072, -4325359, 0, 131072, -4325358, 0, 131072, -4325357, 0, 131072, -4325356, 0, 131072, -4325355, 0, 131072, -4325354, 0, 131072, -4325353, 0, 131072, -4325352, 0, 131072, -4325351, 0, 131072, -4325350, 0, 131072, -4325349, 0, 131072, -4325348, 0, 131072, -4325347, 0, 131072, -4325346, 0, 131072, -4325345, 0, 131072, -4325344, 0, 131072, -4325343, 0, 131072, -4325342, 0, 131072, -4325341, 0, 131072, -4325340, 0, 131072, -4325339, 0, 131072, -4325338, 0, 131072, -4325337, 0, 131072, -4325336, 0, 131072, -4325335, 0, 131072, -4325334, 0, 131072, -4325333, 0, 131072, -4325332, 0, 131072, -4325331, 0, 131072, -4325330, 0, 131072, -4325329, 0, 131072, -4325328, 0, 131072, -4325327, 0, 131072, -4325326, 0, 131072, -4325325, 0, 131072, -4325324, 0, 131072, -4325323, 0, 131072, -4325322, 0, 131072, -4325321, 0, 131072, -4325320, 0, 131072, -4325319, 0, 131072, -4325318, 0, 131072, -4325317, 0, 131072, -4325316, 0, 131072, -4325315, 0, 131072, -4325314, 0, 131072, -4325313, 0, 131072, -4325312, 0, 131072, -4325311, 0, 131072, -4325310, 0, 131072, -4325309, 0, 131072, -4325308, 0, 131072, -4325307, 0, 131072, -4325306, 0, 131072, -4325305, 0, 131072, -4325304, 0, 131072, -4325303, 0, 131072, -4325302, 0, 131072, -4325301, 0, 131072, -4325300, 0, 131072, -4325299, 0, 131072, -4325298, 0, 131072, -4325297, 0, 131072, -4325296, 0, 131072, -4325295, 0, 131072, -4325294, 0, 131072, -4325293, 0, 131072, -4325292, 0, 131072, -4325291, 0, 131072, -4325290, 0, 131072, -4325289, 0, 131072, -4325288, 0, 131072, -4325287, 0, 131072, -4325286, 0, 131072, -4325285, 0, 131072, -4325284, 0, 131072, -4325283, 0, 131072, -4325282, 0, 131072, -4325281, 0, 131072, -4325280, 0, 131072, -4325279, 0, 131072, -4325278, 0, 131072, -4325277, 0, 131072, -4325276, 0, 131072, -4325275, 0, 131072, -4325274, 0, 131072, -4325273, 0, 131072, -4325272, 0, 131072, -4325271, 0, 131072, -4325270, 0, 131072, -4325269, 0, 131072, -4325268, 0, 131072, -4325267, 0, 131072, -4325266, 0, 131072, -4325265, 0, 131072, -4325264, 0, 131072, -4325263, 0, 131072, -4325262, 0, 131072, -4325261, 0, 131072, -4325260, 0, 131072, -4325259, 0, 131072, -4325258, 0, 131072, -4325257, 0, 131072, -4325256, 0, 131072, -4325255, 0, 131072, -4325254, 0, 131072, -4325253, 0, 131072, -4325252, 0, 131072, -4325251, 0, 131072, -4325250, 0, 131072, -4325249, 0, 131072, -4325248, 0, 131072, -4325247, 0, 131072, -4325246, 0, 131072, -4325245, 0, 131072, -4325244, 0, 131072, -4325243, 0, 131072, -4325242, 0, 131072, -4325241, 0, 131072, -4325240, 0, 131072, -4325239, 0, 131072, -4194406, 0, 131072, -4194405, 0, 131072, -4194404, 0, 131072, -4194403, 0, 131072, -4194402, 0, 131072, -4194401, 0, 131072, -4194400, 0, 131072, -4194399, 0, 131072, -4194398, 0, 131072, -4194397, 0, 131072, -4194396, 0, 131072, -4194395, 0, 131072, -4194394, 0, 131072, -4194393, 0, 131072, -4194392, 0, 131072, -4194391, 0, 131072, -4194390, 0, 131072, -4194389, 0, 131072, -4194388, 0, 131072, -4194387, 0, 131072, -4194386, 0, 131072, -4194385, 0, 131072, -4194384, 0, 131072, -4194383, 0, 131072, -4194382, 0, 131072, -4194381, 0, 131072, -4194380, 0, 131072, -4194379, 0, 131072, -4194378, 0, 131072, -4194377, 0, 131072, -4194376, 0, 131072, -4194375, 0, 131072, -4194374, 0, 131072, -4194373, 0, 131072, -4194372, 0, 131072, -4194371, 0, 131072, -4194370, 0, 131072, -4194369, 0, 131072, -4194368, 0, 131072, -4194367, 0, 131072, -4194366, 0, 131072, -4194365, 0, 131072, -4194364, 0, 131072, -4194363, 0, 131072, -4194362, 0, 131072, -4194361, 0, 131072, -4194360, 0, 131072, -4194359, 0, 131072, -4194358, 0, 131072, -4194357, 0, 131072, -4194356, 0, 131072, -4194355, 0, 131072, -4194354, 0, 131072, -4194353, 0, 131072, -4194352, 0, 131072, -4194351, 0, 131072, -4194350, 0, 131072, -4194349, 0, 131072, -4194348, 0, 131072, -4194347, 0, 131072, -4194346, 0, 131072, -4194345, 0, 131072, -4194344, 0, 131072, -4194343, 0, 131072, -4194342, 0, 131072, -4194341, 0, 131072, -4194340, 0, 131072, -4194339, 0, 131072, -4194338, 0, 131072, -4194337, 0, 131072, -4194336, 0, 131072, -4194335, 0, 131072, -4194334, 0, 131072, -4194333, 0, 131072, -4194332, 0, 131072, -4194331, 0, 131072, -4194330, 0, 131072, -4194329, 0, 131072, -4194328, 0, 131072, -4194327, 0, 131072, -4194326, 0, 131072, -4194325, 0, 131072, -4194324, 0, 131072, -4194323, 0, 131072, -4194322, 0, 131072, -4194321, 0, 131072, -4194320, 0, 131072, -4194319, 0, 131072, -4194318, 0, 131072, -4194317, 0, 131072, -4194316, 0, 131072, -4194315, 0, 131072, -4194314, 0, 131072, -4194313, 0, 131072, -4194312, 0, 131072, -4194311, 0, 131072, -4194310, 0, 131072, -4194309, 0, 131072, -4194308, 0, 131072, -4194307, 0, 131072, -4194306, 0, 131072, -4194305, 0, 131072, -4259840, 0, 131072, -4259839, 0, 131072, -4259838, 0, 131072, -4259837, 0, 131072, -4259836, 0, 131072, -4259835, 0, 131072, -4259834, 0, 131072, -4259833, 0, 131072, -4259832, 0, 131072, -4259831, 0, 131072, -4259830, 0, 131072, -4259829, 0, 131072, -4259828, 0, 131072, -4259827, 0, 131072, -4259826, 0, 131072, -4259825, 0, 131072, -4259824, 0, 131072, -4259823, 0, 131072, -4259822, 0, 131072, -4259821, 0, 131072, -4259820, 0, 131072, -4259819, 0, 131072, -4259818, 0, 131072, -4259817, 0, 131072, -4259816, 0, 131072, -4259815, 0, 131072, -4259814, 0, 131072, -4259813, 0, 131072, -4259812, 0, 131072, -4259811, 0, 131072, -4259810, 0, 131072, -4259809, 0, 131072, -4259808, 0, 131072, -4259807, 0, 131072, -4259806, 0, 131072, -4259805, 0, 131072, -4259804, 0, 131072, -4259803, 0, 131072, -4259802, 0, 131072, -4259801, 0, 131072, -4259800, 0, 131072, -4259799, 0, 131072, -4259798, 0, 131072, -4259797, 0, 131072, -4259796, 0, 131072, -4259795, 0, 131072, -4259794, 0, 131072, -4259793, 0, 131072, -4259792, 0, 131072, -4259791, 0, 131072, -4259790, 0, 131072, -4259789, 0, 131072, -4259788, 0, 131072, -4259787, 0, 131072, -4259786, 0, 131072, -4259785, 0, 131072, -4259784, 0, 131072, -4259783, 0, 131072, -4259782, 0, 131072, -4259781, 0, 131072, -4259780, 0, 131072, -4259779, 0, 131072, -4259778, 0, 131072, -4259777, 0, 131072, -4259776, 0, 131072, -4259775, 0, 131072, -4259774, 0, 131072, -4259773, 0, 131072, -4259772, 0, 131072, -4259771, 0, 131072, -4259770, 0, 131072, -4259769, 0, 131072, -4259768, 0, 131072, -4259767, 0, 131072, -4259766, 0, 131072, -4259765, 0, 131072, -4259764, 0, 131072, -4259763, 0, 131072, -4259762, 0, 131072, -4259761, 0, 131072, -4259760, 0, 131072, -4259759, 0, 131072, -4259758, 0, 131072, -4259757, 0, 131072, -4259756, 0, 131072, -4259755, 0, 131072, -4259754, 0, 131072, -4259753, 0, 131072, -4259752, 0, 131072, -4259751, 0, 131072, -4259750, 0, 131072, -4259749, 0, 131072, -4259748, 0, 131072, -4259747, 0, 131072, -4259746, 0, 131072, -4259745, 0, 131072, -4259744, 0, 131072, -4259743, 0, 131072, -4259742, 0, 131072, -4259741, 0, 131072, -4259740, 0, 131072, -4259739, 0, 131072, -4259738, 0, 131072, -4259737, 0, 131072, -4259736, 0, 131072, -4259735, 0, 131072, -4259734, 0, 131072, -4259733, 0, 131072, -4259732, 0, 131072, -4259731, 0, 131072, -4259730, 0, 131072, -4259729, 0, 131072, -4259728, 0, 131072, -4259727, 0, 131072, -4259726, 0, 131072, -4259725, 0, 131072, -4259724, 0, 131072, -4259723, 0, 131072, -4259722, 0, 131072, -4259721, 0, 131072, -4259720, 0, 131072, -4259719, 0, 131072, -4259718, 0, 131072, -4259717, 0, 131072, -4259716, 0, 131072, -4259715, 0, 131072, -4259714, 0, 131072, -4259713, 0, 131072, -4259712, 0, 131072, -4259711, 0, 131072, -4259710, 0, 131072, -4259709, 0, 131072, -4259708, 0, 131072, -4259707, 0, 131072, -4259706, 0, 131072, -4259705, 0, 131072, -4259704, 0, 131072, -4259703, 0, 131072, -4259702, 0, 131072, -4128870, 0, 131072, -4128869, 0, 131072, -4128868, 0, 131072, -4128867, 0, 131072, -4128866, 0, 131072, -4128865, 0, 131072, -4128864, 0, 131072, -4128863, 0, 131072, -4128862, 0, 131072, -4128861, 0, 131072, -4128860, 0, 131072, -4128859, 0, 131072, -4128858, 0, 131072, -4128857, 0, 131072, -4128856, 0, 131072, -4128855, 0, 131072, -4128854, 0, 131072, -4128853, 0, 131072, -4128852, 0, 131072, -4128851, 0, 131072, -4128850, 0, 131072, -4128849, 0, 131072, -4128848, 0, 131072, -4128847, 0, 131072, -4128846, 0, 131072, -4128845, 0, 131072, -4128844, 0, 131072, -4128843, 0, 131072, -4128842, 0, 131072, -4128841, 0, 131072, -4128840, 0, 131072, -4128839, 0, 131072, -4128838, 0, 131072, -4128837, 0, 131072, -4128836, 0, 131072, -4128835, 0, 131072, -4128834, 0, 131072, -4128833, 0, 131072, -4128832, 0, 131072, -4128831, 0, 131072, -4128830, 0, 131072, -4128829, 0, 131072, -4128828, 0, 131072, -4128827, 0, 131072, -4128826, 0, 131072, -4128825, 0, 131072, -4128824, 0, 131072, -4128823, 0, 131072, -4128822, 0, 131072, -4128821, 0, 131072, -4128820, 0, 131072, -4128819, 0, 131072, -4128818, 0, 131072, -4128817, 0, 131072, -4128816, 0, 131072, -4128815, 0, 131072, -4128814, 0, 131072, -4128813, 0, 131072, -4128812, 0, 131072, -4128811, 0, 131072, -4128810, 0, 131072, -4128809, 0, 131072, -4128808, 0, 131072, -4128807, 0, 131072, -4128806, 0, 131072, -4128805, 0, 131072, -4128804, 0, 131072, -4128803, 0, 131072, -4128802, 0, 131072, -4128801, 0, 131072, -4128800, 0, 131072, -4128799, 0, 131072, -4128798, 0, 131072, -4128797, 0, 131072, -4128796, 0, 131072, -4128795, 0, 131072, -4128794, 0, 131072, -4128793, 0, 131072, -4128792, 0, 131072, -4128791, 0, 131072, -4128790, 0, 131072, -4128789, 0, 131072, -4128788, 0, 131072, -4128787, 0, 131072, -4128786, 0, 131072, -4128785, 0, 131072, -4128784, 0, 131072, -4128783, 0, 131072, -4128782, 0, 131072, -4128781, 0, 131072, -4128780, 0, 131072, -4128779, 0, 131072, -4128778, 0, 131072, -4128777, 0, 131072, -4128776, 0, 131072, -4128775, 0, 131072, -4128774, 0, 131072, -4128773, 0, 131072, -4128772, 0, 131072, -4128771, 0, 131072, -4128770, 0, 131072, -4128769, 0, 131072, -4194304, 0, 131072, -4194303, 0, 131072, -4194302, 0, 131072, -4194301, 0, 131072, -4194300, 0, 131072, -4194299, 0, 131072, -4194298, 0, 131072, -4194297, 0, 131072, -4194296, 0, 131072, -4194295, 0, 131072, -4194294, 0, 131072, -4194293, 0, 131072, -4194292, 0, 131072, -4194291, 0, 131072, -4194290, 0, 131072, -4194289, 0, 131072, -4194288, 0, 131072, -4194287, 0, 131072, -4194286, 0, 131072, -4194285, 0, 131072, -4194284, 0, 131072, -4194283, 0, 131072, -4194282, 0, 131072, -4194281, 0, 131072, -4194280, 0, 131072, -4194279, 0, 131072, -4194278, 0, 131072, -4194277, 0, 131072, -4194276, 0, 131072, -4194275, 0, 131072, -4194274, 0, 131072, -4194273, 0, 131072, -4194272, 0, 131072, -4194271, 0, 131072, -4194270, 0, 131072, -4194269, 0, 131072, -4194268, 0, 131072, -4194267, 0, 131072, -4194266, 0, 131072, -4194265, 0, 131072, -4194264, 0, 131072, -4194263, 0, 131072, -4194262, 0, 131072, -4194261, 0, 131072, -4194260, 0, 131072, -4194259, 0, 131072, -4194258, 0, 131072, -4194257, 0, 131072, -4194256, 0, 131072, -4194255, 0, 131072, -4194254, 0, 131072, -4194253, 0, 131072, -4194252, 0, 131072, -4194251, 0, 131072, -4194250, 0, 131072, -4194249, 0, 131072, -4194248, 0, 131072, -4194247, 0, 131072, -4194246, 0, 131072, -4194245, 0, 131072, -4194244, 0, 131072, -4194243, 0, 131072, -4194242, 0, 131072, -4194241, 0, 131072, -4194240, 0, 131072, -4194239, 0, 131072, -4194238, 0, 131072, -4194237, 0, 131072, -4194236, 0, 131072, -4194235, 0, 131072, -4194234, 0, 131072, -4194233, 0, 131072, -4194232, 0, 131072, -4194231, 0, 131072, -4194230, 0, 131072, -4194229, 0, 131072, -4194228, 0, 131072, -4194227, 0, 131072, -4194226, 0, 131072, -4194225, 0, 131072, -4194224, 0, 131072, -4194223, 0, 131072, -4194222, 0, 131072, -4194221, 0, 131072, -4194220, 0, 131072, -4194219, 0, 131072, -4194218, 0, 131072, -4194217, 0, 131072, -4194216, 0, 131072, -4194215, 0, 131072, -4194214, 0, 131072, -4194213, 0, 131072, -4194212, 0, 131072, -4194211, 0, 131072, -4194210, 0, 131072, -4194209, 0, 131072, -4194208, 0, 131072, -4194207, 0, 131072, -4194206, 0, 131072, -4194205, 0, 131072, -4194204, 0, 131072, -4194203, 0, 131072, -4194202, 0, 131072, -4194201, 0, 131072, -4194200, 0, 131072, -4194199, 0, 131072, -4194198, 0, 131072, -4194197, 0, 131072, -4194196, 0, 131072, -4194195, 0, 131072, -4194194, 0, 131072, -4194193, 0, 131072, -4194192, 0, 131072, -4194191, 0, 131072, -4194190, 0, 131072, -4194189, 0, 131072, -4194188, 0, 131072, -4194187, 0, 131072, -4194186, 0, 131072, -4194185, 0, 131072, -4194184, 0, 131072, -4194183, 0, 131072, -4194182, 0, 131072, -4194181, 0, 131072, -4194180, 0, 131072, -4194179, 0, 131072, -4194178, 0, 131072, -4194177, 0, 131072, -4194176, 0, 131072, -4194175, 0, 131072, -4194174, 0, 131072, -4194173, 0, 131072, -4194172, 0, 131072, -4194171, 0, 131072, -4194170, 0, 131072, -4194169, 0, 131072, -4194168, 0, 131072, -4194167, 0, 131072, -4194166, 0, 131072, -4194165, 0, 131072, -4063334, 0, 131072, -4063333, 0, 131072, -4063332, 0, 131072, -4063331, 0, 131072, -4063330, 0, 131072, -4063329, 0, 131072, -4063328, 0, 131072, -4063327, 0, 131072, -4063326, 0, 131072, -4063325, 0, 131072, -4063324, 0, 131072, -4063323, 0, 131072, -4063322, 0, 131072, -4063321, 0, 131072, -4063320, 0, 131072, -4063319, 0, 131072, -4063318, 0, 131072, -4063317, 0, 131072, -4063316, 0, 131072, -4063315, 0, 131072, -4063314, 0, 131072, -4063313, 0, 131072, -4063312, 0, 131072, -4063311, 0, 131072, -4063310, 0, 131072, -4063309, 0, 131072, -4063308, 0, 131072, -4063307, 0, 131072, -4063306, 0, 131072, -4063305, 0, 131072, -4063304, 0, 131072, -4063303, 0, 131072, -4063302, 0, 131072, -4063301, 0, 131072, -4063300, 0, 131072, -4063299, 0, 131072, -4063298, 0, 131072, -4063297, 0, 131072, -4063296, 0, 131072, -4063295, 0, 131072, -4063294, 0, 131072, -4063293, 0, 131072, -4063292, 0, 131072, -4063291, 0, 131072, -4063290, 0, 131072, -4063289, 0, 131072, -4063288, 0, 131072, -4063287, 0, 131072, -4063286, 0, 131072, -4063285, 0, 131072, -4063284, 0, 131072, -4063283, 0, 131072, -4063282, 0, 131072, -4063281, 0, 131072, -4063280, 0, 131072, -4063279, 0, 131072, -4063278, 0, 131072, -4063277, 0, 131072, -4063276, 0, 131072, -4063275, 0, 131072, -4063274, 0, 131072, -4063273, 0, 131072, -4063272, 0, 131072, -4063271, 0, 131072, -4063270, 0, 131072, -4063269, 0, 131072, -4063268, 0, 131072, -4063267, 0, 131072, -4063266, 0, 131072, -4063265, 0, 131072, -4063264, 0, 131072, -4063263, 0, 131072, -4063262, 0, 131072, -4063261, 0, 131072, -4063260, 0, 131072, -4063259, 0, 131072, -4063258, 0, 131072, -4063257, 0, 131072, -4063256, 0, 131072, -4063255, 0, 131072, -4063254, 0, 131072, -4063253, 0, 131072, -4063252, 0, 131072, -4063251, 0, 131072, -4063250, 0, 131072, -4063249, 0, 131072, -4063248, 0, 131072, -4063247, 0, 131072, -4063246, 0, 131072, -4063245, 0, 131072, -4063244, 0, 131072, -4063243, 0, 131072, -4063242, 0, 131072, -4063241, 0, 131072, -4063240, 0, 131072, -4063239, 0, 131072, -4063238, 0, 131072, -4063237, 0, 131072, -4063236, 0, 131072, -4063235, 0, 131072, -4063234, 0, 131072, -4063233, 0, 131072, -4128768, 0, 131072, -4128767, 0, 131072, -4128766, 0, 131072, -4128765, 0, 131072, -4128764, 0, 131072, -4128763, 0, 131072, -4128762, 0, 131072, -4128761, 0, 131072, -4128760, 0, 131072, -4128759, 0, 131072, -4128758, 0, 131072, -4128757, 0, 131072, -4128756, 0, 131072, -4128755, 0, 131072, -4128754, 0, 131072, -4128753, 0, 131072, -4128752, 0, 131072, -4128751, 0, 131072, -4128750, 0, 131072, -4128749, 0, 131072, -4128748, 0, 131072, -4128747, 0, 131072, -4128746, 0, 131072, -4128745, 0, 131072, -4128744, 0, 131072, -4128743, 0, 131072, -4128742, 0, 131072, -4128741, 0, 131072, -4128740, 0, 131072, -4128739, 0, 131072, -4128738, 0, 131072, -4128737, 0, 131072, -4128736, 0, 131072, -4128735, 0, 131072, -4128734, 0, 131072, -4128733, 0, 131072, -4128732, 0, 131072, -4128731, 0, 131072, -4128730, 0, 131072, -4128729, 0, 131072, -4128728, 0, 131072, -4128727, 0, 131072, -4128726, 0, 131072, -4128725, 0, 131072, -4128724, 0, 131072, -4128723, 0, 131072, -4128722, 0, 131072, -4128721, 0, 131072, -4128720, 0, 131072, -4128719, 0, 131072, -4128718, 0, 131072, -4128717, 0, 131072, -4128716, 0, 131072, -4128715, 0, 131072, -4128714, 0, 131072, -4128713, 0, 131072, -4128712, 0, 131072, -4128711, 0, 131072, -4128710, 0, 131072, -4128709, 0, 131072, -4128708, 0, 131072, -4128707, 0, 131072, -4128706, 0, 131072, -4128705, 0, 131072, -4128704, 0, 131072, -4128703, 0, 131072, -4128702, 0, 131072, -4128701, 0, 131072, -4128700, 0, 131072, -4128699, 0, 131072, -4128698, 0, 131072, -4128697, 0, 131072, -4128696, 0, 131072, -4128695, 0, 131072, -4128694, 0, 131072, -4128693, 0, 131072, -4128692, 0, 131072, -4128691, 0, 131072, -4128690, 0, 131072, -4128689, 0, 131072, -4128688, 0, 131072, -4128687, 0, 131072, -4128686, 0, 131072, -4128685, 0, 131072, -4128684, 0, 131072, -4128683, 0, 131072, -4128682, 0, 131072, -4128681, 0, 131072, -4128680, 0, 131072, -4128679, 0, 131072, -4128678, 0, 131072, -4128677, 0, 131072, -4128676, 0, 131072, -4128675, 0, 131072, -4128674, 0, 131072, -4128673, 0, 131072, -4128672, 0, 131072, -4128671, 0, 131072, -4128670, 0, 131072, -4128669, 0, 131072, -4128668, 0, 131072, -4128667, 0, 131072, -4128666, 0, 131072, -4128665, 0, 131072, -4128664, 0, 131072, -4128663, 0, 131072, -4128662, 0, 131072, -4128661, 0, 131072, -4128660, 0, 131072, -4128659, 0, 131072, -4128658, 0, 131072, -4128657, 0, 131072, -4128656, 0, 131072, -4128655, 0, 131072, -4128654, 0, 131072, -4128653, 0, 131072, -4128652, 0, 131072, -4128651, 0, 131072, -4128650, 0, 131072, -4128649, 0, 131072, -4128648, 0, 131072, -4128647, 0, 131072, -4128646, 0, 131072, -4128645, 0, 131072, -4128644, 0, 131072, -4128643, 0, 131072, -4128642, 0, 131072, -4128641, 0, 131072, -4128640, 0, 131072, -4128639, 0, 131072, -4128638, 0, 131072, -4128637, 0, 131072, -4128636, 0, 131072, -4128635, 0, 131072, -4128634, 0, 131072, -4128633, 0, 131072, -4128632, 0, 131072, -4128631, 0, 131072, -4128630, 0, 131072, -4128629, 0, 131072, -4128628, 0, 131072, -3997799, 0, 131072, -3997798, 0, 131072, -3997797, 0, 131072, -3997796, 0, 131072, -3997795, 0, 131072, -3997794, 0, 131072, -3997793, 0, 131072, -3997792, 0, 131072, -3997791, 0, 131072, -3997790, 0, 131072, -3997789, 0, 131072, -3997788, 0, 131072, -3997787, 0, 131072, -3997786, 0, 131072, -3997785, 0, 131072, -3997784, 0, 131072, -3997783, 0, 131072, -3997782, 0, 131072, -3997781, 0, 131072, -3997780, 0, 131072, -3997779, 0, 131072, -3997778, 0, 131072, -3997777, 0, 131072, -3997776, 0, 131072, -3997775, 0, 131072, -3997774, 0, 131072, -3997773, 0, 131072, -3997772, 0, 131072, -3997771, 0, 131072, -3997770, 0, 131072, -3997769, 0, 131072, -3997768, 0, 131072, -3997767, 0, 131072, -3997766, 0, 131072, -3997765, 0, 131072, -3997764, 0, 131072, -3997763, 0, 131072, -3997762, 0, 131072, -3997761, 0, 131072, -3997760, 0, 131072, -3997759, 0, 131072, -3997758, 0, 131072, -3997757, 0, 131072, -3997756, 0, 131072, -3997755, 0, 131072, -3997754, 0, 131072, -3997753, 0, 131072, -3997752, 0, 131072, -3997751, 0, 131072, -3997750, 0, 131072, -3997749, 0, 131072, -3997748, 0, 131072, -3997747, 0, 131072, -3997746, 0, 131072, -3997745, 0, 131072, -3997744, 0, 131072, -3997743, 0, 131072, -3997742, 0, 131072, -3997741, 0, 131072, -3997740, 0, 131072, -3997739, 0, 131072, -3997738, 0, 131072, -3997737, 0, 131072, -3997736, 0, 131072, -3997735, 0, 131072, -3997734, 0, 131072, -3997733, 0, 131072, -3997732, 0, 131072, -3997731, 0, 131072, -3997730, 0, 131072, -3997729, 0, 131072, -3997728, 0, 131072, -3997727, 0, 131072, -3997726, 0, 131072, -3997725, 0, 131072, -3997724, 0, 131072, -3997723, 0, 131072, -3997722, 0, 131072, -3997721, 0, 131072, -3997720, 0, 131072, -3997719, 0, 131072, -3997718, 0, 131072, -3997717, 0, 131072, -3997716, 0, 131072, -3997715, 0, 131072, -3997714, 0, 131072, -3997713, 0, 131072, -3997712, 0, 131072, -3997711, 0, 131072, -3997710, 0, 131072, -3997709, 0, 131072, -3997708, 0, 131072, -3997707, 0, 131072, -3997706, 0, 131072, -3997705, 0, 131072, -3997704, 0, 131072, -3997703, 0, 131072, -3997702, 0, 131072, -3997701, 0, 131072, -3997700, 0, 131072, -3997699, 0, 131072, -3997698, 0, 131072, -3997697, 0, 131072, -4063232, 0, 131072, -4063231, 0, 131072, -4063230, 0, 131072, -4063229, 0, 131072, -4063228, 0, 131072, -4063227, 0, 131072, -4063226, 0, 131072, -4063225, 0, 131072, -4063224, 0, 131072, -4063223, 0, 131072, -4063222, 0, 131072, -4063221, 0, 131072, -4063220, 0, 131072, -4063219, 0, 131072, -4063218, 0, 131072, -4063217, 0, 131072, -4063216, 0, 131072, -4063215, 0, 131072, -4063214, 0, 131072, -4063213, 0, 131072, -4063212, 0, 131072, -4063211, 0, 131072, -4063210, 0, 131072, -4063209, 0, 131072, -4063208, 0, 131072, -4063207, 0, 131072, -4063206, 0, 131072, -4063205, 0, 131072, -4063204, 0, 131072, -4063203, 0, 131072, -4063202, 0, 131072, -4063201, 0, 131072, -4063200, 0, 131072, -4063199, 0, 131072, -4063198, 0, 131072, -4063197, 0, 131072, -4063196, 0, 131072, -4063195, 0, 131072, -4063194, 0, 131072, -4063193, 0, 131072, -4063192, 0, 131072, -4063191, 0, 131072, -4063190, 0, 131072, -4063189, 0, 131072, -4063188, 0, 131072, -4063187, 0, 131072, -4063186, 0, 131072, -4063185, 0, 131072, -4063184, 0, 131072, -4063183, 0, 131072, -4063182, 0, 131072, -4063181, 0, 131072, -4063180, 0, 131072, -4063179, 0, 131072, -4063178, 0, 131072, -4063177, 0, 131072, -4063176, 0, 131072, -4063175, 0, 131072, -4063174, 0, 131072, -4063173, 0, 131072, -4063172, 0, 131072, -4063171, 0, 131072, -4063170, 0, 131072, -4063169, 0, 131072, -4063168, 0, 131072, -4063167, 0, 131072, -4063166, 0, 131072, -4063165, 0, 131072, -4063164, 0, 131072, -4063163, 0, 131072, -4063162, 0, 131072, -4063161, 0, 131072, -4063160, 0, 131072, -4063159, 0, 131072, -4063158, 0, 131072, -4063157, 0, 131072, -4063156, 0, 131072, -4063155, 0, 131072, -4063154, 0, 131072, -4063153, 0, 131072, -4063152, 0, 131072, -4063151, 0, 131072, -4063150, 0, 131072, -4063149, 0, 131072, -4063148, 0, 131072, -4063147, 0, 131072, -4063146, 0, 131072, -4063145, 0, 131072, -4063144, 0, 131072, -4063143, 0, 131072, -4063142, 0, 131072, -4063141, 0, 131072, -4063140, 0, 131072, -4063139, 0, 131072, -4063138, 0, 131072, -4063137, 0, 131072, -4063136, 0, 131072, -4063135, 0, 131072, -4063134, 0, 131072, -4063133, 0, 131072, -4063132, 0, 131072, -4063131, 0, 131072, -4063130, 0, 131072, -4063129, 0, 131072, -4063128, 0, 131072, -4063127, 0, 131072, -4063126, 0, 131072, -4063125, 0, 131072, -4063124, 0, 131072, -4063123, 0, 131072, -4063122, 0, 131072, -4063121, 0, 131072, -4063120, 0, 131072, -4063119, 0, 131072, -4063118, 0, 131072, -4063117, 0, 131072, -4063116, 0, 131072, -4063115, 0, 131072, -4063114, 0, 131072, -4063113, 0, 131072, -4063112, 0, 131072, -4063111, 0, 131072, -4063110, 0, 131072, -4063109, 0, 131072, -4063108, 0, 131072, -4063107, 0, 131072, -4063106, 0, 131072, -4063105, 0, 131072, -4063104, 0, 131072, -4063103, 0, 131072, -4063102, 0, 131072, -4063101, 0, 131072, -4063100, 0, 131072, -4063099, 0, 131072, -4063098, 0, 131072, -4063097, 0, 131072, -4063096, 0, 131072, -4063095, 0, 131072, -4063094, 0, 131072, -4063093, 0, 131072, -4063092, 0, 131072, -4063091, 0, 131072, -3932263, 0, 131072, -3932262, 0, 131072, -3932261, 0, 131072, -3932260, 0, 131072, -3932259, 0, 131072, -3932258, 0, 131072, -3932257, 0, 131072, -3932256, 0, 131072, -3932255, 0, 131072, -3932254, 0, 131072, -3932253, 0, 131072, -3932252, 0, 131072, -3932251, 0, 131072, -3932250, 0, 131072, -3932249, 0, 131072, -3932248, 0, 131072, -3932247, 0, 131072, -3932246, 0, 131072, -3932245, 0, 131072, -3932244, 0, 131072, -3932243, 0, 131072, -3932242, 0, 131072, -3932241, 0, 131072, -3932240, 0, 131072, -3932239, 0, 131072, -3932238, 0, 131072, -3932237, 0, 131072, -3932236, 0, 131072, -3932235, 0, 131072, -3932234, 0, 131072, -3932233, 0, 131072, -3932232, 0, 131072, -3932231, 0, 131072, -3932230, 0, 131072, -3932229, 0, 131072, -3932228, 0, 131072, -3932227, 0, 131072, -3932226, 0, 131072, -3932225, 0, 131072, -3932224, 0, 131072, -3932223, 0, 131072, -3932222, 0, 131072, -3932221, 0, 131072, -3932220, 0, 131072, -3932219, 0, 131072, -3932218, 0, 131072, -3932217, 0, 131072, -3932216, 0, 131072, -3932215, 0, 131072, -3932214, 0, 131072, -3932213, 0, 131072, -3932212, 0, 131072, -3932211, 0, 131072, -3932210, 0, 131072, -3932209, 0, 131072, -3932208, 0, 131072, -3932207, 0, 131072, -3932206, 0, 131072, -3932205, 0, 131072, -3932204, 0, 131072, -3932203, 0, 131072, -3932202, 0, 131072, -3932201, 0, 131072, -3932200, 0, 131072, -3932199, 0, 131072, -3932198, 0, 131072, -3932197, 0, 131072, -3932196, 0, 131072, -3932195, 0, 131072, -3932194, 0, 131072, -3932193, 0, 131072, -3932192, 0, 131072, -3932191, 0, 131072, -3932190, 0, 131072, -3932189, 0, 131072, -3932188, 0, 131072, -3932187, 0, 131072, -3932186, 0, 131072, -3932185, 0, 131072, -3932184, 0, 131072, -3932183, 0, 131072, -3932182, 0, 131072, -3932181, 0, 131072, -3932180, 0, 131072, -3932179, 0, 131072, -3932178, 0, 131072, -3932177, 0, 131072, -3932176, 0, 131072, -3932175, 0, 131072, -3932174, 0, 131072, -3932173, 0, 131072, -3932172, 0, 131072, -3932171, 0, 131072, -3932170, 0, 131072, -3932169, 0, 131072, -3932168, 0, 131072, -3932167, 0, 131072, -3932166, 0, 131072, -3932165, 0, 131072, -3932164, 0, 131072, -3932163, 0, 131072, -3932162, 0, 131072, -3932161, 0, 131072, -3997696, 0, 131072, -3997695, 0, 131072, -3997694, 0, 131072, -3997693, 0, 131072, -3997692, 0, 131072, -3997691, 0, 131072, -3997690, 0, 131072, -3997689, 0, 131072, -3997688, 0, 131072, -3997687, 0, 131072, -3997686, 0, 131072, -3997685, 0, 131072, -3997684, 0, 131072, -3997683, 0, 131072, -3997682, 0, 131072, -3997681, 0, 131072, -3997680, 0, 131072, -3997679, 0, 131072, -3997678, 0, 131072, -3997677, 0, 131072, -3997676, 0, 131072, -3997675, 0, 131072, -3997674, 0, 131072, -3997673, 0, 131072, -3997672, 0, 131072, -3997671, 0, 131072, -3997670, 0, 131072, -3997669, 0, 131072, -3997668, 0, 131072, -3997667, 0, 131072, -3997666, 0, 131072, -3997665, 0, 131072, -3997664, 0, 131072, -3997663, 0, 131072, -3997662, 0, 131072, -3997661, 0, 131072, -3997660, 0, 131072, -3997659, 0, 131072, -3997658, 0, 131072, -3997657, 0, 131072, -3997656, 0, 131072, -3997655, 0, 131072, -3997654, 0, 131072, -3997653, 0, 131072, -3997652, 0, 131072, -3997651, 0, 131072, -3997650, 0, 131072, -3997649, 0, 131072, -3997648, 0, 131072, -3997647, 0, 131072, -3997646, 0, 131072, -3997645, 0, 131072, -3997644, 0, 131072, -3997643, 0, 131072, -3997642, 0, 131072, -3997641, 0, 131072, -3997640, 0, 131072, -3997639, 0, 131072, -3997638, 0, 131072, -3997637, 0, 131072, -3997636, 0, 131072, -3997635, 0, 131072, -3997634, 0, 131072, -3997633, 0, 131072, -3997632, 0, 131072, -3997631, 0, 131072, -3997630, 0, 131072, -3997629, 0, 131072, -3997628, 0, 131072, -3997627, 0, 131072, -3997626, 0, 131072, -3997625, 0, 131072, -3997624, 0, 131072, -3997623, 0, 131072, -3997622, 0, 131072, -3997621, 0, 131072, -3997620, 0, 131072, -3997619, 0, 131072, -3997618, 0, 131072, -3997617, 0, 131072, -3997616, 0, 131072, -3997615, 0, 131072, -3997614, 0, 131072, -3997613, 0, 131072, -3997612, 0, 131072, -3997611, 0, 131072, -3997610, 0, 131072, -3997609, 0, 131072, -3997608, 0, 131072, -3997607, 0, 131072, -3997606, 0, 131072, -3997605, 0, 131072, -3997604, 0, 131072, -3997603, 0, 131072, -3997602, 0, 131072, -3997601, 0, 131072, -3997600, 0, 131072, -3997599, 0, 131072, -3997598, 0, 131072, -3997597, 0, 131072, -3997596, 0, 131072, -3997595, 0, 131072, -3997594, 0, 131072, -3997593, 0, 131072, -3997592, 0, 131072, -3997591, 0, 131072, -3997590, 0, 131072, -3997589, 0, 131072, -3997588, 0, 131072, -3997587, 0, 131072, -3997586, 0, 131072, -3997585, 0, 131072, -3997584, 0, 131072, -3997583, 0, 131072, -3997582, 0, 131072, -3997581, 0, 131072, -3997580, 0, 131072, -3997579, 0, 131072, -3997578, 0, 131072, -3997577, 0, 131072, -3997576, 0, 131072, -3997575, 0, 131072, -3997574, 0, 131072, -3997573, 0, 131072, -3997572, 0, 131072, -3997571, 0, 131072, -3997570, 0, 131072, -3997569, 0, 131072, -3997568, 0, 131072, -3997567, 0, 131072, -3997566, 0, 131072, -3997565, 0, 131072, -3997564, 0, 131072, -3997563, 0, 131072, -3997562, 0, 131072, -3997561, 0, 131072, -3997560, 0, 131072, -3997559, 0, 131072, -3997558, 0, 131072, -3997557, 0, 131072, -3997556, 0, 131072, -3997555, 0, 131072, -3997554, 0, 131072, -3866727, 0, 131072, -3866726, 0, 131072, -3866725, 0, 131072, -3866724, 0, 131072, -3866723, 0, 131072, -3866722, 0, 131072, -3866721, 0, 131072, -3866720, 0, 131072, -3866719, 0, 131072, -3866718, 0, 131072, -3866717, 0, 131072, -3866716, 0, 131072, -3866715, 0, 131072, -3866714, 0, 131072, -3866713, 0, 131072, -3866712, 0, 131072, -3866711, 0, 131072, -3866710, 0, 131072, -3866709, 0, 131072, -3866708, 0, 131072, -3866707, 0, 131072, -3866706, 0, 131072, -3866705, 0, 131072, -3866704, 0, 131072, -3866703, 0, 131072, -3866702, 0, 131072, -3866701, 0, 131072, -3866700, 0, 131072, -3866699, 0, 131072, -3866698, 0, 131072, -3866697, 0, 131072, -3866696, 0, 131072, -3866695, 0, 131072, -3866694, 0, 131072, -3866693, 0, 131072, -3866692, 0, 131072, -3866691, 0, 131072, -3866690, 0, 131072, -3866689, 0, 131072, -3866688, 0, 131072, -3866687, 0, 131072, -3866686, 0, 131072, -3866685, 0, 131072, -3866684, 0, 131072, -3866683, 0, 131072, -3866682, 0, 131072, -3866681, 0, 131072, -3866680, 0, 131072, -3866679, 0, 131072, -3866678, 0, 131072, -3866677, 0, 131072, -3866676, 0, 131072, -3866675, 0, 131072, -3866674, 0, 131072, -3866673, 0, 131072, -3866672, 0, 131072, -3866671, 0, 131072, -3866670, 0, 131072, -3866669, 0, 131072, -3866668, 0, 131072, -3866667, 0, 131072, -3866666, 0, 131072, -3866665, 0, 131072, -3866664, 0, 131072, -3866663, 0, 131072, -3866662, 0, 131072, -3866661, 0, 131072, -3866660, 0, 131072, -3866659, 0, 131072, -3866658, 0, 131072, -3866657, 0, 131072, -3866656, 0, 131072, -3866655, 0, 131072, -3866654, 0, 131072, -3866653, 0, 131072, -3866652, 0, 131072, -3866651, 0, 131072, -3866650, 0, 131072, -3866649, 0, 131072, -3866648, 0, 131072, -3866647, 0, 131072, -3866646, 0, 131072, -3866645, 0, 131072, -3866644, 0, 131072, -3866643, 0, 131072, -3866642, 0, 131072, -3866641, 0, 131072, -3866640, 0, 131072, -3866639, 0, 131072, -3866638, 0, 131072, -3866637, 0, 131072, -3866636, 0, 131072, -3866635, 0, 131072, -3866634, 0, 131072, -3866633, 0, 131072, -3866632, 0, 131072, -3866631, 0, 131072, -3866630, 0, 131072, -3866629, 0, 131072, -3866628, 0, 131072, -3866627, 0, 131072, -3866626, 0, 131072, -3866625, 0, 131072, -3932160, 0, 131072, -3932159, 0, 131072, -3932158, 0, 131072, -3932157, 0, 131072, -3932156, 0, 131072, -3932155, 0, 131072, -3932154, 0, 131072, -3932153, 0, 131072, -3932152, 0, 131072, -3932151, 0, 131072, -3932150, 0, 131072, -3932149, 0, 131072, -3932148, 0, 131072, -3932147, 0, 131072, -3932146, 0, 131072, -3932145, 0, 131072, -3932144, 0, 131072, -3932143, 0, 131072, -3932142, 0, 131072, -3932141, 0, 131072, -3932140, 0, 131072, -3932139, 0, 131072, -3932138, 0, 131072, -3932137, 0, 131072, -3932136, 0, 131072, -3932135, 0, 131072, -3932134, 0, 131072, -3932133, 0, 131072, -3932132, 0, 131072, -3932131, 0, 131072, -3932130, 0, 131072, -3932129, 0, 131072, -3932128, 0, 131072, -3932127, 0, 131072, -3932126, 0, 131072, -3932125, 0, 131072, -3932124, 0, 131072, -3932123, 0, 131072, -3932122, 0, 131072, -3932121, 0, 131072, -3932120, 0, 131072, -3932119, 0, 131072, -3932118, 0, 131072, -3932117, 0, 131072, -3932116, 0, 131072, -3932115, 0, 131072, -3932114, 0, 131072, -3932113, 0, 131072, -3932112, 0, 131072, -3932111, 0, 131072, -3932110, 0, 131072, -3932109, 0, 131072, -3932108, 0, 131072, -3932107, 0, 131072, -3932106, 0, 131072, -3932105, 0, 131072, -3932104, 0, 131072, -3932103, 0, 131072, -3932102, 0, 131072, -3932101, 0, 131072, -3932100, 0, 131072, -3932099, 0, 131072, -3932098, 0, 131072, -3932097, 0, 131072, -3932096, 0, 131072, -3932095, 0, 131072, -3932094, 0, 131072, -3932093, 0, 131072, -3932092, 0, 131072, -3932091, 0, 131072, -3932090, 0, 131072, -3932089, 0, 131072, -3932088, 0, 131072, -3932087, 0, 131072, -3932086, 0, 131072, -3932085, 0, 131072, -3932084, 0, 131072, -3932083, 0, 131072, -3932082, 0, 131072, -3932081, 0, 131072, -3932080, 0, 131072, -3932079, 0, 131072, -3932078, 0, 131072, -3932077, 0, 131072, -3932076, 0, 131072, -3932075, 0, 131072, -3932074, 0, 131072, -3932073, 0, 131072, -3932072, 0, 131072, -3932071, 0, 131072, -3932070, 0, 131072, -3932069, 0, 131072, -3932068, 0, 131072, -3932067, 0, 131072, -3932066, 0, 131072, -3932065, 0, 131072, -3932064, 0, 131072, -3932063, 0, 131072, -3932062, 0, 131072, -3932061, 0, 131072, -3932060, 0, 131072, -3932059, 0, 131072, -3932058, 0, 131072, -3932057, 0, 131072, -3932056, 0, 131072, -3932055, 0, 131072, -3932054, 0, 131072, -3932053, 0, 131072, -3932052, 0, 131072, -3932051, 0, 131072, -3932050, 0, 131072, -3932049, 0, 131072, -3932048, 0, 131072, -3932047, 0, 131072, -3932046, 0, 131072, -3932045, 0, 131072, -3932044, 0, 131072, -3932043, 0, 131072, -3932042, 0, 131072, -3932041, 0, 131072, -3932040, 0, 131072, -3932039, 0, 131072, -3932038, 0, 131072, -3932037, 0, 131072, -3932036, 0, 131072, -3932035, 0, 131072, -3932034, 0, 131072, -3932033, 0, 131072, -3932032, 0, 131072, -3932031, 0, 131072, -3932030, 0, 131072, -3932029, 0, 131072, -3932028, 0, 131072, -3932027, 0, 131072, -3932026, 0, 131072, -3932025, 0, 131072, -3932024, 0, 131072, -3932023, 0, 131072, -3932022, 0, 131072, -3932021, 0, 131072, -3932020, 0, 131072, -3932019, 0, 131072, -3932018, 0, 131072, -3932017, 0, 131072, -3801192, 0, 131072, -3801191, 0, 131072, -3801190, 0, 131072, -3801189, 0, 131072, -3801188, 0, 131072, -3801187, 0, 131072, -3801186, 0, 131072, -3801185, 0, 131072, -3801184, 0, 131072, -3801183, 0, 131072, -3801182, 0, 131072, -3801181, 0, 131072, -3801180, 0, 131072, -3801179, 0, 131072, -3801178, 0, 131072, -3801177, 0, 131072, -3801176, 0, 131072, -3801175, 0, 131072, -3801174, 0, 131072, -3801173, 0, 131072, -3801172, 0, 131072, -3801171, 0, 131072, -3801170, 0, 131072, -3801169, 0, 131072, -3801168, 0, 131072, -3801167, 0, 131072, -3801166, 0, 131072, -3801165, 0, 131072, -3801164, 0, 131072, -3801163, 0, 131072, -3801162, 0, 131072, -3801161, 0, 131072, -3801160, 0, 131072, -3801159, 0, 131072, -3801158, 0, 131072, -3801157, 0, 131072, -3801156, 0, 131072, -3801155, 0, 131072, -3801154, 0, 131072, -3801153, 0, 131072, -3801152, 0, 131072, -3801151, 0, 131072, -3801150, 0, 131072, -3801149, 0, 131072, -3801148, 0, 131072, -3801147, 0, 131072, -3801146, 0, 131072, -3801145, 0, 131072, -3801144, 0, 131072, -3801143, 0, 131072, -3801142, 0, 131072, -3801141, 0, 131072, -3801140, 0, 131072, -3801139, 0, 131072, -3801138, 0, 131072, -3801137, 0, 131072, -3801136, 0, 131072, -3801135, 0, 131072, -3801134, 0, 131072, -3801133, 0, 131072, -3801132, 0, 131072, -3801131, 0, 131072, -3801130, 0, 131072, -3801129, 0, 131072, -3801128, 0, 131072, -3801127, 0, 131072, -3801126, 0, 131072, -3801125, 0, 131072, -3801124, 0, 131072, -3801123, 0, 131072, -3801122, 0, 131072, -3801121, 0, 131072, -3801120, 0, 131072, -3801119, 0, 131072, -3801118, 0, 131072, -3801117, 0, 131072, -3801116, 0, 131072, -3801115, 0, 131072, -3801114, 0, 131072, -3801113, 0, 131072, -3801112, 0, 131072, -3801111, 0, 131072, -3801110, 0, 131072, -3801109, 0, 131072, -3801108, 0, 131072, -3801107, 0, 131072, -3801106, 0, 131072, -3801105, 0, 131072, -3801104, 0, 131072, -3801103, 0, 131072, -3801102, 0, 131072, -3801101, 0, 131072, -3801100, 0, 131072, -3801099, 0, 131072, -3801098, 0, 131072, -3801097, 0, 131072, -3801096, 0, 131072, -3801095, 0, 131072, -3801094, 0, 131072, -3801093, 0, 131072, -3801092, 0, 131072, -3801091, 0, 131072, -3801090, 0, 131072, -3801089, 0, 131072, -3866624, 0, 131072, -3866623, 0, 131072, -3866622, 0, 131072, -3866621, 0, 131072, -3866620, 0, 131072, -3866619, 0, 131072, -3866618, 0, 131072, -3866617, 0, 131072, -3866616, 0, 131072, -3866615, 0, 131072, -3866614, 0, 131072, -3866613, 0, 131072, -3866612, 0, 131072, -3866611, 0, 131072, -3866610, 0, 131072, -3866609, 0, 131072, -3866608, 0, 131072, -3866607, 0, 131072, -3866606, 0, 131072, -3866605, 0, 131072, -3866604, 0, 131072, -3866603, 0, 131072, -3866602, 0, 131072, -3866601, 0, 131072, -3866600, 0, 131072, -3866599, 0, 131072, -3866598, 0, 131072, -3866597, 0, 131072, -3866596, 0, 131072, -3866595, 0, 131072, -3866594, 0, 131072, -3866593, 0, 131072, -3866592, 0, 131072, -3866591, 0, 131072, -3866590, 0, 131072, -3866589, 0, 131072, -3866588, 0, 131072, -3866587, 0, 131072, -3866586, 0, 131072, -3866585, 0, 131072, -3866584, 0, 131072, -3866583, 0, 131072, -3866582, 0, 131072, -3866581, 0, 131072, -3866580, 0, 131072, -3866579, 0, 131072, -3866578, 0, 131072, -3866577, 0, 131072, -3866576, 0, 131072, -3866575, 0, 131072, -3866574, 0, 131072, -3866573, 0, 131072, -3866572, 0, 131072, -3866571, 0, 131072, -3866570, 0, 131072, -3866569, 0, 131072, -3866568, 0, 131072, -3866567, 0, 131072, -3866566, 0, 131072, -3866565, 0, 131072, -3866564, 0, 131072, -3866563, 0, 131072, -3866562, 0, 131072, -3866561, 0, 131072, -3866560, 0, 131072, -3866559, 0, 131072, -3866558, 0, 131072, -3866557, 0, 131072, -3866556, 0, 131072, -3866555, 0, 131072, -3866554, 0, 131072, -3866553, 0, 131072, -3866552, 0, 131072, -3866551, 0, 131072, -3866550, 0, 131072, -3866549, 0, 131072, -3866548, 0, 131072, -3866547, 0, 131072, -3866546, 0, 131072, -3866545, 0, 131072, -3866544, 0, 131072, -3866543, 0, 131072, -3866542, 0, 131072, -3866541, 0, 131072, -3866540, 0, 131072, -3866539, 0, 131072, -3866538, 0, 131072, -3866537, 0, 131072, -3866536, 0, 131072, -3866535, 0, 131072, -3866534, 0, 131072, -3866533, 0, 131072, -3866532, 0, 131072, -3866531, 0, 131072, -3866530, 0, 131072, -3866529, 0, 131072, -3866528, 0, 131072, -3866527, 0, 131072, -3866526, 0, 131072, -3866525, 0, 131072, -3866524, 0, 131072, -3866523, 0, 131072, -3866522, 0, 131072, -3866521, 0, 131072, -3866520, 0, 131072, -3866519, 0, 131072, -3866518, 0, 131072, -3866517, 0, 131072, -3866516, 0, 131072, -3866515, 0, 131072, -3866514, 0, 131072, -3866513, 0, 131072, -3866512, 0, 131072, -3866511, 0, 131072, -3866510, 0, 131072, -3866509, 0, 131072, -3866508, 0, 131072, -3866507, 0, 131072, -3866506, 0, 131072, -3866505, 0, 131072, -3866504, 0, 131072, -3866503, 0, 131072, -3866502, 0, 131072, -3866501, 0, 131072, -3866500, 0, 131072, -3866499, 0, 131072, -3866498, 0, 131072, -3866497, 0, 131072, -3866496, 0, 131072, -3866495, 0, 131072, -3866494, 0, 131072, -3866493, 0, 131072, -3866492, 0, 131072, -3866491, 0, 131072, -3866490, 0, 131072, -3866489, 0, 131072, -3866488, 0, 131072, -3866487, 0, 131072, -3866486, 0, 131072, -3866485, 0, 131072, -3866484, 0, 131072, -3866483, 0, 131072, -3866482, 0, 131072, -3866481, 0, 131072, -3866480, 0, 131072, -3735656, 0, 131072, -3735655, 0, 131072, -3735654, 0, 131072, -3735653, 0, 131072, -3735652, 0, 131072, -3735651, 0, 131072, -3735650, 0, 131072, -3735649, 0, 131072, -3735648, 0, 131072, -3735647, 0, 131072, -3735646, 0, 131072, -3735645, 0, 131072, -3735644, 0, 131072, -3735643, 0, 131072, -3735642, 0, 131072, -3735641, 0, 131072, -3735640, 0, 131072, -3735639, 0, 131072, -3735638, 0, 131072, -3735637, 0, 131072, -3735636, 0, 131072, -3735635, 0, 131072, -3735634, 0, 131072, -3735633, 0, 131072, -3735632, 0, 131072, -3735631, 0, 131072, -3735630, 0, 131072, -3735629, 0, 131072, -3735628, 0, 131072, -3735627, 0, 131072, -3735626, 0, 131072, -3735625, 0, 131072, -3735624, 0, 131072, -3735623, 0, 131072, -3735622, 0, 131072, -3735621, 0, 131072, -3735620, 0, 131072, -3735619, 0, 131072, -3735618, 0, 131072, -3735617, 0, 131072, -3735616, 0, 131072, -3735615, 0, 131072, -3735614, 0, 131072, -3735613, 0, 131072, -3735612, 0, 131072, -3735611, 0, 131072, -3735610, 0, 131072, -3735609, 0, 131072, -3735608, 0, 131072, -3735607, 0, 131072, -3735606, 0, 131072, -3735605, 0, 131072, -3735604, 0, 131072, -3735603, 0, 131072, -3735602, 0, 131072, -3735601, 0, 131072, -3735600, 0, 131072, -3735599, 0, 131072, -3735598, 0, 131072, -3735597, 0, 131072, -3735596, 0, 131072, -3735595, 0, 131072, -3735594, 0, 131072, -3735593, 0, 131072, -3735592, 0, 131072, -3735591, 0, 131072, -3735590, 0, 131072, -3735589, 0, 131072, -3735588, 0, 131072, -3735587, 0, 131072, -3735586, 0, 131072, -3735585, 0, 131072, -3735584, 0, 131072, -3735583, 0, 131072, -3735582, 0, 131072, -3735581, 0, 131072, -3735580, 0, 131072, -3735579, 0, 131072, -3735578, 0, 131072, -3735577, 0, 131072, -3735576, 0, 131072, -3735575, 0, 131072, -3735574, 0, 131072, -3735573, 0, 131072, -3735572, 0, 131072, -3735571, 0, 131072, -3735570, 0, 131072, -3735569, 0, 131072, -3735568, 0, 131072, -3735567, 0, 131072, -3735566, 0, 131072, -3735565, 0, 131072, -3735564, 0, 131072, -3735563, 0, 131072, -3735562, 0, 131072, -3735561, 0, 131072, -3735560, 0, 131072, -3735559, 0, 131072, -3735558, 0, 131072, -3735557, 0, 131072, -3735556, 0, 131072, -3735555, 0, 131072, -3735554, 0, 131072, -3735553, 0, 131072, -3801088, 0, 131072, -3801087, 0, 131072, -3801086, 0, 131072, -3801085, 0, 131072, -3801084, 0, 131072, -3801083, 0, 131072, -3801082, 0, 131072, -3801081, 0, 131072, -3801080, 0, 131072, -3801079, 0, 131072, -3801078, 0, 131072, -3801077, 0, 131072, -3801076, 0, 131072, -3801075, 0, 131072, -3801074, 0, 131072, -3801073, 0, 131072, -3801072, 0, 131072, -3801071, 0, 131072, -3801070, 0, 131072, -3801069, 0, 131072, -3801068, 0, 131072, -3801067, 0, 131072, -3801066, 0, 131072, -3801065, 0, 131072, -3801064, 0, 131072, -3801063, 0, 131072, -3801062, 0, 131072, -3801061, 0, 131072, -3801060, 0, 131072, -3801059, 0, 131072, -3801058, 0, 131072, -3801057, 0, 131072, -3801056, 0, 131072, -3801055, 0, 131072, -3801054, 0, 131072, -3801053, 0, 131072, -3801052, 0, 131072, -3801051, 0, 131072, -3801050, 0, 131072, -3801049, 0, 131072, -3801048, 0, 131072, -3801047, 0, 131072, -3801046, 0, 131072, -3801045, 0, 131072, -3801044, 0, 131072, -3801043, 0, 131072, -3801042, 0, 131072, -3801041, 0, 131072, -3801040, 0, 131072, -3801039, 0, 131072, -3801038, 0, 131072, -3801037, 0, 131072, -3801036, 0, 131072, -3801035, 0, 131072, -3801034, 0, 131072, -3801033, 0, 131072, -3801032, 0, 131072, -3801031, 0, 131072, -3801030, 0, 131072, -3801029, 0, 131072, -3801028, 0, 131072, -3801027, 0, 131072, -3801026, 0, 131072, -3801025, 0, 131072, -3801024, 0, 131072, -3801023, 0, 131072, -3801022, 0, 131072, -3801021, 0, 131072, -3801020, 0, 131072, -3801019, 0, 131072, -3801018, 0, 131072, -3801017, 0, 131072, -3801016, 0, 131072, -3801015, 0, 131072, -3801014, 0, 131072, -3801013, 0, 131072, -3801012, 0, 131072, -3801011, 0, 131072, -3801010, 0, 131072, -3801009, 0, 131072, -3801008, 0, 131072, -3801007, 0, 131072, -3801006, 0, 131072, -3801005, 0, 131072, -3801004, 0, 131072, -3801003, 0, 131072, -3801002, 0, 131072, -3801001, 0, 131072, -3801000, 0, 131072, -3800999, 0, 131072, -3800998, 0, 131072, -3800997, 0, 131072, -3800996, 0, 131072, -3800995, 0, 131072, -3800994, 0, 131072, -3800993, 0, 131072, -3800992, 0, 131072, -3800991, 0, 131072, -3800990, 0, 131072, -3800989, 0, 131072, -3800988, 0, 131072, -3800987, 0, 131072, -3800986, 0, 131072, -3800985, 0, 131072, -3800984, 0, 131072, -3800983, 0, 131072, -3800982, 0, 131072, -3800981, 0, 131072, -3800980, 0, 131072, -3800979, 0, 131072, -3800978, 0, 131072, -3800977, 0, 131072, -3800976, 0, 131072, -3800975, 0, 131072, -3800974, 0, 131072, -3800973, 0, 131072, -3800972, 0, 131072, -3800971, 0, 131072, -3800970, 0, 131072, -3800969, 0, 131072, -3800968, 0, 131072, -3800967, 0, 131072, -3800966, 0, 131072, -3800965, 0, 131072, -3800964, 0, 131072, -3800963, 0, 131072, -3800962, 0, 131072, -3800961, 0, 131072, -3800960, 0, 131072, -3800959, 0, 131072, -3800958, 0, 131072, -3800957, 0, 131072, -3800956, 0, 131072, -3800955, 0, 131072, -3800954, 0, 131072, -3800953, 0, 131072, -3800952, 0, 131072, -3800951, 0, 131072, -3800950, 0, 131072, -3800949, 0, 131072, -3800948, 0, 131072, -3800947, 0, 131072, -3800946, 0, 131072, -3800945, 0, 131072, -3800944, 0, 131072, -3800943, 0, 131072, -3800942, 0, 131072, -3670120, 0, 131072, -3670119, 0, 131072, -3670118, 0, 131072, -3670117, 0, 131072, -3670116, 0, 131072, -3670115, 0, 131072, -3670114, 0, 131072, -3670113, 0, 131072, -3670112, 0, 131072, -3670111, 0, 131072, -3670110, 0, 131072, -3670109, 0, 131072, -3670108, 0, 131072, -3670107, 0, 131072, -3670106, 0, 131072, -3670105, 0, 131072, -3670104, 0, 131072, -3670103, 0, 131072, -3670102, 0, 131072, -3670101, 0, 131072, -3670100, 0, 131072, -3670099, 0, 131072, -3670098, 0, 131072, -3670097, 0, 131072, -3670096, 0, 131072, -3670095, 0, 131072, -3670094, 0, 131072, -3670093, 0, 131072, -3670092, 0, 131072, -3670091, 0, 131072, -3670090, 0, 131072, -3670089, 0, 131072, -3670088, 0, 131072, -3670087, 0, 131072, -3670086, 0, 131072, -3670085, 0, 131072, -3670084, 0, 131072, -3670083, 0, 131072, -3670082, 0, 131072, -3670081, 0, 131072, -3670080, 0, 131072, -3670079, 0, 131072, -3670078, 0, 131072, -3670077, 0, 131072, -3670076, 0, 131072, -3670075, 0, 131072, -3670074, 0, 131072, -3670073, 0, 131072, -3670072, 0, 131072, -3670071, 0, 131072, -3670070, 0, 131072, -3670069, 0, 131072, -3670068, 0, 131072, -3670067, 0, 131072, -3670066, 0, 131072, -3670065, 0, 131072, -3670064, 0, 131072, -3670063, 0, 131072, -3670062, 0, 131072, -3670061, 0, 131072, -3670060, 0, 131072, -3670059, 0, 131072, -3670058, 0, 131072, -3670057, 0, 131072, -3670056, 0, 131072, -3670055, 0, 131072, -3670054, 0, 131072, -3670053, 0, 131072, -3670052, 0, 131072, -3670051, 0, 131072, -3670050, 0, 131072, -3670049, 0, 131072, -3670048, 0, 131072, -3670047, 0, 131072, -3670046, 0, 131072, -3670045, 0, 131072, -3670044, 0, 131072, -3670043, 0, 131072, -3670042, 0, 131072, -3670041, 0, 131072, -3670040, 0, 131072, -3670039, 0, 131072, -3670038, 0, 131072, -3670037, 0, 131072, -3670036, 0, 131072, -3670035, 0, 131072, -3670034, 0, 131072, -3670033, 0, 131072, -3670032, 0, 131072, -3670031, 0, 131072, -3670030, 0, 131072, -3670029, 0, 131072, -3670028, 0, 131072, -3670027, 0, 131072, -3670026, 0, 131072, -3670025, 0, 131072, -3670024, 0, 131072, -3670023, 0, 131072, -3670022, 0, 131072, -3670021, 0, 131072, -3670020, 0, 131072, -3670019, 0, 131072, -3670018, 0, 131072, -3670017, 0, 131072, -3735552, 0, 131072, -3735551, 0, 131072, -3735550, 0, 131072, -3735549, 0, 131072, -3735548, 0, 131072, -3735547, 0, 131072, -3735546, 0, 131072, -3735545, 0, 131072, -3735544, 0, 131072, -3735543, 0, 131072, -3735542, 0, 131072, -3735541, 0, 131072, -3735540, 0, 131072, -3735539, 0, 131072, -3735538, 0, 131072, -3735537, 0, 131072, -3735536, 0, 131072, -3735535, 0, 131072, -3735534, 0, 131072, -3735533, 0, 131072, -3735532, 0, 131072, -3735531, 0, 131072, -3735530, 0, 131072, -3735529, 0, 131072, -3735528, 0, 131072, -3735527, 0, 131072, -3735526, 0, 131072, -3735525, 0, 131072, -3735524, 0, 131072, -3735523, 0, 131072, -3735522, 0, 131072, -3735521, 0, 131072, -3735520, 0, 131072, -3735519, 0, 131072, -3735518, 0, 131072, -3735517, 0, 131072, -3735516, 0, 131072, -3735515, 0, 131072, -3735514, 0, 131072, -3735513, 0, 131072, -3735512, 0, 131072, -3735511, 0, 131072, -3735510, 0, 131072, -3735509, 0, 131072, -3735508, 0, 131072, -3735507, 0, 131072, -3735506, 0, 131072, -3735505, 0, 131072, -3735504, 0, 131072, -3735503, 0, 131072, -3735502, 0, 131072, -3735501, 0, 131072, -3735500, 0, 131072, -3735499, 0, 131072, -3735498, 0, 131072, -3735497, 0, 131072, -3735496, 0, 131072, -3735495, 0, 131072, -3735494, 0, 131072, -3735493, 0, 131072, -3735492, 0, 131072, -3735491, 0, 131072, -3735490, 0, 131072, -3735489, 0, 131072, -3735488, 0, 131072, -3735487, 0, 131072, -3735486, 0, 131072, -3735485, 0, 131072, -3735484, 0, 131072, -3735483, 0, 131072, -3735482, 0, 131072, -3735481, 0, 131072, -3735480, 0, 131072, -3735479, 0, 131072, -3735478, 0, 131072, -3735477, 0, 131072, -3735476, 0, 131072, -3735475, 0, 131072, -3735474, 0, 131072, -3735473, 0, 131072, -3735472, 0, 131072, -3735471, 0, 131072, -3735470, 0, 131072, -3735469, 0, 131072, -3735468, 0, 131072, -3735467, 0, 131072, -3735466, 0, 131072, -3735465, 0, 131072, -3735464, 0, 131072, -3735463, 0, 131072, -3735462, 0, 131072, -3735461, 0, 131072, -3735460, 0, 131072, -3735459, 0, 131072, -3735458, 0, 131072, -3735457, 0, 131072, -3735456, 0, 131072, -3735455, 0, 131072, -3735454, 0, 131072, -3735453, 0, 131072, -3735452, 0, 131072, -3735451, 0, 131072, -3735450, 0, 131072, -3735449, 0, 131072, -3735448, 0, 131072, -3735447, 0, 131072, -3735446, 0, 131072, -3735445, 0, 131072, -3735444, 0, 131072, -3735443, 0, 131072, -3735442, 0, 131072, -3735441, 0, 131072, -3735440, 0, 131072, -3735439, 0, 131072, -3735438, 0, 131072, -3735437, 0, 131072, -3735436, 0, 131072, -3735435, 0, 131072, -3735434, 0, 131072, -3735433, 0, 131072, -3735432, 0, 131072, -3735431, 0, 131072, -3735430, 0, 131072, -3735429, 0, 131072, -3735428, 0, 131072, -3735427, 0, 131072, -3735426, 0, 131072, -3735425, 0, 131072, -3735424, 0, 131072, -3735423, 0, 131072, -3735422, 0, 131072, -3735421, 0, 131072, -3735420, 0, 131072, -3735419, 0, 131072, -3735418, 0, 131072, -3735417, 0, 131072, -3735416, 0, 131072, -3735415, 0, 131072, -3735414, 0, 131072, -3735413, 0, 131072, -3735412, 0, 131072, -3735411, 0, 131072, -3735410, 0, 131072, -3735409, 0, 131072, -3735408, 0, 131072, -3735407, 0, 131072, -3735406, 0, 131072, -3735405, 0, 131072, -3604585, 0, 131072, -3604584, 0, 131072, -3604583, 0, 131072, -3604582, 0, 131072, -3604581, 0, 131072, -3604580, 0, 131072, -3604579, 0, 131072, -3604578, 0, 131072, -3604577, 0, 131072, -3604576, 0, 131072, -3604575, 0, 131072, -3604574, 0, 131072, -3604573, 0, 131072, -3604572, 0, 131072, -3604571, 0, 131072, -3604570, 0, 131072, -3604569, 0, 131072, -3604568, 0, 131072, -3604567, 0, 131072, -3604566, 0, 131072, -3604565, 0, 131072, -3604564, 0, 131072, -3604563, 0, 131072, -3604562, 0, 131072, -3604561, 0, 131072, -3604560, 0, 131072, -3604559, 0, 131072, -3604558, 0, 131072, -3604557, 0, 131072, -3604556, 0, 131072, -3604555, 0, 131072, -3604554, 0, 131072, -3604553, 0, 131072, -3604552, 0, 131072, -3604551, 0, 131072, -3604550, 0, 131072, -3604549, 0, 131072, -3604548, 0, 131072, -3604547, 0, 131072, -3604546, 0, 131072, -3604545, 0, 131072, -3604544, 0, 131072, -3604543, 0, 131072, -3604542, 0, 131072, -3604541, 0, 131072, -3604540, 0, 131072, -3604539, 0, 131072, -3604538, 0, 131072, -3604537, 0, 131072, -3604536, 0, 131072, -3604535, 0, 131072, -3604534, 0, 131072, -3604533, 0, 131072, -3604532, 0, 131072, -3604531, 0, 131072, -3604530, 0, 131072, -3604529, 0, 131072, -3604528, 0, 131072, -3604527, 0, 131072, -3604526, 0, 131072, -3604525, 0, 131072, -3604524, 0, 131072, -3604523, 0, 131072, -3604522, 0, 131072, -3604521, 0, 131072, -3604520, 0, 131072, -3604519, 0, 131072, -3604518, 0, 131072, -3604517, 0, 131072, -3604516, 0, 131072, -3604515, 0, 131072, -3604514, 0, 131072, -3604513, 0, 131072, -3604512, 0, 131072, -3604511, 0, 131072, -3604510, 0, 131072, -3604509, 0, 131072, -3604508, 0, 131072, -3604507, 0, 131072, -3604506, 0, 131072, -3604505, 0, 131072, -3604504, 0, 131072, -3604503, 0, 131072, -3604502, 0, 131072, -3604501, 0, 131072, -3604500, 0, 131072, -3604499, 0, 131072, -3604498, 0, 131072, -3604497, 0, 131072, -3604496, 0, 131072, -3604495, 0, 131072, -3604494, 0, 131072, -3604493, 0, 131072, -3604492, 0, 131072, -3604491, 0, 131072, -3604490, 0, 131072, -3604489, 0, 131072, -3604488, 0, 131072, -3604487, 0, 131072, -3604486, 0, 131072, -3604485, 0, 131072, -3604484, 0, 131072, -3604483, 0, 131072, -3604482, 0, 131072, -3604481, 0, 131072, -3670016, 0, 131072, -3670015, 0, 131072, -3670014, 0, 131072, -3670013, 0, 131072, -3670012, 0, 131072, -3670011, 0, 131072, -3670010, 0, 131072, -3670009, 0, 131072, -3670008, 0, 131072, -3670007, 0, 131072, -3670006, 0, 131072, -3670005, 0, 131072, -3670004, 0, 131072, -3670003, 0, 131072, -3670002, 0, 131072, -3670001, 0, 131072, -3670000, 0, 131072, -3669999, 0, 131072, -3669998, 0, 131072, -3669997, 0, 131072, -3669996, 0, 131072, -3669995, 0, 131072, -3669994, 0, 131072, -3669993, 0, 131072, -3669992, 0, 131072, -3669991, 0, 131072, -3669990, 0, 131072, -3669989, 0, 131072, -3669988, 0, 131072, -3669987, 0, 131072, -3669986, 0, 131072, -3669985, 0, 131072, -3669984, 0, 131072, -3669983, 0, 131072, -3669982, 0, 131072, -3669981, 0, 131072, -3669980, 0, 131072, -3669979, 0, 131072, -3669978, 0, 131072, -3669977, 0, 131072, -3669976, 0, 131072, -3669975, 0, 131072, -3669974, 0, 131072, -3669973, 0, 131072, -3669972, 0, 131072, -3669971, 0, 131072, -3669970, 0, 131072, -3669969, 0, 131072, -3669968, 0, 131072, -3669967, 0, 131072, -3669966, 0, 131072, -3669965, 0, 131072, -3669964, 0, 131072, -3669963, 0, 131072, -3669962, 0, 131072, -3669961, 0, 131072, -3669960, 0, 131072, -3669959, 0, 131072, -3669958, 0, 131072, -3669957, 0, 131072, -3669956, 0, 131072, -3669955, 0, 131072, -3669954, 0, 131072, -3669953, 0, 131072, -3669952, 0, 131072, -3669951, 0, 131072, -3669950, 0, 131072, -3669949, 0, 131072, -3669948, 0, 131072, -3669947, 0, 131072, -3669946, 0, 131072, -3669945, 0, 131072, -3669944, 0, 131072, -3669943, 0, 131072, -3669942, 0, 131072, -3669941, 0, 131072, -3669940, 0, 131072, -3669939, 0, 131072, -3669938, 0, 131072, -3669937, 0, 131072, -3669936, 0, 131072, -3669935, 0, 131072, -3669934, 0, 131072, -3669933, 0, 131072, -3669932, 0, 131072, -3669931, 0, 131072, -3669930, 0, 131072, -3669929, 0, 131072, -3669928, 0, 131072, -3669927, 0, 131072, -3669926, 0, 131072, -3669925, 0, 131072, -3669924, 0, 131072, -3669923, 0, 131072, -3669922, 0, 131072, -3669921, 0, 131072, -3669920, 0, 131072, -3669919, 0, 131072, -3669918, 0, 131072, -3669917, 0, 131072, -3669916, 0, 131072, -3669915, 0, 131072, -3669914, 0, 131072, -3669913, 0, 131072, -3669912, 0, 131072, -3669911, 0, 131072, -3669910, 0, 131072, -3669909, 0, 131072, -3669908, 0, 131072, -3669907, 0, 131072, -3669906, 0, 131072, -3669905, 0, 131072, -3669904, 0, 131072, -3669903, 0, 131072, -3669902, 0, 131072, -3669901, 0, 131072, -3669900, 0, 131072, -3669899, 0, 131072, -3669898, 0, 131072, -3669897, 0, 131072, -3669896, 0, 131072, -3669895, 0, 131072, -3669894, 0, 131072, -3669893, 0, 131072, -3669892, 0, 131072, -3669891, 0, 131072, -3669890, 0, 131072, -3669889, 0, 131072, -3669888, 0, 131072, -3669887, 0, 131072, -3669886, 0, 131072, -3669885, 0, 131072, -3669884, 0, 131072, -3669883, 0, 131072, -3669882, 0, 131072, -3669881, 0, 131072, -3669880, 0, 131072, -3669879, 0, 131072, -3669878, 0, 131072, -3669877, 0, 131072, -3669876, 0, 131072, -3669875, 0, 131072, -3669874, 0, 131072, -3669873, 0, 131072, -3669872, 0, 131072, -3669871, 0, 131072, -3669870, 0, 131072, -3669869, 0, 131072, -3669868, 0, 131072, -3539049, 0, 131072, -3539048, 0, 131072, -3539047, 0, 131072, -3539046, 0, 131072, -3539045, 0, 131072, -3539044, 0, 131072, -3539043, 0, 131072, -3539042, 0, 131072, -3539041, 0, 131072, -3539040, 0, 131072, -3539039, 0, 131072, -3539038, 0, 131072, -3539037, 0, 131072, -3539036, 0, 131072, -3539035, 0, 131072, -3539034, 0, 131072, -3539033, 0, 131072, -3539032, 0, 131072, -3539031, 0, 131072, -3539030, 0, 131072, -3539029, 0, 131072, -3539028, 0, 131072, -3539027, 0, 131072, -3539026, 0, 131072, -3539025, 0, 131072, -3539024, 0, 131072, -3539023, 0, 131072, -3539022, 0, 131072, -3539021, 0, 131072, -3539020, 0, 131072, -3539019, 0, 131072, -3539018, 0, 131072, -3539017, 0, 131072, -3539016, 0, 131072, -3539015, 0, 131072, -3539014, 0, 131072, -3539013, 0, 131072, -3539012, 0, 131072, -3539011, 0, 131072, -3539010, 0, 131072, -3539009, 0, 131072, -3539008, 0, 131072, -3539007, 0, 131072, -3539006, 0, 131072, -3539005, 0, 131072, -3539004, 0, 131072, -3539003, 0, 131072, -3539002, 0, 131072, -3539001, 0, 131072, -3539000, 0, 131072, -3538999, 0, 131072, -3538998, 0, 131072, -3538997, 0, 131072, -3538996, 0, 131072, -3538995, 0, 131072, -3538994, 0, 131072, -3538993, 0, 131072, -3538992, 0, 131072, -3538991, 0, 131072, -3538990, 0, 131072, -3538989, 0, 131072, -3538988, 0, 131072, -3538987, 0, 131072, -3538986, 0, 131072, -3538985, 0, 131072, -3538984, 0, 131072, -3538983, 0, 131072, -3538982, 0, 131072, -3538981, 0, 131072, -3538980, 0, 131072, -3538979, 0, 131072, -3538978, 0, 131072, -3538977, 0, 131072, -3538976, 0, 131072, -3538975, 0, 131072, -3538974, 0, 131072, -3538973, 0, 131072, -3538972, 0, 131072, -3538971, 0, 131072, -3538970, 0, 131072, -3538969, 0, 131072, -3538968, 0, 131072, -3538967, 0, 131072, -3538966, 0, 131072, -3538965, 0, 131072, -3538964, 0, 131072, -3538963, 0, 131072, -3538962, 0, 131072, -3538961, 0, 131072, -3538960, 0, 131072, -3538959, 0, 131072, -3538958, 0, 131072, -3538957, 0, 131072, -3538956, 0, 131072, -3538955, 0, 131072, -3538954, 0, 131072, -3538953, 0, 131072, -3538952, 0, 131072, -3538951, 0, 131072, -3538950, 0, 131072, -3538949, 0, 131072, -3538948, 0, 131072, -3538947, 0, 131072, -3538946, 0, 131072, -3538945, 0, 131072, -3604480, 0, 131072, -3604479, 0, 131072, -3604478, 0, 131072, -3604477, 0, 131072, -3604476, 0, 131072, -3604475, 0, 131072, -3604474, 0, 131072, -3604473, 0, 131072, -3604472, 0, 131072, -3604471, 0, 131072, -3604470, 0, 131072, -3604469, 0, 131072, -3604468, 0, 131072, -3604467, 0, 131072, -3604466, 0, 131072, -3604465, 0, 131072, -3604464, 0, 131072, -3604463, 0, 131072, -3604462, 0, 131072, -3604461, 0, 131072, -3604460, 0, 131072, -3604459, 0, 131072, -3604458, 0, 131072, -3604457, 0, 131072, -3604456, 0, 131072, -3604455, 0, 131072, -3604454, 0, 131072, -3604453, 0, 131072, -3604452, 0, 131072, -3604451, 0, 131072, -3604450, 0, 131072, -3604449, 0, 131072, -3604448, 0, 131072, -3604447, 0, 131072, -3604446, 0, 131072, -3604445, 0, 131072, -3604444, 0, 131072, -3604443, 0, 131072, -3604442, 0, 131072, -3604441, 0, 131072, -3604440, 0, 131072, -3604439, 0, 131072, -3604438, 0, 131072, -3604437, 0, 131072, -3604436, 0, 131072, -3604435, 0, 131072, -3604434, 0, 131072, -3604433, 0, 131072, -3604432, 0, 131072, -3604431, 0, 131072, -3604430, 0, 131072, -3604429, 0, 131072, -3604428, 0, 131072, -3604427, 0, 131072, -3604426, 0, 131072, -3604425, 0, 131072, -3604424, 0, 131072, -3604423, 0, 131072, -3604422, 0, 131072, -3604421, 0, 131072, -3604420, 0, 131072, -3604419, 0, 131072, -3604418, 0, 131072, -3604417, 0, 131072, -3604416, 0, 131072, -3604415, 0, 131072, -3604414, 0, 131072, -3604413, 0, 131072, -3604412, 0, 131072, -3604411, 0, 131072, -3604410, 0, 131072, -3604409, 0, 131072, -3604408, 0, 131072, -3604407, 0, 131072, -3604406, 0, 131072, -3604405, 0, 131072, -3604404, 0, 131072, -3604403, 0, 131072, -3604402, 0, 131072, -3604401, 0, 131072, -3604400, 0, 131072, -3604399, 0, 131072, -3604398, 0, 131072, -3604397, 0, 131072, -3604396, 0, 131072, -3604395, 0, 131072, -3604394, 0, 131072, -3604393, 0, 131072, -3604392, 0, 131072, -3604391, 0, 131072, -3604390, 0, 131072, -3604389, 0, 131072, -3604388, 0, 131072, -3604387, 0, 131072, -3604386, 0, 131072, -3604385, 0, 131072, -3604384, 0, 131072, -3604383, 0, 131072, -3604382, 0, 131072, -3604381, 0, 131072, -3604380, 0, 131072, -3604379, 0, 131072, -3604378, 0, 131072, -3604377, 0, 131072, -3604376, 0, 131072, -3604375, 0, 131072, -3604374, 0, 131072, -3604373, 0, 131072, -3604372, 0, 131072, -3604371, 0, 131072, -3604370, 0, 131072, -3604369, 0, 131072, -3604368, 0, 131072, -3604367, 0, 131072, -3604366, 0, 131072, -3604365, 0, 131072, -3604364, 0, 131072, -3604363, 0, 131072, -3604362, 0, 131072, -3604361, 0, 131072, -3604360, 0, 131072, -3604359, 0, 131072, -3604358, 0, 131072, -3604357, 0, 131072, -3604356, 0, 131072, -3604355, 0, 131072, -3604354, 0, 131072, -3604353, 0, 131072, -3604352, 0, 131072, -3604351, 0, 131072, -3604350, 0, 131072, -3604349, 0, 131072, -3604348, 0, 131072, -3604347, 0, 131072, -3604346, 0, 131072, -3604345, 0, 131072, -3604344, 0, 131072, -3604343, 0, 131072, -3604342, 0, 131072, -3604341, 0, 131072, -3604340, 0, 131072, -3604339, 0, 131072, -3604338, 0, 131072, -3604337, 0, 131072, -3604336, 0, 131072, -3604335, 0, 131072, -3604334, 0, 131072, -3604333, 0, 131072, -3604332, 0, 131072, -3604331, 0, 131072, -3473513, 0, 131072, -3473512, 0, 131072, -3473511, 0, 131072, -3473510, 0, 131072, -3473509, 0, 131072, -3473508, 0, 131072, -3473507, 0, 131072, -3473506, 0, 131072, -3473505, 0, 131072, -3473504, 0, 131072, -3473503, 0, 131072, -3473502, 0, 131072, -3473501, 0, 131072, -3473500, 0, 131072, -3473499, 0, 131072, -3473498, 0, 131072, -3473497, 0, 131072, -3473496, 0, 131072, -3473495, 0, 131072, -3473494, 0, 131072, -3473493, 0, 131072, -3473492, 0, 131072, -3473491, 0, 131072, -3473490, 0, 131072, -3473489, 0, 131072, -3473488, 0, 131072, -3473487, 0, 131072, -3473486, 0, 131072, -3473485, 0, 131072, -3473484, 0, 131072, -3473483, 0, 131072, -3473482, 0, 131072, -3473481, 0, 131072, -3473480, 0, 131072, -3473479, 0, 131072, -3473478, 0, 131072, -3473477, 0, 131072, -3473476, 0, 131072, -3473475, 0, 131072, -3473474, 0, 131072, -3473473, 0, 131072, -3473472, 0, 131072, -3473471, 0, 131072, -3473470, 0, 131072, -3473469, 0, 131072, -3473468, 0, 131072, -3473467, 0, 131072, -3473466, 0, 131072, -3473465, 0, 131072, -3473464, 0, 131072, -3473463, 0, 131072, -3473462, 0, 131072, -3473461, 0, 131072, -3473460, 0, 131072, -3473459, 0, 131072, -3473458, 0, 131072, -3473457, 0, 131072, -3473456, 0, 131072, -3473455, 0, 131072, -3473454, 0, 131072, -3473453, 0, 131072, -3473452, 0, 131072, -3473451, 0, 131072, -3473450, 0, 131072, -3473449, 0, 131072, -3473448, 0, 131072, -3473447, 0, 131072, -3473446, 0, 131072, -3473445, 0, 131072, -3473444, 0, 131072, -3473443, 0, 131072, -3473442, 0, 131072, -3473441, 0, 131072, -3473440, 0, 131072, -3473439, 0, 131072, -3473438, 0, 131072, -3473437, 0, 131072, -3473436, 0, 131072, -3473435, 0, 131072, -3473434, 0, 131072, -3473433, 0, 131072, -3473432, 0, 131072, -3473431, 0, 131072, -3473430, 0, 131072, -3473429, 0, 131072, -3473428, 0, 131072, -3473427, 0, 131072, -3473426, 0, 131072, -3473425, 0, 131072, -3473424, 0, 131072, -3473423, 0, 131072, -3473422, 0, 131072, -3473421, 0, 131072, -3473420, 0, 131072, -3473419, 0, 131072, -3473418, 0, 131072, -3473417, 0, 131072, -3473416, 0, 131072, -3473415, 0, 131072, -3473414, 0, 131072, -3473413, 0, 131072, -3473412, 0, 131072, -3473411, 0, 131072, -3473410, 0, 131072, -3473409, 0, 131072, -3538944, 0, 131072, -3538943, 0, 131072, -3538942, 0, 131072, -3538941, 0, 131072, -3538940, 0, 131072, -3538939, 0, 131072, -3538938, 0, 131072, -3538937, 0, 131072, -3538936, 0, 131072, -3538935, 0, 131072, -3538934, 0, 131072, -3538933, 0, 131072, -3538932, 0, 131072, -3538931, 0, 131072, -3538930, 0, 131072, -3538929, 0, 131072, -3538928, 0, 131072, -3538927, 0, 131072, -3538926, 0, 131072, -3538925, 0, 131072, -3538924, 0, 131072, -3538923, 0, 131072, -3538922, 0, 131072, -3538921, 0, 131072, -3538920, 0, 131072, -3538919, 0, 131072, -3538918, 0, 131072, -3538917, 0, 131072, -3538916, 0, 131072, -3538915, 0, 131072, -3538914, 0, 131072, -3538913, 0, 131072, -3538912, 0, 131072, -3538911, 0, 131072, -3538910, 0, 131072, -3538909, 0, 131072, -3538908, 0, 131072, -3538907, 0, 131072, -3538906, 0, 131072, -3538905, 0, 131072, -3538904, 0, 131072, -3538903, 0, 131072, -3538902, 0, 131072, -3538901, 0, 131072, -3538900, 0, 131072, -3538899, 0, 131072, -3538898, 0, 131072, -3538897, 0, 131072, -3538896, 0, 131072, -3538895, 0, 131072, -3538894, 0, 131072, -3538893, 0, 131072, -3538892, 0, 131072, -3538891, 0, 131072, -3538890, 0, 131072, -3538889, 0, 131072, -3538888, 0, 131072, -3538887, 0, 131072, -3538886, 0, 131072, -3538885, 0, 131072, -3538884, 0, 131072, -3538883, 0, 131072, -3538882, 0, 131072, -3538881, 0, 131072, -3538880, 0, 131072, -3538879, 0, 131072, -3538878, 0, 131072, -3538877, 0, 131072, -3538876, 0, 131072, -3538875, 0, 131072, -3538874, 0, 131072, -3538873, 0, 131072, -3538872, 0, 131072, -3538871, 0, 131072, -3538870, 0, 131072, -3538869, 0, 131072, -3538868, 0, 131072, -3538867, 0, 131072, -3538866, 0, 131072, -3538865, 0, 131072, -3538864, 0, 131072, -3538863, 0, 131072, -3538862, 0, 131072, -3538861, 0, 131072, -3538860, 0, 131072, -3538859, 0, 131072, -3538858, 0, 131072, -3538857, 0, 131072, -3538856, 0, 131072, -3538855, 0, 131072, -3538854, 0, 131072, -3538853, 0, 131072, -3538852, 0, 131072, -3538851, 0, 131072, -3538850, 0, 131072, -3538849, 0, 131072, -3538848, 0, 131072, -3538847, 0, 131072, -3538846, 0, 131072, -3538845, 0, 131072, -3538844, 0, 131072, -3538843, 0, 131072, -3538842, 0, 131072, -3538841, 0, 131072, -3538840, 0, 131072, -3538839, 0, 131072, -3538838, 0, 131072, -3538837, 0, 131072, -3538836, 0, 131072, -3538835, 0, 131072, -3538834, 0, 131072, -3538833, 0, 131072, -3538832, 0, 131072, -3538831, 0, 131072, -3538830, 0, 131072, -3538829, 0, 131072, -3538828, 0, 131072, -3538827, 0, 131072, -3538826, 0, 131072, -3538825, 0, 131072, -3538824, 0, 131072, -3538823, 0, 131072, -3538822, 0, 131072, -3538821, 0, 131072, -3538820, 0, 131072, -3538819, 0, 131072, -3538818, 0, 131072, -3538817, 0, 131072, -3538816, 0, 131072, -3538815, 0, 131072, -3538814, 0, 131072, -3538813, 0, 131072, -3538812, 0, 131072, -3538811, 0, 131072, -3538810, 0, 131072, -3538809, 0, 131072, -3538808, 0, 131072, -3538807, 0, 131072, -3538806, 0, 131072, -3538805, 0, 131072, -3538804, 0, 131072, -3538803, 0, 131072, -3538802, 0, 131072, -3538801, 0, 131072, -3538800, 0, 131072, -3538799, 0, 131072, -3538798, 0, 131072, -3538797, 0, 131072, -3538796, 0, 131072, -3538795, 0, 131072, -3538794, 0, 131072, -3407978, 0, 131072, -3407977, 0, 131072, -3407976, 0, 131072, -3407975, 0, 131072, -3407974, 0, 131072, -3407973, 0, 131072, -3407972, 0, 131072, -3407971, 0, 131072, -3407970, 0, 131072, -3407969, 0, 131072, -3407968, 0, 131072, -3407967, 0, 131072, -3407966, 0, 131072, -3407965, 0, 131072, -3407964, 0, 131072, -3407963, 0, 131072, -3407962, 0, 131072, -3407961, 0, 131072, -3407960, 0, 131072, -3407959, 0, 131072, -3407958, 0, 131072, -3407957, 0, 131072, -3407956, 0, 131072, -3407955, 0, 131072, -3407954, 0, 131072, -3407953, 0, 131072, -3407952, 0, 131072, -3407951, 0, 131072, -3407950, 0, 131072, -3407949, 0, 131072, -3407948, 0, 131072, -3407947, 0, 131072, -3407946, 0, 131072, -3407945, 0, 131072, -3407944, 0, 131072, -3407943, 0, 131072, -3407942, 0, 131072, -3407941, 0, 131072, -3407940, 0, 131072, -3407939, 0, 131072, -3407938, 0, 131072, -3407937, 0, 131072, -3407936, 0, 131072, -3407935, 0, 131072, -3407934, 0, 131072, -3407933, 0, 131072, -3407932, 0, 131072, -3407931, 0, 131072, -3407930, 0, 131072, -3407929, 0, 131072, -3407928, 0, 131072, -3407927, 0, 131072, -3407926, 0, 131072, -3407925, 0, 131072, -3407924, 0, 131072, -3407923, 0, 131072, -3407922, 0, 131072, -3407921, 0, 131072, -3407920, 0, 131072, -3407919, 0, 131072, -3407918, 0, 131072, -3407917, 0, 131072, -3407916, 0, 131072, -3407915, 0, 131072, -3407914, 0, 131072, -3407913, 0, 131072, -3407912, 0, 131072, -3407911, 0, 131072, -3407910, 0, 131072, -3407909, 0, 131072, -3407908, 0, 131072, -3407907, 0, 131072, -3407906, 0, 131072, -3407905, 0, 131072, -3407904, 0, 131072, -3407903, 0, 131072, -3407902, 0, 131072, -3407901, 0, 131072, -3407900, 0, 131072, -3407899, 0, 131072, -3407898, 0, 131072, -3407897, 0, 131072, -3407896, 0, 131072, -3407895, 0, 131072, -3407894, 0, 131072, -3407893, 0, 131072, -3407892, 0, 131072, -3407891, 0, 131072, -3407890, 0, 131072, -3407889, 0, 131072, -3407888, 0, 131072, -3407887, 0, 131072, -3407886, 0, 131072, -3407885, 0, 131072, -3407884, 0, 131072, -3407883, 0, 131072, -3407882, 0, 131072, -3407881, 0, 131072, -3407880, 0, 131072, -3407879, 0, 131072, -3407878, 0, 131072, -3407877, 0, 131072, -3407876, 0, 131072, -3407875, 0, 131072, -3407874, 0, 131072, -3407873, 0, 131072, -3473408, 0, 131072, -3473407, 0, 131072, -3473406, 0, 131072, -3473405, 0, 131072, -3473404, 0, 131072, -3473403, 0, 131072, -3473402, 0, 131072, -3473401, 0, 131072, -3473400, 0, 131072, -3473399, 0, 131072, -3473398, 0, 131072, -3473397, 0, 131072, -3473396, 0, 131072, -3473395, 0, 131072, -3473394, 0, 131072, -3473393, 0, 131072, -3473392, 0, 131072, -3473391, 0, 131072, -3473390, 0, 131072, -3473389, 0, 131072, -3473388, 0, 131072, -3473387, 0, 131072, -3473386, 0, 131072, -3473385, 0, 131072, -3473384, 0, 131072, -3473383, 0, 131072, -3473382, 0, 131072, -3473381, 0, 131072, -3473380, 0, 131072, -3473379, 0, 131072, -3473378, 0, 131072, -3473377, 0, 131072, -3473376, 0, 131072, -3473375, 0, 131072, -3473374, 0, 131072, -3473373, 0, 131072, -3473372, 0, 131072, -3473371, 0, 131072, -3473370, 0, 131072, -3473369, 0, 131072, -3473368, 0, 131072, -3473367, 0, 131072, -3473366, 0, 131072, -3473365, 0, 131072, -3473364, 0, 131072, -3473363, 0, 131072, -3473362, 0, 131072, -3473361, 0, 131072, -3473360, 0, 131072, -3473359, 0, 131072, -3473358, 0, 131072, -3473357, 0, 131072, -3473356, 0, 131072, -3473355, 0, 131072, -3473354, 0, 131072, -3473353, 0, 131072, -3473352, 0, 131072, -3473351, 0, 131072, -3473350, 0, 131072, -3473349, 0, 131072, -3473348, 0, 131072, -3473347, 0, 131072, -3473346, 0, 131072, -3473345, 0, 131072, -3473344, 0, 131072, -3473343, 0, 131072, -3473342, 0, 131072, -3473341, 0, 131072, -3473340, 0, 131072, -3473339, 0, 131072, -3473338, 0, 131072, -3473337, 0, 131072, -3473336, 0, 131072, -3473335, 0, 131072, -3473334, 0, 131072, -3473333, 0, 131072, -3473332, 0, 131072, -3473331, 0, 131072, -3473330, 0, 131072, -3473329, 0, 131072, -3473328, 0, 131072, -3473327, 0, 131072, -3473326, 0, 131072, -3473325, 0, 131072, -3473324, 0, 131072, -3473323, 0, 131072, -3473322, 0, 131072, -3473321, 0, 131072, -3473320, 0, 131072, -3473319, 0, 131072, -3473318, 0, 131072, -3473317, 0, 131072, -3473316, 0, 131072, -3473315, 0, 131072, -3473314, 0, 131072, -3473313, 0, 131072, -3473312, 0, 131072, -3473311, 0, 131072, -3473310, 0, 131072, -3473309, 0, 131072, -3473308, 0, 131072, -3473307, 0, 131072, -3473306, 0, 131072, -3473305, 0, 131072, -3473304, 0, 131072, -3473303, 0, 131072, -3473302, 0, 131072, -3473301, 0, 131072, -3473300, 0, 131072, -3473299, 0, 131072, -3473298, 0, 131072, -3473297, 0, 131072, -3473296, 0, 131072, -3473295, 0, 131072, -3473294, 0, 131072, -3473293, 0, 131072, -3473292, 0, 131072, -3473291, 0, 131072, -3473290, 0, 131072, -3473289, 0, 131072, -3473288, 0, 131072, -3473287, 0, 131072, -3473286, 0, 131072, -3473285, 0, 131072, -3473284, 0, 131072, -3473283, 0, 131072, -3473282, 0, 131072, -3473281, 0, 131072, -3473280, 0, 131072, -3473279, 0, 131072, -3473278, 0, 131072, -3473277, 0, 131072, -3473276, 0, 131072, -3473275, 0, 131072, -3473274, 0, 131072, -3473273, 0, 131072, -3473272, 0, 131072, -3473271, 0, 131072, -3473270, 0, 131072, -3473269, 0, 131072, -3473268, 0, 131072, -3473267, 0, 131072, -3473266, 0, 131072, -3473265, 0, 131072, -3473264, 0, 131072, -3473263, 0, 131072, -3473262, 0, 131072, -3473261, 0, 131072, -3473260, 0, 131072, -3473259, 0, 131072, -3473258, 0, 131072, -3473257, 0, 131072, -3342442, 0, 131072, -3342441, 0, 131072, -3342440, 0, 131072, -3342439, 0, 131072, -3342438, 0, 131072, -3342437, 0, 131072, -3342436, 0, 131072, -3342435, 0, 131072, -3342434, 0, 131072, -3342433, 0, 131072, -3342432, 0, 131072, -3342431, 0, 131072, -3342430, 0, 131072, -3342429, 0, 131072, -3342428, 0, 131072, -3342427, 0, 131072, -3342426, 0, 131072, -3342425, 0, 131072, -3342424, 0, 131072, -3342423, 0, 131072, -3342422, 0, 131072, -3342421, 0, 131072, -3342420, 0, 131072, -3342419, 0, 131072, -3342418, 0, 131072, -3342417, 0, 131072, -3342416, 0, 131072, -3342415, 0, 131072, -3342414, 0, 131072, -3342413, 0, 131072, -3342412, 0, 131072, -3342411, 0, 131072, -3342410, 0, 131072, -3342409, 0, 131072, -3342408, 0, 131072, -3342407, 0, 131072, -3342406, 0, 131072, -3342405, 0, 131072, -3342404, 0, 131072, -3342403, 0, 131072, -3342402, 0, 131072, -3342401, 0, 131072, -3342400, 0, 131072, -3342399, 0, 131072, -3342398, 0, 131072, -3342397, 0, 131072, -3342396, 0, 131072, -3342395, 0, 131072, -3342394, 0, 131072, -3342393, 0, 131072, -3342392, 0, 131072, -3342391, 0, 131072, -3342390, 0, 131072, -3342389, 0, 131072, -3342388, 0, 131072, -3342387, 0, 131072, -3342386, 0, 131072, -3342385, 0, 131072, -3342384, 0, 131072, -3342383, 0, 131072, -3342382, 0, 131072, -3342381, 0, 131072, -3342380, 0, 131072, -3342379, 0, 131072, -3342378, 0, 131072, -3342377, 0, 131072, -3342376, 0, 131072, -3342375, 0, 131072, -3342374, 0, 131072, -3342373, 0, 131072, -3342372, 0, 131072, -3342371, 0, 131072, -3342370, 0, 131072, -3342369, 0, 131072, -3342368, 0, 131072, -3342367, 0, 131072, -3342366, 0, 131072, -3342365, 0, 131072, -3342364, 0, 131072, -3342363, 0, 131072, -3342362, 0, 131072, -3342361, 0, 131072, -3342360, 0, 131072, -3342359, 0, 131072, -3342358, 0, 131072, -3342357, 0, 131072, -3342356, 0, 131072, -3342355, 0, 131072, -3342354, 0, 131072, -3342353, 0, 131072, -3342352, 0, 131072, -3342351, 0, 131072, -3342350, 0, 131072, -3342349, 0, 131072, -3342348, 0, 131072, -3342347, 0, 131072, -3342346, 0, 131072, -3342345, 0, 131072, -3342344, 0, 131072, -3342343, 0, 131072, -3342342, 0, 131072, -3342341, 0, 131072, -3342340, 0, 131072, -3342339, 0, 131072, -3342338, 0, 131072, -3342337, 0, 131072, -3407872, 0, 131072, -3407871, 0, 131072, -3407870, 0, 131072, -3407869, 0, 131072, -3407868, 0, 131072, -3407867, 0, 131072, -3407866, 0, 131072, -3407865, 0, 131072, -3407864, 0, 131072, -3407863, 0, 131072, -3407862, 0, 131072, -3407861, 0, 131072, -3407860, 0, 131072, -3407859, 0, 131072, -3407858, 0, 131072, -3407857, 0, 131072, -3407856, 0, 131072, -3407855, 0, 131072, -3407854, 0, 131072, -3407853, 0, 131072, -3407852, 0, 131072, -3407851, 0, 131072, -3407850, 0, 131072, -3407849, 0, 131072, -3407848, 0, 131072, -3407847, 0, 131072, -3407846, 0, 131072, -3407845, 0, 131072, -3407844, 0, 131072, -3407843, 0, 131072, -3407842, 0, 131072, -3407841, 0, 131072, -3407840, 0, 131072, -3407839, 0, 131072, -3407838, 0, 131072, -3407837, 0, 131072, -3407836, 0, 131072, -3407835, 0, 131072, -3407834, 0, 131072, -3407833, 0, 131072, -3407832, 0, 131072, -3407831, 0, 131072, -3407830, 0, 131072, -3407829, 0, 131072, -3407828, 0, 131072, -3407827, 0, 131072, -3407826, 0, 131072, -3407825, 0, 131072, -3407824, 0, 131072, -3407823, 0, 131072, -3407822, 0, 131072, -3407821, 0, 131072, -3407820, 0, 131072, -3407819, 0, 131072, -3407818, 0, 131072, -3407817, 0, 131072, -3407816, 0, 131072, -3407815, 0, 131072, -3407814, 0, 131072, -3407813, 0, 131072, -3407812, 0, 131072, -3407811, 0, 131072, -3407810, 0, 131072, -3407809, 0, 131072, -3407808, 0, 131072, -3407807, 0, 131072, -3407806, 0, 131072, -3407805, 0, 131072, -3407804, 0, 131072, -3407803, 0, 131072, -3407802, 0, 131072, -3407801, 0, 131072, -3407800, 0, 131072, -3407799, 0, 131072, -3407798, 0, 131072, -3407797, 0, 131072, -3407796, 0, 131072, -3407795, 0, 131072, -3407794, 0, 131072, -3407793, 0, 131072, -3407792, 0, 131072, -3407791, 0, 131072, -3407790, 0, 131072, -3407789, 0, 131072, -3407788, 0, 131072, -3407787, 0, 131072, -3407786, 0, 131072, -3407785, 0, 131072, -3407784, 0, 131072, -3407783, 0, 131072, -3407782, 0, 131072, -3407781, 0, 131072, -3407780, 0, 131072, -3407779, 0, 131072, -3407778, 0, 131072, -3407777, 0, 131072, -3407776, 0, 131072, -3407775, 0, 131072, -3407774, 0, 131072, -3407773, 0, 131072, -3407772, 0, 131072, -3407771, 0, 131072, -3407770, 0, 131072, -3407769, 0, 131072, -3407768, 0, 131072, -3407767, 0, 131072, -3407766, 0, 131072, -3407765, 0, 131072, -3407764, 0, 131072, -3407763, 0, 131072, -3407762, 0, 131072, -3407761, 0, 131072, -3407760, 0, 131072, -3407759, 0, 131072, -3407758, 0, 131072, -3407757, 0, 131072, -3407756, 0, 131072, -3407755, 0, 131072, -3407754, 0, 131072, -3407753, 0, 131072, -3407752, 0, 131072, -3407751, 0, 131072, -3407750, 0, 131072, -3407749, 0, 131072, -3407748, 0, 131072, -3407747, 0, 131072, -3407746, 0, 131072, -3407745, 0, 131072, -3407744, 0, 131072, -3407743, 0, 131072, -3407742, 0, 131072, -3407741, 0, 131072, -3407740, 0, 131072, -3407739, 0, 131072, -3407738, 0, 131072, -3407737, 0, 131072, -3407736, 0, 131072, -3407735, 0, 131072, -3407734, 0, 131072, -3407733, 0, 131072, -3407732, 0, 131072, -3407731, 0, 131072, -3407730, 0, 131072, -3407729, 0, 131072, -3407728, 0, 131072, -3407727, 0, 131072, -3407726, 0, 131072, -3407725, 0, 131072, -3407724, 0, 131072, -3407723, 0, 131072, -3407722, 0, 131072, -3407721, 0, 131072, -3407720, 0, 131072, -3276906, 0, 131072, -3276905, 0, 131072, -3276904, 0, 131072, -3276903, 0, 131072, -3276902, 0, 131072, -3276901, 0, 131072, -3276900, 0, 131072, -3276899, 0, 131072, -3276898, 0, 131072, -3276897, 0, 131072, -3276896, 0, 131072, -3276895, 0, 131072, -3276894, 0, 131072, -3276893, 0, 131072, -3276892, 0, 131072, -3276891, 0, 131072, -3276890, 0, 131072, -3276889, 0, 131072, -3276888, 0, 131072, -3276887, 0, 131072, -3276886, 0, 131072, -3276885, 0, 131072, -3276884, 0, 131072, -3276883, 0, 131072, -3276882, 0, 131072, -3276881, 0, 131072, -3276880, 0, 131072, -3276879, 0, 131072, -3276878, 0, 131072, -3276877, 0, 131072, -3276876, 0, 131072, -3276875, 0, 131072, -3276874, 0, 131072, -3276873, 0, 131072, -3276872, 0, 131072, -3276871, 0, 131072, -3276870, 0, 131072, -3276869, 0, 131072, -3276868, 0, 131072, -3276867, 0, 131072, -3276866, 0, 131072, -3276865, 0, 131072, -3276864, 0, 131072, -3276863, 0, 131072, -3276862, 0, 131072, -3276861, 0, 131072, -3276860, 0, 131072, -3276859, 0, 131072, -3276858, 0, 131072, -3276857, 0, 131072, -3276856, 0, 131072, -3276855, 0, 131072, -3276854, 0, 131072, -3276853, 0, 131072, -3276852, 0, 131072, -3276851, 0, 131072, -3276850, 0, 131072, -3276849, 0, 131072, -3276848, 0, 131072, -3276847, 0, 131072, -3276846, 0, 131072, -3276845, 0, 131072, -3276844, 0, 131072, -3276843, 0, 131072, -3276842, 0, 131072, -3276841, 0, 131072, -3276840, 0, 131072, -3276839, 0, 131072, -3276838, 0, 131072, -3276837, 0, 131072, -3276836, 0, 131072, -3276835, 0, 131072, -3276834, 0, 131072, -3276833, 0, 131072, -3276832, 0, 131072, -3276831, 0, 131072, -3276830, 0, 131072, -3276829, 0, 131072, -3276828, 0, 131072, -3276827, 0, 131072, -3276826, 0, 131072, -3276825, 0, 131072, -3276824, 0, 131072, -3276823, 0, 131072, -3276822, 0, 131072, -3276821, 0, 131072, -3276820, 0, 131072, -3276819, 0, 131072, -3276818, 0, 131072, -3276817, 0, 131072, -3276816, 0, 131072, -3276815, 0, 131072, -3276814, 0, 131072, -3276813, 0, 131072, -3276812, 0, 131072, -3276811, 0, 131072, -3276810, 0, 131072, -3276809, 0, 131072, -3276808, 0, 131072, -3276807, 0, 131072, -3276806, 0, 131072, -3276805, 0, 131072, -3276804, 0, 131072, -3276803, 0, 131072, -3276802, 0, 131072, -3276801, 0, 131072, -3342336, 0, 131072, -3342335, 0, 131072, -3342334, 0, 131072, -3342333, 0, 131072, -3342332, 0, 131072, -3342331, 0, 131072, -3342330, 0, 131072, -3342329, 0, 131072, -3342328, 0, 131072, -3342327, 0, 131072, -3342326, 0, 131072, -3342325, 0, 131072, -3342324, 0, 131072, -3342323, 0, 131072, -3342322, 0, 131072, -3342321, 0, 131072, -3342320, 0, 131072, -3342319, 0, 131072, -3342318, 0, 131072, -3342317, 0, 131072, -3342316, 0, 131072, -3342315, 0, 131072, -3342314, 0, 131072, -3342313, 0, 131072, -3342312, 0, 131072, -3342311, 0, 131072, -3342310, 0, 131072, -3342309, 0, 131072, -3342308, 0, 131072, -3342307, 0, 131072, -3342306, 0, 131072, -3342305, 0, 131072, -3342304, 0, 131072, -3342303, 0, 131072, -3342302, 0, 131072, -3342301, 0, 131072, -3342300, 0, 131072, -3342299, 0, 131072, -3342298, 0, 131072, -3342297, 0, 131072, -3342296, 0, 131072, -3342295, 0, 131072, -3342294, 0, 131072, -3342293, 0, 131072, -3342292, 0, 131072, -3342291, 0, 131072, -3342290, 0, 131072, -3342289, 0, 131072, -3342288, 0, 131072, -3342287, 0, 131072, -3342286, 0, 131072, -3342285, 0, 131072, -3342284, 0, 131072, -3342283, 0, 131072, -3342282, 0, 131072, -3342281, 0, 131072, -3342280, 0, 131072, -3342279, 0, 131072, -3342278, 0, 131072, -3342277, 0, 131072, -3342276, 0, 131072, -3342275, 0, 131072, -3342274, 0, 131072, -3342273, 0, 131072, -3342272, 0, 131072, -3342271, 0, 131072, -3342270, 0, 131072, -3342269, 0, 131072, -3342268, 0, 131072, -3342267, 0, 131072, -3342266, 0, 131072, -3342265, 0, 131072, -3342264, 0, 131072, -3342263, 0, 131072, -3342262, 0, 131072, -3342261, 0, 131072, -3342260, 0, 131072, -3342259, 0, 131072, -3342258, 0, 131072, -3342257, 0, 131072, -3342256, 0, 131072, -3342255, 0, 131072, -3342254, 0, 131072, -3342253, 0, 131072, -3342252, 0, 131072, -3342251, 0, 131072, -3342250, 0, 131072, -3342249, 0, 131072, -3342248, 0, 131072, -3342247, 0, 131072, -3342246, 0, 131072, -3342245, 0, 131072, -3342244, 0, 131072, -3342243, 0, 131072, -3342242, 0, 131072, -3342241, 0, 131072, -3342240, 0, 131072, -3342239, 0, 131072, -3342238, 0, 131072, -3342237, 0, 131072, -3342236, 0, 131072, -3342235, 0, 131072, -3342234, 0, 131072, -3342233, 0, 131072, -3342232, 0, 131072, -3342231, 0, 131072, -3342230, 0, 131072, -3342229, 0, 131072, -3342228, 0, 131072, -3342227, 0, 131072, -3342226, 0, 131072, -3342225, 0, 131072, -3342224, 0, 131072, -3342223, 0, 131072, -3342222, 0, 131072, -3342221, 0, 131072, -3342220, 0, 131072, -3342219, 0, 131072, -3342218, 0, 131072, -3342217, 0, 131072, -3342216, 0, 131072, -3342215, 0, 131072, -3342214, 0, 131072, -3342213, 0, 131072, -3342212, 0, 131072, -3342211, 0, 131072, -3342210, 0, 131072, -3342209, 0, 131072, -3342208, 0, 131072, -3342207, 0, 131072, -3342206, 0, 131072, -3342205, 0, 131072, -3342204, 0, 131072, -3342203, 0, 131072, -3342202, 0, 131072, -3342201, 0, 131072, -3342200, 0, 131072, -3342199, 0, 131072, -3342198, 0, 131072, -3342197, 0, 131072, -3342196, 0, 131072, -3342195, 0, 131072, -3342194, 0, 131072, -3342193, 0, 131072, -3342192, 0, 131072, -3342191, 0, 131072, -3342190, 0, 131072, -3342189, 0, 131072, -3342188, 0, 131072, -3342187, 0, 131072, -3342186, 0, 131072, -3342185, 0, 131072, -3342184, 0, 131072, -3342183, 0, 131072, -3211371, 0, 131072, -3211370, 0, 131072, -3211369, 0, 131072, -3211368, 0, 131072, -3211367, 0, 131072, -3211366, 0, 131072, -3211365, 0, 131072, -3211364, 0, 131072, -3211363, 0, 131072, -3211362, 0, 131072, -3211361, 0, 131072, -3211360, 0, 131072, -3211359, 0, 131072, -3211358, 0, 131072, -3211357, 0, 131072, -3211356, 0, 131072, -3211355, 0, 131072, -3211354, 0, 131072, -3211353, 0, 131072, -3211352, 0, 131072, -3211351, 0, 131072, -3211350, 0, 131072, -3211349, 0, 131072, -3211348, 0, 131072, -3211347, 0, 131072, -3211346, 0, 131072, -3211345, 0, 131072, -3211344, 0, 131072, -3211343, 0, 131072, -3211342, 0, 131072, -3211341, 0, 131072, -3211340, 0, 131072, -3211339, 0, 131072, -3211338, 0, 131072, -3211337, 0, 131072, -3211336, 0, 131072, -3211335, 0, 131072, -3211334, 0, 131072, -3211333, 0, 131072, -3211332, 0, 131072, -3211331, 0, 131072, -3211330, 0, 131072, -3211329, 0, 131072, -3211328, 0, 131072, -3211327, 0, 131072, -3211326, 0, 131072, -3211325, 0, 131072, -3211324, 0, 131072, -3211323, 0, 131072, -3211322, 0, 131072, -3211321, 0, 131072, -3211320, 0, 131072, -3211319, 0, 131072, -3211318, 0, 131072, -3211317, 0, 131072, -3211316, 0, 131072, -3211315, 0, 131072, -3211314, 0, 131072, -3211313, 0, 131072, -3211312, 0, 131072, -3211311, 0, 131072, -3211310, 0, 131072, -3211309, 0, 131072, -3211308, 0, 131072, -3211307, 0, 131072, -3211306, 0, 131072, -3211305, 0, 131072, -3211304, 0, 131072, -3211303, 0, 131072, -3211302, 0, 131072, -3211301, 0, 131072, -3211300, 0, 131072, -3211299, 0, 131072, -3211298, 0, 131072, -3211297, 0, 131072, -3211296, 0, 131072, -3211295, 0, 131072, -3211294, 0, 131072, -3211293, 0, 131072, -3211292, 0, 131072, -3211291, 0, 131072, -3211290, 0, 131072, -3211289, 0, 131072, -3211288, 0, 131072, -3211287, 0, 131072, -3211286, 0, 131072, -3211285, 0, 131072, -3211284, 0, 131072, -3211283, 0, 131072, -3211282, 0, 131072, -3211281, 0, 131072, -3211280, 0, 131072, -3211279, 0, 131072, -3211278, 0, 131072, -3211277, 0, 131072, -3211276, 0, 131072, -3211275, 0, 131072, -3211274, 0, 131072, -3211273, 0, 131072, -3211272, 0, 131072, -3211271, 0, 131072, -3211270, 0, 131072, -3211269, 0, 131072, -3211268, 0, 131072, -3211267, 0, 131072, -3211266, 0, 131072, -3211265, 0, 131072, -3276800, 0, 131072, -3276799, 0, 131072, -3276798, 0, 131072, -3276797, 0, 131072, -3276796, 0, 131072, -3276795, 0, 131072, -3276794, 0, 131072, -3276793, 0, 131072, -3276792, 0, 131072, -3276791, 0, 131072, -3276790, 0, 131072, -3276789, 0, 131072, -3276788, 0, 131072, -3276787, 0, 131072, -3276786, 0, 131072, -3276785, 0, 131072, -3276784, 0, 131072, -3276783, 0, 131072, -3276782, 0, 131072, -3276781, 0, 131072, -3276780, 0, 131072, -3276779, 0, 131072, -3276778, 0, 131072, -3276777, 0, 131072, -3276776, 0, 131072, -3276775, 0, 131072, -3276774, 0, 131072, -3276773, 0, 131072, -3276772, 0, 131072, -3276771, 0, 131072, -3276770, 0, 131072, -3276769, 0, 131072, -3276768, 0, 131072, -3276767, 0, 131072, -3276766, 0, 131072, -3276765, 0, 131072, -3276764, 0, 131072, -3276763, 0, 131072, -3276762, 0, 131072, -3276761, 0, 131072, -3276760, 0, 131072, -3276759, 0, 131072, -3276758, 0, 131072, -3276757, 0, 131072, -3276756, 0, 131072, -3276755, 0, 131072, -3276754, 0, 131072, -3276753, 0, 131072, -3276752, 0, 131072, -3276751, 0, 131072, -3276750, 0, 131072, -3276749, 0, 131072, -3276748, 0, 131072, -3276747, 0, 131072, -3276746, 0, 131072, -3276745, 0, 131072, -3276744, 0, 131072, -3276743, 0, 131072, -3276742, 0, 131072, -3276741, 0, 131072, -3276740, 0, 131072, -3276739, 0, 131072, -3276738, 0, 131072, -3276737, 0, 131072, -3276736, 0, 131072, -3276735, 0, 131072, -3276734, 0, 131072, -3276733, 0, 131072, -3276732, 0, 131072, -3276731, 0, 131072, -3276730, 0, 131072, -3276729, 0, 131072, -3276728, 0, 131072, -3276727, 0, 131072, -3276726, 0, 131072, -3276725, 0, 131072, -3276724, 0, 131072, -3276723, 0, 131072, -3276722, 0, 131072, -3276721, 0, 131072, -3276720, 0, 131072, -3276719, 0, 131072, -3276718, 0, 131072, -3276717, 0, 131072, -3276716, 0, 131072, -3276715, 0, 131072, -3276714, 0, 131072, -3276713, 0, 131072, -3276712, 0, 131072, -3276711, 0, 131072, -3276710, 0, 131072, -3276709, 0, 131072, -3276708, 0, 131072, -3276707, 0, 131072, -3276706, 0, 131072, -3276705, 0, 131072, -3276704, 0, 131072, -3276703, 0, 131072, -3276702, 0, 131072, -3276701, 0, 131072, -3276700, 0, 131072, -3276699, 0, 131072, -3276698, 0, 131072, -3276697, 0, 131072, -3276696, 0, 131072, -3276695, 0, 131072, -3276694, 0, 131072, -3276693, 0, 131072, -3276692, 0, 131072, -3276691, 0, 131072, -3276690, 0, 131072, -3276689, 0, 131072, -3276688, 0, 131072, -3276687, 0, 131072, -3276686, 0, 131072, -3276685, 0, 131072, -3276684, 0, 131072, -3276683, 0, 131072, -3276682, 0, 131072, -3276681, 0, 131072, -3276680, 0, 131072, -3276679, 0, 131072, -3276678, 0, 131072, -3276677, 0, 131072, -3276676, 0, 131072, -3276675, 0, 131072, -3276674, 0, 131072, -3276673, 0, 131072, -3276672, 0, 131072, -3276671, 0, 131072, -3276670, 0, 131072, -3276669, 0, 131072, -3276668, 0, 131072, -3276667, 0, 131072, -3276666, 0, 131072, -3276665, 0, 131072, -3276664, 0, 131072, -3276663, 0, 131072, -3276662, 0, 131072, -3276661, 0, 131072, -3276660, 0, 131072, -3276659, 0, 131072, -3276658, 0, 131072, -3276657, 0, 131072, -3276656, 0, 131072, -3276655, 0, 131072, -3276654, 0, 131072, -3276653, 0, 131072, -3276652, 0, 131072, -3276651, 0, 131072, -3276650, 0, 131072, -3276649, 0, 131072, -3276648, 0, 131072, -3276647, 0, 131072, -3276646, 0, 131072, -3145835, 0, 131072, -3145834, 0, 131072, -3145833, 0, 131072, -3145832, 0, 131072, -3145831, 0, 131072, -3145830, 0, 131072, -3145829, 0, 131072, -3145828, 0, 131072, -3145827, 0, 131072, -3145826, 0, 131072, -3145825, 0, 131072, -3145824, 0, 131072, -3145823, 0, 131072, -3145822, 0, 131072, -3145821, 0, 131072, -3145820, 0, 131072, -3145819, 0, 131072, -3145818, 0, 131072, -3145817, 0, 131072, -3145816, 0, 131072, -3145815, 0, 131072, -3145814, 0, 131072, -3145813, 0, 131072, -3145812, 0, 131072, -3145811, 0, 131072, -3145810, 0, 131072, -3145809, 0, 131072, -3145808, 0, 131072, -3145807, 0, 131072, -3145806, 0, 131072, -3145805, 0, 131072, -3145804, 0, 131072, -3145803, 0, 131072, -3145802, 0, 131072, -3145801, 0, 131072, -3145800, 0, 131072, -3145799, 0, 131072, -3145798, 0, 131072, -3145797, 0, 131072, -3145796, 0, 131072, -3145795, 0, 131072, -3145794, 0, 131072, -3145793, 0, 131072, -3145792, 0, 131072, -3145791, 0, 131072, -3145790, 0, 131072, -3145789, 0, 131072, -3145788, 0, 131072, -3145787, 0, 131072, -3145786, 0, 131072, -3145785, 0, 131072, -3145784, 0, 131072, -3145783, 0, 131072, -3145782, 0, 131072, -3145781, 0, 131072, -3145780, 0, 131072, -3145779, 0, 131072, -3145778, 0, 131072, -3145777, 0, 131072, -3145776, 0, 131072, -3145775, 0, 131072, -3145774, 0, 131072, -3145773, 0, 131072, -3145772, 0, 131072, -3145771, 0, 131072, -3145770, 0, 131072, -3145769, 0, 131072, -3145768, 0, 131072, -3145767, 0, 131072, -3145766, 0, 131072, -3145765, 0, 131072, -3145764, 0, 131072, -3145763, 0, 131072, -3145762, 0, 131072, -3145761, 0, 131072, -3145760, 0, 131072, -3145759, 0, 131072, -3145758, 0, 131072, -3145757, 0, 131072, -3145756, 0, 131072, -3145755, 0, 131072, -3145754, 0, 131072, -3145753, 0, 131072, -3145752, 0, 131072, -3145751, 0, 131072, -3145750, 0, 131072, -3145749, 0, 131072, -3145748, 0, 131072, -3145747, 0, 131072, -3145746, 0, 131072, -3145745, 0, 131072, -3145744, 0, 131072, -3145743, 0, 131072, -3145742, 0, 131072, -3145741, 0, 131072, -3145740, 0, 131072, -3145739, 0, 131072, -3145738, 0, 131072, -3145737, 0, 131072, -3145736, 0, 131072, -3145735, 0, 131072, -3145734, 0, 131072, -3145733, 0, 131072, -3145732, 0, 131072, -3145731, 0, 131072, -3145730, 0, 131072, -3145729, 0, 131072, -3211264, 0, 131072, -3211263, 0, 131072, -3211262, 0, 131072, -3211261, 0, 131072, -3211260, 0, 131072, -3211259, 0, 131072, -3211258, 0, 131072, -3211257, 0, 131072, -3211256, 0, 131072, -3211255, 0, 131072, -3211254, 0, 131072, -3211253, 0, 131072, -3211252, 0, 131072, -3211251, 0, 131072, -3211250, 0, 131072, -3211249, 0, 131072, -3211248, 0, 131072, -3211247, 0, 131072, -3211246, 0, 131072, -3211245, 0, 131072, -3211244, 0, 131072, -3211243, 0, 131072, -3211242, 0, 131072, -3211241, 0, 131072, -3211240, 0, 131072, -3211239, 0, 131072, -3211238, 0, 131072, -3211237, 0, 131072, -3211236, 0, 131072, -3211235, 0, 131072, -3211234, 0, 131072, -3211233, 0, 131072, -3211232, 0, 131072, -3211231, 0, 131072, -3211230, 0, 131072, -3211229, 0, 131072, -3211228, 0, 131072, -3211227, 0, 131072, -3211226, 0, 131072, -3211225, 0, 131072, -3211224, 0, 131072, -3211223, 0, 131072, -3211222, 0, 131072, -3211221, 0, 131072, -3211220, 0, 131072, -3211219, 0, 131072, -3211218, 0, 131072, -3211217, 0, 131072, -3211216, 0, 131072, -3211215, 0, 131072, -3211214, 0, 131072, -3211213, 0, 131072, -3211212, 0, 131072, -3211211, 0, 131072, -3211210, 0, 131072, -3211209, 0, 131072, -3211208, 0, 131072, -3211207, 0, 131072, -3211206, 0, 131072, -3211205, 0, 131072, -3211204, 0, 131072, -3211203, 0, 131072, -3211202, 0, 131072, -3211201, 0, 131072, -3211200, 0, 131072, -3211199, 0, 131072, -3211198, 0, 131072, -3211197, 0, 131072, -3211196, 0, 131072, -3211195, 0, 131072, -3211194, 0, 131072, -3211193, 0, 131072, -3211192, 0, 131072, -3211191, 0, 131072, -3211190, 0, 131072, -3211189, 0, 131072, -3211188, 0, 131072, -3211187, 0, 131072, -3211186, 0, 131072, -3211185, 0, 131072, -3211184, 0, 131072, -3211183, 0, 131072, -3211182, 0, 131072, -3211181, 0, 131072, -3211180, 0, 131072, -3211179, 0, 131072, -3211178, 0, 131072, -3211177, 0, 131072, -3211176, 0, 131072, -3211175, 0, 131072, -3211174, 0, 131072, -3211173, 0, 131072, -3211172, 0, 131072, -3211171, 0, 131072, -3211170, 0, 131072, -3211169, 0, 131072, -3211168, 0, 131072, -3211167, 0, 131072, -3211166, 0, 131072, -3211165, 0, 131072, -3211164, 0, 131072, -3211163, 0, 131072, -3211162, 0, 131072, -3211161, 0, 131072, -3211160, 0, 131072, -3211159, 0, 131072, -3211158, 0, 131072, -3211157, 0, 131072, -3211156, 0, 131072, -3211155, 0, 131072, -3211154, 0, 131072, -3211153, 0, 131072, -3211152, 0, 131072, -3211151, 0, 131072, -3211150, 0, 131072, -3211149, 0, 131072, -3211148, 0, 131072, -3211147, 0, 131072, -3211146, 0, 131072, -3211145, 0, 131072, -3211144, 0, 131072, -3211143, 0, 131072, -3211142, 0, 131072, -3211141, 0, 131072, -3211140, 0, 131072, -3211139, 0, 131072, -3211138, 0, 131072, -3211137, 0, 131072, -3211136, 0, 131072, -3211135, 0, 131072, -3211134, 0, 131072, -3211133, 0, 131072, -3211132, 0, 131072, -3211131, 0, 131072, -3211130, 0, 131072, -3211129, 0, 131072, -3211128, 0, 131072, -3211127, 0, 131072, -3211126, 0, 131072, -3211125, 0, 131072, -3211124, 0, 131072, -3211123, 0, 131072, -3211122, 0, 131072, -3211121, 0, 131072, -3211120, 0, 131072, -3211119, 0, 131072, -3211118, 0, 131072, -3211117, 0, 131072, -3211116, 0, 131072, -3211115, 0, 131072, -3211114, 0, 131072, -3211113, 0, 131072, -3211112, 0, 131072, -3211111, 0, 131072, -3211110, 0, 131072, -3211109, 0, 131072, -3211108, 0, 131072, -3080299, 0, 131072, -3080298, 0, 131072, -3080297, 0, 131072, -3080296, 0, 131072, -3080295, 0, 131072, -3080294, 0, 131072, -3080293, 0, 131072, -3080292, 0, 131072, -3080291, 0, 131072, -3080290, 0, 131072, -3080289, 0, 131072, -3080288, 0, 131072, -3080287, 0, 131072, -3080286, 0, 131072, -3080285, 0, 131072, -3080284, 0, 131072, -3080283, 0, 131072, -3080282, 0, 131072, -3080281, 0, 131072, -3080280, 0, 131072, -3080279, 0, 131072, -3080278, 0, 131072, -3080277, 0, 131072, -3080276, 0, 131072, -3080275, 0, 131072, -3080274, 0, 131072, -3080273, 0, 131072, -3080272, 0, 131072, -3080271, 0, 131072, -3080270, 0, 131072, -3080269, 0, 131072, -3080268, 0, 131072, -3080267, 0, 131072, -3080266, 0, 131072, -3080265, 0, 131072, -3080264, 0, 131072, -3080263, 0, 131072, -3080262, 0, 131072, -3080261, 0, 131072, -3080260, 0, 131072, -3080259, 0, 131072, -3080258, 0, 131072, -3080257, 0, 131072, -3080256, 0, 131072, -3080255, 0, 131072, -3080254, 0, 131072, -3080253, 0, 131072, -3080252, 0, 131072, -3080251, 0, 131072, -3080250, 0, 131072, -3080249, 0, 131072, -3080248, 0, 131072, -3080247, 0, 131072, -3080246, 0, 131072, -3080245, 0, 131072, -3080244, 0, 131072, -3080243, 0, 131072, -3080242, 0, 131072, -3080241, 0, 131072, -3080240, 0, 131072, -3080239, 0, 131072, -3080238, 0, 131072, -3080237, 0, 131072, -3080236, 0, 131072, -3080235, 0, 131072, -3080234, 0, 131072, -3080233, 0, 131072, -3080232, 0, 131072, -3080231, 0, 131072, -3080230, 0, 131072, -3080229, 0, 131072, -3080228, 0, 131072, -3080227, 0, 131072, -3080226, 0, 131072, -3080225, 0, 131072, -3080224, 0, 131072, -3080223, 0, 131072, -3080222, 0, 131072, -3080221, 0, 131072, -3080220, 0, 131072, -3080219, 0, 131072, -3080218, 0, 131072, -3080217, 0, 131072, -3080216, 0, 131072, -3080215, 0, 131072, -3080214, 0, 131072, -3080213, 0, 131072, -3080212, 0, 131072, -3080211, 0, 131072, -3080210, 0, 131072, -3080209, 0, 131072, -3080208, 0, 131072, -3080207, 0, 131072, -3080206, 0, 131072, -3080205, 0, 131072, -3080204, 0, 131072, -3080203, 0, 131072, -3080202, 0, 131072, -3080201, 0, 131072, -3080200, 0, 131072, -3080199, 0, 131072, -3080198, 0, 131072, -3080197, 0, 131072, -3080196, 0, 131072, -3080195, 0, 131072, -3080194, 0, 131072, -3080193, 0, 131072, -3145728, 0, 131072, -3145727, 0, 131072, -3145726, 0, 131072, -3145725, 0, 131072, -3145724, 0, 131072, -3145723, 0, 131072, -3145722, 0, 131072, -3145721, 0, 131072, -3145720, 0, 131072, -3145719, 0, 131072, -3145718, 0, 131072, -3145717, 0, 131072, -3145716, 0, 131072, -3145715, 0, 131072, -3145714, 0, 131072, -3145713, 0, 131072, -3145712, 0, 131072, -3145711, 0, 131072, -3145710, 0, 131072, -3145709, 0, 131072, -3145708, 0, 131072, -3145707, 0, 131072, -3145706, 0, 131072, -3145705, 0, 131072, -3145704, 0, 131072, -3145703, 0, 131072, -3145702, 0, 131072, -3145701, 0, 131072, -3145700, 0, 131072, -3145699, 0, 131072, -3145698, 0, 131072, -3145697, 0, 131072, -3145696, 0, 131072, -3145695, 0, 131072, -3145694, 0, 131072, -3145693, 0, 131072, -3145692, 0, 131072, -3145691, 0, 131072, -3145690, 0, 131072, -3145689, 0, 131072, -3145688, 0, 131072, -3145687, 0, 131072, -3145686, 0, 131072, -3145685, 0, 131072, -3145684, 0, 131072, -3145683, 0, 131072, -3145682, 0, 131072, -3145681, 0, 131072, -3145680, 0, 131072, -3145679, 0, 131072, -3145678, 0, 131072, -3145677, 0, 131072, -3145676, 0, 131072, -3145675, 0, 131072, -3145674, 0, 131072, -3145673, 0, 131072, -3145672, 0, 131072, -3145671, 0, 131072, -3145670, 0, 131072, -3145669, 0, 131072, -3145668, 0, 131072, -3145667, 0, 131072, -3145666, 0, 131072, -3145665, 0, 131072, -3145664, 0, 131072, -3145663, 0, 131072, -3145662, 0, 131072, -3145661, 0, 131072, -3145660, 0, 131072, -3145659, 0, 131072, -3145658, 0, 131072, -3145657, 0, 131072, -3145656, 0, 131072, -3145655, 0, 131072, -3145654, 0, 131072, -3145653, 0, 131072, -3145652, 0, 131072, -3145651, 0, 131072, -3145650, 0, 131072, -3145649, 0, 131072, -3145648, 0, 131072, -3145647, 0, 131072, -3145646, 0, 131072, -3145645, 0, 131072, -3145644, 0, 131072, -3145643, 0, 131072, -3145642, 0, 131072, -3145641, 0, 131072, -3145640, 0, 131072, -3145639, 0, 131072, -3145638, 0, 131072, -3145637, 0, 131072, -3145636, 0, 131072, -3145635, 0, 131072, -3145634, 0, 131072, -3145633, 0, 131072, -3145632, 0, 131072, -3145631, 0, 131072, -3145630, 0, 131072, -3145629, 0, 131072, -3145628, 0, 131072, -3145627, 0, 131072, -3145626, 0, 131072, -3145625, 0, 131072, -3145624, 0, 131072, -3145623, 0, 131072, -3145622, 0, 131072, -3145621, 0, 131072, -3145620, 0, 131072, -3145619, 0, 131072, -3145618, 0, 131072, -3145617, 0, 131072, -3145616, 0, 131072, -3145615, 0, 131072, -3145614, 0, 131072, -3145613, 0, 131072, -3145612, 0, 131072, -3145611, 0, 131072, -3145610, 0, 131072, -3145609, 0, 131072, -3145608, 0, 131072, -3145607, 0, 131072, -3145606, 0, 131072, -3145605, 0, 131072, -3145604, 0, 131072, -3145603, 0, 131072, -3145602, 0, 131072, -3145601, 0, 131072, -3145600, 0, 131072, -3145599, 0, 131072, -3145598, 0, 131072, -3145597, 0, 131072, -3145596, 0, 131072, -3145595, 0, 131072, -3145594, 0, 131072, -3145593, 0, 131072, -3145592, 0, 131072, -3145591, 0, 131072, -3145590, 0, 131072, -3145589, 0, 131072, -3145588, 0, 131072, -3145587, 0, 131072, -3145586, 0, 131072, -3145585, 0, 131072, -3145584, 0, 131072, -3145583, 0, 131072, -3145582, 0, 131072, -3145581, 0, 131072, -3145580, 0, 131072, -3145579, 0, 131072, -3145578, 0, 131072, -3145577, 0, 131072, -3145576, 0, 131072, -3145575, 0, 131072, -3145574, 0, 131072, -3145573, 0, 131072, -3145572, 0, 131072, -3145571, 0, 131072, -3014764, 0, 131072, -3014763, 0, 131072, -3014762, 0, 131072, -3014761, 0, 131072, -3014760, 0, 131072, -3014759, 0, 131072, -3014758, 0, 131072, -3014757, 0, 131072, -3014756, 0, 131072, -3014755, 0, 131072, -3014754, 0, 131072, -3014753, 0, 131072, -3014752, 0, 131072, -3014751, 0, 131072, -3014750, 0, 131072, -3014749, 0, 131072, -3014748, 0, 131072, -3014747, 0, 131072, -3014746, 0, 131072, -3014745, 0, 131072, -3014744, 0, 131072, -3014743, 0, 131072, -3014742, 0, 131072, -3014741, 0, 131072, -3014740, 0, 131072, -3014739, 0, 131072, -3014738, 0, 131072, -3014737, 0, 131072, -3014736, 0, 131072, -3014735, 0, 131072, -3014734, 0, 131072, -3014733, 0, 131072, -3014732, 0, 131072, -3014731, 0, 131072, -3014730, 0, 131072, -3014729, 0, 131072, -3014728, 0, 131072, -3014727, 0, 131072, -3014726, 0, 131072, -3014725, 0, 131072, -3014724, 0, 131072, -3014723, 0, 131072, -3014722, 0, 131072, -3014721, 0, 131072, -3014720, 0, 131072, -3014719, 0, 131072, -3014718, 0, 131072, -3014717, 0, 131072, -3014716, 0, 131072, -3014715, 0, 131072, -3014714, 0, 131072, -3014713, 0, 131072, -3014712, 0, 131072, -3014711, 0, 131072, -3014710, 0, 131072, -3014709, 0, 131072, -3014708, 0, 131072, -3014707, 0, 131072, -3014706, 0, 131072, -3014705, 0, 131072, -3014704, 0, 131072, -3014703, 0, 131072, -3014702, 0, 131072, -3014701, 0, 131072, -3014700, 0, 131072, -3014699, 0, 131072, -3014698, 0, 131072, -3014697, 0, 131072, -3014696, 0, 131072, -3014695, 0, 131072, -3014694, 0, 131072, -3014693, 0, 131072, -3014692, 0, 131072, -3014691, 0, 131072, -3014690, 0, 131072, -3014689, 0, 131072, -3014688, 0, 131072, -3014687, 0, 131072, -3014686, 0, 131072, -3014685, 0, 131072, -3014684, 0, 131072, -3014683, 0, 131072, -3014682, 0, 131072, -3014681, 0, 131072, -3014680, 0, 131072, -3014679, 0, 131072, -3014678, 0, 131072, -3014677, 0, 131072, -3014676, 0, 131072, -3014675, 0, 131072, -3014674, 0, 131072, -3014673, 0, 131072, -3014672, 0, 131072, -3014671, 0, 131072, -3014670, 0, 131072, -3014669, 0, 131072, -3014668, 0, 131072, -3014667, 0, 131072, -3014666, 0, 131072, -3014665, 0, 131072, -3014664, 0, 131072, -3014663, 0, 131072, -3014662, 0, 131072, -3014661, 0, 131072, -3014660, 0, 131072, -3014659, 0, 131072, -3014658, 0, 131072, -3014657, 0, 131072, -3080192, 0, 131072, -3080191, 0, 131072, -3080190, 0, 131072, -3080189, 0, 131072, -3080188, 0, 131072, -3080187, 0, 131072, -3080186, 0, 131072, -3080185, 0, 131072, -3080184, 0, 131072, -3080183, 0, 131072, -3080182, 0, 131072, -3080181, 0, 131072, -3080180, 0, 131072, -3080179, 0, 131072, -3080178, 0, 131072, -3080177, 0, 131072, -3080176, 0, 131072, -3080175, 0, 131072, -3080174, 0, 131072, -3080173, 0, 131072, -3080172, 0, 131072, -3080171, 0, 131072, -3080170, 0, 131072, -3080169, 0, 131072, -3080168, 0, 131072, -3080167, 0, 131072, -3080166, 0, 131072, -3080165, 0, 131072, -3080164, 0, 131072, -3080163, 0, 131072, -3080162, 0, 131072, -3080161, 0, 131072, -3080160, 0, 131072, -3080159, 0, 131072, -3080158, 0, 131072, -3080157, 0, 131072, -3080156, 0, 131072, -3080155, 0, 131072, -3080154, 0, 131072, -3080153, 0, 131072, -3080152, 0, 131072, -3080151, 0, 131072, -3080150, 0, 131072, -3080149, 0, 131072, -3080148, 0, 131072, -3080147, 0, 131072, -3080146, 0, 131072, -3080145, 0, 131072, -3080144, 0, 131072, -3080143, 0, 131072, -3080142, 0, 131072, -3080141, 0, 131072, -3080140, 0, 131072, -3080139, 0, 131072, -3080138, 0, 131072, -3080137, 0, 131072, -3080136, 0, 131072, -3080135, 0, 131072, -3080134, 0, 131072, -3080133, 0, 131072, -3080132, 0, 131072, -3080131, 0, 131072, -3080130, 0, 131072, -3080129, 0, 131072, -3080128, 0, 131072, -3080127, 0, 131072, -3080126, 0, 131072, -3080125, 0, 131072, -3080124, 0, 131072, -3080123, 0, 131072, -3080122, 0, 131072, -3080121, 0, 131072, -3080120, 0, 131072, -3080119, 0, 131072, -3080118, 0, 131072, -3080117, 0, 131072, -3080116, 0, 131072, -3080115, 0, 131072, -3080114, 0, 131072, -3080113, 0, 131072, -3080112, 0, 131072, -3080111, 0, 131072, -3080110, 0, 131072, -3080109, 0, 131072, -3080108, 0, 131072, -3080107, 0, 131072, -3080106, 0, 131072, -3080105, 0, 131072, -3080104, 0, 131072, -3080103, 0, 131072, -3080102, 0, 131072, -3080101, 0, 131072, -3080100, 0, 131072, -3080099, 0, 131072, -3080098, 0, 131072, -3080097, 0, 131072, -3080096, 0, 131072, -3080095, 0, 131072, -3080094, 0, 131072, -3080093, 0, 131072, -3080092, 0, 131072, -3080091, 0, 131072, -3080090, 0, 131072, -3080089, 0, 131072, -3080088, 0, 131072, -3080087, 0, 131072, -3080086, 0, 131072, -3080085, 0, 131072, -3080084, 0, 131072, -3080083, 0, 131072, -3080082, 0, 131072, -3080081, 0, 131072, -3080080, 0, 131072, -3080079, 0, 131072, -3080078, 0, 131072, -3080077, 0, 131072, -3080076, 0, 131072, -3080075, 0, 131072, -3080074, 0, 131072, -3080073, 0, 131072, -3080072, 0, 131072, -3080071, 0, 131072, -3080070, 0, 131072, -3080069, 0, 131072, -3080068, 0, 131072, -3080067, 0, 131072, -3080066, 0, 131072, -3080065, 0, 131072, -3080064, 0, 131072, -3080063, 0, 131072, -3080062, 0, 131072, -3080061, 0, 131072, -3080060, 0, 131072, -3080059, 0, 131072, -3080058, 0, 131072, -3080057, 0, 131072, -3080056, 0, 131072, -3080055, 0, 131072, -3080054, 0, 131072, -3080053, 0, 131072, -3080052, 0, 131072, -3080051, 0, 131072, -3080050, 0, 131072, -3080049, 0, 131072, -3080048, 0, 131072, -3080047, 0, 131072, -3080046, 0, 131072, -3080045, 0, 131072, -3080044, 0, 131072, -3080043, 0, 131072, -3080042, 0, 131072, -3080041, 0, 131072, -3080040, 0, 131072, -3080039, 0, 131072, -3080038, 0, 131072, -3080037, 0, 131072, -3080036, 0, 131072, -3080035, 0, 131072, -3080034, 0, 131072, -2949228, 0, 131072, -2949227, 0, 131072, -2949226, 0, 131072, -2949225, 0, 131072, -2949224, 0, 131072, -2949223, 0, 131072, -2949222, 0, 131072, -2949221, 0, 131072, -2949220, 0, 131072, -2949219, 0, 131072, -2949218, 0, 131072, -2949217, 0, 131072, -2949216, 0, 131072, -2949215, 0, 131072, -2949214, 0, 131072, -2949213, 0, 131072, -2949212, 0, 131072, -2949211, 0, 131072, -2949210, 0, 131072, -2949209, 0, 131072, -2949208, 0, 131072, -2949207, 0, 131072, -2949206, 0, 131072, -2949205, 0, 131072, -2949204, 0, 131072, -2949203, 0, 131072, -2949202, 0, 131072, -2949201, 0, 131072, -2949200, 0, 131072, -2949199, 0, 131072, -2949198, 0, 131072, -2949197, 0, 131072, -2949196, 0, 131072, -2949195, 0, 131072, -2949194, 0, 131072, -2949193, 0, 131072, -2949192, 0, 131072, -2949191, 0, 131072, -2949190, 0, 131072, -2949189, 0, 131072, -2949188, 0, 131072, -2949187, 0, 131072, -2949186, 0, 131072, -2949185, 0, 131072, -2949184, 0, 131072, -2949183, 0, 131072, -2949182, 0, 131072, -2949181, 0, 131072, -2949180, 0, 131072, -2949179, 0, 131072, -2949178, 0, 131072, -2949177, 0, 131072, -2949176, 0, 131072, -2949175, 0, 131072, -2949174, 0, 131072, -2949173, 0, 131072, -2949172, 0, 131072, -2949171, 0, 131072, -2949170, 0, 131072, -2949169, 0, 131072, -2949168, 0, 131072, -2949167, 0, 131072, -2949166, 0, 131072, -2949165, 0, 131072, -2949164, 0, 131072, -2949163, 0, 131072, -2949162, 0, 131072, -2949161, 0, 131072, -2949160, 0, 131072, -2949159, 0, 131072, -2949158, 0, 131072, -2949157, 0, 131072, -2949156, 0, 131072, -2949155, 0, 131072, -2949154, 0, 131072, -2949153, 0, 131072, -2949152, 0, 131072, -2949151, 0, 131072, -2949150, 0, 131072, -2949149, 0, 131072, -2949148, 0, 131072, -2949147, 0, 131072, -2949146, 0, 131072, -2949145, 0, 131072, -2949144, 0, 131072, -2949143, 0, 131072, -2949142, 0, 131072, -2949141, 0, 131072, -2949140, 0, 131072, -2949139, 0, 131072, -2949138, 0, 131072, -2949137, 0, 131072, -2949136, 0, 131072, -2949135, 0, 131072, -2949134, 0, 131072, -2949133, 0, 131072, -2949132, 0, 131072, -2949131, 0, 131072, -2949130, 0, 131072, -2949129, 0, 131072, -2949128, 0, 131072, -2949127, 0, 131072, -2949126, 0, 131072, -2949125, 0, 131072, -2949124, 0, 131072, -2949123, 0, 131072, -2949122, 0, 131072, -2949121, 0, 131072, -3014656, 0, 131072, -3014655, 0, 131072, -3014654, 0, 131072, -3014653, 0, 131072, -3014652, 0, 131072, -3014651, 0, 131072, -3014650, 0, 131072, -3014649, 0, 131072, -3014648, 0, 131072, -3014647, 0, 131072, -3014646, 0, 131072, -3014645, 0, 131072, -3014644, 0, 131072, -3014643, 0, 131072, -3014642, 0, 131072, -3014641, 0, 131072, -3014640, 0, 131072, -3014639, 0, 131072, -3014638, 0, 131072, -3014637, 0, 131072, -3014636, 0, 131072, -3014635, 0, 131072, -3014634, 0, 131072, -3014633, 0, 131072, -3014632, 0, 131072, -3014631, 0, 131072, -3014630, 0, 131072, -3014629, 0, 131072, -3014628, 0, 131072, -3014627, 0, 131072, -3014626, 0, 131072, -3014625, 0, 131072, -3014624, 0, 131072, -3014623, 0, 131072, -3014622, 0, 131072, -3014621, 0, 131072, -3014620, 0, 131072, -3014619, 0, 131072, -3014618, 0, 131072, -3014617, 0, 131072, -3014616, 0, 131072, -3014615, 0, 131072, -3014614, 0, 131072, -3014613, 0, 131072, -3014612, 0, 131072, -3014611, 0, 131072, -3014610, 0, 131072, -3014609, 0, 131072, -3014608, 0, 131072, -3014607, 0, 131072, -3014606, 0, 131072, -3014605, 0, 131072, -3014604, 0, 131072, -3014603, 0, 131072, -3014602, 0, 131072, -3014601, 0, 131072, -3014600, 0, 131072, -3014599, 0, 131072, -3014598, 0, 131072, -3014597, 0, 131072, -3014596, 0, 131072, -3014595, 0, 131072, -3014594, 0, 131072, -3014593, 0, 131072, -3014592, 0, 131072, -3014591, 0, 131072, -3014590, 0, 131072, -3014589, 0, 131072, -3014588, 0, 131072, -3014587, 0, 131072, -3014586, 0, 131072, -3014585, 0, 131072, -3014584, 0, 131072, -3014583, 0, 131072, -3014582, 0, 131072, -3014581, 0, 131072, -3014580, 0, 131072, -3014579, 0, 131072, -3014578, 0, 131072, -3014577, 0, 131072, -3014576, 0, 131072, -3014575, 0, 131072, -3014574, 0, 131072, -3014573, 0, 131072, -3014572, 0, 131072, -3014571, 0, 131072, -3014570, 0, 131072, -3014569, 0, 131072, -3014568, 0, 131072, -3014567, 0, 131072, -3014566, 0, 131072, -3014565, 0, 131072, -3014564, 0, 131072, -3014563, 0, 131072, -3014562, 0, 131072, -3014561, 0, 131072, -3014560, 0, 131072, -3014559, 0, 131072, -3014558, 0, 131072, -3014557, 0, 131072, -3014556, 0, 131072, -3014555, 0, 131072, -3014554, 0, 131072, -3014553, 0, 131072, -3014552, 0, 131072, -3014551, 0, 131072, -3014550, 0, 131072, -3014549, 0, 131072, -3014548, 0, 131072, -3014547, 0, 131072, -3014546, 0, 131072, -3014545, 0, 131072, -3014544, 0, 131072, -3014543, 0, 131072, -3014542, 0, 131072, -3014541, 0, 131072, -3014540, 0, 131072, -3014539, 0, 131072, -3014538, 0, 131072, -3014537, 0, 131072, -3014536, 0, 131072, -3014535, 0, 131072, -3014534, 0, 131072, -3014533, 0, 131072, -3014532, 0, 131072, -3014531, 0, 131072, -3014530, 0, 131072, -3014529, 0, 131072, -3014528, 0, 131072, -3014527, 0, 131072, -3014526, 0, 131072, -3014525, 0, 131072, -3014524, 0, 131072, -3014523, 0, 131072, -3014522, 0, 131072, -3014521, 0, 131072, -3014520, 0, 131072, -3014519, 0, 131072, -3014518, 0, 131072, -3014517, 0, 131072, -3014516, 0, 131072, -3014515, 0, 131072, -3014514, 0, 131072, -3014513, 0, 131072, -3014512, 0, 131072, -3014511, 0, 131072, -3014510, 0, 131072, -3014509, 0, 131072, -3014508, 0, 131072, -3014507, 0, 131072, -3014506, 0, 131072, -3014505, 0, 131072, -3014504, 0, 131072, -3014503, 0, 131072, -3014502, 0, 131072, -3014501, 0, 131072, -3014500, 0, 131072, -3014499, 0, 131072, -3014498, 0, 131072, -3014497, 0, 131072, -2883692, 0, 131072, -2883691, 0, 131072, -2883690, 0, 131072, -2883689, 0, 131072, -2883688, 0, 131072, -2883687, 0, 131072, -2883686, 0, 131072, -2883685, 0, 131072, -2883684, 0, 131072, -2883683, 0, 131072, -2883682, 0, 131072, -2883681, 0, 131072, -2883680, 0, 131072, -2883679, 0, 131072, -2883678, 0, 131072, -2883677, 0, 131072, -2883676, 0, 131072, -2883675, 0, 131072, -2883674, 0, 131072, -2883673, 0, 131072, -2883672, 0, 131072, -2883671, 0, 131072, -2883670, 0, 131072, -2883669, 0, 131072, -2883668, 0, 131072, -2883667, 0, 131072, -2883666, 0, 131072, -2883665, 0, 131072, -2883664, 0, 131072, -2883663, 0, 131072, -2883662, 0, 131072, -2883661, 0, 131072, -2883660, 0, 131072, -2883659, 0, 131072, -2883658, 0, 131072, -2883657, 0, 131072, -2883656, 0, 131072, -2883655, 0, 131072, -2883654, 0, 131072, -2883653, 0, 131072, -2883652, 0, 131072, -2883651, 0, 131072, -2883650, 0, 131072, -2883649, 0, 131072, -2883648, 0, 131072, -2883647, 0, 131072, -2883646, 0, 131072, -2883645, 0, 131072, -2883644, 0, 131072, -2883643, 0, 131072, -2883642, 0, 131072, -2883641, 0, 131072, -2883640, 0, 131072, -2883639, 0, 131072, -2883638, 0, 131072, -2883637, 0, 131072, -2883636, 0, 131072, -2883635, 0, 131072, -2883634, 0, 131072, -2883633, 0, 131072, -2883632, 0, 131072, -2883631, 0, 131072, -2883630, 0, 131072, -2883629, 0, 131072, -2883628, 0, 131072, -2883627, 0, 131072, -2883626, 0, 131072, -2883625, 0, 131072, -2883624, 0, 131072, -2883623, 0, 131072, -2883622, 0, 131072, -2883621, 0, 131072, -2883620, 0, 131072, -2883619, 0, 131072, -2883618, 0, 131072, -2883617, 0, 131072, -2883616, 0, 131072, -2883615, 0, 131072, -2883614, 0, 131072, -2883613, 0, 131072, -2883612, 0, 131072, -2883611, 0, 131072, -2883610, 0, 131072, -2883609, 0, 131072, -2883608, 0, 131072, -2883607, 0, 131072, -2883606, 0, 131072, -2883605, 0, 131072, -2883604, 0, 131072, -2883603, 0, 131072, -2883602, 0, 131072, -2883601, 0, 131072, -2883600, 0, 131072, -2883599, 0, 131072, -2883598, 0, 131072, -2883597, 0, 131072, -2883596, 0, 131072, -2883595, 0, 131072, -2883594, 0, 131072, -2883593, 0, 131072, -2883592, 0, 131072, -2883591, 0, 131072, -2883590, 0, 131072, -2883589, 0, 131072, -2883588, 0, 131072, -2883587, 0, 131072, -2883586, 0, 131072, -2883585, 0, 131072, -2949120, 0, 131072, -2949119, 0, 131072, -2949118, 0, 131072, -2949117, 0, 131072, -2949116, 0, 131072, -2949115, 0, 131072, -2949114, 0, 131072, -2949113, 0, 131072, -2949112, 0, 131072, -2949111, 0, 131072, -2949110, 0, 131072, -2949109, 0, 131072, -2949108, 0, 131072, -2949107, 0, 131072, -2949106, 0, 131072, -2949105, 0, 131072, -2949104, 0, 131072, -2949103, 0, 131072, -2949102, 0, 131072, -2949101, 0, 131072, -2949100, 0, 131072, -2949099, 0, 131072, -2949098, 0, 131072, -2949097, 0, 131072, -2949096, 0, 131072, -2949095, 0, 131072, -2949094, 0, 131072, -2949093, 0, 131072, -2949092, 0, 131072, -2949091, 0, 131072, -2949090, 0, 131072, -2949089, 0, 131072, -2949088, 0, 131072, -2949087, 0, 131072, -2949086, 0, 131072, -2949085, 0, 131072, -2949084, 0, 131072, -2949083, 0, 131072, -2949082, 0, 131072, -2949081, 0, 131072, -2949080, 0, 131072, -2949079, 0, 131072, -2949078, 0, 131072, -2949077, 0, 131072, -2949076, 0, 131072, -2949075, 0, 131072, -2949074, 0, 131072, -2949073, 0, 131072, -2949072, 0, 131072, -2949071, 0, 131072, -2949070, 0, 131072, -2949069, 0, 131072, -2949068, 0, 131072, -2949067, 0, 131072, -2949066, 0, 131072, -2949065, 0, 131072, -2949064, 0, 131072, -2949063, 0, 131072, -2949062, 0, 131072, -2949061, 0, 131072, -2949060, 0, 131072, -2949059, 0, 131072, -2949058, 0, 131072, -2949057, 0, 131072, -2949056, 0, 131072, -2949055, 0, 131072, -2949054, 0, 131072, -2949053, 0, 131072, -2949052, 0, 131072, -2949051, 0, 131072, -2949050, 0, 131072, -2949049, 0, 131072, -2949048, 0, 131072, -2949047, 0, 131072, -2949046, 0, 131072, -2949045, 0, 131072, -2949044, 0, 131072, -2949043, 0, 131072, -2949042, 0, 131072, -2949041, 0, 131072, -2949040, 0, 131072, -2949039, 0, 131072, -2949038, 0, 131072, -2949037, 0, 131072, -2949036, 0, 131072, -2949035, 0, 131072, -2949034, 0, 131072, -2949033, 0, 131072, -2949032, 0, 131072, -2949031, 0, 131072, -2949030, 0, 131072, -2949029, 0, 131072, -2949028, 0, 131072, -2949027, 0, 131072, -2949026, 0, 131072, -2949025, 0, 131072, -2949024, 0, 131072, -2949023, 0, 131072, -2949022, 0, 131072, -2949021, 0, 131072, -2949020, 0, 131072, -2949019, 0, 131072, -2949018, 0, 131072, -2949017, 0, 131072, -2949016, 0, 131072, -2949015, 0, 131072, -2949014, 0, 131072, -2949013, 0, 131072, -2949012, 0, 131072, -2949011, 0, 131072, -2949010, 0, 131072, -2949009, 0, 131072, -2949008, 0, 131072, -2949007, 0, 131072, -2949006, 0, 131072, -2949005, 0, 131072, -2949004, 0, 131072, -2949003, 0, 131072, -2949002, 0, 131072, -2949001, 0, 131072, -2949000, 0, 131072, -2948999, 0, 131072, -2948998, 0, 131072, -2948997, 0, 131072, -2948996, 0, 131072, -2948995, 0, 131072, -2948994, 0, 131072, -2948993, 0, 131072, -2948992, 0, 131072, -2948991, 0, 131072, -2948990, 0, 131072, -2948989, 0, 131072, -2948988, 0, 131072, -2948987, 0, 131072, -2948986, 0, 131072, -2948985, 0, 131072, -2948984, 0, 131072, -2948983, 0, 131072, -2948982, 0, 131072, -2948981, 0, 131072, -2948980, 0, 131072, -2948979, 0, 131072, -2948978, 0, 131072, -2948977, 0, 131072, -2948976, 0, 131072, -2948975, 0, 131072, -2948974, 0, 131072, -2948973, 0, 131072, -2948972, 0, 131072, -2948971, 0, 131072, -2948970, 0, 131072, -2948969, 0, 131072, -2948968, 0, 131072, -2948967, 0, 131072, -2948966, 0, 131072, -2948965, 0, 131072, -2948964, 0, 131072, -2948963, 0, 131072, -2948962, 0, 131072, -2948961, 0, 131072, -2948960, 0, 131072, -2818156, 0, 131072, -2818155, 0, 131072, -2818154, 0, 131072, -2818153, 0, 131072, -2818152, 0, 131072, -2818151, 0, 131072, -2818150, 0, 131072, -2818149, 0, 131072, -2818148, 0, 131072, -2818147, 0, 131072, -2818146, 0, 131072, -2818145, 0, 131072, -2818144, 0, 131072, -2818143, 0, 131072, -2818142, 0, 131072, -2818141, 0, 131072, -2818140, 0, 131072, -2818139, 0, 131072, -2818138, 0, 131072, -2818137, 0, 131072, -2818136, 0, 131072, -2818135, 0, 131072, -2818134, 0, 131072, -2818133, 0, 131072, -2818132, 0, 131072, -2818131, 0, 131072, -2818130, 0, 131072, -2818129, 0, 131072, -2818128, 0, 131072, -2818127, 0, 131072, -2818126, 0, 131072, -2818125, 0, 131072, -2818124, 0, 131072, -2818123, 0, 131072, -2818122, 0, 131072, -2818121, 0, 131072, -2818120, 0, 131072, -2818119, 0, 131072, -2818118, 0, 131072, -2818117, 0, 131072, -2818116, 0, 131072, -2818115, 0, 131072, -2818114, 0, 131072, -2818113, 0, 131072, -2818112, 0, 131072, -2818111, 0, 131072, -2818110, 0, 131072, -2818109, 0, 131072, -2818108, 0, 131072, -2818107, 0, 131072, -2818106, 0, 131072, -2818105, 0, 131072, -2818104, 0, 131072, -2818103, 0, 131072, -2818102, 0, 131072, -2818101, 0, 131072, -2818100, 0, 131072, -2818099, 0, 131072, -2818098, 0, 131072, -2818097, 0, 131072, -2818096, 0, 131072, -2818095, 0, 131072, -2818094, 0, 131072, -2818093, 0, 131072, -2818092, 0, 131072, -2818091, 0, 131072, -2818090, 0, 131072, -2818089, 0, 131072, -2818088, 0, 131072, -2818087, 0, 131072, -2818086, 0, 131072, -2818085, 0, 131072, -2818084, 0, 131072, -2818083, 0, 131072, -2818082, 0, 131072, -2818081, 0, 131072, -2818080, 0, 131072, -2818079, 0, 131072, -2818078, 0, 131072, -2818077, 0, 131072, -2818076, 0, 131072, -2818075, 0, 131072, -2818074, 0, 131072, -2818073, 0, 131072, -2818072, 0, 131072, -2818071, 0, 131072, -2818070, 0, 131072, -2818069, 0, 131072, -2818068, 0, 131072, -2818067, 0, 131072, -2818066, 0, 131072, -2818065, 0, 131072, -2818064, 0, 131072, -2818063, 0, 131072, -2818062, 0, 131072, -2818061, 0, 131072, -2818060, 0, 131072, -2818059, 0, 131072, -2818058, 0, 131072, -2818057, 0, 131072, -2818056, 0, 131072, -2818055, 0, 131072, -2818054, 0, 131072, -2818053, 0, 131072, -2818052, 0, 131072, -2818051, 0, 131072, -2818050, 0, 131072, -2818049, 0, 131072, -2883584, 0, 131072, -2883583, 0, 131072, -2883582, 0, 131072, -2883581, 0, 131072, -2883580, 0, 131072, -2883579, 0, 131072, -2883578, 0, 131072, -2883577, 0, 131072, -2883576, 0, 131072, -2883575, 0, 131072, -2883574, 0, 131072, -2883573, 0, 131072, -2883572, 0, 131072, -2883571, 0, 131072, -2883570, 0, 131072, -2883569, 0, 131072, -2883568, 0, 131072, -2883567, 0, 131072, -2883566, 0, 131072, -2883565, 0, 131072, -2883564, 0, 131072, -2883563, 0, 131072, -2883562, 0, 131072, -2883561, 0, 131072, -2883560, 0, 131072, -2883559, 0, 131072, -2883558, 0, 131072, -2883557, 0, 131072, -2883556, 0, 131072, -2883555, 0, 131072, -2883554, 0, 131072, -2883553, 0, 131072, -2883552, 0, 131072, -2883551, 0, 131072, -2883550, 0, 131072, -2883549, 0, 131072, -2883548, 0, 131072, -2883547, 0, 131072, -2883546, 0, 131072, -2883545, 0, 131072, -2883544, 0, 131072, -2883543, 0, 131072, -2883542, 0, 131072, -2883541, 0, 131072, -2883540, 0, 131072, -2883539, 0, 131072, -2883538, 0, 131072, -2883537, 0, 131072, -2883536, 0, 131072, -2883535, 0, 131072, -2883534, 0, 131072, -2883533, 0, 131072, -2883532, 0, 131072, -2883531, 0, 131072, -2883530, 0, 131072, -2883529, 0, 131072, -2883528, 0, 131072, -2883527, 0, 131072, -2883526, 0, 131072, -2883525, 0, 131072, -2883524, 0, 131072, -2883523, 0, 131072, -2883522, 0, 131072, -2883521, 0, 131072, -2883520, 0, 131072, -2883519, 0, 131072, -2883518, 0, 131072, -2883517, 0, 131072, -2883516, 0, 131072, -2883515, 0, 131072, -2883514, 0, 131072, -2883513, 0, 131072, -2883512, 0, 131072, -2883511, 0, 131072, -2883510, 0, 131072, -2883509, 0, 131072, -2883508, 0, 131072, -2883507, 0, 131072, -2883506, 0, 131072, -2883505, 0, 131072, -2883504, 0, 131072, -2883503, 0, 131072, -2883502, 0, 131072, -2883501, 0, 131072, -2883500, 0, 131072, -2883499, 0, 131072, -2883498, 0, 131072, -2883497, 0, 131072, -2883496, 0, 131072, -2883495, 0, 131072, -2883494, 0, 131072, -2883493, 0, 131072, -2883492, 0, 131072, -2883491, 0, 131072, -2883490, 0, 131072, -2883489, 0, 131072, -2883488, 0, 131072, -2883487, 0, 131072, -2883486, 0, 131072, -2883485, 0, 131072, -2883484, 0, 131072, -2883483, 0, 131072, -2883482, 0, 131072, -2883481, 0, 131072, -2883480, 0, 131072, -2883479, 0, 131072, -2883478, 0, 131072, -2883477, 0, 131072, -2883476, 0, 131072, -2883475, 0, 131072, -2883474, 0, 131072, -2883473, 0, 131072, -2883472, 0, 131072, -2883471, 0, 131072, -2883470, 0, 131072, -2883469, 0, 131072, -2883468, 0, 131072, -2883467, 0, 131072, -2883466, 0, 131072, -2883465, 0, 131072, -2883464, 0, 131072, -2883463, 0, 131072, -2883462, 0, 131072, -2883461, 0, 131072, -2883460, 0, 131072, -2883459, 0, 131072, -2883458, 0, 131072, -2883457, 0, 131072, -2883456, 0, 131072, -2883455, 0, 131072, -2883454, 0, 131072, -2883453, 0, 131072, -2883452, 0, 131072, -2883451, 0, 131072, -2883450, 0, 131072, -2883449, 0, 131072, -2883448, 0, 131072, -2883447, 0, 131072, -2883446, 0, 131072, -2883445, 0, 131072, -2883444, 0, 131072, -2883443, 0, 131072, -2883442, 0, 131072, -2883441, 0, 131072, -2883440, 0, 131072, -2883439, 0, 131072, -2883438, 0, 131072, -2883437, 0, 131072, -2883436, 0, 131072, -2883435, 0, 131072, -2883434, 0, 131072, -2883433, 0, 131072, -2883432, 0, 131072, -2883431, 0, 131072, -2883430, 0, 131072, -2883429, 0, 131072, -2883428, 0, 131072, -2883427, 0, 131072, -2883426, 0, 131072, -2883425, 0, 131072, -2883424, 0, 131072, -2883423, 0, 131072, -2752620, 0, 131072, -2752619, 0, 131072, -2752618, 0, 131072, -2752617, 0, 131072, -2752616, 0, 131072, -2752615, 0, 131072, -2752614, 0, 131072, -2752613, 0, 131072, -2752612, 0, 131072, -2752611, 0, 131072, -2752610, 0, 131072, -2752609, 0, 131072, -2752608, 0, 131072, -2752607, 0, 131072, -2752606, 0, 131072, -2752605, 0, 131072, -2752604, 0, 131072, -2752603, 0, 131072, -2752602, 0, 131072, -2752601, 0, 131072, -2752600, 0, 131072, -2752599, 0, 131072, -2752598, 0, 131072, -2752597, 0, 131072, -2752596, 0, 131072, -2752595, 0, 131072, -2752594, 0, 131072, -2752593, 0, 131072, -2752592, 0, 131072, -2752591, 0, 131072, -2752590, 0, 131072, -2752589, 0, 131072, -2752588, 0, 131072, -2752587, 0, 131072, -2752586, 0, 131072, -2752585, 0, 131072, -2752584, 0, 131072, -2752583, 0, 131072, -2752582, 0, 131072, -2752581, 0, 131072, -2752580, 0, 131072, -2752579, 0, 131072, -2752578, 0, 131072, -2752577, 0, 131072, -2752576, 0, 131072, -2752575, 0, 131072, -2752574, 0, 131072, -2752573, 0, 131072, -2752572, 0, 131072, -2752571, 0, 131072, -2752570, 0, 131072, -2752569, 0, 131072, -2752568, 0, 131072, -2752567, 0, 131072, -2752566, 0, 131072, -2752565, 0, 131072, -2752564, 0, 131072, -2752563, 0, 131072, -2752562, 0, 131072, -2752561, 0, 131072, -2752560, 0, 131072, -2752559, 0, 131072, -2752558, 0, 131072, -2752557, 0, 131072, -2752556, 0, 131072, -2752555, 0, 131072, -2752554, 0, 131072, -2752553, 0, 131072, -2752552, 0, 131072, -2752551, 0, 131072, -2752550, 0, 131072, -2752549, 0, 131072, -2752548, 0, 131072, -2752547, 0, 131072, -2752546, 0, 131072, -2752545, 0, 131072, -2752544, 0, 131072, -2752543, 0, 131072, -2752542, 0, 131072, -2752541, 0, 131072, -2752540, 0, 131072, -2752539, 0, 131072, -2752538, 0, 131072, -2752537, 0, 131072, -2752536, 0, 131072, -2752535, 0, 131072, -2752534, 0, 131072, -2752533, 0, 131072, -2752532, 0, 131072, -2752531, 0, 131072, -2752530, 0, 131072, -2752529, 0, 131072, -2752528, 0, 131072, -2752527, 0, 131072, -2752526, 0, 131072, -2752525, 0, 131072, -2752524, 0, 131072, -2752523, 0, 131072, -2752522, 0, 131072, -2752521, 0, 131072, -2752520, 0, 131072, -2752519, 0, 131072, -2752518, 0, 131072, -2752517, 0, 131072, -2752516, 0, 131072, -2752515, 0, 131072, -2752514, 0, 131072, -2752513, 0, 131072, -2818048, 0, 131072, -2818047, 0, 131072, -2818046, 0, 131072, -2818045, 0, 131072, -2818044, 0, 131072, -2818043, 0, 131072, -2818042, 0, 131072, -2818041, 0, 131072, -2818040, 0, 131072, -2818039, 0, 131072, -2818038, 0, 131072, -2818037, 0, 131072, -2818036, 0, 131072, -2818035, 0, 131072, -2818034, 0, 131072, -2818033, 0, 131072, -2818032, 0, 131072, -2818031, 0, 131072, -2818030, 0, 131072, -2818029, 0, 131072, -2818028, 0, 131072, -2818027, 0, 131072, -2818026, 0, 131072, -2818025, 0, 131072, -2818024, 0, 131072, -2818023, 0, 131072, -2818022, 0, 131072, -2818021, 0, 131072, -2818020, 0, 131072, -2818019, 0, 131072, -2818018, 0, 131072, -2818017, 0, 131072, -2818016, 0, 131072, -2818015, 0, 131072, -2818014, 0, 131072, -2818013, 0, 131072, -2818012, 0, 131072, -2818011, 0, 131072, -2818010, 0, 131072, -2818009, 0, 131072, -2818008, 0, 131072, -2818007, 0, 131072, -2818006, 0, 131072, -2818005, 0, 131072, -2818004, 0, 131072, -2818003, 0, 131072, -2818002, 0, 131072, -2818001, 0, 131072, -2818000, 0, 131072, -2817999, 0, 131072, -2817998, 0, 131072, -2817997, 0, 131072, -2817996, 0, 131072, -2817995, 0, 131072, -2817994, 0, 131072, -2817993, 0, 131072, -2817992, 0, 131072, -2817991, 0, 131072, -2817990, 0, 131072, -2817989, 0, 131072, -2817988, 0, 131072, -2817987, 0, 131072, -2817986, 0, 131072, -2817985, 0, 131072, -2817984, 0, 131072, -2817983, 0, 131072, -2817982, 0, 131072, -2817981, 0, 131072, -2817980, 0, 131072, -2817979, 0, 131072, -2817978, 0, 131072, -2817977, 0, 131072, -2817976, 0, 131072, -2817975, 0, 131072, -2817974, 0, 131072, -2817973, 0, 131072, -2817972, 0, 131072, -2817971, 0, 131072, -2817970, 0, 131072, -2817969, 0, 131072, -2817968, 0, 131072, -2817967, 0, 131072, -2817966, 0, 131072, -2817965, 0, 131072, -2817964, 0, 131072, -2817963, 0, 131072, -2817962, 0, 131072, -2817961, 0, 131072, -2817960, 0, 131072, -2817959, 0, 131072, -2817958, 0, 131072, -2817957, 0, 131072, -2817956, 0, 131072, -2817955, 0, 131072, -2817954, 0, 131072, -2817953, 0, 131072, -2817952, 0, 131072, -2817951, 0, 131072, -2817950, 0, 131072, -2817949, 0, 131072, -2817948, 0, 131072, -2817947, 0, 131072, -2817946, 0, 131072, -2817945, 0, 131072, -2817944, 0, 131072, -2817943, 0, 131072, -2817942, 0, 131072, -2817941, 0, 131072, -2817940, 0, 131072, -2817939, 0, 131072, -2817938, 0, 131072, -2817937, 0, 131072, -2817936, 0, 131072, -2817935, 0, 131072, -2817934, 0, 131072, -2817933, 0, 131072, -2817932, 0, 131072, -2817931, 0, 131072, -2817930, 0, 131072, -2817929, 0, 131072, -2817928, 0, 131072, -2817927, 0, 131072, -2817926, 0, 131072, -2817925, 0, 131072, -2817924, 0, 131072, -2817923, 0, 131072, -2817922, 0, 131072, -2817921, 0, 131072, -2817920, 0, 131072, -2817919, 0, 131072, -2817918, 0, 131072, -2817917, 0, 131072, -2817916, 0, 131072, -2817915, 0, 131072, -2817914, 0, 131072, -2817913, 0, 131072, -2817912, 0, 131072, -2817911, 0, 131072, -2817910, 0, 131072, -2817909, 0, 131072, -2817908, 0, 131072, -2817907, 0, 131072, -2817906, 0, 131072, -2817905, 0, 131072, -2817904, 0, 131072, -2817903, 0, 131072, -2817902, 0, 131072, -2817901, 0, 131072, -2817900, 0, 131072, -2817899, 0, 131072, -2817898, 0, 131072, -2817897, 0, 131072, -2817896, 0, 131072, -2817895, 0, 131072, -2817894, 0, 131072, -2817893, 0, 131072, -2817892, 0, 131072, -2817891, 0, 131072, -2817890, 0, 131072, -2817889, 0, 131072, -2817888, 0, 131072, -2817887, 0, 131072, -2817886, 0, 131072, -2687084, 0, 131072, -2687083, 0, 131072, -2687082, 0, 131072, -2687081, 0, 131072, -2687080, 0, 131072, -2687079, 0, 131072, -2687078, 0, 131072, -2687077, 0, 131072, -2687076, 0, 131072, -2687075, 0, 131072, -2687074, 0, 131072, -2687073, 0, 131072, -2687072, 0, 131072, -2687071, 0, 131072, -2687070, 0, 131072, -2687069, 0, 131072, -2687068, 0, 131072, -2687067, 0, 131072, -2687066, 0, 131072, -2687065, 0, 131072, -2687064, 0, 131072, -2687063, 0, 131072, -2687062, 0, 131072, -2687061, 0, 131072, -2687060, 0, 131072, -2687059, 0, 131072, -2687058, 0, 131072, -2687057, 0, 131072, -2687056, 0, 131072, -2687055, 0, 131072, -2687054, 0, 131072, -2687053, 0, 131072, -2687052, 0, 131072, -2687051, 0, 131072, -2687050, 0, 131072, -2687049, 0, 131072, -2687048, 0, 131072, -2687047, 0, 131072, -2687046, 0, 131072, -2687045, 0, 131072, -2687044, 0, 131072, -2687043, 0, 131072, -2687042, 0, 131072, -2687041, 0, 131072, -2687040, 0, 131072, -2687039, 0, 131072, -2687038, 0, 131072, -2687037, 0, 131072, -2687036, 0, 131072, -2687035, 0, 131072, -2687034, 0, 131072, -2687033, 0, 131072, -2687032, 0, 131072, -2687031, 0, 131072, -2687030, 0, 131072, -2687029, 0, 131072, -2687028, 0, 131072, -2687027, 0, 131072, -2687026, 0, 131072, -2687025, 0, 131072, -2687024, 0, 131072, -2687023, 0, 131072, -2687022, 0, 131072, -2687021, 0, 131072, -2687020, 0, 131072, -2687019, 0, 131072, -2687018, 0, 131072, -2687017, 0, 131072, -2687016, 0, 131072, -2687015, 0, 131072, -2687014, 0, 131072, -2687013, 0, 131072, -2687012, 0, 131072, -2687011, 0, 131072, -2687010, 0, 131072, -2687009, 0, 131072, -2687008, 0, 131072, -2687007, 0, 131072, -2687006, 0, 131072, -2687005, 0, 131072, -2687004, 0, 131072, -2687003, 0, 131072, -2687002, 0, 131072, -2687001, 0, 131072, -2687000, 0, 131072, -2686999, 0, 131072, -2686998, 0, 131072, -2686997, 0, 131072, -2686996, 0, 131072, -2686995, 0, 131072, -2686994, 0, 131072, -2686993, 0, 131072, -2686992, 0, 131072, -2686991, 0, 131072, -2686990, 0, 131072, -2686989, 0, 131072, -2686988, 0, 131072, -2686987, 0, 131072, -2686986, 0, 131072, -2686985, 0, 131072, -2686984, 0, 131072, -2686983, 0, 131072, -2686982, 0, 131072, -2686981, 0, 131072, -2686980, 0, 131072, -2686979, 0, 131072, -2686978, 0, 131072, -2686977, 0, 131072, -2752512, 0, 131072, -2752511, 0, 131072, -2752510, 0, 131072, -2752509, 0, 131072, -2752508, 0, 131072, -2752507, 0, 131072, -2752506, 0, 131072, -2752505, 0, 131072, -2752504, 0, 131072, -2752503, 0, 131072, -2752502, 0, 131072, -2752501, 0, 131072, -2752500, 0, 131072, -2752499, 0, 131072, -2752498, 0, 131072, -2752497, 0, 131072, -2752496, 0, 131072, -2752495, 0, 131072, -2752494, 0, 131072, -2752493, 0, 131072, -2752492, 0, 131072, -2752491, 0, 131072, -2752490, 0, 131072, -2752489, 0, 131072, -2752488, 0, 131072, -2752487, 0, 131072, -2752486, 0, 131072, -2752485, 0, 131072, -2752484, 0, 131072, -2752483, 0, 131072, -2752482, 0, 131072, -2752481, 0, 131072, -2752480, 0, 131072, -2752479, 0, 131072, -2752478, 0, 131072, -2752477, 0, 131072, -2752476, 0, 131072, -2752475, 0, 131072, -2752474, 0, 131072, -2752473, 0, 131072, -2752472, 0, 131072, -2752471, 0, 131072, -2752470, 0, 131072, -2752469, 0, 131072, -2752468, 0, 131072, -2752467, 0, 131072, -2752466, 0, 131072, -2752465, 0, 131072, -2752464, 0, 131072, -2752463, 0, 131072, -2752462, 0, 131072, -2752461, 0, 131072, -2752460, 0, 131072, -2752459, 0, 131072, -2752458, 0, 131072, -2752457, 0, 131072, -2752456, 0, 131072, -2752455, 0, 131072, -2752454, 0, 131072, -2752453, 0, 131072, -2752452, 0, 131072, -2752451, 0, 131072, -2752450, 0, 131072, -2752449, 0, 131072, -2752448, 0, 131072, -2752447, 0, 131072, -2752446, 0, 131072, -2752445, 0, 131072, -2752444, 0, 131072, -2752443, 0, 131072, -2752442, 0, 131072, -2752441, 0, 131072, -2752440, 0, 131072, -2752439, 0, 131072, -2752438, 0, 131072, -2752437, 0, 131072, -2752436, 0, 131072, -2752435, 0, 131072, -2752434, 0, 131072, -2752433, 0, 131072, -2752432, 0, 131072, -2752431, 0, 131072, -2752430, 0, 131072, -2752429, 0, 131072, -2752428, 0, 131072, -2752427, 0, 131072, -2752426, 0, 131072, -2752425, 0, 131072, -2752424, 0, 131072, -2752423, 0, 131072, -2752422, 0, 131072, -2752421, 0, 131072, -2752420, 0, 131072, -2752419, 0, 131072, -2752418, 0, 131072, -2752417, 0, 131072, -2752416, 0, 131072, -2752415, 0, 131072, -2752414, 0, 131072, -2752413, 0, 131072, -2752412, 0, 131072, -2752411, 0, 131072, -2752410, 0, 131072, -2752409, 0, 131072, -2752408, 0, 131072, -2752407, 0, 131072, -2752406, 0, 131072, -2752405, 0, 131072, -2752404, 0, 131072, -2752403, 0, 131072, -2752402, 0, 131072, -2752401, 0, 131072, -2752400, 0, 131072, -2752399, 0, 131072, -2752398, 0, 131072, -2752397, 0, 131072, -2752396, 0, 131072, -2752395, 0, 131072, -2752394, 0, 131072, -2752393, 0, 131072, -2752392, 0, 131072, -2752391, 0, 131072, -2752390, 0, 131072, -2752389, 0, 131072, -2752388, 0, 131072, -2752387, 0, 131072, -2752386, 0, 131072, -2752385, 0, 131072, -2752384, 0, 131072, -2752383, 0, 131072, -2752382, 0, 131072, -2752381, 0, 131072, -2752380, 0, 131072, -2752379, 0, 131072, -2752378, 0, 131072, -2752377, 0, 131072, -2752376, 0, 131072, -2752375, 0, 131072, -2752374, 0, 131072, -2752373, 0, 131072, -2752372, 0, 131072, -2752371, 0, 131072, -2752370, 0, 131072, -2752369, 0, 131072, -2752368, 0, 131072, -2752367, 0, 131072, -2752366, 0, 131072, -2752365, 0, 131072, -2752364, 0, 131072, -2752363, 0, 131072, -2752362, 0, 131072, -2752361, 0, 131072, -2752360, 0, 131072, -2752359, 0, 131072, -2752358, 0, 131072, -2752357, 0, 131072, -2752356, 0, 131072, -2752355, 0, 131072, -2752354, 0, 131072, -2752353, 0, 131072, -2752352, 0, 131072, -2752351, 0, 131072, -2752350, 0, 131072, -2752349, 0, 131072, -2621548, 0, 131072, -2621547, 0, 131072, -2621546, 0, 131072, -2621545, 0, 131072, -2621544, 0, 131072, -2621543, 0, 131072, -2621542, 0, 131072, -2621541, 0, 131072, -2621540, 0, 131072, -2621539, 0, 131072, -2621538, 0, 131072, -2621537, 0, 131072, -2621536, 0, 131072, -2621535, 0, 131072, -2621534, 0, 131072, -2621533, 0, 131072, -2621532, 0, 131072, -2621531, 0, 131072, -2621530, 0, 131072, -2621529, 0, 131072, -2621528, 0, 131072, -2621527, 0, 131072, -2621526, 0, 131072, -2621525, 0, 131072, -2621524, 0, 131072, -2621523, 0, 131072, -2621522, 0, 131072, -2621521, 0, 131072, -2621520, 0, 131072, -2621519, 0, 131072, -2621518, 0, 131072, -2621517, 0, 131072, -2621516, 0, 131072, -2621515, 0, 131072, -2621514, 0, 131072, -2621513, 0, 131072, -2621512, 0, 131072, -2621511, 0, 131072, -2621510, 0, 131072, -2621509, 0, 131072, -2621508, 0, 131072, -2621507, 0, 131072, -2621506, 0, 131072, -2621505, 0, 131072, -2621504, 0, 131072, -2621503, 0, 131072, -2621502, 0, 131072, -2621501, 0, 131072, -2621500, 0, 131072, -2621499, 0, 131072, -2621498, 0, 131072, -2621497, 0, 131072, -2621496, 0, 131072, -2621495, 0, 131072, -2621494, 0, 131072, -2621493, 0, 131072, -2621492, 0, 131072, -2621491, 0, 131072, -2621490, 0, 131072, -2621489, 0, 131072, -2621488, 0, 131072, -2621487, 0, 131072, -2621486, 0, 131072, -2621485, 0, 131072, -2621484, 0, 131072, -2621483, 0, 131072, -2621482, 0, 131072, -2621481, 0, 131072, -2621480, 0, 131072, -2621479, 0, 131072, -2621478, 0, 131072, -2621477, 0, 131072, -2621476, 0, 131072, -2621475, 0, 131072, -2621474, 0, 131072, -2621473, 0, 131072, -2621472, 0, 131072, -2621471, 0, 131072, -2621470, 0, 131072, -2621469, 0, 131072, -2621468, 0, 131072, -2621467, 0, 131072, -2621466, 0, 131072, -2621465, 0, 131072, -2621464, 0, 131072, -2621463, 0, 131072, -2621462, 0, 131072, -2621461, 0, 131072, -2621460, 0, 131072, -2621459, 0, 131072, -2621458, 0, 131072, -2621457, 0, 131072, -2621456, 0, 131072, -2621455, 0, 131072, -2621454, 0, 131072, -2621453, 0, 131072, -2621452, 0, 131072, -2621451, 0, 131072, -2621450, 0, 131072, -2621449, 0, 131072, -2621448, 0, 131072, -2621447, 0, 131072, -2621446, 0, 131072, -2621445, 0, 131072, -2621444, 0, 131072, -2621443, 0, 131072, -2621442, 0, 131072, -2621441, 0, 131072, -2686976, 0, 131072, -2686975, 0, 131072, -2686974, 0, 131072, -2686973, 0, 131072, -2686972, 0, 131072, -2686971, 0, 131072, -2686970, 0, 131072, -2686969, 0, 131072, -2686968, 0, 131072, -2686967, 0, 131072, -2686966, 0, 131072, -2686965, 0, 131072, -2686964, 0, 131072, -2686963, 0, 131072, -2686962, 0, 131072, -2686961, 0, 131072, -2686960, 0, 131072, -2686959, 0, 131072, -2686958, 0, 131072, -2686957, 0, 131072, -2686956, 0, 131072, -2686955, 0, 131072, -2686954, 0, 131072, -2686953, 0, 131072, -2686952, 0, 131072, -2686951, 0, 131072, -2686950, 0, 131072, -2686949, 0, 131072, -2686948, 0, 131072, -2686947, 0, 131072, -2686946, 0, 131072, -2686945, 0, 131072, -2686944, 0, 131072, -2686943, 0, 131072, -2686942, 0, 131072, -2686941, 0, 131072, -2686940, 0, 131072, -2686939, 0, 131072, -2686938, 0, 131072, -2686937, 0, 131072, -2686936, 0, 131072, -2686935, 0, 131072, -2686934, 0, 131072, -2686933, 0, 131072, -2686932, 0, 131072, -2686931, 0, 131072, -2686930, 0, 131072, -2686929, 0, 131072, -2686928, 0, 131072, -2686927, 0, 131072, -2686926, 0, 131072, -2686925, 0, 131072, -2686924, 0, 131072, -2686923, 0, 131072, -2686922, 0, 131072, -2686921, 0, 131072, -2686920, 0, 131072, -2686919, 0, 131072, -2686918, 0, 131072, -2686917, 0, 131072, -2686916, 0, 131072, -2686915, 0, 131072, -2686914, 0, 131072, -2686913, 0, 131072, -2686912, 0, 131072, -2686911, 0, 131072, -2686910, 0, 131072, -2686909, 0, 131072, -2686908, 0, 131072, -2686907, 0, 131072, -2686906, 0, 131072, -2686905, 0, 131072, -2686904, 0, 131072, -2686903, 0, 131072, -2686902, 0, 131072, -2686901, 0, 131072, -2686900, 0, 131072, -2686899, 0, 131072, -2686898, 0, 131072, -2686897, 0, 131072, -2686896, 0, 131072, -2686895, 0, 131072, -2686894, 0, 131072, -2686893, 0, 131072, -2686892, 0, 131072, -2686891, 0, 131072, -2686890, 0, 131072, -2686889, 0, 131072, -2686888, 0, 131072, -2686887, 0, 131072, -2686886, 0, 131072, -2686885, 0, 131072, -2686884, 0, 131072, -2686883, 0, 131072, -2686882, 0, 131072, -2686881, 0, 131072, -2686880, 0, 131072, -2686879, 0, 131072, -2686878, 0, 131072, -2686877, 0, 131072, -2686876, 0, 131072, -2686875, 0, 131072, -2686874, 0, 131072, -2686873, 0, 131072, -2686872, 0, 131072, -2686871, 0, 131072, -2686870, 0, 131072, -2686869, 0, 131072, -2686868, 0, 131072, -2686867, 0, 131072, -2686866, 0, 131072, -2686865, 0, 131072, -2686864, 0, 131072, -2686863, 0, 131072, -2686862, 0, 131072, -2686861, 0, 131072, -2686860, 0, 131072, -2686859, 0, 131072, -2686858, 0, 131072, -2686857, 0, 131072, -2686856, 0, 131072, -2686855, 0, 131072, -2686854, 0, 131072, -2686853, 0, 131072, -2686852, 0, 131072, -2686851, 0, 131072, -2686850, 0, 131072, -2686849, 0, 131072, -2686848, 0, 131072, -2686847, 0, 131072, -2686846, 0, 131072, -2686845, 0, 131072, -2686844, 0, 131072, -2686843, 0, 131072, -2686842, 0, 131072, -2686841, 0, 131072, -2686840, 0, 131072, -2686839, 0, 131072, -2686838, 0, 131072, -2686837, 0, 131072, -2686836, 0, 131072, -2686835, 0, 131072, -2686834, 0, 131072, -2686833, 0, 131072, -2686832, 0, 131072, -2686831, 0, 131072, -2686830, 0, 131072, -2686829, 0, 131072, -2686828, 0, 131072, -2686827, 0, 131072, -2686826, 0, 131072, -2686825, 0, 131072, -2686824, 0, 131072, -2686823, 0, 131072, -2686822, 0, 131072, -2686821, 0, 131072, -2686820, 0, 131072, -2686819, 0, 131072, -2686818, 0, 131072, -2686817, 0, 131072, -2686816, 0, 131072, -2686815, 0, 131072, -2686814, 0, 131072, -2686813, 0, 131072, -2686812, 0, 131072, -2556012, 0, 131072, -2556011, 0, 131072, -2556010, 0, 131072, -2556009, 0, 131072, -2556008, 0, 131072, -2556007, 0, 131072, -2556006, 0, 131072, -2556005, 0, 131072, -2556004, 0, 131072, -2556003, 0, 131072, -2556002, 0, 131072, -2556001, 0, 131072, -2556000, 0, 131072, -2555999, 0, 131072, -2555998, 0, 131072, -2555997, 0, 131072, -2555996, 0, 131072, -2555995, 0, 131072, -2555994, 0, 131072, -2555993, 0, 131072, -2555992, 0, 131072, -2555991, 0, 131072, -2555990, 0, 131072, -2555989, 0, 131072, -2555988, 0, 131072, -2555987, 0, 131072, -2555986, 0, 131072, -2555985, 0, 131072, -2555984, 0, 131072, -2555983, 0, 131072, -2555982, 0, 131072, -2555981, 0, 131072, -2555980, 0, 131072, -2555979, 0, 131072, -2555978, 0, 131072, -2555977, 0, 131072, -2555976, 0, 131072, -2555975, 0, 131072, -2555974, 0, 131072, -2555973, 0, 131072, -2555972, 0, 131072, -2555971, 0, 131072, -2555970, 0, 131072, -2555969, 0, 131072, -2555968, 0, 131072, -2555967, 0, 131072, -2555966, 0, 131072, -2555965, 0, 131072, -2555964, 0, 131072, -2555963, 0, 131072, -2555962, 0, 131072, -2555961, 0, 131072, -2555960, 0, 131072, -2555959, 0, 131072, -2555958, 0, 131072, -2555957, 0, 131072, -2555956, 0, 131072, -2555955, 0, 131072, -2555954, 0, 131072, -2555953, 0, 131072, -2555952, 0, 131072, -2555951, 0, 131072, -2555950, 0, 131072, -2555949, 0, 131072, -2555948, 0, 131072, -2555947, 0, 131072, -2555946, 0, 131072, -2555945, 0, 131072, -2555944, 0, 131072, -2555943, 0, 131072, -2555942, 0, 131072, -2555941, 0, 131072, -2555940, 0, 131072, -2555939, 0, 131072, -2555938, 0, 131072, -2555937, 0, 131072, -2555936, 0, 131072, -2555935, 0, 131072, -2555934, 0, 131072, -2555933, 0, 131072, -2555932, 0, 131072, -2555931, 0, 131072, -2555930, 0, 131072, -2555929, 0, 131072, -2555928, 0, 131072, -2555927, 0, 131072, -2555926, 0, 131072, -2555925, 0, 131072, -2555924, 0, 131072, -2555923, 0, 131072, -2555922, 0, 131072, -2555921, 0, 131072, -2555920, 0, 131072, -2555919, 0, 131072, -2555918, 0, 131072, -2555917, 0, 131072, -2555916, 0, 131072, -2555915, 0, 131072, -2555914, 0, 131072, -2555913, 0, 131072, -2555912, 0, 131072, -2555911, 0, 131072, -2555910, 0, 131072, -2555909, 0, 131072, -2555908, 0, 131072, -2555907, 0, 131072, -2555906, 0, 131072, -2555905, 0, 131072, -2621440, 0, 131072, -2621439, 0, 131072, -2621438, 0, 131072, -2621437, 0, 131072, -2621436, 0, 131072, -2621435, 0, 131072, -2621434, 0, 131072, -2621433, 0, 131072, -2621432, 0, 131072, -2621431, 0, 131072, -2621430, 0, 131072, -2621429, 0, 131072, -2621428, 0, 131072, -2621427, 0, 131072, -2621426, 0, 131072, -2621425, 0, 131072, -2621424, 0, 131072, -2621423, 0, 131072, -2621422, 0, 131072, -2621421, 0, 131072, -2621420, 0, 131072, -2621419, 0, 131072, -2621418, 0, 131072, -2621417, 0, 131072, -2621416, 0, 131072, -2621415, 0, 131072, -2621414, 0, 131072, -2621413, 0, 131072, -2621412, 0, 131072, -2621411, 0, 131072, -2621410, 0, 131072, -2621409, 0, 131072, -2621408, 0, 131072, -2621407, 0, 131072, -2621406, 0, 131072, -2621405, 0, 131072, -2621404, 0, 131072, -2621403, 0, 131072, -2621402, 0, 131072, -2621401, 0, 131072, -2621400, 0, 131072, -2621399, 0, 131072, -2621398, 0, 131072, -2621397, 0, 131072, -2621396, 0, 131072, -2621395, 0, 131072, -2621394, 0, 131072, -2621393, 0, 131072, -2621392, 0, 131072, -2621391, 0, 131072, -2621390, 0, 131072, -2621389, 0, 131072, -2621388, 0, 131072, -2621387, 0, 131072, -2621386, 0, 131072, -2621385, 0, 131072, -2621384, 0, 131072, -2621383, 0, 131072, -2621382, 0, 131072, -2621381, 0, 131072, -2621380, 0, 131072, -2621379, 0, 131072, -2621378, 0, 131072, -2621377, 0, 131072, -2621376, 0, 131072, -2621375, 0, 131072, -2621374, 0, 131072, -2621373, 0, 131072, -2621372, 0, 131072, -2621371, 0, 131072, -2621370, 0, 131072, -2621369, 0, 131072, -2621368, 0, 131072, -2621367, 0, 131072, -2621366, 0, 131072, -2621365, 0, 131072, -2621364, 0, 131072, -2621363, 0, 131072, -2621362, 0, 131072, -2621361, 0, 131072, -2621360, 0, 131072, -2621359, 0, 131072, -2621358, 0, 131072, -2621357, 0, 131072, -2621356, 0, 131072, -2621355, 0, 131072, -2621354, 0, 131072, -2621353, 0, 131072, -2621352, 0, 131072, -2621351, 0, 131072, -2621350, 0, 131072, -2621349, 0, 131072, -2621348, 0, 131072, -2621347, 0, 131072, -2621346, 0, 131072, -2621345, 0, 131072, -2621344, 0, 131072, -2621343, 0, 131072, -2621342, 0, 131072, -2621341, 0, 131072, -2621340, 0, 131072, -2621339, 0, 131072, -2621338, 0, 131072, -2621337, 0, 131072, -2621336, 0, 131072, -2621335, 0, 131072, -2621334, 0, 131072, -2621333, 0, 131072, -2621332, 0, 131072, -2621331, 0, 131072, -2621330, 0, 131072, -2621329, 0, 131072, -2621328, 0, 131072, -2621327, 0, 131072, -2621326, 0, 131072, -2621325, 0, 131072, -2621324, 0, 131072, -2621323, 0, 131072, -2621322, 0, 131072, -2621321, 0, 131072, -2621320, 0, 131072, -2621319, 0, 131072, -2621318, 0, 131072, -2621317, 0, 131072, -2621316, 0, 131072, -2621315, 0, 131072, -2621314, 0, 131072, -2621313, 0, 131072, -2621312, 0, 131072, -2621311, 0, 131072, -2621310, 0, 131072, -2621309, 0, 131072, -2621308, 0, 131072, -2621307, 0, 131072, -2621306, 0, 131072, -2621305, 0, 131072, -2621304, 0, 131072, -2621303, 0, 131072, -2621302, 0, 131072, -2621301, 0, 131072, -2621300, 0, 131072, -2621299, 0, 131072, -2621298, 0, 131072, -2621297, 0, 131072, -2621296, 0, 131072, -2621295, 0, 131072, -2621294, 0, 131072, -2621293, 0, 131072, -2621292, 0, 131072, -2621291, 0, 131072, -2621290, 0, 131072, -2621289, 0, 131072, -2621288, 0, 131072, -2621287, 0, 131072, -2621286, 0, 131072, -2621285, 0, 131072, -2621284, 0, 131072, -2621283, 0, 131072, -2621282, 0, 131072, -2621281, 0, 131072, -2621280, 0, 131072, -2621279, 0, 131072, -2621278, 0, 131072, -2621277, 0, 131072, -2621276, 0, 131072, -2621275, 0, 131072, -2490476, 0, 131072, -2490475, 0, 131072, -2490474, 0, 131072, -2490473, 0, 131072, -2490472, 0, 131072, -2490471, 0, 131072, -2490470, 0, 131072, -2490469, 0, 131072, -2490468, 0, 131072, -2490467, 0, 131072, -2490466, 0, 131072, -2490465, 0, 131072, -2490464, 0, 131072, -2490463, 0, 131072, -2490462, 0, 131072, -2490461, 0, 131072, -2490460, 0, 131072, -2490459, 0, 131072, -2490458, 0, 131072, -2490457, 0, 131072, -2490456, 0, 131072, -2490455, 0, 131072, -2490454, 0, 131072, -2490453, 0, 131072, -2490452, 0, 131072, -2490451, 0, 131072, -2490450, 0, 131072, -2490449, 0, 131072, -2490448, 0, 131072, -2490447, 0, 131072, -2490446, 0, 131072, -2490445, 0, 131072, -2490444, 0, 131072, -2490443, 0, 131072, -2490442, 0, 131072, -2490441, 0, 131072, -2490440, 0, 131072, -2490439, 0, 131072, -2490438, 0, 131072, -2490437, 0, 131072, -2490436, 0, 131072, -2490435, 0, 131072, -2490434, 0, 131072, -2490433, 0, 131072, -2490432, 0, 131072, -2490431, 0, 131072, -2490430, 0, 131072, -2490429, 0, 131072, -2490428, 0, 131072, -2490427, 0, 131072, -2490426, 0, 131072, -2490425, 0, 131072, -2490424, 0, 131072, -2490423, 0, 131072, -2490422, 0, 131072, -2490421, 0, 131072, -2490420, 0, 131072, -2490419, 0, 131072, -2490418, 0, 131072, -2490417, 0, 131072, -2490416, 0, 131072, -2490415, 0, 131072, -2490414, 0, 131072, -2490413, 0, 131072, -2490412, 0, 131072, -2490411, 0, 131072, -2490410, 0, 131072, -2490409, 0, 131072, -2490408, 0, 131072, -2490407, 0, 131072, -2490406, 0, 131072, -2490405, 0, 131072, -2490404, 0, 131072, -2490403, 0, 131072, -2490402, 0, 131072, -2490401, 0, 131072, -2490400, 0, 131072, -2490399, 0, 131072, -2490398, 0, 131072, -2490397, 0, 131072, -2490396, 0, 131072, -2490395, 0, 131072, -2490394, 0, 131072, -2490393, 0, 131072, -2490392, 0, 131072, -2490391, 0, 131072, -2490390, 0, 131072, -2490389, 0, 131072, -2490388, 0, 131072, -2490387, 0, 131072, -2490386, 0, 131072, -2490385, 0, 131072, -2490384, 0, 131072, -2490383, 0, 131072, -2490382, 0, 131072, -2490381, 0, 131072, -2490380, 0, 131072, -2490379, 0, 131072, -2490378, 0, 131072, -2490377, 0, 131072, -2490376, 0, 131072, -2490375, 0, 131072, -2490374, 0, 131072, -2490373, 0, 131072, -2490372, 0, 131072, -2490371, 0, 131072, -2490370, 0, 131072, -2490369, 0, 131072, -2555904, 0, 131072, -2555903, 0, 131072, -2555902, 0, 131072, -2555901, 0, 131072, -2555900, 0, 131072, -2555899, 0, 131072, -2555898, 0, 131072, -2555897, 0, 131072, -2555896, 0, 131072, -2555895, 0, 131072, -2555894, 0, 131072, -2555893, 0, 131072, -2555892, 0, 131072, -2555891, 0, 131072, -2555890, 0, 131072, -2555889, 0, 131072, -2555888, 0, 131072, -2555887, 0, 131072, -2555886, 0, 131072, -2555885, 0, 131072, -2555884, 0, 131072, -2555883, 0, 131072, -2555882, 0, 131072, -2555881, 0, 131072, -2555880, 0, 131072, -2555879, 0, 131072, -2555878, 0, 131072, -2555877, 0, 131072, -2555876, 0, 131072, -2555875, 0, 131072, -2555874, 0, 131072, -2555873, 0, 131072, -2555872, 0, 131072, -2555871, 0, 131072, -2555870, 0, 131072, -2555869, 0, 131072, -2555868, 0, 131072, -2555867, 0, 131072, -2555866, 0, 131072, -2555865, 0, 131072, -2555864, 0, 131072, -2555863, 0, 131072, -2555862, 0, 131072, -2555861, 0, 131072, -2555860, 0, 131072, -2555859, 0, 131072, -2555858, 0, 131072, -2555857, 0, 131072, -2555856, 0, 131072, -2555855, 0, 131072, -2555854, 0, 131072, -2555853, 0, 131072, -2555852, 0, 131072, -2555851, 0, 131072, -2555850, 0, 131072, -2555849, 0, 131072, -2555848, 0, 131072, -2555847, 0, 131072, -2555846, 0, 131072, -2555845, 0, 131072, -2555844, 0, 131072, -2555843, 0, 131072, -2555842, 0, 131072, -2555841, 0, 131072, -2555840, 0, 131072, -2555839, 0, 131072, -2555838, 0, 131072, -2555837, 0, 131072, -2555836, 0, 131072, -2555835, 0, 131072, -2555834, 0, 131072, -2555833, 0, 131072, -2555832, 0, 131072, -2555831, 0, 131072, -2555830, 0, 131072, -2555829, 0, 131072, -2555828, 0, 131072, -2555827, 0, 131072, -2555826, 0, 131072, -2555825, 0, 131072, -2555824, 0, 131072, -2555823, 0, 131072, -2555822, 0, 131072, -2555821, 0, 131072, -2555820, 0, 131072, -2555819, 0, 131072, -2555818, 0, 131072, -2555817, 0, 131072, -2555816, 0, 131072, -2555815, 0, 131072, -2555814, 0, 131072, -2555813, 0, 131072, -2555812, 0, 131072, -2555811, 0, 131072, -2555810, 0, 131072, -2555809, 0, 131072, -2555808, 0, 131072, -2555807, 0, 131072, -2555806, 0, 131072, -2555805, 0, 131072, -2555804, 0, 131072, -2555803, 0, 131072, -2555802, 0, 131072, -2555801, 0, 131072, -2555800, 0, 131072, -2555799, 0, 131072, -2555798, 0, 131072, -2555797, 0, 131072, -2555796, 0, 131072, -2555795, 0, 131072, -2555794, 0, 131072, -2555793, 0, 131072, -2555792, 0, 131072, -2555791, 0, 131072, -2555790, 0, 131072, -2555789, 0, 131072, -2555788, 0, 131072, -2555787, 0, 131072, -2555786, 0, 131072, -2555785, 0, 131072, -2555784, 0, 131072, -2555783, 0, 131072, -2555782, 0, 131072, -2555781, 0, 131072, -2555780, 0, 131072, -2555779, 0, 131072, -2555778, 0, 131072, -2555777, 0, 131072, -2555776, 0, 131072, -2555775, 0, 131072, -2555774, 0, 131072, -2555773, 0, 131072, -2555772, 0, 131072, -2555771, 0, 131072, -2555770, 0, 131072, -2555769, 0, 131072, -2555768, 0, 131072, -2555767, 0, 131072, -2555766, 0, 131072, -2555765, 0, 131072, -2555764, 0, 131072, -2555763, 0, 131072, -2555762, 0, 131072, -2555761, 0, 131072, -2555760, 0, 131072, -2555759, 0, 131072, -2555758, 0, 131072, -2555757, 0, 131072, -2555756, 0, 131072, -2555755, 0, 131072, -2555754, 0, 131072, -2555753, 0, 131072, -2555752, 0, 131072, -2555751, 0, 131072, -2555750, 0, 131072, -2555749, 0, 131072, -2555748, 0, 131072, -2555747, 0, 131072, -2555746, 0, 131072, -2555745, 0, 131072, -2555744, 0, 131072, -2555743, 0, 131072, -2555742, 0, 131072, -2555741, 0, 131072, -2555740, 0, 131072, -2555739, 0, 131072, -2555738, 0, 131072, -2424940, 0, 131072, -2424939, 0, 131072, -2424938, 0, 131072, -2424937, 0, 131072, -2424936, 0, 131072, -2424935, 0, 131072, -2424934, 0, 131072, -2424933, 0, 131072, -2424932, 0, 131072, -2424931, 0, 131072, -2424930, 0, 131072, -2424929, 0, 131072, -2424928, 0, 131072, -2424927, 0, 131072, -2424926, 0, 131072, -2424925, 0, 131072, -2424924, 0, 131072, -2424923, 0, 131072, -2424922, 0, 131072, -2424921, 0, 131072, -2424920, 0, 131072, -2424919, 0, 131072, -2424918, 0, 131072, -2424917, 0, 131072, -2424916, 0, 131072, -2424915, 0, 131072, -2424914, 0, 131072, -2424913, 0, 131072, -2424912, 0, 131072, -2424911, 0, 131072, -2424910, 0, 131072, -2424909, 0, 131072, -2424908, 0, 131072, -2424907, 0, 131072, -2424906, 0, 131072, -2424905, 0, 131072, -2424904, 0, 131072, -2424903, 0, 131072, -2424902, 0, 131072, -2424901, 0, 131072, -2424900, 0, 131072, -2424899, 0, 131072, -2424898, 0, 131072, -2424897, 0, 131072, -2424896, 0, 131072, -2424895, 0, 131072, -2424894, 0, 131072, -2424893, 0, 131072, -2424892, 0, 131072, -2424891, 0, 131072, -2424890, 0, 131072, -2424889, 0, 131072, -2424888, 0, 131072, -2424887, 0, 131072, -2424886, 0, 131072, -2424885, 0, 131072, -2424884, 0, 131072, -2424883, 0, 131072, -2424882, 0, 131072, -2424881, 0, 131072, -2424880, 0, 131072, -2424879, 0, 131072, -2424878, 0, 131072, -2424877, 0, 131072, -2424876, 0, 131072, -2424875, 0, 131072, -2424874, 0, 131072, -2424873, 0, 131072, -2424872, 0, 131072, -2424871, 0, 131072, -2424870, 0, 131072, -2424869, 0, 131072, -2424868, 0, 131072, -2424867, 0, 131072, -2424866, 0, 131072, -2424865, 0, 131072, -2424864, 0, 131072, -2424863, 0, 131072, -2424862, 0, 131072, -2424861, 0, 131072, -2424860, 0, 131072, -2424859, 0, 131072, -2424858, 0, 131072, -2424857, 0, 131072, -2424856, 0, 131072, -2424855, 0, 131072, -2424854, 0, 131072, -2424853, 0, 131072, -2424852, 0, 131072, -2424851, 0, 131072, -2424850, 0, 131072, -2424849, 0, 131072, -2424848, 0, 131072, -2424847, 0, 131072, -2424846, 0, 131072, -2424845, 0, 131072, -2424844, 0, 131072, -2424843, 0, 131072, -2424842, 0, 131072, -2424841, 0, 131072, -2424840, 0, 131072, -2424839, 0, 131072, -2424838, 0, 131072, -2424837, 0, 131072, -2424836, 0, 131072, -2424835, 0, 131072, -2424834, 0, 131072, -2424833, 0, 131072, -2490368, 0, 131072, -2490367, 0, 131072, -2490366, 0, 131072, -2490365, 0, 131072, -2490364, 0, 131072, -2490363, 0, 131072, -2490362, 0, 131072, -2490361, 0, 131072, -2490360, 0, 131072, -2490359, 0, 131072, -2490358, 0, 131072, -2490357, 0, 131072, -2490356, 0, 131072, -2490355, 0, 131072, -2490354, 0, 131072, -2490353, 0, 131072, -2490352, 0, 131072, -2490351, 0, 131072, -2490350, 0, 131072, -2490349, 0, 131072, -2490348, 0, 131072, -2490347, 0, 131072, -2490346, 0, 131072, -2490345, 0, 131072, -2490344, 0, 131072, -2490343, 0, 131072, -2490342, 0, 131072, -2490341, 0, 131072, -2490340, 0, 131072, -2490339, 0, 131072, -2490338, 0, 131072, -2490337, 0, 131072, -2490336, 0, 131072, -2490335, 0, 131072, -2490334, 0, 131072, -2490333, 0, 131072, -2490332, 0, 131072, -2490331, 0, 131072, -2490330, 0, 131072, -2490329, 0, 131072, -2490328, 0, 131072, -2490327, 0, 131072, -2490326, 0, 131072, -2490325, 0, 131072, -2490324, 0, 131072, -2490323, 0, 131072, -2490322, 0, 131072, -2490321, 0, 131072, -2490320, 0, 131072, -2490319, 0, 131072, -2490318, 0, 131072, -2490317, 0, 131072, -2490316, 0, 131072, -2490315, 0, 131072, -2490314, 0, 131072, -2490313, 0, 131072, -2490312, 0, 131072, -2490311, 0, 131072, -2490310, 0, 131072, -2490309, 0, 131072, -2490308, 0, 131072, -2490307, 0, 131072, -2490306, 0, 131072, -2490305, 0, 131072, -2490304, 0, 131072, -2490303, 0, 131072, -2490302, 0, 131072, -2490301, 0, 131072, -2490300, 0, 131072, -2490299, 0, 131072, -2490298, 0, 131072, -2490297, 0, 131072, -2490296, 0, 131072, -2490295, 0, 131072, -2490294, 0, 131072, -2490293, 0, 131072, -2490292, 0, 131072, -2490291, 0, 131072, -2490290, 0, 131072, -2490289, 0, 131072, -2490288, 0, 131072, -2490287, 0, 131072, -2490286, 0, 131072, -2490285, 0, 131072, -2490284, 0, 131072, -2490283, 0, 131072, -2490282, 0, 131072, -2490281, 0, 131072, -2490280, 0, 131072, -2490279, 0, 131072, -2490278, 0, 131072, -2490277, 0, 131072, -2490276, 0, 131072, -2490275, 0, 131072, -2490274, 0, 131072, -2490273, 0, 131072, -2490272, 0, 131072, -2490271, 0, 131072, -2490270, 0, 131072, -2490269, 0, 131072, -2490268, 0, 131072, -2490267, 0, 131072, -2490266, 0, 131072, -2490265, 0, 131072, -2490264, 0, 131072, -2490263, 0, 131072, -2490262, 0, 131072, -2490261, 0, 131072, -2490260, 0, 131072, -2490259, 0, 131072, -2490258, 0, 131072, -2490257, 0, 131072, -2490256, 0, 131072, -2490255, 0, 131072, -2490254, 0, 131072, -2490253, 0, 131072, -2490252, 0, 131072, -2490251, 0, 131072, -2490250, 0, 131072, -2490249, 0, 131072, -2490248, 0, 131072, -2490247, 0, 131072, -2490246, 0, 131072, -2490245, 0, 131072, -2490244, 0, 131072, -2490243, 0, 131072, -2490242, 0, 131072, -2490241, 0, 131072, -2490240, 0, 131072, -2490239, 0, 131072, -2490238, 0, 131072, -2490237, 0, 131072, -2490236, 0, 131072, -2490235, 0, 131072, -2490234, 0, 131072, -2490233, 0, 131072, -2490232, 0, 131072, -2490231, 0, 131072, -2490230, 0, 131072, -2490229, 0, 131072, -2490228, 0, 131072, -2490227, 0, 131072, -2490226, 0, 131072, -2490225, 0, 131072, -2490224, 0, 131072, -2490223, 0, 131072, -2490222, 0, 131072, -2490221, 0, 131072, -2490220, 0, 131072, -2490219, 0, 131072, -2490218, 0, 131072, -2490217, 0, 131072, -2490216, 0, 131072, -2490215, 0, 131072, -2490214, 0, 131072, -2490213, 0, 131072, -2490212, 0, 131072, -2490211, 0, 131072, -2490210, 0, 131072, -2490209, 0, 131072, -2490208, 0, 131072, -2490207, 0, 131072, -2490206, 0, 131072, -2490205, 0, 131072, -2490204, 0, 131072, -2490203, 0, 131072, -2490202, 0, 131072, -2359404, 0, 131072, -2359403, 0, 131072, -2359402, 0, 131072, -2359401, 0, 131072, -2359400, 0, 131072, -2359399, 0, 131072, -2359398, 0, 131072, -2359397, 0, 131072, -2359396, 0, 131072, -2359395, 0, 131072, -2359394, 0, 131072, -2359393, 0, 131072, -2359392, 0, 131072, -2359391, 0, 131072, -2359390, 0, 131072, -2359389, 0, 131072, -2359388, 0, 131072, -2359387, 0, 131072, -2359386, 0, 131072, -2359385, 0, 131072, -2359384, 0, 131072, -2359383, 0, 131072, -2359382, 0, 131072, -2359381, 0, 131072, -2359380, 0, 131072, -2359379, 0, 131072, -2359378, 0, 131072, -2359377, 0, 131072, -2359376, 0, 131072, -2359375, 0, 131072, -2359374, 0, 131072, -2359373, 0, 131072, -2359372, 0, 131072, -2359371, 0, 131072, -2359370, 0, 131072, -2359369, 0, 131072, -2359368, 0, 131072, -2359367, 0, 131072, -2359366, 0, 131072, -2359365, 0, 131072, -2359364, 0, 131072, -2359363, 0, 131072, -2359362, 0, 131072, -2359361, 0, 131072, -2359360, 0, 131072, -2359359, 0, 131072, -2359358, 0, 131072, -2359357, 0, 131072, -2359356, 0, 131072, -2359355, 0, 131072, -2359354, 0, 131072, -2359353, 0, 131072, -2359352, 0, 131072, -2359351, 0, 131072, -2359350, 0, 131072, -2359349, 0, 131072, -2359348, 0, 131072, -2359347, 0, 131072, -2359346, 0, 131072, -2359345, 0, 131072, -2359344, 0, 131072, -2359343, 0, 131072, -2359342, 0, 131072, -2359341, 0, 131072, -2359340, 0, 131072, -2359339, 0, 131072, -2359338, 0, 131072, -2359337, 0, 131072, -2359336, 0, 131072, -2359335, 0, 131072, -2359334, 0, 131072, -2359333, 0, 131072, -2359332, 0, 131072, -2359331, 0, 131072, -2359330, 0, 131072, -2359329, 0, 131072, -2359328, 0, 131072, -2359327, 0, 131072, -2359326, 0, 131072, -2359325, 0, 131072, -2359324, 0, 131072, -2359323, 0, 131072, -2359322, 0, 131072, -2359321, 0, 131072, -2359320, 0, 131072, -2359319, 0, 131072, -2359318, 0, 131072, -2359317, 0, 131072, -2359316, 0, 131072, -2359315, 0, 131072, -2359314, 0, 131072, -2359313, 0, 131072, -2359312, 0, 131072, -2359311, 0, 131072, -2359310, 0, 131072, -2359309, 0, 131072, -2359308, 0, 131072, -2359307, 0, 131072, -2359306, 0, 131072, -2359305, 0, 131072, -2359304, 0, 131072, -2359303, 0, 131072, -2359302, 0, 131072, -2359301, 0, 131072, -2359300, 0, 131072, -2359299, 0, 131072, -2359298, 0, 131072, -2359297, 0, 131072, -2424832, 0, 131072, -2424831, 0, 131072, -2424830, 0, 131072, -2424829, 0, 131072, -2424828, 0, 131072, -2424827, 0, 131072, -2424826, 0, 131072, -2424825, 0, 131072, -2424824, 0, 131072, -2424823, 0, 131072, -2424822, 0, 131072, -2424821, 0, 131072, -2424820, 0, 131072, -2424819, 0, 131072, -2424818, 0, 131072, -2424817, 0, 131072, -2424816, 0, 131072, -2424815, 0, 131072, -2424814, 0, 131072, -2424813, 0, 131072, -2424812, 0, 131072, -2424811, 0, 131072, -2424810, 0, 131072, -2424809, 0, 131072, -2424808, 0, 131072, -2424807, 0, 131072, -2424806, 0, 131072, -2424805, 0, 131072, -2424804, 0, 131072, -2424803, 0, 131072, -2424802, 0, 131072, -2424801, 0, 131072, -2424800, 0, 131072, -2424799, 0, 131072, -2424798, 0, 131072, -2424797, 0, 131072, -2424796, 0, 131072, -2424795, 0, 131072, -2424794, 0, 131072, -2424793, 0, 131072, -2424792, 0, 131072, -2424791, 0, 131072, -2424790, 0, 131072, -2424789, 0, 131072, -2424788, 0, 131072, -2424787, 0, 131072, -2424786, 0, 131072, -2424785, 0, 131072, -2424784, 0, 131072, -2424783, 0, 131072, -2424782, 0, 131072, -2424781, 0, 131072, -2424780, 0, 131072, -2424779, 0, 131072, -2424778, 0, 131072, -2424777, 0, 131072, -2424776, 0, 131072, -2424775, 0, 131072, -2424774, 0, 131072, -2424773, 0, 131072, -2424772, 0, 131072, -2424771, 0, 131072, -2424770, 0, 131072, -2424769, 0, 131072, -2424768, 0, 131072, -2424767, 0, 131072, -2424766, 0, 131072, -2424765, 0, 131072, -2424764, 0, 131072, -2424763, 0, 131072, -2424762, 0, 131072, -2424761, 0, 131072, -2424760, 0, 131072, -2424759, 0, 131072, -2424758, 0, 131072, -2424757, 0, 131072, -2424756, 0, 131072, -2424755, 0, 131072, -2424754, 0, 131072, -2424753, 0, 131072, -2424752, 0, 131072, -2424751, 0, 131072, -2424750, 0, 131072, -2424749, 0, 131072, -2424748, 0, 131072, -2424747, 0, 131072, -2424746, 0, 131072, -2424745, 0, 131072, -2424744, 0, 131072, -2424743, 0, 131072, -2424742, 0, 131072, -2424741, 0, 131072, -2424740, 0, 131072, -2424739, 0, 131072, -2424738, 0, 131072, -2424737, 0, 131072, -2424736, 0, 131072, -2424735, 0, 131072, -2424734, 0, 131072, -2424733, 0, 131072, -2424732, 0, 131072, -2424731, 0, 131072, -2424730, 0, 131072, -2424729, 0, 131072, -2424728, 0, 131072, -2424727, 0, 131072, -2424726, 0, 131072, -2424725, 0, 131072, -2424724, 0, 131072, -2424723, 0, 131072, -2424722, 0, 131072, -2424721, 0, 131072, -2424720, 0, 131072, -2424719, 0, 131072, -2424718, 0, 131072, -2424717, 0, 131072, -2424716, 0, 131072, -2424715, 0, 131072, -2424714, 0, 131072, -2424713, 0, 131072, -2424712, 0, 131072, -2424711, 0, 131072, -2424710, 0, 131072, -2424709, 0, 131072, -2424708, 0, 131072, -2424707, 0, 131072, -2424706, 0, 131072, -2424705, 0, 131072, -2424704, 0, 131072, -2424703, 0, 131072, -2424702, 0, 131072, -2424701, 0, 131072, -2424700, 0, 131072, -2424699, 0, 131072, -2424698, 0, 131072, -2424697, 0, 131072, -2424696, 0, 131072, -2424695, 0, 131072, -2424694, 0, 131072, -2424693, 0, 131072, -2424692, 0, 131072, -2424691, 0, 131072, -2424690, 0, 131072, -2424689, 0, 131072, -2424688, 0, 131072, -2424687, 0, 131072, -2424686, 0, 131072, -2424685, 0, 131072, -2424684, 0, 131072, -2424683, 0, 131072, -2424682, 0, 131072, -2424681, 0, 131072, -2424680, 0, 131072, -2424679, 0, 131072, -2424678, 0, 131072, -2424677, 0, 131072, -2424676, 0, 131072, -2424675, 0, 131072, -2424674, 0, 131072, -2424673, 0, 131072, -2424672, 0, 131072, -2424671, 0, 131072, -2424670, 0, 131072, -2424669, 0, 131072, -2424668, 0, 131072, -2424667, 0, 131072, -2424666, 0, 131072, -2424665, 0, 131072, -2293869, 0, 131072, -2293868, 0, 131072, -2293867, 0, 131072, -2293866, 0, 131072, -2293865, 0, 131072, -2293864, 0, 131072, -2293863, 0, 131072, -2293862, 0, 131072, -2293861, 0, 131072, -2293860, 0, 131072, -2293859, 0, 131072, -2293858, 0, 131072, -2293857, 0, 131072, -2293856, 0, 131072, -2293855, 0, 131072, -2293854, 0, 131072, -2293853, 0, 131072, -2293852, 0, 131072, -2293851, 0, 131072, -2293850, 0, 131072, -2293849, 0, 131072, -2293848, 0, 131072, -2293847, 0, 131072, -2293846, 0, 131072, -2293845, 0, 131072, -2293844, 0, 131072, -2293843, 0, 131072, -2293842, 0, 131072, -2293841, 0, 131072, -2293840, 0, 131072, -2293839, 0, 131072, -2293838, 0, 131072, -2293837, 0, 131072, -2293836, 0, 131072, -2293835, 0, 131072, -2293834, 0, 131072, -2293833, 0, 131072, -2293832, 0, 131072, -2293831, 0, 131072, -2293830, 0, 131072, -2293829, 0, 131072, -2293828, 0, 131072, -2293827, 0, 131072, -2293826, 0, 131072, -2293825, 0, 131072, -2293824, 0, 131072, -2293823, 0, 131072, -2293822, 0, 131072, -2293821, 0, 131072, -2293820, 0, 131072, -2293819, 0, 131072, -2293818, 0, 131072, -2293817, 0, 131072, -2293816, 0, 131072, -2293815, 0, 131072, -2293814, 0, 131072, -2293813, 0, 131072, -2293812, 0, 131072, -2293811, 0, 131072, -2293810, 0, 131072, -2293809, 0, 131072, -2293808, 0, 131072, -2293807, 0, 131072, -2293806, 0, 131072, -2293805, 0, 131072, -2293804, 0, 131072, -2293803, 0, 131072, -2293802, 0, 131072, -2293801, 0, 131072, -2293800, 0, 131072, -2293799, 0, 131072, -2293798, 0, 131072, -2293797, 0, 131072, -2293796, 0, 131072, -2293795, 0, 131072, -2293794, 0, 131072, -2293793, 0, 131072, -2293792, 0, 131072, -2293791, 0, 131072, -2293790, 0, 131072, -2293789, 0, 131072, -2293788, 0, 131072, -2293787, 0, 131072, -2293786, 0, 131072, -2293785, 0, 131072, -2293784, 0, 131072, -2293783, 0, 131072, -2293782, 0, 131072, -2293781, 0, 131072, -2293780, 0, 131072, -2293779, 0, 131072, -2293778, 0, 131072, -2293777, 0, 131072, -2293776, 0, 131072, -2293775, 0, 131072, -2293774, 0, 131072, -2293773, 0, 131072, -2293772, 0, 131072, -2293771, 0, 131072, -2293770, 0, 131072, -2293769, 0, 131072, -2293768, 0, 131072, -2293767, 0, 131072, -2293766, 0, 131072, -2293765, 0, 131072, -2293764, 0, 131072, -2293763, 0, 131072, -2293762, 0, 131072, -2293761, 0, 131072, -2359296, 0, 131072, -2359295, 0, 131072, -2359294, 0, 131072, -2359293, 0, 131072, -2359292, 0, 131072, -2359291, 0, 131072, -2359290, 0, 131072, -2359289, 0, 131072, -2359288, 0, 131072, -2359287, 0, 131072, -2359286, 0, 131072, -2359285, 0, 131072, -2359284, 0, 131072, -2359283, 0, 131072, -2359282, 0, 131072, -2359281, 0, 131072, -2359280, 0, 131072, -2359279, 0, 131072, -2359278, 0, 131072, -2359277, 0, 131072, -2359276, 0, 131072, -2359275, 0, 131072, -2359274, 0, 131072, -2359273, 0, 131072, -2359272, 0, 131072, -2359271, 0, 131072, -2359270, 0, 131072, -2359269, 0, 131072, -2359268, 0, 131072, -2359267, 0, 131072, -2359266, 0, 131072, -2359265, 0, 131072, -2359264, 0, 131072, -2359263, 0, 131072, -2359262, 0, 131072, -2359261, 0, 131072, -2359260, 0, 131072, -2359259, 0, 131072, -2359258, 0, 131072, -2359257, 0, 131072, -2359256, 0, 131072, -2359255, 0, 131072, -2359254, 0, 131072, -2359253, 0, 131072, -2359252, 0, 131072, -2359251, 0, 131072, -2359250, 0, 131072, -2359249, 0, 131072, -2359248, 0, 131072, -2359247, 0, 131072, -2359246, 0, 131072, -2359245, 0, 131072, -2359244, 0, 131072, -2359243, 0, 131072, -2359242, 0, 131072, -2359241, 0, 131072, -2359240, 0, 131072, -2359239, 0, 131072, -2359238, 0, 131072, -2359237, 0, 131072, -2359236, 0, 131072, -2359235, 0, 131072, -2359234, 0, 131072, -2359233, 0, 131072, -2359232, 0, 131072, -2359231, 0, 131072, -2359230, 0, 131072, -2359229, 0, 131072, -2359228, 0, 131072, -2359227, 0, 131072, -2359226, 0, 131072, -2359225, 0, 131072, -2359224, 0, 131072, -2359223, 0, 131072, -2359222, 0, 131072, -2359221, 0, 131072, -2359220, 0, 131072, -2359219, 0, 131072, -2359218, 0, 131072, -2359217, 0, 131072, -2359216, 0, 131072, -2359215, 0, 131072, -2359214, 0, 131072, -2359213, 0, 131072, -2359212, 0, 131072, -2359211, 0, 131072, -2359210, 0, 131072, -2359209, 0, 131072, -2359208, 0, 131072, -2359207, 0, 131072, -2359206, 0, 131072, -2359205, 0, 131072, -2359204, 0, 131072, -2359203, 0, 131072, -2359202, 0, 131072, -2359201, 0, 131072, -2359200, 0, 131072, -2359199, 0, 131072, -2359198, 0, 131072, -2359197, 0, 131072, -2359196, 0, 131072, -2359195, 0, 131072, -2359194, 0, 131072, -2359193, 0, 131072, -2359192, 0, 131072, -2359191, 0, 131072, -2359190, 0, 131072, -2359189, 0, 131072, -2359188, 0, 131072, -2359187, 0, 131072, -2359186, 0, 131072, -2359185, 0, 131072, -2359184, 0, 131072, -2359183, 0, 131072, -2359182, 0, 131072, -2359181, 0, 131072, -2359180, 0, 131072, -2359179, 0, 131072, -2359178, 0, 131072, -2359177, 0, 131072, -2359176, 0, 131072, -2359175, 0, 131072, -2359174, 0, 131072, -2359173, 0, 131072, -2359172, 0, 131072, -2359171, 0, 131072, -2359170, 0, 131072, -2359169, 0, 131072, -2359168, 0, 131072, -2359167, 0, 131072, -2359166, 0, 131072, -2359165, 0, 131072, -2359164, 0, 131072, -2359163, 0, 131072, -2359162, 0, 131072, -2359161, 0, 131072, -2359160, 0, 131072, -2359159, 0, 131072, -2359158, 0, 131072, -2359157, 0, 131072, -2359156, 0, 131072, -2359155, 0, 131072, -2359154, 0, 131072, -2359153, 0, 131072, -2359152, 0, 131072, -2359151, 0, 131072, -2359150, 0, 131072, -2359149, 0, 131072, -2359148, 0, 131072, -2359147, 0, 131072, -2359146, 0, 131072, -2359145, 0, 131072, -2359144, 0, 131072, -2359143, 0, 131072, -2359142, 0, 131072, -2359141, 0, 131072, -2359140, 0, 131072, -2359139, 0, 131072, -2359138, 0, 131072, -2359137, 0, 131072, -2359136, 0, 131072, -2359135, 0, 131072, -2359134, 0, 131072, -2359133, 0, 131072, -2359132, 0, 131072, -2359131, 0, 131072, -2359130, 0, 131072, -2359129, 0, 131072, -2359128, 0, 131072, -2228333, 0, 131072, -2228332, 0, 131072, -2228331, 0, 131072, -2228330, 0, 131072, -2228329, 0, 131072, -2228328, 0, 131072, -2228327, 0, 131072, -2228326, 0, 131072, -2228325, 0, 131072, -2228324, 0, 131072, -2228323, 0, 131072, -2228322, 0, 131072, -2228321, 0, 131072, -2228320, 0, 131072, -2228319, 0, 131072, -2228318, 0, 131072, -2228317, 0, 131072, -2228316, 0, 131072, -2228315, 0, 131072, -2228314, 0, 131072, -2228313, 0, 131072, -2228312, 0, 131072, -2228311, 0, 131072, -2228310, 0, 131072, -2228309, 0, 131072, -2228308, 0, 131072, -2228307, 0, 131072, -2228306, 0, 131072, -2228305, 0, 131072, -2228304, 0, 131072, -2228303, 0, 131072, -2228302, 0, 131072, -2228301, 0, 131072, -2228300, 0, 131072, -2228299, 0, 131072, -2228298, 0, 131072, -2228297, 0, 131072, -2228296, 0, 131072, -2228295, 0, 131072, -2228294, 0, 131072, -2228293, 0, 131072, -2228292, 0, 131072, -2228291, 0, 131072, -2228290, 0, 131072, -2228289, 0, 131072, -2228288, 0, 131072, -2228287, 0, 131072, -2228286, 0, 131072, -2228285, 0, 131072, -2228284, 0, 131072, -2228283, 0, 131072, -2228282, 0, 131072, -2228281, 0, 131072, -2228280, 0, 131072, -2228279, 0, 131072, -2228278, 0, 131072, -2228277, 0, 131072, -2228276, 0, 131072, -2228275, 0, 131072, -2228274, 0, 131072, -2228273, 0, 131072, -2228272, 0, 131072, -2228271, 0, 131072, -2228270, 0, 131072, -2228269, 0, 131072, -2228268, 0, 131072, -2228267, 0, 131072, -2228266, 0, 131072, -2228265, 0, 131072, -2228264, 0, 131072, -2228263, 0, 131072, -2228262, 0, 131072, -2228261, 0, 131072, -2228260, 0, 131072, -2228259, 0, 131072, -2228258, 0, 131072, -2228257, 0, 131072, -2228256, 0, 131072, -2228255, 0, 131072, -2228254, 0, 131072, -2228253, 0, 131072, -2228252, 0, 131072, -2228251, 0, 131072, -2228250, 0, 131072, -2228249, 0, 131072, -2228248, 0, 131072, -2228247, 0, 131072, -2228246, 0, 131072, -2228245, 0, 131072, -2228244, 0, 131072, -2228243, 0, 131072, -2228242, 0, 131072, -2228241, 0, 131072, -2228240, 0, 131072, -2228239, 0, 131072, -2228238, 0, 131072, -2228237, 0, 131072, -2228236, 0, 131072, -2228235, 0, 131072, -2228234, 0, 131072, -2228233, 0, 131072, -2228232, 0, 131072, -2228231, 0, 131072, -2228230, 0, 131072, -2228229, 0, 131072, -2228228, 0, 131072, -2228227, 0, 131072, -2228226, 0, 131072, -2228225, 0, 131072, -2293760, 0, 131072, -2293759, 0, 131072, -2293758, 0, 131072, -2293757, 0, 131072, -2293756, 0, 131072, -2293755, 0, 131072, -2293754, 0, 131072, -2293753, 0, 131072, -2293752, 0, 131072, -2293751, 0, 131072, -2293750, 0, 131072, -2293749, 0, 131072, -2293748, 0, 131072, -2293747, 0, 131072, -2293746, 0, 131072, -2293745, 0, 131072, -2293744, 0, 131072, -2293743, 0, 131072, -2293742, 0, 131072, -2293741, 0, 131072, -2293740, 0, 131072, -2293739, 0, 131072, -2293738, 0, 131072, -2293737, 0, 131072, -2293736, 0, 131072, -2293735, 0, 131072, -2293734, 0, 131072, -2293733, 0, 131072, -2293732, 0, 131072, -2293731, 0, 131072, -2293730, 0, 131072, -2293729, 0, 131072, -2293728, 0, 131072, -2293727, 0, 131072, -2293726, 0, 131072, -2293725, 0, 131072, -2293724, 0, 131072, -2293723, 0, 131072, -2293722, 0, 131072, -2293721, 0, 131072, -2293720, 0, 131072, -2293719, 0, 131072, -2293718, 0, 131072, -2293717, 0, 131072, -2293716, 0, 131072, -2293715, 0, 131072, -2293714, 0, 131072, -2293713, 0, 131072, -2293712, 0, 131072, -2293711, 0, 131072, -2293710, 0, 131072, -2293709, 0, 131072, -2293708, 0, 131072, -2293707, 0, 131072, -2293706, 0, 131072, -2293705, 0, 131072, -2293704, 0, 131072, -2293703, 0, 131072, -2293702, 0, 131072, -2293701, 0, 131072, -2293700, 0, 131072, -2293699, 0, 131072, -2293698, 0, 131072, -2293697, 0, 131072, -2293696, 0, 131072, -2293695, 0, 131072, -2293694, 0, 131072, -2293693, 0, 131072, -2293692, 0, 131072, -2293691, 0, 131072, -2293690, 0, 131072, -2293689, 0, 131072, -2293688, 0, 131072, -2293687, 0, 131072, -2293686, 0, 131072, -2293685, 0, 131072, -2293684, 0, 131072, -2293683, 0, 131072, -2293682, 0, 131072, -2293681, 0, 131072, -2293680, 0, 131072, -2293679, 0, 131072, -2293678, 0, 131072, -2293677, 0, 131072, -2293676, 0, 131072, -2293675, 0, 131072, -2293674, 0, 131072, -2293673, 0, 131072, -2293672, 0, 131072, -2293671, 0, 131072, -2293670, 0, 131072, -2293669, 0, 131072, -2293668, 0, 131072, -2293667, 0, 131072, -2293666, 0, 131072, -2293665, 0, 131072, -2293664, 0, 131072, -2293663, 0, 131072, -2293662, 0, 131072, -2293661, 0, 131072, -2293660, 0, 131072, -2293659, 0, 131072, -2293658, 0, 131072, -2293657, 0, 131072, -2293656, 0, 131072, -2293655, 0, 131072, -2293654, 0, 131072, -2293653, 0, 131072, -2293652, 0, 131072, -2293651, 0, 131072, -2293650, 0, 131072, -2293649, 0, 131072, -2293648, 0, 131072, -2293647, 0, 131072, -2293646, 0, 131072, -2293645, 0, 131072, -2293644, 0, 131072, -2293643, 0, 131072, -2293642, 0, 131072, -2293641, 0, 131072, -2293640, 0, 131072, -2293639, 0, 131072, -2293638, 0, 131072, -2293637, 0, 131072, -2293636, 0, 131072, -2293635, 0, 131072, -2293634, 0, 131072, -2293633, 0, 131072, -2293632, 0, 131072, -2293631, 0, 131072, -2293630, 0, 131072, -2293629, 0, 131072, -2293628, 0, 131072, -2293627, 0, 131072, -2293626, 0, 131072, -2293625, 0, 131072, -2293624, 0, 131072, -2293623, 0, 131072, -2293622, 0, 131072, -2293621, 0, 131072, -2293620, 0, 131072, -2293619, 0, 131072, -2293618, 0, 131072, -2293617, 0, 131072, -2293616, 0, 131072, -2293615, 0, 131072, -2293614, 0, 131072, -2293613, 0, 131072, -2293612, 0, 131072, -2293611, 0, 131072, -2293610, 0, 131072, -2293609, 0, 131072, -2293608, 0, 131072, -2293607, 0, 131072, -2293606, 0, 131072, -2293605, 0, 131072, -2293604, 0, 131072, -2293603, 0, 131072, -2293602, 0, 131072, -2293601, 0, 131072, -2293600, 0, 131072, -2293599, 0, 131072, -2293598, 0, 131072, -2293597, 0, 131072, -2293596, 0, 131072, -2293595, 0, 131072, -2293594, 0, 131072, -2293593, 0, 131072, -2293592, 0, 131072, -2293591, 0, 131072, -2162797, 0, 131072, -2162796, 0, 131072, -2162795, 0, 131072, -2162794, 0, 131072, -2162793, 0, 131072, -2162792, 0, 131072, -2162791, 0, 131072, -2162790, 0, 131072, -2162789, 0, 131072, -2162788, 0, 131072, -2162787, 0, 131072, -2162786, 0, 131072, -2162785, 0, 131072, -2162784, 0, 131072, -2162783, 0, 131072, -2162782, 0, 131072, -2162781, 0, 131072, -2162780, 0, 131072, -2162779, 0, 131072, -2162778, 0, 131072, -2162777, 0, 131072, -2162776, 0, 131072, -2162775, 0, 131072, -2162774, 0, 131072, -2162773, 0, 131072, -2162772, 0, 131072, -2162771, 0, 131072, -2162770, 0, 131072, -2162769, 0, 131072, -2162768, 0, 131072, -2162767, 0, 131072, -2162766, 0, 131072, -2162765, 0, 131072, -2162764, 0, 131072, -2162763, 0, 131072, -2162762, 0, 131072, -2162761, 0, 131072, -2162760, 0, 131072, -2162759, 0, 131072, -2162758, 0, 131072, -2162757, 0, 131072, -2162756, 0, 131072, -2162755, 0, 131072, -2162754, 0, 131072, -2162753, 0, 131072, -2162752, 0, 131072, -2162751, 0, 131072, -2162750, 0, 131072, -2162749, 0, 131072, -2162748, 0, 131072, -2162747, 0, 131072, -2162746, 0, 131072, -2162745, 0, 131072, -2162744, 0, 131072, -2162743, 0, 131072, -2162742, 0, 131072, -2162741, 0, 131072, -2162740, 0, 131072, -2162739, 0, 131072, -2162738, 0, 131072, -2162737, 0, 131072, -2162736, 0, 131072, -2162735, 0, 131072, -2162734, 0, 131072, -2162733, 0, 131072, -2162732, 0, 131072, -2162731, 0, 131072, -2162730, 0, 131072, -2162729, 0, 131072, -2162728, 0, 131072, -2162727, 0, 131072, -2162726, 0, 131072, -2162725, 0, 131072, -2162724, 0, 131072, -2162723, 0, 131072, -2162722, 0, 131072, -2162721, 0, 131072, -2162720, 0, 131072, -2162719, 0, 131072, -2162718, 0, 131072, -2162717, 0, 131072, -2162716, 0, 131072, -2162715, 0, 131072, -2162714, 0, 131072, -2162713, 0, 131072, -2162712, 0, 131072, -2162711, 0, 131072, -2162710, 0, 131072, -2162709, 0, 131072, -2162708, 0, 131072, -2162707, 0, 131072, -2162706, 0, 131072, -2162705, 0, 131072, -2162704, 0, 131072, -2162703, 0, 131072, -2162702, 0, 131072, -2162701, 0, 131072, -2162700, 0, 131072, -2162699, 0, 131072, -2162698, 0, 131072, -2162697, 0, 131072, -2162696, 0, 131072, -2162695, 0, 131072, -2162694, 0, 131072, -2162693, 0, 131072, -2162692, 0, 131072, -2162691, 0, 131072, -2162690, 0, 131072, -2162689, 0, 131072, -2228224, 0, 131072, -2228223, 0, 131072, -2228222, 0, 131072, -2228221, 0, 131072, -2228220, 0, 131072, -2228219, 0, 131072, -2228218, 0, 131072, -2228217, 0, 131072, -2228216, 0, 131072, -2228215, 0, 131072, -2228214, 0, 131072, -2228213, 0, 131072, -2228212, 0, 131072, -2228211, 0, 131072, -2228210, 0, 131072, -2228209, 0, 131072, -2228208, 0, 131072, -2228207, 0, 131072, -2228206, 0, 131072, -2228205, 0, 131072, -2228204, 0, 131072, -2228203, 0, 131072, -2228202, 0, 131072, -2228201, 0, 131072, -2228200, 0, 131072, -2228199, 0, 131072, -2228198, 0, 131072, -2228197, 0, 131072, -2228196, 0, 131072, -2228195, 0, 131072, -2228194, 0, 131072, -2228193, 0, 131072, -2228192, 0, 131072, -2228191, 0, 131072, -2228190, 0, 131072, -2228189, 0, 131072, -2228188, 0, 131072, -2228187, 0, 131072, -2228186, 0, 131072, -2228185, 0, 131072, -2228184, 0, 131072, -2228183, 0, 131072, -2228182, 0, 131072, -2228181, 0, 131072, -2228180, 0, 131072, -2228179, 0, 131072, -2228178, 0, 131072, -2228177, 0, 131072, -2228176, 0, 131072, -2228175, 0, 131072, -2228174, 0, 131072, -2228173, 0, 131072, -2228172, 0, 131072, -2228171, 0, 131072, -2228170, 0, 131072, -2228169, 0, 131072, -2228168, 0, 131072, -2228167, 0, 131072, -2228166, 0, 131072, -2228165, 0, 131072, -2228164, 0, 131072, -2228163, 0, 131072, -2228162, 0, 131072, -2228161, 0, 131072, -2228160, 0, 131072, -2228159, 0, 131072, -2228158, 0, 131072, -2228157, 0, 131072, -2228156, 0, 131072, -2228155, 0, 131072, -2228154, 0, 131072, -2228153, 0, 131072, -2228152, 0, 131072, -2228151, 0, 131072, -2228150, 0, 131072, -2228149, 0, 131072, -2228148, 0, 131072, -2228147, 0, 131072, -2228146, 0, 131072, -2228145, 0, 131072, -2228144, 0, 131072, -2228143, 0, 131072, -2228142, 0, 131072, -2228141, 0, 131072, -2228140, 0, 131072, -2228139, 0, 131072, -2228138, 0, 131072, -2228137, 0, 131072, -2228136, 0, 131072, -2228135, 0, 131072, -2228134, 0, 131072, -2228133, 0, 131072, -2228132, 0, 131072, -2228131, 0, 131072, -2228130, 0, 131072, -2228129, 0, 131072, -2228128, 0, 131072, -2228127, 0, 131072, -2228126, 0, 131072, -2228125, 0, 131072, -2228124, 0, 131072, -2228123, 0, 131072, -2228122, 0, 131072, -2228121, 0, 131072, -2228120, 0, 131072, -2228119, 0, 131072, -2228118, 0, 131072, -2228117, 0, 131072, -2228116, 0, 131072, -2228115, 0, 131072, -2228114, 0, 131072, -2228113, 0, 131072, -2228112, 0, 131072, -2228111, 0, 131072, -2228110, 0, 131072, -2228109, 0, 131072, -2228108, 0, 131072, -2228107, 0, 131072, -2228106, 0, 131072, -2228105, 0, 131072, -2228104, 0, 131072, -2228103, 0, 131072, -2228102, 0, 131072, -2228101, 0, 131072, -2228100, 0, 131072, -2228099, 0, 131072, -2228098, 0, 131072, -2228097, 0, 131072, -2228096, 0, 131072, -2228095, 0, 131072, -2228094, 0, 131072, -2228093, 0, 131072, -2228092, 0, 131072, -2228091, 0, 131072, -2228090, 0, 131072, -2228089, 0, 131072, -2228088, 0, 131072, -2228087, 0, 131072, -2228086, 0, 131072, -2228085, 0, 131072, -2228084, 0, 131072, -2228083, 0, 131072, -2228082, 0, 131072, -2228081, 0, 131072, -2228080, 0, 131072, -2228079, 0, 131072, -2228078, 0, 131072, -2228077, 0, 131072, -2228076, 0, 131072, -2228075, 0, 131072, -2228074, 0, 131072, -2228073, 0, 131072, -2228072, 0, 131072, -2228071, 0, 131072, -2228070, 0, 131072, -2228069, 0, 131072, -2228068, 0, 131072, -2228067, 0, 131072, -2228066, 0, 131072, -2228065, 0, 131072, -2228064, 0, 131072, -2228063, 0, 131072, -2228062, 0, 131072, -2228061, 0, 131072, -2228060, 0, 131072, -2228059, 0, 131072, -2228058, 0, 131072, -2228057, 0, 131072, -2228056, 0, 131072, -2228055, 0, 131072, -2228054, 0, 131072, -2097261, 0, 131072, -2097260, 0, 131072, -2097259, 0, 131072, -2097258, 0, 131072, -2097257, 0, 131072, -2097256, 0, 131072, -2097255, 0, 131072, -2097254, 0, 131072, -2097253, 0, 131072, -2097252, 0, 131072, -2097251, 0, 131072, -2097250, 0, 131072, -2097249, 0, 131072, -2097248, 0, 131072, -2097247, 0, 131072, -2097246, 0, 131072, -2097245, 0, 131072, -2097244, 0, 131072, -2097243, 0, 131072, -2097242, 0, 131072, -2097241, 0, 131072, -2097240, 0, 131072, -2097239, 0, 131072, -2097238, 0, 131072, -2097237, 0, 131072, -2097236, 0, 131072, -2097235, 0, 131072, -2097234, 0, 131072, -2097233, 0, 131072, -2097232, 0, 131072, -2097231, 0, 131072, -2097230, 0, 131072, -2097229, 0, 131072, -2097228, 0, 131072, -2097227, 0, 131072, -2097226, 0, 131072, -2097225, 0, 131072, -2097224, 0, 131072, -2097223, 0, 131072, -2097222, 0, 131072, -2097221, 0, 131072, -2097220, 0, 131072, -2097219, 0, 131072, -2097218, 0, 131072, -2097217, 0, 131072, -2097216, 0, 131072, -2097215, 0, 131072, -2097214, 0, 131072, -2097213, 0, 131072, -2097212, 0, 131072, -2097211, 0, 131072, -2097210, 0, 131072, -2097209, 0, 131072, -2097208, 0, 131072, -2097207, 0, 131072, -2097206, 0, 131072, -2097205, 0, 131072, -2097204, 0, 131072, -2097203, 0, 131072, -2097202, 0, 131072, -2097201, 0, 131072, -2097200, 0, 131072, -2097199, 0, 131072, -2097198, 0, 131072, -2097197, 0, 131072, -2097196, 0, 131072, -2097195, 0, 131072, -2097194, 0, 131072, -2097193, 0, 131072, -2097192, 0, 131072, -2097191, 0, 131072, -2097190, 0, 131072, -2097189, 0, 131072, -2097188, 0, 131072, -2097187, 0, 131072, -2097186, 0, 131072, -2097185, 0, 131072, -2097184, 0, 131072, -2097183, 0, 131072, -2097182, 0, 131072, -2097181, 0, 131072, -2097180, 0, 131072, -2097179, 0, 131072, -2097178, 0, 131072, -2097177, 0, 131072, -2097176, 0, 131072, -2097175, 0, 131072, -2097174, 0, 131072, -2097173, 0, 131072, -2097172, 0, 131072, -2097171, 0, 131072, -2097170, 0, 131072, -2097169, 0, 131072, -2097168, 0, 131072, -2097167, 0, 131072, -2097166, 0, 131072, -2097165, 0, 131072, -2097164, 0, 131072, -2097163, 0, 131072, -2097162, 0, 131072, -2097161, 0, 131072, -2097160, 0, 131072, -2097159, 0, 131072, -2097158, 0, 131072, -2097157, 0, 131072, -2097156, 0, 131072, -2097155, 0, 131072, -2097154, 0, 131072, -2097153, 0, 131072, -2162688, 0, 131072, -2162687, 0, 131072, -2162686, 0, 131072, -2162685, 0, 131072, -2162684, 0, 131072, -2162683, 0, 131072, -2162682, 0, 131072, -2162681, 0, 131072, -2162680, 0, 131072, -2162679, 0, 131072, -2162678, 0, 131072, -2162677, 0, 131072, -2162676, 0, 131072, -2162675, 0, 131072, -2162674, 0, 131072, -2162673, 0, 131072, -2162672, 0, 131072, -2162671, 0, 131072, -2162670, 0, 131072, -2162669, 0, 131072, -2162668, 0, 131072, -2162667, 0, 131072, -2162666, 0, 131072, -2162665, 0, 131072, -2162664, 0, 131072, -2162663, 0, 131072, -2162662, 0, 131072, -2162661, 0, 131072, -2162660, 0, 131072, -2162659, 0, 131072, -2162658, 0, 131072, -2162657, 0, 131072, -2162656, 0, 131072, -2162655, 0, 131072, -2162654, 0, 131072, -2162653, 0, 131072, -2162652, 0, 131072, -2162651, 0, 131072, -2162650, 0, 131072, -2162649, 0, 131072, -2162648, 0, 131072, -2162647, 0, 131072, -2162646, 0, 131072, -2162645, 0, 131072, -2162644, 0, 131072, -2162643, 0, 131072, -2162642, 0, 131072, -2162641, 0, 131072, -2162640, 0, 131072, -2162639, 0, 131072, -2162638, 0, 131072, -2162637, 0, 131072, -2162636, 0, 131072, -2162635, 0, 131072, -2162634, 0, 131072, -2162633, 0, 131072, -2162632, 0, 131072, -2162631, 0, 131072, -2162630, 0, 131072, -2162629, 0, 131072, -2162628, 0, 131072, -2162627, 0, 131072, -2162626, 0, 131072, -2162625, 0, 131072, -2162624, 0, 131072, -2162623, 0, 131072, -2162622, 0, 131072, -2162621, 0, 131072, -2162620, 0, 131072, -2162619, 0, 131072, -2162618, 0, 131072, -2162617, 0, 131072, -2162616, 0, 131072, -2162615, 0, 131072, -2162614, 0, 131072, -2162613, 0, 131072, -2162612, 0, 131072, -2162611, 0, 131072, -2162610, 0, 131072, -2162609, 0, 131072, -2162608, 0, 131072, -2162607, 0, 131072, -2162606, 0, 131072, -2162605, 0, 131072, -2162604, 0, 131072, -2162603, 0, 131072, -2162602, 0, 131072, -2162601, 0, 131072, -2162600, 0, 131072, -2162599, 0, 131072, -2162598, 0, 131072, -2162597, 0, 131072, -2162596, 0, 131072, -2162595, 0, 131072, -2162594, 0, 131072, -2162593, 0, 131072, -2162592, 0, 131072, -2162591, 0, 131072, -2162590, 0, 131072, -2162589, 0, 131072, -2162588, 0, 131072, -2162587, 0, 131072, -2162586, 0, 131072, -2162585, 0, 131072, -2162584, 0, 131072, -2162583, 0, 131072, -2162582, 0, 131072, -2162581, 0, 131072, -2162580, 0, 131072, -2162579, 0, 131072, -2162578, 0, 131072, -2162577, 0, 131072, -2162576, 0, 131072, -2162575, 0, 131072, -2162574, 0, 131072, -2162573, 0, 131072, -2162572, 0, 131072, -2162571, 0, 131072, -2162570, 0, 131072, -2162569, 0, 131072, -2162568, 0, 131072, -2162567, 0, 131072, -2162566, 0, 131072, -2162565, 0, 131072, -2162564, 0, 131072, -2162563, 0, 131072, -2162562, 0, 131072, -2162561, 0, 131072, -2162560, 0, 131072, -2162559, 0, 131072, -2162558, 0, 131072, -2162557, 0, 131072, -2162556, 0, 131072, -2162555, 0, 131072, -2162554, 0, 131072, -2162553, 0, 131072, -2162552, 0, 131072, -2162551, 0, 131072, -2162550, 0, 131072, -2162549, 0, 131072, -2162548, 0, 131072, -2162547, 0, 131072, -2162546, 0, 131072, -2162545, 0, 131072, -2162544, 0, 131072, -2162543, 0, 131072, -2162542, 0, 131072, -2162541, 0, 131072, -2162540, 0, 131072, -2162539, 0, 131072, -2162538, 0, 131072, -2162537, 0, 131072, -2162536, 0, 131072, -2162535, 0, 131072, -2162534, 0, 131072, -2162533, 0, 131072, -2162532, 0, 131072, -2162531, 0, 131072, -2162530, 0, 131072, -2162529, 0, 131072, -2162528, 0, 131072, -2162527, 0, 131072, -2162526, 0, 131072, -2162525, 0, 131072, -2162524, 0, 131072, -2162523, 0, 131072, -2162522, 0, 131072, -2162521, 0, 131072, -2162520, 0, 131072, -2162519, 0, 131072, -2162518, 0, 131072, -2162517, 0, 131072, -2031725, 0, 131072, -2031724, 0, 131072, -2031723, 0, 131072, -2031722, 0, 131072, -2031721, 0, 131072, -2031720, 0, 131072, -2031719, 0, 131072, -2031718, 0, 131072, -2031717, 0, 131072, -2031716, 0, 131072, -2031715, 0, 131072, -2031714, 0, 131072, -2031713, 0, 131072, -2031712, 0, 131072, -2031711, 0, 131072, -2031710, 0, 131072, -2031709, 0, 131072, -2031708, 0, 131072, -2031707, 0, 131072, -2031706, 0, 131072, -2031705, 0, 131072, -2031704, 0, 131072, -2031703, 0, 131072, -2031702, 0, 131072, -2031701, 0, 131072, -2031700, 0, 131072, -2031699, 0, 131072, -2031698, 0, 131072, -2031697, 0, 131072, -2031696, 0, 131072, -2031695, 0, 131072, -2031694, 0, 131072, -2031693, 0, 131072, -2031692, 0, 131072, -2031691, 0, 131072, -2031690, 0, 131072, -2031689, 0, 131072, -2031688, 0, 131072, -2031687, 0, 131072, -2031686, 0, 131072, -2031685, 0, 131072, -2031684, 0, 131072, -2031683, 0, 131072, -2031682, 0, 131072, -2031681, 0, 131072, -2031680, 0, 131072, -2031679, 0, 131072, -2031678, 0, 131072, -2031677, 0, 131072, -2031676, 0, 131072, -2031675, 0, 131072, -2031674, 0, 131072, -2031673, 0, 131072, -2031672, 0, 131072, -2031671, 0, 131072, -2031670, 0, 131072, -2031669, 0, 131072, -2031668, 0, 131072, -2031667, 0, 131072, -2031666, 0, 131072, -2031665, 0, 131072, -2031664, 0, 131072, -2031663, 0, 131072, -2031662, 0, 131072, -2031661, 0, 131072, -2031660, 0, 131072, -2031659, 0, 131072, -2031658, 0, 131072, -2031657, 0, 131072, -2031656, 0, 131072, -2031655, 0, 131072, -2031654, 0, 131072, -2031653, 0, 131072, -2031652, 0, 131072, -2031651, 0, 131072, -2031650, 0, 131072, -2031649, 0, 131072, -2031648, 0, 131072, -2031647, 0, 131072, -2031646, 0, 131072, -2031645, 0, 131072, -2031644, 0, 131072, -2031643, 0, 131072, -2031642, 0, 131072, -2031641, 0, 131072, -2031640, 0, 131072, -2031639, 0, 131072, -2031638, 0, 131072, -2031637, 0, 131072, -2031636, 0, 131072, -2031635, 0, 131072, -2031634, 0, 131072, -2031633, 0, 131072, -2031632, 0, 131072, -2031631, 0, 131072, -2031630, 0, 131072, -2031629, 0, 131072, -2031628, 0, 131072, -2031627, 0, 131072, -2031626, 0, 131072, -2031625, 0, 131072, -2031624, 0, 131072, -2031623, 0, 131072, -2031622, 0, 131072, -2031621, 0, 131072, -2031620, 0, 131072, -2031619, 0, 131072, -2031618, 0, 131072, -2031617, 0, 131072, -2097152, 0, 131072, -2097151, 0, 131072, -2097150, 0, 131072, -2097149, 0, 131072, -2097148, 0, 131072, -2097147, 0, 131072, -2097146, 0, 131072, -2097145, 0, 131072, -2097144, 0, 131072, -2097143, 0, 131072, -2097142, 0, 131072, -2097141, 0, 131072, -2097140, 0, 131072, -2097139, 0, 131072, -2097138, 0, 131072, -2097137, 0, 131072, -2097136, 0, 131072, -2097135, 0, 131072, -2097134, 0, 131072, -2097133, 0, 131072, -2097132, 0, 131072, -2097131, 0, 131072, -2097130, 0, 131072, -2097129, 0, 131072, -2097128, 0, 131072, -2097127, 0, 131072, -2097126, 0, 131072, -2097125, 0, 131072, -2097124, 0, 131072, -2097123, 0, 131072, -2097122, 0, 131072, -2097121, 0, 131072, -2097120, 0, 131072, -2097119, 0, 131072, -2097118, 0, 131072, -2097117, 0, 131072, -2097116, 0, 131072, -2097115, 0, 131072, -2097114, 0, 131072, -2097113, 0, 131072, -2097112, 0, 131072, -2097111, 0, 131072, -2097110, 0, 131072, -2097109, 0, 131072, -2097108, 0, 131072, -2097107, 0, 131072, -2097106, 0, 131072, -2097105, 0, 131072, -2097104, 0, 131072, -2097103, 0, 131072, -2097102, 0, 131072, -2097101, 0, 131072, -2097100, 0, 131072, -2097099, 0, 131072, -2097098, 0, 131072, -2097097, 0, 131072, -2097096, 0, 131072, -2097095, 0, 131072, -2097094, 0, 131072, -2097093, 0, 131072, -2097092, 0, 131072, -2097091, 0, 131072, -2097090, 0, 131072, -2097089, 0, 131072, -2097088, 0, 131072, -2097087, 0, 131072, -2097086, 0, 131072, -2097085, 0, 131072, -2097084, 0, 131072, -2097083, 0, 131072, -2097082, 0, 131072, -2097081, 0, 131072, -2097080, 0, 131072, -2097079, 0, 131072, -2097078, 0, 131072, -2097077, 0, 131072, -2097076, 0, 131072, -2097075, 0, 131072, -2097074, 0, 131072, -2097073, 0, 131072, -2097072, 0, 131072, -2097071, 0, 131072, -2097070, 0, 131072, -2097069, 0, 131072, -2097068, 0, 131072, -2097067, 0, 131072, -2097066, 0, 131072, -2097065, 0, 131072, -2097064, 0, 131072, -2097063, 0, 131072, -2097062, 0, 131072, -2097061, 0, 131072, -2097060, 0, 131072, -2097059, 0, 131072, -2097058, 0, 131072, -2097057, 0, 131072, -2097056, 0, 131072, -2097055, 0, 131072, -2097054, 0, 131072, -2097053, 0, 131072, -2097052, 0, 131072, -2097051, 0, 131072, -2097050, 0, 131072, -2097049, 0, 131072, -2097048, 0, 131072, -2097047, 0, 131072, -2097046, 0, 131072, -2097045, 0, 131072, -2097044, 0, 131072, -2097043, 0, 131072, -2097042, 0, 131072, -2097041, 0, 131072, -2097040, 0, 131072, -2097039, 0, 131072, -2097038, 0, 131072, -2097037, 0, 131072, -2097036, 0, 131072, -2097035, 0, 131072, -2097034, 0, 131072, -2097033, 0, 131072, -2097032, 0, 131072, -2097031, 0, 131072, -2097030, 0, 131072, -2097029, 0, 131072, -2097028, 0, 131072, -2097027, 0, 131072, -2097026, 0, 131072, -2097025, 0, 131072, -2097024, 0, 131072, -2097023, 0, 131072, -2097022, 0, 131072, -2097021, 0, 131072, -2097020, 0, 131072, -2097019, 0, 131072, -2097018, 0, 131072, -2097017, 0, 131072, -2097016, 0, 131072, -2097015, 0, 131072, -2097014, 0, 131072, -2097013, 0, 131072, -2097012, 0, 131072, -2097011, 0, 131072, -2097010, 0, 131072, -2097009, 0, 131072, -2097008, 0, 131072, -2097007, 0, 131072, -2097006, 0, 131072, -2097005, 0, 131072, -2097004, 0, 131072, -2097003, 0, 131072, -2097002, 0, 131072, -2097001, 0, 131072, -2097000, 0, 131072, -2096999, 0, 131072, -2096998, 0, 131072, -2096997, 0, 131072, -2096996, 0, 131072, -2096995, 0, 131072, -2096994, 0, 131072, -2096993, 0, 131072, -2096992, 0, 131072, -2096991, 0, 131072, -2096990, 0, 131072, -2096989, 0, 131072, -2096988, 0, 131072, -2096987, 0, 131072, -2096986, 0, 131072, -2096985, 0, 131072, -2096984, 0, 131072, -2096983, 0, 131072, -2096982, 0, 131072, -2096981, 0, 131072, -2096980, 0, 131072, -1966189, 0, 131072, -1966188, 0, 131072, -1966187, 0, 131072, -1966186, 0, 131072, -1966185, 0, 131072, -1966184, 0, 131072, -1966183, 0, 131072, -1966182, 0, 131072, -1966181, 0, 131072, -1966180, 0, 131072, -1966179, 0, 131072, -1966178, 0, 131072, -1966177, 0, 131072, -1966176, 0, 131072, -1966175, 0, 131072, -1966174, 0, 131072, -1966173, 0, 131072, -1966172, 0, 131072, -1966171, 0, 131072, -1966170, 0, 131072, -1966169, 0, 131072, -1966168, 0, 131072, -1966167, 0, 131072, -1966166, 0, 131072, -1966165, 0, 131072, -1966164, 0, 131072, -1966163, 0, 131072, -1966162, 0, 131072, -1966161, 0, 131072, -1966160, 0, 131072, -1966159, 0, 131072, -1966158, 0, 131072, -1966157, 0, 131072, -1966156, 0, 131072, -1966155, 0, 131072, -1966154, 0, 131072, -1966153, 0, 131072, -1966152, 0, 131072, -1966151, 0, 131072, -1966150, 0, 131072, -1966149, 0, 131072, -1966148, 0, 131072, -1966147, 0, 131072, -1966146, 0, 131072, -1966145, 0, 131072, -1966144, 0, 131072, -1966143, 0, 131072, -1966142, 0, 131072, -1966141, 0, 131072, -1966140, 0, 131072, -1966139, 0, 131072, -1966138, 0, 131072, -1966137, 0, 131072, -1966136, 0, 131072, -1966135, 0, 131072, -1966134, 0, 131072, -1966133, 0, 131072, -1966132, 0, 131072, -1966131, 0, 131072, -1966130, 0, 131072, -1966129, 0, 131072, -1966128, 0, 131072, -1966127, 0, 131072, -1966126, 0, 131072, -1966125, 0, 131072, -1966124, 0, 131072, -1966123, 0, 131072, -1966122, 0, 131072, -1966121, 0, 131072, -1966120, 0, 131072, -1966119, 0, 131072, -1966118, 0, 131072, -1966117, 0, 131072, -1966116, 0, 131072, -1966115, 0, 131072, -1966114, 0, 131072, -1966113, 0, 131072, -1966112, 0, 131072, -1966111, 0, 131072, -1966110, 0, 131072, -1966109, 0, 131072, -1966108, 0, 131072, -1966107, 0, 131072, -1966106, 0, 131072, -1966105, 0, 131072, -1966104, 0, 131072, -1966103, 0, 131072, -1966102, 0, 131072, -1966101, 0, 131072, -1966100, 0, 131072, -1966099, 0, 131072, -1966098, 0, 131072, -1966097, 0, 131072, -1966096, 0, 131072, -1966095, 0, 131072, -1966094, 0, 131072, -1966093, 0, 131072, -1966092, 0, 131072, -1966091, 0, 131072, -1966090, 0, 131072, -1966089, 0, 131072, -1966088, 0, 131072, -1966087, 0, 131072, -1966086, 0, 131072, -1966085, 0, 131072, -1966084, 0, 131072, -1966083, 0, 131072, -1966082, 0, 131072, -1966081, 0, 131072, -2031616, 0, 131072, -2031615, 0, 131072, -2031614, 0, 131072, -2031613, 0, 131072, -2031612, 0, 131072, -2031611, 0, 131072, -2031610, 0, 131072, -2031609, 0, 131072, -2031608, 0, 131072, -2031607, 0, 131072, -2031606, 0, 131072, -2031605, 0, 131072, -2031604, 0, 131072, -2031603, 0, 131072, -2031602, 0, 131072, -2031601, 0, 131072, -2031600, 0, 131072, -2031599, 0, 131072, -2031598, 0, 131072, -2031597, 0, 131072, -2031596, 0, 131072, -2031595, 0, 131072, -2031594, 0, 131072, -2031593, 0, 131072, -2031592, 0, 131072, -2031591, 0, 131072, -2031590, 0, 131072, -2031589, 0, 131072, -2031588, 0, 131072, -2031587, 0, 131072, -2031586, 0, 131072, -2031585, 0, 131072, -2031584, 0, 131072, -2031583, 0, 131072, -2031582, 0, 131072, -2031581, 0, 131072, -2031580, 0, 131072, -2031579, 0, 131072, -2031578, 0, 131072, -2031577, 0, 131072, -2031576, 0, 131072, -2031575, 0, 131072, -2031574, 0, 131072, -2031573, 0, 131072, -2031572, 0, 131072, -2031571, 0, 131072, -2031570, 0, 131072, -2031569, 0, 131072, -2031568, 0, 131072, -2031567, 0, 131072, -2031566, 0, 131072, -2031565, 0, 131072, -2031564, 0, 131072, -2031563, 0, 131072, -2031562, 0, 131072, -2031561, 0, 131072, -2031560, 0, 131072, -2031559, 0, 131072, -2031558, 0, 131072, -2031557, 0, 131072, -2031556, 0, 131072, -2031555, 0, 131072, -2031554, 0, 131072, -2031553, 0, 131072, -2031552, 0, 131072, -2031551, 0, 131072, -2031550, 0, 131072, -2031549, 0, 131072, -2031548, 0, 131072, -2031547, 0, 131072, -2031546, 0, 131072, -2031545, 0, 131072, -2031544, 0, 131072, -2031543, 0, 131072, -2031542, 0, 131072, -2031541, 0, 131072, -2031540, 0, 131072, -2031539, 0, 131072, -2031538, 0, 131072, -2031537, 0, 131072, -2031536, 0, 131072, -2031535, 0, 131072, -2031534, 0, 131072, -2031533, 0, 131072, -2031532, 0, 131072, -2031531, 0, 131072, -2031530, 0, 131072, -2031529, 0, 131072, -2031528, 0, 131072, -2031527, 0, 131072, -2031526, 0, 131072, -2031525, 0, 131072, -2031524, 0, 131072, -2031523, 0, 131072, -2031522, 0, 131072, -2031521, 0, 131072, -2031520, 0, 131072, -2031519, 0, 131072, -2031518, 0, 131072, -2031517, 0, 131072, -2031516, 0, 131072, -2031515, 0, 131072, -2031514, 0, 131072, -2031513, 0, 131072, -2031512, 0, 131072, -2031511, 0, 131072, -2031510, 0, 131072, -2031509, 0, 131072, -2031508, 0, 131072, -2031507, 0, 131072, -2031506, 0, 131072, -2031505, 0, 131072, -2031504, 0, 131072, -2031503, 0, 131072, -2031502, 0, 131072, -2031501, 0, 131072, -2031500, 0, 131072, -2031499, 0, 131072, -2031498, 0, 131072, -2031497, 0, 131072, -2031496, 0, 131072, -2031495, 0, 131072, -2031494, 0, 131072, -2031493, 0, 131072, -2031492, 0, 131072, -2031491, 0, 131072, -2031490, 0, 131072, -2031489, 0, 131072, -2031488, 0, 131072, -2031487, 0, 131072, -2031486, 0, 131072, -2031485, 0, 131072, -2031484, 0, 131072, -2031483, 0, 131072, -2031482, 0, 131072, -2031481, 0, 131072, -2031480, 0, 131072, -2031479, 0, 131072, -2031478, 0, 131072, -2031477, 0, 131072, -2031476, 0, 131072, -2031475, 0, 131072, -2031474, 0, 131072, -2031473, 0, 131072, -2031472, 0, 131072, -2031471, 0, 131072, -2031470, 0, 131072, -2031469, 0, 131072, -2031468, 0, 131072, -2031467, 0, 131072, -2031466, 0, 131072, -2031465, 0, 131072, -2031464, 0, 131072, -2031463, 0, 131072, -2031462, 0, 131072, -2031461, 0, 131072, -2031460, 0, 131072, -2031459, 0, 131072, -2031458, 0, 131072, -2031457, 0, 131072, -2031456, 0, 131072, -2031455, 0, 131072, -2031454, 0, 131072, -2031453, 0, 131072, -2031452, 0, 131072, -2031451, 0, 131072, -2031450, 0, 131072, -2031449, 0, 131072, -2031448, 0, 131072, -2031447, 0, 131072, -2031446, 0, 131072, -2031445, 0, 131072, -2031444, 0, 131072, -2031443, 0, 131072, -1900653, 0, 131072, -1900652, 0, 131072, -1900651, 0, 131072, -1900650, 0, 131072, -1900649, 0, 131072, -1900648, 0, 131072, -1900647, 0, 131072, -1900646, 0, 131072, -1900645, 0, 131072, -1900644, 0, 131072, -1900643, 0, 131072, -1900642, 0, 131072, -1900641, 0, 131072, -1900640, 0, 131072, -1900639, 0, 131072, -1900638, 0, 131072, -1900637, 0, 131072, -1900636, 0, 131072, -1900635, 0, 131072, -1900634, 0, 131072, -1900633, 0, 131072, -1900632, 0, 131072, -1900631, 0, 131072, -1900630, 0, 131072, -1900629, 0, 131072, -1900628, 0, 131072, -1900627, 0, 131072, -1900626, 0, 131072, -1900625, 0, 131072, -1900624, 0, 131072, -1900623, 0, 131072, -1900622, 0, 131072, -1900621, 0, 131072, -1900620, 0, 131072, -1900619, 0, 131072, -1900618, 0, 131072, -1900617, 0, 131072, -1900616, 0, 131072, -1900615, 0, 131072, -1900614, 0, 131072, -1900613, 0, 131072, -1900612, 0, 131072, -1900611, 0, 131072, -1900610, 0, 131072, -1900609, 0, 131072, -1900608, 0, 131072, -1900607, 0, 131072, -1900606, 0, 131072, -1900605, 0, 131072, -1900604, 0, 131072, -1900603, 0, 131072, -1900602, 0, 131072, -1900601, 0, 131072, -1900600, 0, 131072, -1900599, 0, 131072, -1900598, 0, 131072, -1900597, 0, 131072, -1900596, 0, 131072, -1900595, 0, 131072, -1900594, 0, 131072, -1900593, 0, 131072, -1900592, 0, 131072, -1900591, 0, 131072, -1900590, 0, 131072, -1900589, 0, 131072, -1900588, 0, 131072, -1900587, 0, 131072, -1900586, 0, 131072, -1900585, 0, 131072, -1900584, 0, 131072, -1900583, 0, 131072, -1900582, 0, 131072, -1900581, 0, 131072, -1900580, 0, 131072, -1900579, 0, 131072, -1900578, 0, 131072, -1900577, 0, 131072, -1900576, 0, 131072, -1900575, 0, 131072, -1900574, 0, 131072, -1900573, 0, 131072, -1900572, 0, 131072, -1900571, 0, 131072, -1900570, 0, 131072, -1900569, 0, 131072, -1900568, 0, 131072, -1900567, 0, 131072, -1900566, 0, 131072, -1900565, 0, 131072, -1900564, 0, 131072, -1900563, 0, 131072, -1900562, 0, 131072, -1900561, 0, 131072, -1900560, 0, 131072, -1900559, 0, 131072, -1900558, 0, 131072, -1900557, 0, 131072, -1900556, 0, 131072, -1900555, 0, 131072, -1900554, 0, 131072, -1900553, 0, 131072, -1900552, 0, 131072, -1900551, 0, 131072, -1900550, 0, 131072, -1900549, 0, 131072, -1900548, 0, 131072, -1900547, 0, 131072, -1900546, 0, 131072, -1900545, 0, 131072, -1966080, 0, 131072, -1966079, 0, 131072, -1966078, 0, 131072, -1966077, 0, 131072, -1966076, 0, 131072, -1966075, 0, 131072, -1966074, 0, 131072, -1966073, 0, 131072, -1966072, 0, 131072, -1966071, 0, 131072, -1966070, 0, 131072, -1966069, 0, 131072, -1966068, 0, 131072, -1966067, 0, 131072, -1966066, 0, 131072, -1966065, 0, 131072, -1966064, 0, 131072, -1966063, 0, 131072, -1966062, 0, 131072, -1966061, 0, 131072, -1966060, 0, 131072, -1966059, 0, 131072, -1966058, 0, 131072, -1966057, 0, 131072, -1966056, 0, 131072, -1966055, 0, 131072, -1966054, 0, 131072, -1966053, 0, 131072, -1966052, 0, 131072, -1966051, 0, 131072, -1966050, 0, 131072, -1966049, 0, 131072, -1966048, 0, 131072, -1966047, 0, 131072, -1966046, 0, 131072, -1966045, 0, 131072, -1966044, 0, 131072, -1966043, 0, 131072, -1966042, 0, 131072, -1966041, 0, 131072, -1966040, 0, 131072, -1966039, 0, 131072, -1966038, 0, 131072, -1966037, 0, 131072, -1966036, 0, 131072, -1966035, 0, 131072, -1966034, 0, 131072, -1966033, 0, 131072, -1966032, 0, 131072, -1966031, 0, 131072, -1966030, 0, 131072, -1966029, 0, 131072, -1966028, 0, 131072, -1966027, 0, 131072, -1966026, 0, 131072, -1966025, 0, 131072, -1966024, 0, 131072, -1966023, 0, 131072, -1966022, 0, 131072, -1966021, 0, 131072, -1966020, 0, 131072, -1966019, 0, 131072, -1966018, 0, 131072, -1966017, 0, 131072, -1966016, 0, 131072, -1966015, 0, 131072, -1966014, 0, 131072, -1966013, 0, 131072, -1966012, 0, 131072, -1966011, 0, 131072, -1966010, 0, 131072, -1966009, 0, 131072, -1966008, 0, 131072, -1966007, 0, 131072, -1966006, 0, 131072, -1966005, 0, 131072, -1966004, 0, 131072, -1966003, 0, 131072, -1966002, 0, 131072, -1966001, 0, 131072, -1966000, 0, 131072, -1965999, 0, 131072, -1965998, 0, 131072, -1965997, 0, 131072, -1965996, 0, 131072, -1965995, 0, 131072, -1965994, 0, 131072, -1965993, 0, 131072, -1965992, 0, 131072, -1965991, 0, 131072, -1965990, 0, 131072, -1965989, 0, 131072, -1965988, 0, 131072, -1965987, 0, 131072, -1965986, 0, 131072, -1965985, 0, 131072, -1965984, 0, 131072, -1965983, 0, 131072, -1965982, 0, 131072, -1965981, 0, 131072, -1965980, 0, 131072, -1965979, 0, 131072, -1965978, 0, 131072, -1965977, 0, 131072, -1965976, 0, 131072, -1965975, 0, 131072, -1965974, 0, 131072, -1965973, 0, 131072, -1965972, 0, 131072, -1965971, 0, 131072, -1965970, 0, 131072, -1965969, 0, 131072, -1965968, 0, 131072, -1965967, 0, 131072, -1965966, 0, 131072, -1965965, 0, 131072, -1965964, 0, 131072, -1965963, 0, 131072, -1965962, 0, 131072, -1965961, 0, 131072, -1965960, 0, 131072, -1965959, 0, 131072, -1965958, 0, 131072, -1965957, 0, 131072, -1965956, 0, 131072, -1965955, 0, 131072, -1965954, 0, 131072, -1965953, 0, 131072, -1965952, 0, 131072, -1965951, 0, 131072, -1965950, 0, 131072, -1965949, 0, 131072, -1965948, 0, 131072, -1965947, 0, 131072, -1965946, 0, 131072, -1965945, 0, 131072, -1965944, 0, 131072, -1965943, 0, 131072, -1965942, 0, 131072, -1965941, 0, 131072, -1965940, 0, 131072, -1965939, 0, 131072, -1965938, 0, 131072, -1965937, 0, 131072, -1965936, 0, 131072, -1965935, 0, 131072, -1965934, 0, 131072, -1965933, 0, 131072, -1965932, 0, 131072, -1965931, 0, 131072, -1965930, 0, 131072, -1965929, 0, 131072, -1965928, 0, 131072, -1965927, 0, 131072, -1965926, 0, 131072, -1965925, 0, 131072, -1965924, 0, 131072, -1965923, 0, 131072, -1965922, 0, 131072, -1965921, 0, 131072, -1965920, 0, 131072, -1965919, 0, 131072, -1965918, 0, 131072, -1965917, 0, 131072, -1965916, 0, 131072, -1965915, 0, 131072, -1965914, 0, 131072, -1965913, 0, 131072, -1965912, 0, 131072, -1965911, 0, 131072, -1965910, 0, 131072, -1965909, 0, 131072, -1965908, 0, 131072, -1965907, 0, 131072, -1965906, 0, 131072, -1835117, 0, 131072, -1835116, 0, 131072, -1835115, 0, 131072, -1835114, 0, 131072, -1835113, 0, 131072, -1835112, 0, 131072, -1835111, 0, 131072, -1835110, 0, 131072, -1835109, 0, 131072, -1835108, 0, 131072, -1835107, 0, 131072, -1835106, 0, 131072, -1835105, 0, 131072, -1835104, 0, 131072, -1835103, 0, 131072, -1835102, 0, 131072, -1835101, 0, 131072, -1835100, 0, 131072, -1835099, 0, 131072, -1835098, 0, 131072, -1835097, 0, 131072, -1835096, 0, 131072, -1835095, 0, 131072, -1835094, 0, 131072, -1835093, 0, 131072, -1835092, 0, 131072, -1835091, 0, 131072, -1835090, 0, 131072, -1835089, 0, 131072, -1835088, 0, 131072, -1835087, 0, 131072, -1835086, 0, 131072, -1835085, 0, 131072, -1835084, 0, 131072, -1835083, 0, 131072, -1835082, 0, 131072, -1835081, 0, 131072, -1835080, 0, 131072, -1835079, 0, 131072, -1835078, 0, 131072, -1835077, 0, 131072, -1835076, 0, 131072, -1835075, 0, 131072, -1835074, 0, 131072, -1835073, 0, 131072, -1835072, 0, 131072, -1835071, 0, 131072, -1835070, 0, 131072, -1835069, 0, 131072, -1835068, 0, 131072, -1835067, 0, 131072, -1835066, 0, 131072, -1835065, 0, 131072, -1835064, 0, 131072, -1835063, 0, 131072, -1835062, 0, 131072, -1835061, 0, 131072, -1835060, 0, 131072, -1835059, 0, 131072, -1835058, 0, 131072, -1835057, 0, 131072, -1835056, 0, 131072, -1835055, 0, 131072, -1835054, 0, 131072, -1835053, 0, 131072, -1835052, 0, 131072, -1835051, 0, 131072, -1835050, 0, 131072, -1835049, 0, 131072, -1835048, 0, 131072, -1835047, 0, 131072, -1835046, 0, 131072, -1835045, 0, 131072, -1835044, 0, 131072, -1835043, 0, 131072, -1835042, 0, 131072, -1835041, 0, 131072, -1835040, 0, 131072, -1835039, 0, 131072, -1835038, 0, 131072, -1835037, 0, 131072, -1835036, 0, 131072, -1835035, 0, 131072, -1835034, 0, 131072, -1835033, 0, 131072, -1835032, 0, 131072, -1835031, 0, 131072, -1835030, 0, 131072, -1835029, 0, 131072, -1835028, 0, 131072, -1835027, 0, 131072, -1835026, 0, 131072, -1835025, 0, 131072, -1835024, 0, 131072, -1835023, 0, 131072, -1835022, 0, 131072, -1835021, 0, 131072, -1835020, 0, 131072, -1835019, 0, 131072, -1835018, 0, 131072, -1835017, 0, 131072, -1835016, 0, 131072, -1835015, 0, 131072, -1835014, 0, 131072, -1835013, 0, 131072, -1835012, 0, 131072, -1835011, 0, 131072, -1835010, 0, 131072, -1835009, 0, 131072, -1900544, 0, 131072, -1900543, 0, 131072, -1900542, 0, 131072, -1900541, 0, 131072, -1900540, 0, 131072, -1900539, 0, 131072, -1900538, 0, 131072, -1900537, 0, 131072, -1900536, 0, 131072, -1900535, 0, 131072, -1900534, 0, 131072, -1900533, 0, 131072, -1900532, 0, 131072, -1900531, 0, 131072, -1900530, 0, 131072, -1900529, 0, 131072, -1900528, 0, 131072, -1900527, 0, 131072, -1900526, 0, 131072, -1900525, 0, 131072, -1900524, 0, 131072, -1900523, 0, 131072, -1900522, 0, 131072, -1900521, 0, 131072, -1900520, 0, 131072, -1900519, 0, 131072, -1900518, 0, 131072, -1900517, 0, 131072, -1900516, 0, 131072, -1900515, 0, 131072, -1900514, 0, 131072, -1900513, 0, 131072, -1900512, 0, 131072, -1900511, 0, 131072, -1900510, 0, 131072, -1900509, 0, 131072, -1900508, 0, 131072, -1900507, 0, 131072, -1900506, 0, 131072, -1900505, 0, 131072, -1900504, 0, 131072, -1900503, 0, 131072, -1900502, 0, 131072, -1900501, 0, 131072, -1900500, 0, 131072, -1900499, 0, 131072, -1900498, 0, 131072, -1900497, 0, 131072, -1900496, 0, 131072, -1900495, 0, 131072, -1900494, 0, 131072, -1900493, 0, 131072, -1900492, 0, 131072, -1900491, 0, 131072, -1900490, 0, 131072, -1900489, 0, 131072, -1900488, 0, 131072, -1900487, 0, 131072, -1900486, 0, 131072, -1900485, 0, 131072, -1900484, 0, 131072, -1900483, 0, 131072, -1900482, 0, 131072, -1900481, 0, 131072, -1900480, 0, 131072, -1900479, 0, 131072, -1900478, 0, 131072, -1900477, 0, 131072, -1900476, 0, 131072, -1900475, 0, 131072, -1900474, 0, 131072, -1900473, 0, 131072, -1900472, 0, 131072, -1900471, 0, 131072, -1900470, 0, 131072, -1900469, 0, 131072, -1900468, 0, 131072, -1900467, 0, 131072, -1900466, 0, 131072, -1900465, 0, 131072, -1900464, 0, 131072, -1900463, 0, 131072, -1900462, 0, 131072, -1900461, 0, 131072, -1900460, 0, 131072, -1900459, 0, 131072, -1900458, 0, 131072, -1900457, 0, 131072, -1900456, 0, 131072, -1900455, 0, 131072, -1900454, 0, 131072, -1900453, 0, 131072, -1900452, 0, 131072, -1900451, 0, 131072, -1900450, 0, 131072, -1900449, 0, 131072, -1900448, 0, 131072, -1900447, 0, 131072, -1900446, 0, 131072, -1900445, 0, 131072, -1900444, 0, 131072, -1900443, 0, 131072, -1900442, 0, 131072, -1900441, 0, 131072, -1900440, 0, 131072, -1900439, 0, 131072, -1900438, 0, 131072, -1900437, 0, 131072, -1900436, 0, 131072, -1900435, 0, 131072, -1900434, 0, 131072, -1900433, 0, 131072, -1900432, 0, 131072, -1900431, 0, 131072, -1900430, 0, 131072, -1900429, 0, 131072, -1900428, 0, 131072, -1900427, 0, 131072, -1900426, 0, 131072, -1900425, 0, 131072, -1900424, 0, 131072, -1900423, 0, 131072, -1900422, 0, 131072, -1900421, 0, 131072, -1900420, 0, 131072, -1900419, 0, 131072, -1900418, 0, 131072, -1900417, 0, 131072, -1900416, 0, 131072, -1900415, 0, 131072, -1900414, 0, 131072, -1900413, 0, 131072, -1900412, 0, 131072, -1900411, 0, 131072, -1900410, 0, 131072, -1900409, 0, 131072, -1900408, 0, 131072, -1900407, 0, 131072, -1900406, 0, 131072, -1900405, 0, 131072, -1900404, 0, 131072, -1900403, 0, 131072, -1900402, 0, 131072, -1900401, 0, 131072, -1900400, 0, 131072, -1900399, 0, 131072, -1900398, 0, 131072, -1900397, 0, 131072, -1900396, 0, 131072, -1900395, 0, 131072, -1900394, 0, 131072, -1900393, 0, 131072, -1900392, 0, 131072, -1900391, 0, 131072, -1900390, 0, 131072, -1900389, 0, 131072, -1900388, 0, 131072, -1900387, 0, 131072, -1900386, 0, 131072, -1900385, 0, 131072, -1900384, 0, 131072, -1900383, 0, 131072, -1900382, 0, 131072, -1900381, 0, 131072, -1900380, 0, 131072, -1900379, 0, 131072, -1900378, 0, 131072, -1900377, 0, 131072, -1900376, 0, 131072, -1900375, 0, 131072, -1900374, 0, 131072, -1900373, 0, 131072, -1900372, 0, 131072, -1900371, 0, 131072, -1900370, 0, 131072, -1900369, 0, 131072, -1769581, 0, 131072, -1769580, 0, 131072, -1769579, 0, 131072, -1769578, 0, 131072, -1769577, 0, 131072, -1769576, 0, 131072, -1769575, 0, 131072, -1769574, 0, 131072, -1769573, 0, 131072, -1769572, 0, 131072, -1769571, 0, 131072, -1769570, 0, 131072, -1769569, 0, 131072, -1769568, 0, 131072, -1769567, 0, 131072, -1769566, 0, 131072, -1769565, 0, 131072, -1769564, 0, 131072, -1769563, 0, 131072, -1769562, 0, 131072, -1769561, 0, 131072, -1769560, 0, 131072, -1769559, 0, 131072, -1769558, 0, 131072, -1769557, 0, 131072, -1769556, 0, 131072, -1769555, 0, 131072, -1769554, 0, 131072, -1769553, 0, 131072, -1769552, 0, 131072, -1769551, 0, 131072, -1769550, 0, 131072, -1769549, 0, 131072, -1769548, 0, 131072, -1769547, 0, 131072, -1769546, 0, 131072, -1769545, 0, 131072, -1769544, 0, 131072, -1769543, 0, 131072, -1769542, 0, 131072, -1769541, 0, 131072, -1769540, 0, 131072, -1769539, 0, 131072, -1769538, 0, 131072, -1769537, 0, 131072, -1769536, 0, 131072, -1769535, 0, 131072, -1769534, 0, 131072, -1769533, 0, 131072, -1769532, 0, 131072, -1769531, 0, 131072, -1769530, 0, 131072, -1769529, 0, 131072, -1769528, 0, 131072, -1769527, 0, 131072, -1769526, 0, 131072, -1769525, 0, 131072, -1769524, 0, 131072, -1769523, 0, 131072, -1769522, 0, 131072, -1769521, 0, 131072, -1769520, 0, 131072, -1769519, 0, 131072, -1769518, 0, 131072, -1769517, 0, 131072, -1769516, 0, 131072, -1769515, 0, 131072, -1769514, 0, 131072, -1769513, 0, 131072, -1769512, 0, 131072, -1769511, 0, 131072, -1769510, 0, 131072, -1769509, 0, 131072, -1769508, 0, 131072, -1769507, 0, 131072, -1769506, 0, 131072, -1769505, 0, 131072, -1769504, 0, 131072, -1769503, 0, 131072, -1769502, 0, 131072, -1769501, 0, 131072, -1769500, 0, 131072, -1769499, 0, 131072, -1769498, 0, 131072, -1769497, 0, 131072, -1769496, 0, 131072, -1769495, 0, 131072, -1769494, 0, 131072, -1769493, 0, 131072, -1769492, 0, 131072, -1769491, 0, 131072, -1769490, 0, 131072, -1769489, 0, 131072, -1769488, 0, 131072, -1769487, 0, 131072, -1769486, 0, 131072, -1769485, 0, 131072, -1769484, 0, 131072, -1769483, 0, 131072, -1769482, 0, 131072, -1769481, 0, 131072, -1769480, 0, 131072, -1769479, 0, 131072, -1769478, 0, 131072, -1769477, 0, 131072, -1769476, 0, 131072, -1769475, 0, 131072, -1769474, 0, 131072, -1769473, 0, 131072, -1835008, 0, 131072, -1835007, 0, 131072, -1835006, 0, 131072, -1835005, 0, 131072, -1835004, 0, 131072, -1835003, 0, 131072, -1835002, 0, 131072, -1835001, 0, 131072, -1835000, 0, 131072, -1834999, 0, 131072, -1834998, 0, 131072, -1834997, 0, 131072, -1834996, 0, 131072, -1834995, 0, 131072, -1834994, 0, 131072, -1834993, 0, 131072, -1834992, 0, 131072, -1834991, 0, 131072, -1834990, 0, 131072, -1834989, 0, 131072, -1834988, 0, 131072, -1834987, 0, 131072, -1834986, 0, 131072, -1834985, 0, 131072, -1834984, 0, 131072, -1834983, 0, 131072, -1834982, 0, 131072, -1834981, 0, 131072, -1834980, 0, 131072, -1834979, 0, 131072, -1834978, 0, 131072, -1834977, 0, 131072, -1834976, 0, 131072, -1834975, 0, 131072, -1834974, 0, 131072, -1834973, 0, 131072, -1834972, 0, 131072, -1834971, 0, 131072, -1834970, 0, 131072, -1834969, 0, 131072, -1834968, 0, 131072, -1834967, 0, 131072, -1834966, 0, 131072, -1834965, 0, 131072, -1834964, 0, 131072, -1834963, 0, 131072, -1834962, 0, 131072, -1834961, 0, 131072, -1834960, 0, 131072, -1834959, 0, 131072, -1834958, 0, 131072, -1834957, 0, 131072, -1834956, 0, 131072, -1834955, 0, 131072, -1834954, 0, 131072, -1834953, 0, 131072, -1834952, 0, 131072, -1834951, 0, 131072, -1834950, 0, 131072, -1834949, 0, 131072, -1834948, 0, 131072, -1834947, 0, 131072, -1834946, 0, 131072, -1834945, 0, 131072, -1834944, 0, 131072, -1834943, 0, 131072, -1834942, 0, 131072, -1834941, 0, 131072, -1834940, 0, 131072, -1834939, 0, 131072, -1834938, 0, 131072, -1834937, 0, 131072, -1834936, 0, 131072, -1834935, 0, 131072, -1834934, 0, 131072, -1834933, 0, 131072, -1834932, 0, 131072, -1834931, 0, 131072, -1834930, 0, 131072, -1834929, 0, 131072, -1834928, 0, 131072, -1834927, 0, 131072, -1834926, 0, 131072, -1834925, 0, 131072, -1834924, 0, 131072, -1834923, 0, 131072, -1834922, 0, 131072, -1834921, 0, 131072, -1834920, 0, 131072, -1834919, 0, 131072, -1834918, 0, 131072, -1834917, 0, 131072, -1834916, 0, 131072, -1834915, 0, 131072, -1834914, 0, 131072, -1834913, 0, 131072, -1834912, 0, 131072, -1834911, 0, 131072, -1834910, 0, 131072, -1834909, 0, 131072, -1834908, 0, 131072, -1834907, 0, 131072, -1834906, 0, 131072, -1834905, 0, 131072, -1834904, 0, 131072, -1834903, 0, 131072, -1834902, 0, 131072, -1834901, 0, 131072, -1834900, 0, 131072, -1834899, 0, 131072, -1834898, 0, 131072, -1834897, 0, 131072, -1834896, 0, 131072, -1834895, 0, 131072, -1834894, 0, 131072, -1834893, 0, 131072, -1834892, 0, 131072, -1834891, 0, 131072, -1834890, 0, 131072, -1834889, 0, 131072, -1834888, 0, 131072, -1834887, 0, 131072, -1834886, 0, 131072, -1834885, 0, 131072, -1834884, 0, 131072, -1834883, 0, 131072, -1834882, 0, 131072, -1834881, 0, 131072, -1834880, 0, 131072, -1834879, 0, 131072, -1834878, 0, 131072, -1834877, 0, 131072, -1834876, 0, 131072, -1834875, 0, 131072, -1834874, 0, 131072, -1834873, 0, 131072, -1834872, 0, 131072, -1834871, 0, 131072, -1834870, 0, 131072, -1834869, 0, 131072, -1834868, 0, 131072, -1834867, 0, 131072, -1834866, 0, 131072, -1834865, 0, 131072, -1834864, 0, 131072, -1834863, 0, 131072, -1834862, 0, 131072, -1834861, 0, 131072, -1834860, 0, 131072, -1834859, 0, 131072, -1834858, 0, 131072, -1834857, 0, 131072, -1834856, 0, 131072, -1834855, 0, 131072, -1834854, 0, 131072, -1834853, 0, 131072, -1834852, 0, 131072, -1834851, 0, 131072, -1834850, 0, 131072, -1834849, 0, 131072, -1834848, 0, 131072, -1834847, 0, 131072, -1834846, 0, 131072, -1834845, 0, 131072, -1834844, 0, 131072, -1834843, 0, 131072, -1834842, 0, 131072, -1834841, 0, 131072, -1834840, 0, 131072, -1834839, 0, 131072, -1834838, 0, 131072, -1834837, 0, 131072, -1834836, 0, 131072, -1834835, 0, 131072, -1834834, 0, 131072, -1834833, 0, 131072, -1834832, 0, 131072, -1704045, 0, 131072, -1704044, 0, 131072, -1704043, 0, 131072, -1704042, 0, 131072, -1704041, 0, 131072, -1704040, 0, 131072, -1704039, 0, 131072, -1704038, 0, 131072, -1704037, 0, 131072, -1704036, 0, 131072, -1704035, 0, 131072, -1704034, 0, 131072, -1704033, 0, 131072, -1704032, 0, 131072, -1704031, 0, 131072, -1704030, 0, 131072, -1704029, 0, 131072, -1704028, 0, 131072, -1704027, 0, 131072, -1704026, 0, 131072, -1704025, 0, 131072, -1704024, 0, 131072, -1704023, 0, 131072, -1704022, 0, 131072, -1704021, 0, 131072, -1704020, 0, 131072, -1704019, 0, 131072, -1704018, 0, 131072, -1704017, 0, 131072, -1704016, 0, 131072, -1704015, 0, 131072, -1704014, 0, 131072, -1704013, 0, 131072, -1704012, 0, 131072, -1704011, 0, 131072, -1704010, 0, 131072, -1704009, 0, 131072, -1704008, 0, 131072, -1704007, 0, 131072, -1704006, 0, 131072, -1704005, 0, 131072, -1704004, 0, 131072, -1704003, 0, 131072, -1704002, 0, 131072, -1704001, 0, 131072, -1704000, 0, 131072, -1703999, 0, 131072, -1703998, 0, 131072, -1703997, 0, 131072, -1703996, 0, 131072, -1703995, 0, 131072, -1703994, 0, 131072, -1703993, 0, 131072, -1703992, 0, 131072, -1703991, 0, 131072, -1703990, 0, 131072, -1703989, 0, 131072, -1703988, 0, 131072, -1703987, 0, 131072, -1703986, 0, 131072, -1703985, 0, 131072, -1703984, 0, 131072, -1703983, 0, 131072, -1703982, 0, 131072, -1703981, 0, 131072, -1703980, 0, 131072, -1703979, 0, 131072, -1703978, 0, 131072, -1703977, 0, 131072, -1703976, 0, 131072, -1703975, 0, 131072, -1703974, 0, 131072, -1703973, 0, 131072, -1703972, 0, 131072, -1703971, 0, 131072, -1703970, 0, 131072, -1703969, 0, 131072, -1703968, 0, 131072, -1703967, 0, 131072, -1703966, 0, 131072, -1703965, 0, 131072, -1703964, 0, 131072, -1703963, 0, 131072, -1703962, 0, 131072, -1703961, 0, 131072, -1703960, 0, 131072, -1703959, 0, 131072, -1703958, 0, 131072, -1703957, 0, 131072, -1703956, 0, 131072, -1703955, 0, 131072, -1703954, 0, 131072, -1703953, 0, 131072, -1703952, 0, 131072, -1703951, 0, 131072, -1703950, 0, 131072, -1703949, 0, 131072, -1703948, 0, 131072, -1703947, 0, 131072, -1703946, 0, 131072, -1703945, 0, 131072, -1703944, 0, 131072, -1703943, 0, 131072, -1703942, 0, 131072, -1703941, 0, 131072, -1703940, 0, 131072, -1703939, 0, 131072, -1703938, 0, 131072, -1703937, 0, 131072, -1769472, 0, 131072, -1769471, 0, 131072, -1769470, 0, 131072, -1769469, 0, 131072, -1769468, 0, 131072, -1769467, 0, 131072, -1769466, 0, 131072, -1769465, 0, 131072, -1769464, 0, 131072, -1769463, 0, 131072, -1769462, 0, 131072, -1769461, 0, 131072, -1769460, 0, 131072, -1769459, 0, 131072, -1769458, 0, 131072, -1769457, 0, 131072, -1769456, 0, 131072, -1769455, 0, 131072, -1769454, 0, 131072, -1769453, 0, 131072, -1769452, 0, 131072, -1769451, 0, 131072, -1769450, 0, 131072, -1769449, 0, 131072, -1769448, 0, 131072, -1769447, 0, 131072, -1769446, 0, 131072, -1769445, 0, 131072, -1769444, 0, 131072, -1769443, 0, 131072, -1769442, 0, 131072, -1769441, 0, 131072, -1769440, 0, 131072, -1769439, 0, 131072, -1769438, 0, 131072, -1769437, 0, 131072, -1769436, 0, 131072, -1769435, 0, 131072, -1769434, 0, 131072, -1769433, 0, 131072, -1769432, 0, 131072, -1769431, 0, 131072, -1769430, 0, 131072, -1769429, 0, 131072, -1769428, 0, 131072, -1769427, 0, 131072, -1769426, 0, 131072, -1769425, 0, 131072, -1769424, 0, 131072, -1769423, 0, 131072, -1769422, 0, 131072, -1769421, 0, 131072, -1769420, 0, 131072, -1769419, 0, 131072, -1769418, 0, 131072, -1769417, 0, 131072, -1769416, 0, 131072, -1769415, 0, 131072, -1769414, 0, 131072, -1769413, 0, 131072, -1769412, 0, 131072, -1769411, 0, 131072, -1769410, 0, 131072, -1769409, 0, 131072, -1769408, 0, 131072, -1769407, 0, 131072, -1769406, 0, 131072, -1769405, 0, 131072, -1769404, 0, 131072, -1769403, 0, 131072, -1769402, 0, 131072, -1769401, 0, 131072, -1769400, 0, 131072, -1769399, 0, 131072, -1769398, 0, 131072, -1769397, 0, 131072, -1769396, 0, 131072, -1769395, 0, 131072, -1769394, 0, 131072, -1769393, 0, 131072, -1769392, 0, 131072, -1769391, 0, 131072, -1769390, 0, 131072, -1769389, 0, 131072, -1769388, 0, 131072, -1769387, 0, 131072, -1769386, 0, 131072, -1769385, 0, 131072, -1769384, 0, 131072, -1769383, 0, 131072, -1769382, 0, 131072, -1769381, 0, 131072, -1769380, 0, 131072, -1769379, 0, 131072, -1769378, 0, 131072, -1769377, 0, 131072, -1769376, 0, 131072, -1769375, 0, 131072, -1769374, 0, 131072, -1769373, 0, 131072, -1769372, 0, 131072, -1769371, 0, 131072, -1769370, 0, 131072, -1769369, 0, 131072, -1769368, 0, 131072, -1769367, 0, 131072, -1769366, 0, 131072, -1769365, 0, 131072, -1769364, 0, 131072, -1769363, 0, 131072, -1769362, 0, 131072, -1769361, 0, 131072, -1769360, 0, 131072, -1769359, 0, 131072, -1769358, 0, 131072, -1769357, 0, 131072, -1769356, 0, 131072, -1769355, 0, 131072, -1769354, 0, 131072, -1769353, 0, 131072, -1769352, 0, 131072, -1769351, 0, 131072, -1769350, 0, 131072, -1769349, 0, 131072, -1769348, 0, 131072, -1769347, 0, 131072, -1769346, 0, 131072, -1769345, 0, 131072, -1769344, 0, 131072, -1769343, 0, 131072, -1769342, 0, 131072, -1769341, 0, 131072, -1769340, 0, 131072, -1769339, 0, 131072, -1769338, 0, 131072, -1769337, 0, 131072, -1769336, 0, 131072, -1769335, 0, 131072, -1769334, 0, 131072, -1769333, 0, 131072, -1769332, 0, 131072, -1769331, 0, 131072, -1769330, 0, 131072, -1769329, 0, 131072, -1769328, 0, 131072, -1769327, 0, 131072, -1769326, 0, 131072, -1769325, 0, 131072, -1769324, 0, 131072, -1769323, 0, 131072, -1769322, 0, 131072, -1769321, 0, 131072, -1769320, 0, 131072, -1769319, 0, 131072, -1769318, 0, 131072, -1769317, 0, 131072, -1769316, 0, 131072, -1769315, 0, 131072, -1769314, 0, 131072, -1769313, 0, 131072, -1769312, 0, 131072, -1769311, 0, 131072, -1769310, 0, 131072, -1769309, 0, 131072, -1769308, 0, 131072, -1769307, 0, 131072, -1769306, 0, 131072, -1769305, 0, 131072, -1769304, 0, 131072, -1769303, 0, 131072, -1769302, 0, 131072, -1769301, 0, 131072, -1769300, 0, 131072, -1769299, 0, 131072, -1769298, 0, 131072, -1769297, 0, 131072, -1769296, 0, 131072, -1769295, 0, 131072, -1638509, 0, 131072, -1638508, 0, 131072, -1638507, 0, 131072, -1638506, 0, 131072, -1638505, 0, 131072, -1638504, 0, 131072, -1638503, 0, 131072, -1638502, 0, 131072, -1638501, 0, 131072, -1638500, 0, 131072, -1638499, 0, 131072, -1638498, 0, 131072, -1638497, 0, 131072, -1638496, 0, 131072, -1638495, 0, 131072, -1638494, 0, 131072, -1638493, 0, 131072, -1638492, 0, 131072, -1638491, 0, 131072, -1638490, 0, 131072, -1638489, 0, 131072, -1638488, 0, 131072, -1638487, 0, 131072, -1638486, 0, 131072, -1638485, 0, 131072, -1638484, 0, 131072, -1638483, 0, 131072, -1638482, 0, 131072, -1638481, 0, 131072, -1638480, 0, 131072, -1638479, 0, 131072, -1638478, 0, 131072, -1638477, 0, 131072, -1638476, 0, 131072, -1638475, 0, 131072, -1638474, 0, 131072, -1638473, 0, 131072, -1638472, 0, 131072, -1638471, 0, 131072, -1638470, 0, 131072, -1638469, 0, 131072, -1638468, 0, 131072, -1638467, 0, 131072, -1638466, 0, 131072, -1638465, 0, 131072, -1638464, 0, 131072, -1638463, 0, 131072, -1638462, 0, 131072, -1638461, 0, 131072, -1638460, 0, 131072, -1638459, 0, 131072, -1638458, 0, 131072, -1638457, 0, 131072, -1638456, 0, 131072, -1638455, 0, 131072, -1638454, 0, 131072, -1638453, 0, 131072, -1638452, 0, 131072, -1638451, 0, 131072, -1638450, 0, 131072, -1638449, 0, 131072, -1638448, 0, 131072, -1638447, 0, 131072, -1638446, 0, 131072, -1638445, 0, 131072, -1638444, 0, 131072, -1638443, 0, 131072, -1638442, 0, 131072, -1638441, 0, 131072, -1638440, 0, 131072, -1638439, 0, 131072, -1638438, 0, 131072, -1638437, 0, 131072, -1638436, 0, 131072, -1638435, 0, 131072, -1638434, 0, 131072, -1638433, 0, 131072, -1638432, 0, 131072, -1638431, 0, 131072, -1638430, 0, 131072, -1638429, 0, 131072, -1638428, 0, 131072, -1638427, 0, 131072, -1638426, 0, 131072, -1638425, 0, 131072, -1638424, 0, 131072, -1638423, 0, 131072, -1638422, 0, 131072, -1638421, 0, 131072, -1638420, 0, 131072, -1638419, 0, 131072, -1638418, 0, 131072, -1638417, 0, 131072, -1638416, 0, 131072, -1638415, 0, 131072, -1638414, 0, 131072, -1638413, 0, 131072, -1638412, 0, 131072, -1638411, 0, 131072, -1638410, 0, 131072, -1638409, 0, 131072, -1638408, 0, 131072, -1638407, 0, 131072, -1638406, 0, 131072, -1638405, 0, 131072, -1638404, 0, 131072, -1638403, 0, 131072, -1638402, 0, 131072, -1638401, 0, 131072, -1703936, 0, 131072, -1703935, 0, 131072, -1703934, 0, 131072, -1703933, 0, 131072, -1703932, 0, 131072, -1703931, 0, 131072, -1703930, 0, 131072, -1703929, 0, 131072, -1703928, 0, 131072, -1703927, 0, 131072, -1703926, 0, 131072, -1703925, 0, 131072, -1703924, 0, 131072, -1703923, 0, 131072, -1703922, 0, 131072, -1703921, 0, 131072, -1703920, 0, 131072, -1703919, 0, 131072, -1703918, 0, 131072, -1703917, 0, 131072, -1703916, 0, 131072, -1703915, 0, 131072, -1703914, 0, 131072, -1703913, 0, 131072, -1703912, 0, 131072, -1703911, 0, 131072, -1703910, 0, 131072, -1703909, 0, 131072, -1703908, 0, 131072, -1703907, 0, 131072, -1703906, 0, 131072, -1703905, 0, 131072, -1703904, 0, 131072, -1703903, 0, 131072, -1703902, 0, 131072, -1703901, 0, 131072, -1703900, 0, 131072, -1703899, 0, 131072, -1703898, 0, 131072, -1703897, 0, 131072, -1703896, 0, 131072, -1703895, 0, 131072, -1703894, 0, 131072, -1703893, 0, 131072, -1703892, 0, 131072, -1703891, 0, 131072, -1703890, 0, 131072, -1703889, 0, 131072, -1703888, 0, 131072, -1703887, 0, 131072, -1703886, 0, 131072, -1703885, 0, 131072, -1703884, 0, 131072, -1703883, 0, 131072, -1703882, 0, 131072, -1703881, 0, 131072, -1703880, 0, 131072, -1703879, 0, 131072, -1703878, 0, 131072, -1703877, 0, 131072, -1703876, 0, 131072, -1703875, 0, 131072, -1703874, 0, 131072, -1703873, 0, 131072, -1703872, 0, 131072, -1703871, 0, 131072, -1703870, 0, 131072, -1703869, 0, 131072, -1703868, 0, 131072, -1703867, 0, 131072, -1703866, 0, 131072, -1703865, 0, 131072, -1703864, 0, 131072, -1703863, 0, 131072, -1703862, 0, 131072, -1703861, 0, 131072, -1703860, 0, 131072, -1703859, 0, 131072, -1703858, 0, 131072, -1703857, 0, 131072, -1703856, 0, 131072, -1703855, 0, 131072, -1703854, 0, 131072, -1703853, 0, 131072, -1703852, 0, 131072, -1703851, 0, 131072, -1703850, 0, 131072, -1703849, 0, 131072, -1703848, 0, 131072, -1703847, 0, 131072, -1703846, 0, 131072, -1703845, 0, 131072, -1703844, 0, 131072, -1703843, 0, 131072, -1703842, 0, 131072, -1703841, 0, 131072, -1703840, 0, 131072, -1703839, 0, 131072, -1703838, 0, 131072, -1703837, 0, 131072, -1703836, 0, 131072, -1703835, 0, 131072, -1703834, 0, 131072, -1703833, 0, 131072, -1703832, 0, 131072, -1703831, 0, 131072, -1703830, 0, 131072, -1703829, 0, 131072, -1703828, 0, 131072, -1703827, 0, 131072, -1703826, 0, 131072, -1703825, 0, 131072, -1703824, 0, 131072, -1703823, 0, 131072, -1703822, 0, 131072, -1703821, 0, 131072, -1703820, 0, 131072, -1703819, 0, 131072, -1703818, 0, 131072, -1703817, 0, 131072, -1703816, 0, 131072, -1703815, 0, 131072, -1703814, 0, 131072, -1703813, 0, 131072, -1703812, 0, 131072, -1703811, 0, 131072, -1703810, 0, 131072, -1703809, 0, 131072, -1703808, 0, 131072, -1703807, 0, 131072, -1703806, 0, 131072, -1703805, 0, 131072, -1703804, 0, 131072, -1703803, 0, 131072, -1703802, 0, 131072, -1703801, 0, 131072, -1703800, 0, 131072, -1703799, 0, 131072, -1703798, 0, 131072, -1703797, 0, 131072, -1703796, 0, 131072, -1703795, 0, 131072, -1703794, 0, 131072, -1703793, 0, 131072, -1703792, 0, 131072, -1703791, 0, 131072, -1703790, 0, 131072, -1703789, 0, 131072, -1703788, 0, 131072, -1703787, 0, 131072, -1703786, 0, 131072, -1703785, 0, 131072, -1703784, 0, 131072, -1703783, 0, 131072, -1703782, 0, 131072, -1703781, 0, 131072, -1703780, 0, 131072, -1703779, 0, 131072, -1703778, 0, 131072, -1703777, 0, 131072, -1703776, 0, 131072, -1703775, 0, 131072, -1703774, 0, 131072, -1703773, 0, 131072, -1703772, 0, 131072, -1703771, 0, 131072, -1703770, 0, 131072, -1703769, 0, 131072, -1703768, 0, 131072, -1703767, 0, 131072, -1703766, 0, 131072, -1703765, 0, 131072, -1703764, 0, 131072, -1703763, 0, 131072, -1703762, 0, 131072, -1703761, 0, 131072, -1703760, 0, 131072, -1703759, 0, 131072, -1703758, 0, 131072, -1572973, 0, 131072, -1572972, 0, 131072, -1572971, 0, 131072, -1572970, 0, 131072, -1572969, 0, 131072, -1572968, 0, 131072, -1572967, 0, 131072, -1572966, 0, 131072, -1572965, 0, 131072, -1572964, 0, 131072, -1572963, 0, 131072, -1572962, 0, 131072, -1572961, 0, 131072, -1572960, 0, 131072, -1572959, 0, 131072, -1572958, 0, 131072, -1572957, 0, 131072, -1572956, 0, 131072, -1572955, 0, 131072, -1572954, 0, 131072, -1572953, 0, 131072, -1572952, 0, 131072, -1572951, 0, 131072, -1572950, 0, 131072, -1572949, 0, 131072, -1572948, 0, 131072, -1572947, 0, 131072, -1572946, 0, 131072, -1572945, 0, 131072, -1572944, 0, 131072, -1572943, 0, 131072, -1572942, 0, 131072, -1572941, 0, 131072, -1572940, 0, 131072, -1572939, 0, 131072, -1572938, 0, 131072, -1572937, 0, 131072, -1572936, 0, 131072, -1572935, 0, 131072, -1572934, 0, 131072, -1572933, 0, 131072, -1572932, 0, 131072, -1572931, 0, 131072, -1572930, 0, 131072, -1572929, 0, 131072, -1572928, 0, 131072, -1572927, 0, 131072, -1572926, 0, 131072, -1572925, 0, 131072, -1572924, 0, 131072, -1572923, 0, 131072, -1572922, 0, 131072, -1572921, 0, 131072, -1572920, 0, 131072, -1572919, 0, 131072, -1572918, 0, 131072, -1572917, 0, 131072, -1572916, 0, 131072, -1572915, 0, 131072, -1572914, 0, 131072, -1572913, 0, 131072, -1572912, 0, 131072, -1572911, 0, 131072, -1572910, 0, 131072, -1572909, 0, 131072, -1572908, 0, 131072, -1572907, 0, 131072, -1572906, 0, 131072, -1572905, 0, 131072, -1572904, 0, 131072, -1572903, 0, 131072, -1572902, 0, 131072, -1572901, 0, 131072, -1572900, 0, 131072, -1572899, 0, 131072, -1572898, 0, 131072, -1572897, 0, 131072, -1572896, 0, 131072, -1572895, 0, 131072, -1572894, 0, 131072, -1572893, 0, 131072, -1572892, 0, 131072, -1572891, 0, 131072, -1572890, 0, 131072, -1572889, 0, 131072, -1572888, 0, 131072, -1572887, 0, 131072, -1572886, 0, 131072, -1572885, 0, 131072, -1572884, 0, 131072, -1572883, 0, 131072, -1572882, 0, 131072, -1572881, 0, 131072, -1572880, 0, 131072, -1572879, 0, 131072, -1572878, 0, 131072, -1572877, 0, 131072, -1572876, 0, 131072, -1572875, 0, 131072, -1572874, 0, 131072, -1572873, 0, 131072, -1572872, 0, 131072, -1572871, 0, 131072, -1572870, 0, 131072, -1572869, 0, 131072, -1572868, 0, 131072, -1572867, 0, 131072, -1572866, 0, 131072, -1572865, 0, 131072, -1638400, 0, 131072, -1638399, 0, 131072, -1638398, 0, 131072, -1638397, 0, 131072, -1638396, 0, 131072, -1638395, 0, 131072, -1638394, 0, 131072, -1638393, 0, 131072, -1638392, 0, 131072, -1638391, 0, 131072, -1638390, 0, 131072, -1638389, 0, 131072, -1638388, 0, 131072, -1638387, 0, 131072, -1638386, 0, 131072, -1638385, 0, 131072, -1638384, 0, 131072, -1638383, 0, 131072, -1638382, 0, 131072, -1638381, 0, 131072, -1638380, 0, 131072, -1638379, 0, 131072, -1638378, 0, 131072, -1638377, 0, 131072, -1638376, 0, 131072, -1638375, 0, 131072, -1638374, 0, 131072, -1638373, 0, 131072, -1638372, 0, 131072, -1638371, 0, 131072, -1638370, 0, 131072, -1638369, 0, 131072, -1638368, 0, 131072, -1638367, 0, 131072, -1638366, 0, 131072, -1638365, 0, 131072, -1638364, 0, 131072, -1638363, 0, 131072, -1638362, 0, 131072, -1638361, 0, 131072, -1638360, 0, 131072, -1638359, 0, 131072, -1638358, 0, 131072, -1638357, 0, 131072, -1638356, 0, 131072, -1638355, 0, 131072, -1638354, 0, 131072, -1638353, 0, 131072, -1638352, 0, 131072, -1638351, 0, 131072, -1638350, 0, 131072, -1638349, 0, 131072, -1638348, 0, 131072, -1638347, 0, 131072, -1638346, 0, 131072, -1638345, 0, 131072, -1638344, 0, 131072, -1638343, 0, 131072, -1638342, 0, 131072, -1638341, 0, 131072, -1638340, 0, 131072, -1638339, 0, 131072, -1638338, 0, 131072, -1638337, 0, 131072, -1638336, 0, 131072, -1638335, 0, 131072, -1638334, 0, 131072, -1638333, 0, 131072, -1638332, 0, 131072, -1638331, 0, 131072, -1638330, 0, 131072, -1638329, 0, 131072, -1638328, 0, 131072, -1638327, 0, 131072, -1638326, 0, 131072, -1638325, 0, 131072, -1638324, 0, 131072, -1638323, 0, 131072, -1638322, 0, 131072, -1638321, 0, 131072, -1638320, 0, 131072, -1638319, 0, 131072, -1638318, 0, 131072, -1638317, 0, 131072, -1638316, 0, 131072, -1638315, 0, 131072, -1638314, 0, 131072, -1638313, 0, 131072, -1638312, 0, 131072, -1638311, 0, 131072, -1638310, 0, 131072, -1638309, 0, 131072, -1638308, 0, 131072, -1638307, 0, 131072, -1638306, 0, 131072, -1638305, 0, 131072, -1638304, 0, 131072, -1638303, 0, 131072, -1638302, 0, 131072, -1638301, 0, 131072, -1638300, 0, 131072, -1638299, 0, 131072, -1638298, 0, 131072, -1638297, 0, 131072, -1638296, 0, 131072, -1638295, 0, 131072, -1638294, 0, 131072, -1638293, 0, 131072, -1638292, 0, 131072, -1638291, 0, 131072, -1638290, 0, 131072, -1638289, 0, 131072, -1638288, 0, 131072, -1638287, 0, 131072, -1638286, 0, 131072, -1638285, 0, 131072, -1638284, 0, 131072, -1638283, 0, 131072, -1638282, 0, 131072, -1638281, 0, 131072, -1638280, 0, 131072, -1638279, 0, 131072, -1638278, 0, 131072, -1638277, 0, 131072, -1638276, 0, 131072, -1638275, 0, 131072, -1638274, 0, 131072, -1638273, 0, 131072, -1638272, 0, 131072, -1638271, 0, 131072, -1638270, 0, 131072, -1638269, 0, 131072, -1638268, 0, 131072, -1638267, 0, 131072, -1638266, 0, 131072, -1638265, 0, 131072, -1638264, 0, 131072, -1638263, 0, 131072, -1638262, 0, 131072, -1638261, 0, 131072, -1638260, 0, 131072, -1638259, 0, 131072, -1638258, 0, 131072, -1638257, 0, 131072, -1638256, 0, 131072, -1638255, 0, 131072, -1638254, 0, 131072, -1638253, 0, 131072, -1638252, 0, 131072, -1638251, 0, 131072, -1638250, 0, 131072, -1638249, 0, 131072, -1638248, 0, 131072, -1638247, 0, 131072, -1638246, 0, 131072, -1638245, 0, 131072, -1638244, 0, 131072, -1638243, 0, 131072, -1638242, 0, 131072, -1638241, 0, 131072, -1638240, 0, 131072, -1638239, 0, 131072, -1638238, 0, 131072, -1638237, 0, 131072, -1638236, 0, 131072, -1638235, 0, 131072, -1638234, 0, 131072, -1638233, 0, 131072, -1638232, 0, 131072, -1638231, 0, 131072, -1638230, 0, 131072, -1638229, 0, 131072, -1638228, 0, 131072, -1638227, 0, 131072, -1638226, 0, 131072, -1638225, 0, 131072, -1638224, 0, 131072, -1638223, 0, 131072, -1638222, 0, 131072, -1507436, 0, 131072, -1507435, 0, 131072, -1507434, 0, 131072, -1507433, 0, 131072, -1507432, 0, 131072, -1507431, 0, 131072, -1507430, 0, 131072, -1507429, 0, 131072, -1507428, 0, 131072, -1507427, 0, 131072, -1507426, 0, 131072, -1507425, 0, 131072, -1507424, 0, 131072, -1507423, 0, 131072, -1507422, 0, 131072, -1507421, 0, 131072, -1507420, 0, 131072, -1507419, 0, 131072, -1507418, 0, 131072, -1507417, 0, 131072, -1507416, 0, 131072, -1507415, 0, 131072, -1507414, 0, 131072, -1507413, 0, 131072, -1507412, 0, 131072, -1507411, 0, 131072, -1507410, 0, 131072, -1507409, 0, 131072, -1507408, 0, 131072, -1507407, 0, 131072, -1507406, 0, 131072, -1507405, 0, 131072, -1507404, 0, 131072, -1507403, 0, 131072, -1507402, 0, 131072, -1507401, 0, 131072, -1507400, 0, 131072, -1507399, 0, 131072, -1507398, 0, 131072, -1507397, 0, 131072, -1507396, 0, 131072, -1507395, 0, 131072, -1507394, 0, 131072, -1507393, 0, 131072, -1507392, 0, 131072, -1507391, 0, 131072, -1507390, 0, 131072, -1507389, 0, 131072, -1507388, 0, 131072, -1507387, 0, 131072, -1507386, 0, 131072, -1507385, 0, 131072, -1507384, 0, 131072, -1507383, 0, 131072, -1507382, 0, 131072, -1507381, 0, 131072, -1507380, 0, 131072, -1507379, 0, 131072, -1507378, 0, 131072, -1507377, 0, 131072, -1507376, 0, 131072, -1507375, 0, 131072, -1507374, 0, 131072, -1507373, 0, 131072, -1507372, 0, 131072, -1507371, 0, 131072, -1507370, 0, 131072, -1507369, 0, 131072, -1507368, 0, 131072, -1507367, 0, 131072, -1507366, 0, 131072, -1507365, 0, 131072, -1507364, 0, 131072, -1507363, 0, 131072, -1507362, 0, 131072, -1507361, 0, 131072, -1507360, 0, 131072, -1507359, 0, 131072, -1507358, 0, 131072, -1507357, 0, 131072, -1507356, 0, 131072, -1507355, 0, 131072, -1507354, 0, 131072, -1507353, 0, 131072, -1507352, 0, 131072, -1507351, 0, 131072, -1507350, 0, 131072, -1507349, 0, 131072, -1507348, 0, 131072, -1507347, 0, 131072, -1507346, 0, 131072, -1507345, 0, 131072, -1507344, 0, 131072, -1507343, 0, 131072, -1507342, 0, 131072, -1507341, 0, 131072, -1507340, 0, 131072, -1507339, 0, 131072, -1507338, 0, 131072, -1507337, 0, 131072, -1507336, 0, 131072, -1507335, 0, 131072, -1507334, 0, 131072, -1507333, 0, 131072, -1507332, 0, 131072, -1507331, 0, 131072, -1507330, 0, 131072, -1507329, 0, 131072, -1572864, 0, 131072, -1572863, 0, 131072, -1572862, 0, 131072, -1572861, 0, 131072, -1572860, 0, 131072, -1572859, 0, 131072, -1572858, 0, 131072, -1572857, 0, 131072, -1572856, 0, 131072, -1572855, 0, 131072, -1572854, 0, 131072, -1572853, 0, 131072, -1572852, 0, 131072, -1572851, 0, 131072, -1572850, 0, 131072, -1572849, 0, 131072, -1572848, 0, 131072, -1572847, 0, 131072, -1572846, 0, 131072, -1572845, 0, 131072, -1572844, 0, 131072, -1572843, 0, 131072, -1572842, 0, 131072, -1572841, 0, 131072, -1572840, 0, 131072, -1572839, 0, 131072, -1572838, 0, 131072, -1572837, 0, 131072, -1572836, 0, 131072, -1572835, 0, 131072, -1572834, 0, 131072, -1572833, 0, 131072, -1572832, 0, 131072, -1572831, 0, 131072, -1572830, 0, 131072, -1572829, 0, 131072, -1572828, 0, 131072, -1572827, 0, 131072, -1572826, 0, 131072, -1572825, 0, 131072, -1572824, 0, 131072, -1572823, 0, 131072, -1572822, 0, 131072, -1572821, 0, 131072, -1572820, 0, 131072, -1572819, 0, 131072, -1572818, 0, 131072, -1572817, 0, 131072, -1572816, 0, 131072, -1572815, 0, 131072, -1572814, 0, 131072, -1572813, 0, 131072, -1572812, 0, 131072, -1572811, 0, 131072, -1572810, 0, 131072, -1572809, 0, 131072, -1572808, 0, 131072, -1572807, 0, 131072, -1572806, 0, 131072, -1572805, 0, 131072, -1572804, 0, 131072, -1572803, 0, 131072, -1572802, 0, 131072, -1572801, 0, 131072, -1572800, 0, 131072, -1572799, 0, 131072, -1572798, 0, 131072, -1572797, 0, 131072, -1572796, 0, 131072, -1572795, 0, 131072, -1572794, 0, 131072, -1572793, 0, 131072, -1572792, 0, 131072, -1572791, 0, 131072, -1572790, 0, 131072, -1572789, 0, 131072, -1572788, 0, 131072, -1572787, 0, 131072, -1572786, 0, 131072, -1572785, 0, 131072, -1572784, 0, 131072, -1572783, 0, 131072, -1572782, 0, 131072, -1572781, 0, 131072, -1572780, 0, 131072, -1572779, 0, 131072, -1572778, 0, 131072, -1572777, 0, 131072, -1572776, 0, 131072, -1572775, 0, 131072, -1572774, 0, 131072, -1572773, 0, 131072, -1572772, 0, 131072, -1572771, 0, 131072, -1572770, 0, 131072, -1572769, 0, 131072, -1572768, 0, 131072, -1572767, 0, 131072, -1572766, 0, 131072, -1572765, 0, 131072, -1572764, 0, 131072, -1572763, 0, 131072, -1572762, 0, 131072, -1572761, 0, 131072, -1572760, 0, 131072, -1572759, 0, 131072, -1572758, 0, 131072, -1572757, 0, 131072, -1572756, 0, 131072, -1572755, 0, 131072, -1572754, 0, 131072, -1572753, 0, 131072, -1572752, 0, 131072, -1572751, 0, 131072, -1572750, 0, 131072, -1572749, 0, 131072, -1572748, 0, 131072, -1572747, 0, 131072, -1572746, 0, 131072, -1572745, 0, 131072, -1572744, 0, 131072, -1572743, 0, 131072, -1572742, 0, 131072, -1572741, 0, 131072, -1572740, 0, 131072, -1572739, 0, 131072, -1572738, 0, 131072, -1572737, 0, 131072, -1572736, 0, 131072, -1572735, 0, 131072, -1572734, 0, 131072, -1572733, 0, 131072, -1572732, 0, 131072, -1572731, 0, 131072, -1572730, 0, 131072, -1572729, 0, 131072, -1572728, 0, 131072, -1572727, 0, 131072, -1572726, 0, 131072, -1572725, 0, 131072, -1572724, 0, 131072, -1572723, 0, 131072, -1572722, 0, 131072, -1572721, 0, 131072, -1572720, 0, 131072, -1572719, 0, 131072, -1572718, 0, 131072, -1572717, 0, 131072, -1572716, 0, 131072, -1572715, 0, 131072, -1572714, 0, 131072, -1572713, 0, 131072, -1572712, 0, 131072, -1572711, 0, 131072, -1572710, 0, 131072, -1572709, 0, 131072, -1572708, 0, 131072, -1572707, 0, 131072, -1572706, 0, 131072, -1572705, 0, 131072, -1572704, 0, 131072, -1572703, 0, 131072, -1572702, 0, 131072, -1572701, 0, 131072, -1572700, 0, 131072, -1572699, 0, 131072, -1572698, 0, 131072, -1572697, 0, 131072, -1572696, 0, 131072, -1572695, 0, 131072, -1572694, 0, 131072, -1572693, 0, 131072, -1572692, 0, 131072, -1572691, 0, 131072, -1572690, 0, 131072, -1572689, 0, 131072, -1572688, 0, 131072, -1572687, 0, 131072, -1572686, 0, 131072, -1572685, 0, 131072, -1441900, 0, 131072, -1441899, 0, 131072, -1441898, 0, 131072, -1441897, 0, 131072, -1441896, 0, 131072, -1441895, 0, 131072, -1441894, 0, 131072, -1441893, 0, 131072, -1441892, 0, 131072, -1441891, 0, 131072, -1441890, 0, 131072, -1441889, 0, 131072, -1441888, 0, 131072, -1441887, 0, 131072, -1441886, 0, 131072, -1441885, 0, 131072, -1441884, 0, 131072, -1441883, 0, 131072, -1441882, 0, 131072, -1441881, 0, 131072, -1441880, 0, 131072, -1441879, 0, 131072, -1441878, 0, 131072, -1441877, 0, 131072, -1441876, 0, 131072, -1441875, 0, 131072, -1441874, 0, 131072, -1441873, 0, 131072, -1441872, 0, 131072, -1441871, 0, 131072, -1441870, 0, 131072, -1441869, 0, 131072, -1441868, 0, 131072, -1441867, 0, 131072, -1441866, 0, 131072, -1441865, 0, 131072, -1441864, 0, 131072, -1441863, 0, 131072, -1441862, 0, 131072, -1441861, 0, 131072, -1441860, 0, 131072, -1441859, 0, 131072, -1441858, 0, 131072, -1441857, 0, 131072, -1441856, 0, 131072, -1441855, 0, 131072, -1441854, 0, 131072, -1441853, 0, 131072, -1441852, 0, 131072, -1441851, 0, 131072, -1441850, 0, 131072, -1441849, 0, 131072, -1441848, 0, 131072, -1441847, 0, 131072, -1441846, 0, 131072, -1441845, 0, 131072, -1441844, 0, 131072, -1441843, 0, 131072, -1441842, 0, 131072, -1441841, 0, 131072, -1441840, 0, 131072, -1441839, 0, 131072, -1441838, 0, 131072, -1441837, 0, 131072, -1441836, 0, 131072, -1441835, 0, 131072, -1441834, 0, 131072, -1441833, 0, 131072, -1441832, 0, 131072, -1441831, 0, 131072, -1441830, 0, 131072, -1441829, 0, 131072, -1441828, 0, 131072, -1441827, 0, 131072, -1441826, 0, 131072, -1441825, 0, 131072, -1441824, 0, 131072, -1441823, 0, 131072, -1441822, 0, 131072, -1441821, 0, 131072, -1441820, 0, 131072, -1441819, 0, 131072, -1441818, 0, 131072, -1441817, 0, 131072, -1441816, 0, 131072, -1441815, 0, 131072, -1441814, 0, 131072, -1441813, 0, 131072, -1441812, 0, 131072, -1441811, 0, 131072, -1441810, 0, 131072, -1441809, 0, 131072, -1441808, 0, 131072, -1441807, 0, 131072, -1441806, 0, 131072, -1441805, 0, 131072, -1441804, 0, 131072, -1441803, 0, 131072, -1441802, 0, 131072, -1441801, 0, 131072, -1441800, 0, 131072, -1441799, 0, 131072, -1441798, 0, 131072, -1441797, 0, 131072, -1441796, 0, 131072, -1441795, 0, 131072, -1441794, 0, 131072, -1441793, 0, 131072, -1507328, 0, 131072, -1507327, 0, 131072, -1507326, 0, 131072, -1507325, 0, 131072, -1507324, 0, 131072, -1507323, 0, 131072, -1507322, 0, 131072, -1507321, 0, 131072, -1507320, 0, 131072, -1507319, 0, 131072, -1507318, 0, 131072, -1507317, 0, 131072, -1507316, 0, 131072, -1507315, 0, 131072, -1507314, 0, 131072, -1507313, 0, 131072, -1507312, 0, 131072, -1507311, 0, 131072, -1507310, 0, 131072, -1507309, 0, 131072, -1507308, 0, 131072, -1507307, 0, 131072, -1507306, 0, 131072, -1507305, 0, 131072, -1507304, 0, 131072, -1507303, 0, 131072, -1507302, 0, 131072, -1507301, 0, 131072, -1507300, 0, 131072, -1507299, 0, 131072, -1507298, 0, 131072, -1507297, 0, 131072, -1507296, 0, 131072, -1507295, 0, 131072, -1507294, 0, 131072, -1507293, 0, 131072, -1507292, 0, 131072, -1507291, 0, 131072, -1507290, 0, 131072, -1507289, 0, 131072, -1507288, 0, 131072, -1507287, 0, 131072, -1507286, 0, 131072, -1507285, 0, 131072, -1507284, 0, 131072, -1507283, 0, 131072, -1507282, 0, 131072, -1507281, 0, 131072, -1507280, 0, 131072, -1507279, 0, 131072, -1507278, 0, 131072, -1507277, 0, 131072, -1507276, 0, 131072, -1507275, 0, 131072, -1507274, 0, 131072, -1507273, 0, 131072, -1507272, 0, 131072, -1507271, 0, 131072, -1507270, 0, 131072, -1507269, 0, 131072, -1507268, 0, 131072, -1507267, 0, 131072, -1507266, 0, 131072, -1507265, 0, 131072, -1507264, 0, 131072, -1507263, 0, 131072, -1507262, 0, 131072, -1507261, 0, 131072, -1507260, 0, 131072, -1507259, 0, 131072, -1507258, 0, 131072, -1507257, 0, 131072, -1507256, 0, 131072, -1507255, 0, 131072, -1507254, 0, 131072, -1507253, 0, 131072, -1507252, 0, 131072, -1507251, 0, 131072, -1507250, 0, 131072, -1507249, 0, 131072, -1507248, 0, 131072, -1507247, 0, 131072, -1507246, 0, 131072, -1507245, 0, 131072, -1507244, 0, 131072, -1507243, 0, 131072, -1507242, 0, 131072, -1507241, 0, 131072, -1507240, 0, 131072, -1507239, 0, 131072, -1507238, 0, 131072, -1507237, 0, 131072, -1507236, 0, 131072, -1507235, 0, 131072, -1507234, 0, 131072, -1507233, 0, 131072, -1507232, 0, 131072, -1507231, 0, 131072, -1507230, 0, 131072, -1507229, 0, 131072, -1507228, 0, 131072, -1507227, 0, 131072, -1507226, 0, 131072, -1507225, 0, 131072, -1507224, 0, 131072, -1507223, 0, 131072, -1507222, 0, 131072, -1507221, 0, 131072, -1507220, 0, 131072, -1507219, 0, 131072, -1507218, 0, 131072, -1507217, 0, 131072, -1507216, 0, 131072, -1507215, 0, 131072, -1507214, 0, 131072, -1507213, 0, 131072, -1507212, 0, 131072, -1507211, 0, 131072, -1507210, 0, 131072, -1507209, 0, 131072, -1507208, 0, 131072, -1507207, 0, 131072, -1507206, 0, 131072, -1507205, 0, 131072, -1507204, 0, 131072, -1507203, 0, 131072, -1507202, 0, 131072, -1507201, 0, 131072, -1507200, 0, 131072, -1507199, 0, 131072, -1507198, 0, 131072, -1507197, 0, 131072, -1507196, 0, 131072, -1507195, 0, 131072, -1507194, 0, 131072, -1507193, 0, 131072, -1507192, 0, 131072, -1507191, 0, 131072, -1507190, 0, 131072, -1507189, 0, 131072, -1507188, 0, 131072, -1507187, 0, 131072, -1507186, 0, 131072, -1507185, 0, 131072, -1507184, 0, 131072, -1507183, 0, 131072, -1507182, 0, 131072, -1507181, 0, 131072, -1507180, 0, 131072, -1507179, 0, 131072, -1507178, 0, 131072, -1507177, 0, 131072, -1507176, 0, 131072, -1507175, 0, 131072, -1507174, 0, 131072, -1507173, 0, 131072, -1507172, 0, 131072, -1507171, 0, 131072, -1507170, 0, 131072, -1507169, 0, 131072, -1507168, 0, 131072, -1507167, 0, 131072, -1507166, 0, 131072, -1507165, 0, 131072, -1507164, 0, 131072, -1507163, 0, 131072, -1507162, 0, 131072, -1507161, 0, 131072, -1507160, 0, 131072, -1507159, 0, 131072, -1507158, 0, 131072, -1507157, 0, 131072, -1507156, 0, 131072, -1507155, 0, 131072, -1507154, 0, 131072, -1507153, 0, 131072, -1507152, 0, 131072, -1507151, 0, 131072, -1507150, 0, 131072, -1507149, 0, 131072, -1507148, 0, 131072, -1376364, 0, 131072, -1376363, 0, 131072, -1376362, 0, 131072, -1376361, 0, 131072, -1376360, 0, 131072, -1376359, 0, 131072, -1376358, 0, 131072, -1376357, 0, 131072, -1376356, 0, 131072, -1376355, 0, 131072, -1376354, 0, 131072, -1376353, 0, 131072, -1376352, 0, 131072, -1376351, 0, 131072, -1376350, 0, 131072, -1376349, 0, 131072, -1376348, 0, 131072, -1376347, 0, 131072, -1376346, 0, 131072, -1376345, 0, 131072, -1376344, 0, 131072, -1376343, 0, 131072, -1376342, 0, 131072, -1376341, 0, 131072, -1376340, 0, 131072, -1376339, 0, 131072, -1376338, 0, 131072, -1376337, 0, 131072, -1376336, 0, 131072, -1376335, 0, 131072, -1376334, 0, 131072, -1376333, 0, 131072, -1376332, 0, 131072, -1376331, 0, 131072, -1376330, 0, 131072, -1376329, 0, 131072, -1376328, 0, 131072, -1376327, 0, 131072, -1376326, 0, 131072, -1376325, 0, 131072, -1376324, 0, 131072, -1376323, 0, 131072, -1376322, 0, 131072, -1376321, 0, 131072, -1376320, 0, 131072, -1376319, 0, 131072, -1376318, 0, 131072, -1376317, 0, 131072, -1376316, 0, 131072, -1376315, 0, 131072, -1376314, 0, 131072, -1376313, 0, 131072, -1376312, 0, 131072, -1376311, 0, 131072, -1376310, 0, 131072, -1376309, 0, 131072, -1376308, 0, 131072, -1376307, 0, 131072, -1376306, 0, 131072, -1376305, 0, 131072, -1376304, 0, 131072, -1376303, 0, 131072, -1376302, 0, 131072, -1376301, 0, 131072, -1376300, 0, 131072, -1376299, 0, 131072, -1376298, 0, 131072, -1376297, 0, 131072, -1376296, 0, 131072, -1376295, 0, 131072, -1376294, 0, 131072, -1376293, 0, 131072, -1376292, 0, 131072, -1376291, 0, 131072, -1376290, 0, 131072, -1376289, 0, 131072, -1376288, 0, 131072, -1376287, 0, 131072, -1376286, 0, 131072, -1376285, 0, 131072, -1376284, 0, 131072, -1376283, 0, 131072, -1376282, 0, 131072, -1376281, 0, 131072, -1376280, 0, 131072, -1376279, 0, 131072, -1376278, 0, 131072, -1376277, 0, 131072, -1376276, 0, 131072, -1376275, 0, 131072, -1376274, 0, 131072, -1376273, 0, 131072, -1376272, 0, 131072, -1376271, 0, 131072, -1376270, 0, 131072, -1376269, 0, 131072, -1376268, 0, 131072, -1376267, 0, 131072, -1376266, 0, 131072, -1376265, 0, 131072, -1376264, 0, 131072, -1376263, 0, 131072, -1376262, 0, 131072, -1376261, 0, 131072, -1376260, 0, 131072, -1376259, 0, 131072, -1376258, 0, 131072, -1376257, 0, 131072, -1441792, 0, 131072, -1441791, 0, 131072, -1441790, 0, 131072, -1441789, 0, 131072, -1441788, 0, 131072, -1441787, 0, 131072, -1441786, 0, 131072, -1441785, 0, 131072, -1441784, 0, 131072, -1441783, 0, 131072, -1441782, 0, 131072, -1441781, 0, 131072, -1441780, 0, 131072, -1441779, 0, 131072, -1441778, 0, 131072, -1441777, 0, 131072, -1441776, 0, 131072, -1441775, 0, 131072, -1441774, 0, 131072, -1441773, 0, 131072, -1441772, 0, 131072, -1441771, 0, 131072, -1441770, 0, 131072, -1441769, 0, 131072, -1441768, 0, 131072, -1441767, 0, 131072, -1441766, 0, 131072, -1441765, 0, 131072, -1441764, 0, 131072, -1441763, 0, 131072, -1441762, 0, 131072, -1441761, 0, 131072, -1441760, 0, 131072, -1441759, 0, 131072, -1441758, 0, 131072, -1441757, 0, 131072, -1441756, 0, 131072, -1441755, 0, 131072, -1441754, 0, 131072, -1441753, 0, 131072, -1441752, 0, 131072, -1441751, 0, 131072, -1441750, 0, 131072, -1441749, 0, 131072, -1441748, 0, 131072, -1441747, 0, 131072, -1441746, 0, 131072, -1441745, 0, 131072, -1441744, 0, 131072, -1441743, 0, 131072, -1441742, 0, 131072, -1441741, 0, 131072, -1441740, 0, 131072, -1441739, 0, 131072, -1441738, 0, 131072, -1441737, 0, 131072, -1441736, 0, 131072, -1441735, 0, 131072, -1441734, 0, 131072, -1441733, 0, 131072, -1441732, 0, 131072, -1441731, 0, 131072, -1441730, 0, 131072, -1441729, 0, 131072, -1441728, 0, 131072, -1441727, 0, 131072, -1441726, 0, 131072, -1441725, 0, 131072, -1441724, 0, 131072, -1441723, 0, 131072, -1441722, 0, 131072, -1441721, 0, 131072, -1441720, 0, 131072, -1441719, 0, 131072, -1441718, 0, 131072, -1441717, 0, 131072, -1441716, 0, 131072, -1441715, 0, 131072, -1441714, 0, 131072, -1441713, 0, 131072, -1441712, 0, 131072, -1441711, 0, 131072, -1441710, 0, 131072, -1441709, 0, 131072, -1441708, 0, 131072, -1441707, 0, 131072, -1441706, 0, 131072, -1441705, 0, 131072, -1441704, 0, 131072, -1441703, 0, 131072, -1441702, 0, 131072, -1441701, 0, 131072, -1441700, 0, 131072, -1441699, 0, 131072, -1441698, 0, 131072, -1441697, 0, 131072, -1441696, 0, 131072, -1441695, 0, 131072, -1441694, 0, 131072, -1441693, 0, 131072, -1441692, 0, 131072, -1441691, 0, 131072, -1441690, 0, 131072, -1441689, 0, 131072, -1441688, 0, 131072, -1441687, 0, 131072, -1441686, 0, 131072, -1441685, 0, 131072, -1441684, 0, 131072, -1441683, 0, 131072, -1441682, 0, 131072, -1441681, 0, 131072, -1441680, 0, 131072, -1441679, 0, 131072, -1441678, 0, 131072, -1441677, 0, 131072, -1441676, 0, 131072, -1441675, 0, 131072, -1441674, 0, 131072, -1441673, 0, 131072, -1441672, 0, 131072, -1441671, 0, 131072, -1441670, 0, 131072, -1441669, 0, 131072, -1441668, 0, 131072, -1441667, 0, 131072, -1441666, 0, 131072, -1441665, 0, 131072, -1441664, 0, 131072, -1441663, 0, 131072, -1441662, 0, 131072, -1441661, 0, 131072, -1441660, 0, 131072, -1441659, 0, 131072, -1441658, 0, 131072, -1441657, 0, 131072, -1441656, 0, 131072, -1441655, 0, 131072, -1441654, 0, 131072, -1441653, 0, 131072, -1441652, 0, 131072, -1441651, 0, 131072, -1441650, 0, 131072, -1441649, 0, 131072, -1441648, 0, 131072, -1441647, 0, 131072, -1441646, 0, 131072, -1441645, 0, 131072, -1441644, 0, 131072, -1441643, 0, 131072, -1441642, 0, 131072, -1441641, 0, 131072, -1441640, 0, 131072, -1441639, 0, 131072, -1441638, 0, 131072, -1441637, 0, 131072, -1441636, 0, 131072, -1441635, 0, 131072, -1441634, 0, 131072, -1441633, 0, 131072, -1441632, 0, 131072, -1441631, 0, 131072, -1441630, 0, 131072, -1441629, 0, 131072, -1441628, 0, 131072, -1441627, 0, 131072, -1441626, 0, 131072, -1441625, 0, 131072, -1441624, 0, 131072, -1441623, 0, 131072, -1441622, 0, 131072, -1441621, 0, 131072, -1441620, 0, 131072, -1441619, 0, 131072, -1441618, 0, 131072, -1441617, 0, 131072, -1441616, 0, 131072, -1441615, 0, 131072, -1441614, 0, 131072, -1441613, 0, 131072, -1441612, 0, 131072, -1441611, 0, 131072, -1310828, 0, 131072, -1310827, 0, 131072, -1310826, 0, 131072, -1310825, 0, 131072, -1310824, 0, 131072, -1310823, 0, 131072, -1310822, 0, 131072, -1310821, 0, 131072, -1310820, 0, 131072, -1310819, 0, 131072, -1310818, 0, 131072, -1310817, 0, 131072, -1310816, 0, 131072, -1310815, 0, 131072, -1310814, 0, 131072, -1310813, 0, 131072, -1310812, 0, 131072, -1310811, 0, 131072, -1310810, 0, 131072, -1310809, 0, 131072, -1310808, 0, 131072, -1310807, 0, 131072, -1310806, 0, 131072, -1310805, 0, 131072, -1310804, 0, 131072, -1310803, 0, 131072, -1310802, 0, 131072, -1310801, 0, 131072, -1310800, 0, 131072, -1310799, 0, 131072, -1310798, 0, 131072, -1310797, 0, 131072, -1310796, 0, 131072, -1310795, 0, 131072, -1310794, 0, 131072, -1310793, 0, 131072, -1310792, 0, 131072, -1310791, 0, 131072, -1310790, 0, 131072, -1310789, 0, 131072, -1310788, 0, 131072, -1310787, 0, 131072, -1310786, 0, 131072, -1310785, 0, 131072, -1310784, 0, 131072, -1310783, 0, 131072, -1310782, 0, 131072, -1310781, 0, 131072, -1310780, 0, 131072, -1310779, 0, 131072, -1310778, 0, 131072, -1310777, 0, 131072, -1310776, 0, 131072, -1310775, 0, 131072, -1310774, 0, 131072, -1310773, 0, 131072, -1310772, 0, 131072, -1310771, 0, 131072, -1310770, 0, 131072, -1310769, 0, 131072, -1310768, 0, 131072, -1310767, 0, 131072, -1310766, 0, 131072, -1310765, 0, 131072, -1310764, 0, 131072, -1310763, 0, 131072, -1310762, 0, 131072, -1310761, 0, 131072, -1310760, 0, 131072, -1310759, 0, 131072, -1310758, 0, 131072, -1310757, 0, 131072, -1310756, 0, 131072, -1310755, 0, 131072, -1310754, 0, 131072, -1310753, 0, 131072, -1310752, 0, 131072, -1310751, 0, 131072, -1310750, 0, 131072, -1310749, 0, 131072, -1310748, 0, 131072, -1310747, 0, 131072, -1310746, 0, 131072, -1310745, 0, 131072, -1310744, 0, 131072, -1310743, 0, 131072, -1310742, 0, 131072, -1310741, 0, 131072, -1310740, 0, 131072, -1310739, 0, 131072, -1310738, 0, 131072, -1310737, 0, 131072, -1310736, 0, 131072, -1310735, 0, 131072, -1310734, 0, 131072, -1310733, 0, 131072, -1310732, 0, 131072, -1310731, 0, 131072, -1310730, 0, 131072, -1310729, 0, 131072, -1310728, 0, 131072, -1310727, 0, 131072, -1310726, 0, 131072, -1310725, 0, 131072, -1310724, 0, 131072, -1310723, 0, 131072, -1310722, 0, 131072, -1310721, 0, 131072, -1376256, 0, 131072, -1376255, 0, 131072, -1376254, 0, 131072, -1376253, 0, 131072, -1376252, 0, 131072, -1376251, 0, 131072, -1376250, 0, 131072, -1376249, 0, 131072, -1376248, 0, 131072, -1376247, 0, 131072, -1376246, 0, 131072, -1376245, 0, 131072, -1376244, 0, 131072, -1376243, 0, 131072, -1376242, 0, 131072, -1376241, 0, 131072, -1376240, 0, 131072, -1376239, 0, 131072, -1376238, 0, 131072, -1376237, 0, 131072, -1376236, 0, 131072, -1376235, 0, 131072, -1376234, 0, 131072, -1376233, 0, 131072, -1376232, 0, 131072, -1376231, 0, 131072, -1376230, 0, 131072, -1376229, 0, 131072, -1376228, 0, 131072, -1376227, 0, 131072, -1376226, 0, 131072, -1376225, 0, 131072, -1376224, 0, 131072, -1376223, 0, 131072, -1376222, 0, 131072, -1376221, 0, 131072, -1376220, 0, 131072, -1376219, 0, 131072, -1376218, 0, 131072, -1376217, 0, 131072, -1376216, 0, 131072, -1376215, 0, 131072, -1376214, 0, 131072, -1376213, 0, 131072, -1376212, 0, 131072, -1376211, 0, 131072, -1376210, 0, 131072, -1376209, 0, 131072, -1376208, 0, 131072, -1376207, 0, 131072, -1376206, 0, 131072, -1376205, 0, 131072, -1376204, 0, 131072, -1376203, 0, 131072, -1376202, 0, 131072, -1376201, 0, 131072, -1376200, 0, 131072, -1376199, 0, 131072, -1376198, 0, 131072, -1376197, 0, 131072, -1376196, 0, 131072, -1376195, 0, 131072, -1376194, 0, 131072, -1376193, 0, 131072, -1376192, 0, 131072, -1376191, 0, 131072, -1376190, 0, 131072, -1376189, 0, 131072, -1376188, 0, 131072, -1376187, 0, 131072, -1376186, 0, 131072, -1376185, 0, 131072, -1376184, 0, 131072, -1376183, 0, 131072, -1376182, 0, 131072, -1376181, 0, 131072, -1376180, 0, 131072, -1376179, 0, 131072, -1376178, 0, 131072, -1376177, 0, 131072, -1376176, 0, 131072, -1376175, 0, 131072, -1376174, 0, 131072, -1376173, 0, 131072, -1376172, 0, 131072, -1376171, 0, 131072, -1376170, 0, 131072, -1376169, 0, 131072, -1376168, 0, 131072, -1376167, 0, 131072, -1376166, 0, 131072, -1376165, 0, 131072, -1376164, 0, 131072, -1376163, 0, 131072, -1376162, 0, 131072, -1376161, 0, 131072, -1376160, 0, 131072, -1376159, 0, 131072, -1376158, 0, 131072, -1376157, 0, 131072, -1376156, 0, 131072, -1376155, 0, 131072, -1376154, 0, 131072, -1376153, 0, 131072, -1376152, 0, 131072, -1376151, 0, 131072, -1376150, 0, 131072, -1376149, 0, 131072, -1376148, 0, 131072, -1376147, 0, 131072, -1376146, 0, 131072, -1376145, 0, 131072, -1376144, 0, 131072, -1376143, 0, 131072, -1376142, 0, 131072, -1376141, 0, 131072, -1376140, 0, 131072, -1376139, 0, 131072, -1376138, 0, 131072, -1376137, 0, 131072, -1376136, 0, 131072, -1376135, 0, 131072, -1376134, 0, 131072, -1376133, 0, 131072, -1376132, 0, 131072, -1376131, 0, 131072, -1376130, 0, 131072, -1376129, 0, 131072, -1376128, 0, 131072, -1376127, 0, 131072, -1376126, 0, 131072, -1376125, 0, 131072, -1376124, 0, 131072, -1376123, 0, 131072, -1376122, 0, 131072, -1376121, 0, 131072, -1376120, 0, 131072, -1376119, 0, 131072, -1376118, 0, 131072, -1376117, 0, 131072, -1376116, 0, 131072, -1376115, 0, 131072, -1376114, 0, 131072, -1376113, 0, 131072, -1376112, 0, 131072, -1376111, 0, 131072, -1376110, 0, 131072, -1376109, 0, 131072, -1376108, 0, 131072, -1376107, 0, 131072, -1376106, 0, 131072, -1376105, 0, 131072, -1376104, 0, 131072, -1376103, 0, 131072, -1376102, 0, 131072, -1376101, 0, 131072, -1376100, 0, 131072, -1376099, 0, 131072, -1376098, 0, 131072, -1376097, 0, 131072, -1376096, 0, 131072, -1376095, 0, 131072, -1376094, 0, 131072, -1376093, 0, 131072, -1376092, 0, 131072, -1376091, 0, 131072, -1376090, 0, 131072, -1376089, 0, 131072, -1376088, 0, 131072, -1376087, 0, 131072, -1376086, 0, 131072, -1376085, 0, 131072, -1376084, 0, 131072, -1376083, 0, 131072, -1376082, 0, 131072, -1376081, 0, 131072, -1376080, 0, 131072, -1376079, 0, 131072, -1376078, 0, 131072, -1376077, 0, 131072, -1376076, 0, 131072, -1376075, 0, 131072, -1376074, 0, 131072, -1245292, 0, 131072, -1245291, 0, 131072, -1245290, 0, 131072, -1245289, 0, 131072, -1245288, 0, 131072, -1245287, 0, 131072, -1245286, 0, 131072, -1245285, 0, 131072, -1245284, 0, 131072, -1245283, 0, 131072, -1245282, 0, 131072, -1245281, 0, 131072, -1245280, 0, 131072, -1245279, 0, 131072, -1245278, 0, 131072, -1245277, 0, 131072, -1245276, 0, 131072, -1245275, 0, 131072, -1245274, 0, 131072, -1245273, 0, 131072, -1245272, 0, 131072, -1245271, 0, 131072, -1245270, 0, 131072, -1245269, 0, 131072, -1245268, 0, 131072, -1245267, 0, 131072, -1245266, 0, 131072, -1245265, 0, 131072, -1245264, 0, 131072, -1245263, 0, 131072, -1245262, 0, 131072, -1245261, 0, 131072, -1245260, 0, 131072, -1245259, 0, 131072, -1245258, 0, 131072, -1245257, 0, 131072, -1245256, 0, 131072, -1245255, 0, 131072, -1245254, 0, 131072, -1245253, 0, 131072, -1245252, 0, 131072, -1245251, 0, 131072, -1245250, 0, 131072, -1245249, 0, 131072, -1245248, 0, 131072, -1245247, 0, 131072, -1245246, 0, 131072, -1245245, 0, 131072, -1245244, 0, 131072, -1245243, 0, 131072, -1245242, 0, 131072, -1245241, 0, 131072, -1245240, 0, 131072, -1245239, 0, 131072, -1245238, 0, 131072, -1245237, 0, 131072, -1245236, 0, 131072, -1245235, 0, 131072, -1245234, 0, 131072, -1245233, 0, 131072, -1245232, 0, 131072, -1245231, 0, 131072, -1245230, 0, 131072, -1245229, 0, 131072, -1245228, 0, 131072, -1245227, 0, 131072, -1245226, 0, 131072, -1245225, 0, 131072, -1245224, 0, 131072, -1245223, 0, 131072, -1245222, 0, 131072, -1245221, 0, 131072, -1245220, 0, 131072, -1245219, 0, 131072, -1245218, 0, 131072, -1245217, 0, 131072, -1245216, 0, 131072, -1245215, 0, 131072, -1245214, 0, 131072, -1245213, 0, 131072, -1245212, 0, 131072, -1245211, 0, 131072, -1245210, 0, 131072, -1245209, 0, 131072, -1245208, 0, 131072, -1245207, 0, 131072, -1245206, 0, 131072, -1245205, 0, 131072, -1245204, 0, 131072, -1245203, 0, 131072, -1245202, 0, 131072, -1245201, 0, 131072, -1245200, 0, 131072, -1245199, 0, 131072, -1245198, 0, 131072, -1245197, 0, 131072, -1245196, 0, 131072, -1245195, 0, 131072, -1245194, 0, 131072, -1245193, 0, 131072, -1245192, 0, 131072, -1245191, 0, 131072, -1245190, 0, 131072, -1245189, 0, 131072, -1245188, 0, 131072, -1245187, 0, 131072, -1245186, 0, 131072, -1245185, 0, 131072, -1310720, 0, 131072, -1310719, 0, 131072, -1310718, 0, 131072, -1310717, 0, 131072, -1310716, 0, 131072, -1310715, 0, 131072, -1310714, 0, 131072, -1310713, 0, 131072, -1310712, 0, 131072, -1310711, 0, 131072, -1310710, 0, 131072, -1310709, 0, 131072, -1310708, 0, 131072, -1310707, 0, 131072, -1310706, 0, 131072, -1310705, 0, 131072, -1310704, 0, 131072, -1310703, 0, 131072, -1310702, 0, 131072, -1310701, 0, 131072, -1310700, 0, 131072, -1310699, 0, 131072, -1310698, 0, 131072, -1310697, 0, 131072, -1310696, 0, 131072, -1310695, 0, 131072, -1310694, 0, 131072, -1310693, 0, 131072, -1310692, 0, 131072, -1310691, 0, 131072, -1310690, 0, 131072, -1310689, 0, 131072, -1310688, 0, 131072, -1310687, 0, 131072, -1310686, 0, 131072, -1310685, 0, 131072, -1310684, 0, 131072, -1310683, 0, 131072, -1310682, 0, 131072, -1310681, 0, 131072, -1310680, 0, 131072, -1310679, 0, 131072, -1310678, 0, 131072, -1310677, 0, 131072, -1310676, 0, 131072, -1310675, 0, 131072, -1310674, 0, 131072, -1310673, 0, 131072, -1310672, 0, 131072, -1310671, 0, 131072, -1310670, 0, 131072, -1310669, 0, 131072, -1310668, 0, 131072, -1310667, 0, 131072, -1310666, 0, 131072, -1310665, 0, 131072, -1310664, 0, 131072, -1310663, 0, 131072, -1310662, 0, 131072, -1310661, 0, 131072, -1310660, 0, 131072, -1310659, 0, 131072, -1310658, 0, 131072, -1310657, 0, 131072, -1310656, 0, 131072, -1310655, 0, 131072, -1310654, 0, 131072, -1310653, 0, 131072, -1310652, 0, 131072, -1310651, 0, 131072, -1310650, 0, 131072, -1310649, 0, 131072, -1310648, 0, 131072, -1310647, 0, 131072, -1310646, 0, 131072, -1310645, 0, 131072, -1310644, 0, 131072, -1310643, 0, 131072, -1310642, 0, 131072, -1310641, 0, 131072, -1310640, 0, 131072, -1310639, 0, 131072, -1310638, 0, 131072, -1310637, 0, 131072, -1310636, 0, 131072, -1310635, 0, 131072, -1310634, 0, 131072, -1310633, 0, 131072, -1310632, 0, 131072, -1310631, 0, 131072, -1310630, 0, 131072, -1310629, 0, 131072, -1310628, 0, 131072, -1310627, 0, 131072, -1310626, 0, 131072, -1310625, 0, 131072, -1310624, 0, 131072, -1310623, 0, 131072, -1310622, 0, 131072, -1310621, 0, 131072, -1310620, 0, 131072, -1310619, 0, 131072, -1310618, 0, 131072, -1310617, 0, 131072, -1310616, 0, 131072, -1310615, 0, 131072, -1310614, 0, 131072, -1310613, 0, 131072, -1310612, 0, 131072, -1310611, 0, 131072, -1310610, 0, 131072, -1310609, 0, 131072, -1310608, 0, 131072, -1310607, 0, 131072, -1310606, 0, 131072, -1310605, 0, 131072, -1310604, 0, 131072, -1310603, 0, 131072, -1310602, 0, 131072, -1310601, 0, 131072, -1310600, 0, 131072, -1310599, 0, 131072, -1310598, 0, 131072, -1310597, 0, 131072, -1310596, 0, 131072, -1310595, 0, 131072, -1310594, 0, 131072, -1310593, 0, 131072, -1310592, 0, 131072, -1310591, 0, 131072, -1310590, 0, 131072, -1310589, 0, 131072, -1310588, 0, 131072, -1310587, 0, 131072, -1310586, 0, 131072, -1310585, 0, 131072, -1310584, 0, 131072, -1310583, 0, 131072, -1310582, 0, 131072, -1310581, 0, 131072, -1310580, 0, 131072, -1310579, 0, 131072, -1310578, 0, 131072, -1310577, 0, 131072, -1310576, 0, 131072, -1310575, 0, 131072, -1310574, 0, 131072, -1310573, 0, 131072, -1310572, 0, 131072, -1310571, 0, 131072, -1310570, 0, 131072, -1310569, 0, 131072, -1310568, 0, 131072, -1310567, 0, 131072, -1310566, 0, 131072, -1310565, 0, 131072, -1310564, 0, 131072, -1310563, 0, 131072, -1310562, 0, 131072, -1310561, 0, 131072, -1310560, 0, 131072, -1310559, 0, 131072, -1310558, 0, 131072, -1310557, 0, 131072, -1310556, 0, 131072, -1310555, 0, 131072, -1310554, 0, 131072, -1310553, 0, 131072, -1310552, 0, 131072, -1310551, 0, 131072, -1310550, 0, 131072, -1310549, 0, 131072, -1310548, 0, 131072, -1310547, 0, 131072, -1310546, 0, 131072, -1310545, 0, 131072, -1310544, 0, 131072, -1310543, 0, 131072, -1310542, 0, 131072, -1310541, 0, 131072, -1310540, 0, 131072, -1310539, 0, 131072, -1310538, 0, 131072, -1310537, 0, 131072, -1179756, 0, 131072, -1179755, 0, 131072, -1179754, 0, 131072, -1179753, 0, 131072, -1179752, 0, 131072, -1179751, 0, 131072, -1179750, 0, 131072, -1179749, 0, 131072, -1179748, 0, 131072, -1179747, 0, 131072, -1179746, 0, 131072, -1179745, 0, 131072, -1179744, 0, 131072, -1179743, 0, 131072, -1179742, 0, 131072, -1179741, 0, 131072, -1179740, 0, 131072, -1179739, 0, 131072, -1179738, 0, 131072, -1179737, 0, 131072, -1179736, 0, 131072, -1179735, 0, 131072, -1179734, 0, 131072, -1179733, 0, 131072, -1179732, 0, 131072, -1179731, 0, 131072, -1179730, 0, 131072, -1179729, 0, 131072, -1179728, 0, 131072, -1179727, 0, 131072, -1179726, 0, 131072, -1179725, 0, 131072, -1179724, 0, 131072, -1179723, 0, 131072, -1179722, 0, 131072, -1179721, 0, 131072, -1179720, 0, 131072, -1179719, 0, 131072, -1179718, 0, 131072, -1179717, 0, 131072, -1179716, 0, 131072, -1179715, 0, 131072, -1179714, 0, 131072, -1179713, 0, 131072, -1179712, 0, 131072, -1179711, 0, 131072, -1179710, 0, 131072, -1179709, 0, 131072, -1179708, 0, 131072, -1179707, 0, 131072, -1179706, 0, 131072, -1179705, 0, 131072, -1179704, 0, 131072, -1179703, 0, 131072, -1179702, 0, 131072, -1179701, 0, 131072, -1179700, 0, 131072, -1179699, 0, 131072, -1179698, 0, 131072, -1179697, 0, 131072, -1179696, 0, 131072, -1179695, 0, 131072, -1179694, 0, 131072, -1179693, 0, 131072, -1179692, 0, 131072, -1179691, 0, 131072, -1179690, 0, 131072, -1179689, 0, 131072, -1179688, 0, 131072, -1179687, 0, 131072, -1179686, 0, 131072, -1179685, 0, 131072, -1179684, 0, 131072, -1179683, 0, 131072, -1179682, 0, 131072, -1179681, 0, 131072, -1179680, 0, 131072, -1179679, 0, 131072, -1179678, 0, 131072, -1179677, 0, 131072, -1179676, 0, 131072, -1179675, 0, 131072, -1179674, 0, 131072, -1179673, 0, 131072, -1179672, 0, 131072, -1179671, 0, 131072, -1179670, 0, 131072, -1179669, 0, 131072, -1179668, 0, 131072, -1179667, 0, 131072, -1179666, 0, 131072, -1179665, 0, 131072, -1179664, 0, 131072, -1179663, 0, 131072, -1179662, 0, 131072, -1179661, 0, 131072, -1179660, 0, 131072, -1179659, 0, 131072, -1179658, 0, 131072, -1179657, 0, 131072, -1179656, 0, 131072, -1179655, 0, 131072, -1179654, 0, 131072, -1179653, 0, 131072, -1179652, 0, 131072, -1179651, 0, 131072, -1179650, 0, 131072, -1179649, 0, 131072, -1245184, 0, 131072, -1245183, 0, 131072, -1245182, 0, 131072, -1245181, 0, 131072, -1245180, 0, 131072, -1245179, 0, 131072, -1245178, 0, 131072, -1245177, 0, 131072, -1245176, 0, 131072, -1245175, 0, 131072, -1245174, 0, 131072, -1245173, 0, 131072, -1245172, 0, 131072, -1245171, 0, 131072, -1245170, 0, 131072, -1245169, 0, 131072, -1245168, 0, 131072, -1245167, 0, 131072, -1245166, 0, 131072, -1245165, 0, 131072, -1245164, 0, 131072, -1245163, 0, 131072, -1245162, 0, 131072, -1245161, 0, 131072, -1245160, 0, 131072, -1245159, 0, 131072, -1245158, 0, 131072, -1245157, 0, 131072, -1245156, 0, 131072, -1245155, 0, 131072, -1245154, 0, 131072, -1245153, 0, 131072, -1245152, 0, 131072, -1245151, 0, 131072, -1245150, 0, 131072, -1245149, 0, 131072, -1245148, 0, 131072, -1245147, 0, 131072, -1245146, 0, 131072, -1245145, 0, 131072, -1245144, 0, 131072, -1245143, 0, 131072, -1245142, 0, 131072, -1245141, 0, 131072, -1245140, 0, 131072, -1245139, 0, 131072, -1245138, 0, 131072, -1245137, 0, 131072, -1245136, 0, 131072, -1245135, 0, 131072, -1245134, 0, 131072, -1245133, 0, 131072, -1245132, 0, 131072, -1245131, 0, 131072, -1245130, 0, 131072, -1245129, 0, 131072, -1245128, 0, 131072, -1245127, 0, 131072, -1245126, 0, 131072, -1245125, 0, 131072, -1245124, 0, 131072, -1245123, 0, 131072, -1245122, 0, 131072, -1245121, 0, 131072, -1245120, 0, 131072, -1245119, 0, 131072, -1245118, 0, 131072, -1245117, 0, 131072, -1245116, 0, 131072, -1245115, 0, 131072, -1245114, 0, 131072, -1245113, 0, 131072, -1245112, 0, 131072, -1245111, 0, 131072, -1245110, 0, 131072, -1245109, 0, 131072, -1245108, 0, 131072, -1245107, 0, 131072, -1245106, 0, 131072, -1245105, 0, 131072, -1245104, 0, 131072, -1245103, 0, 131072, -1245102, 0, 131072, -1245101, 0, 131072, -1245100, 0, 131072, -1245099, 0, 131072, -1245098, 0, 131072, -1245097, 0, 131072, -1245096, 0, 131072, -1245095, 0, 131072, -1245094, 0, 131072, -1245093, 0, 131072, -1245092, 0, 131072, -1245091, 0, 131072, -1245090, 0, 131072, -1245089, 0, 131072, -1245088, 0, 131072, -1245087, 0, 131072, -1245086, 0, 131072, -1245085, 0, 131072, -1245084, 0, 131072, -1245083, 0, 131072, -1245082, 0, 131072, -1245081, 0, 131072, -1245080, 0, 131072, -1245079, 0, 131072, -1245078, 0, 131072, -1245077, 0, 131072, -1245076, 0, 131072, -1245075, 0, 131072, -1245074, 0, 131072, -1245073, 0, 131072, -1245072, 0, 131072, -1245071, 0, 131072, -1245070, 0, 131072, -1245069, 0, 131072, -1245068, 0, 131072, -1245067, 0, 131072, -1245066, 0, 131072, -1245065, 0, 131072, -1245064, 0, 131072, -1245063, 0, 131072, -1245062, 0, 131072, -1245061, 0, 131072, -1245060, 0, 131072, -1245059, 0, 131072, -1245058, 0, 131072, -1245057, 0, 131072, -1245056, 0, 131072, -1245055, 0, 131072, -1245054, 0, 131072, -1245053, 0, 131072, -1245052, 0, 131072, -1245051, 0, 131072, -1245050, 0, 131072, -1245049, 0, 131072, -1245048, 0, 131072, -1245047, 0, 131072, -1245046, 0, 131072, -1245045, 0, 131072, -1245044, 0, 131072, -1245043, 0, 131072, -1245042, 0, 131072, -1245041, 0, 131072, -1245040, 0, 131072, -1245039, 0, 131072, -1245038, 0, 131072, -1245037, 0, 131072, -1245036, 0, 131072, -1245035, 0, 131072, -1245034, 0, 131072, -1245033, 0, 131072, -1245032, 0, 131072, -1245031, 0, 131072, -1245030, 0, 131072, -1245029, 0, 131072, -1245028, 0, 131072, -1245027, 0, 131072, -1245026, 0, 131072, -1245025, 0, 131072, -1245024, 0, 131072, -1245023, 0, 131072, -1245022, 0, 131072, -1245021, 0, 131072, -1245020, 0, 131072, -1245019, 0, 131072, -1245018, 0, 131072, -1245017, 0, 131072, -1245016, 0, 131072, -1245015, 0, 131072, -1245014, 0, 131072, -1245013, 0, 131072, -1245012, 0, 131072, -1245011, 0, 131072, -1245010, 0, 131072, -1245009, 0, 131072, -1245008, 0, 131072, -1245007, 0, 131072, -1245006, 0, 131072, -1245005, 0, 131072, -1245004, 0, 131072, -1245003, 0, 131072, -1245002, 0, 131072, -1245001, 0, 131072, -1245000, 0, 131072, -1114219, 0, 131072, -1114218, 0, 131072, -1114217, 0, 131072, -1114216, 0, 131072, -1114215, 0, 131072, -1114214, 0, 131072, -1114213, 0, 131072, -1114212, 0, 131072, -1114211, 0, 131072, -1114210, 0, 131072, -1114209, 0, 131072, -1114208, 0, 131072, -1114207, 0, 131072, -1114206, 0, 131072, -1114205, 0, 131072, -1114204, 0, 131072, -1114203, 0, 131072, -1114202, 0, 131072, -1114201, 0, 131072, -1114200, 0, 131072, -1114199, 0, 131072, -1114198, 0, 131072, -1114197, 0, 131072, -1114196, 0, 131072, -1114195, 0, 131072, -1114194, 0, 131072, -1114193, 0, 131072, -1114192, 0, 131072, -1114191, 0, 131072, -1114190, 0, 131072, -1114189, 0, 131072, -1114188, 0, 131072, -1114187, 0, 131072, -1114186, 0, 131072, -1114185, 0, 131072, -1114184, 0, 131072, -1114183, 0, 131072, -1114182, 0, 131072, -1114181, 0, 131072, -1114180, 0, 131072, -1114179, 0, 131072, -1114178, 0, 131072, -1114177, 0, 131072, -1114176, 0, 131072, -1114175, 0, 131072, -1114174, 0, 131072, -1114173, 0, 131072, -1114172, 0, 131072, -1114171, 0, 131072, -1114170, 0, 131072, -1114169, 0, 131072, -1114168, 0, 131072, -1114167, 0, 131072, -1114166, 0, 131072, -1114165, 0, 131072, -1114164, 0, 131072, -1114163, 0, 131072, -1114162, 0, 131072, -1114161, 0, 131072, -1114160, 0, 131072, -1114159, 0, 131072, -1114158, 0, 131072, -1114157, 0, 131072, -1114156, 0, 131072, -1114155, 0, 131072, -1114154, 0, 131072, -1114153, 0, 131072, -1114152, 0, 131072, -1114151, 0, 131072, -1114150, 0, 131072, -1114149, 0, 131072, -1114148, 0, 131072, -1114147, 0, 131072, -1114146, 0, 131072, -1114145, 0, 131072, -1114144, 0, 131072, -1114143, 0, 131072, -1114142, 0, 131072, -1114141, 0, 131072, -1114140, 0, 131072, -1114139, 0, 131072, -1114138, 0, 131072, -1114137, 0, 131072, -1114136, 0, 131072, -1114135, 0, 131072, -1114134, 0, 131072, -1114133, 0, 131072, -1114132, 0, 131072, -1114131, 0, 131072, -1114130, 0, 131072, -1114129, 0, 131072, -1114128, 0, 131072, -1114127, 0, 131072, -1114126, 0, 131072, -1114125, 0, 131072, -1114124, 0, 131072, -1114123, 0, 131072, -1114122, 0, 131072, -1114121, 0, 131072, -1114120, 0, 131072, -1114119, 0, 131072, -1114118, 0, 131072, -1114117, 0, 131072, -1114116, 0, 131072, -1114115, 0, 131072, -1114114, 0, 131072, -1114113, 0, 131072, -1179648, 0, 131072, -1179647, 0, 131072, -1179646, 0, 131072, -1179645, 0, 131072, -1179644, 0, 131072, -1179643, 0, 131072, -1179642, 0, 131072, -1179641, 0, 131072, -1179640, 0, 131072, -1179639, 0, 131072, -1179638, 0, 131072, -1179637, 0, 131072, -1179636, 0, 131072, -1179635, 0, 131072, -1179634, 0, 131072, -1179633, 0, 131072, -1179632, 0, 131072, -1179631, 0, 131072, -1179630, 0, 131072, -1179629, 0, 131072, -1179628, 0, 131072, -1179627, 0, 131072, -1179626, 0, 131072, -1179625, 0, 131072, -1179624, 0, 131072, -1179623, 0, 131072, -1179622, 0, 131072, -1179621, 0, 131072, -1179620, 0, 131072, -1179619, 0, 131072, -1179618, 0, 131072, -1179617, 0, 131072, -1179616, 0, 131072, -1179615, 0, 131072, -1179614, 0, 131072, -1179613, 0, 131072, -1179612, 0, 131072, -1179611, 0, 131072, -1179610, 0, 131072, -1179609, 0, 131072, -1179608, 0, 131072, -1179607, 0, 131072, -1179606, 0, 131072, -1179605, 0, 131072, -1179604, 0, 131072, -1179603, 0, 131072, -1179602, 0, 131072, -1179601, 0, 131072, -1179600, 0, 131072, -1179599, 0, 131072, -1179598, 0, 131072, -1179597, 0, 131072, -1179596, 0, 131072, -1179595, 0, 131072, -1179594, 0, 131072, -1179593, 0, 131072, -1179592, 0, 131072, -1179591, 0, 131072, -1179590, 0, 131072, -1179589, 0, 131072, -1179588, 0, 131072, -1179587, 0, 131072, -1179586, 0, 131072, -1179585, 0, 131072, -1179584, 0, 131072, -1179583, 0, 131072, -1179582, 0, 131072, -1179581, 0, 131072, -1179580, 0, 131072, -1179579, 0, 131072, -1179578, 0, 131072, -1179577, 0, 131072, -1179576, 0, 131072, -1179575, 0, 131072, -1179574, 0, 131072, -1179573, 0, 131072, -1179572, 0, 131072, -1179571, 0, 131072, -1179570, 0, 131072, -1179569, 0, 131072, -1179568, 0, 131072, -1179567, 0, 131072, -1179566, 0, 131072, -1179565, 0, 131072, -1179564, 0, 131072, -1179563, 0, 131072, -1179562, 0, 131072, -1179561, 0, 131072, -1179560, 0, 131072, -1179559, 0, 131072, -1179558, 0, 131072, -1179557, 0, 131072, -1179556, 0, 131072, -1179555, 0, 131072, -1179554, 0, 131072, -1179553, 0, 131072, -1179552, 0, 131072, -1179551, 0, 131072, -1179550, 0, 131072, -1179549, 0, 131072, -1179548, 0, 131072, -1179547, 0, 131072, -1179546, 0, 131072, -1179545, 0, 131072, -1179544, 0, 131072, -1179543, 0, 131072, -1179542, 0, 131072, -1179541, 0, 131072, -1179540, 0, 131072, -1179539, 0, 131072, -1179538, 0, 131072, -1179537, 0, 131072, -1179536, 0, 131072, -1179535, 0, 131072, -1179534, 0, 131072, -1179533, 0, 131072, -1179532, 0, 131072, -1179531, 0, 131072, -1179530, 0, 131072, -1179529, 0, 131072, -1179528, 0, 131072, -1179527, 0, 131072, -1179526, 0, 131072, -1179525, 0, 131072, -1179524, 0, 131072, -1179523, 0, 131072, -1179522, 0, 131072, -1179521, 0, 131072, -1179520, 0, 131072, -1179519, 0, 131072, -1179518, 0, 131072, -1179517, 0, 131072, -1179516, 0, 131072, -1179515, 0, 131072, -1179514, 0, 131072, -1179513, 0, 131072, -1179512, 0, 131072, -1179511, 0, 131072, -1179510, 0, 131072, -1179509, 0, 131072, -1179508, 0, 131072, -1179507, 0, 131072, -1179506, 0, 131072, -1179505, 0, 131072, -1179504, 0, 131072, -1179503, 0, 131072, -1179502, 0, 131072, -1179501, 0, 131072, -1179500, 0, 131072, -1179499, 0, 131072, -1179498, 0, 131072, -1179497, 0, 131072, -1179496, 0, 131072, -1179495, 0, 131072, -1179494, 0, 131072, -1179493, 0, 131072, -1179492, 0, 131072, -1179491, 0, 131072, -1179490, 0, 131072, -1179489, 0, 131072, -1179488, 0, 131072, -1179487, 0, 131072, -1179486, 0, 131072, -1179485, 0, 131072, -1179484, 0, 131072, -1179483, 0, 131072, -1179482, 0, 131072, -1179481, 0, 131072, -1179480, 0, 131072, -1179479, 0, 131072, -1179478, 0, 131072, -1179477, 0, 131072, -1179476, 0, 131072, -1179475, 0, 131072, -1179474, 0, 131072, -1179473, 0, 131072, -1179472, 0, 131072, -1179471, 0, 131072, -1179470, 0, 131072, -1179469, 0, 131072, -1179468, 0, 131072, -1179467, 0, 131072, -1179466, 0, 131072, -1179465, 0, 131072, -1179464, 0, 131072, -1179463, 0, 131072, -1048683, 0, 131072, -1048682, 0, 131072, -1048681, 0, 131072, -1048680, 0, 131072, -1048679, 0, 131072, -1048678, 0, 131072, -1048677, 0, 131072, -1048676, 0, 131072, -1048675, 0, 131072, -1048674, 0, 131072, -1048673, 0, 131072, -1048672, 0, 131072, -1048671, 0, 131072, -1048670, 0, 131072, -1048669, 0, 131072, -1048668, 0, 131072, -1048667, 0, 131072, -1048666, 0, 131072, -1048665, 0, 131072, -1048664, 0, 131072, -1048663, 0, 131072, -1048662, 0, 131072, -1048661, 0, 131072, -1048660, 0, 131072, -1048659, 0, 131072, -1048658, 0, 131072, -1048657, 0, 131072, -1048656, 0, 131072, -1048655, 0, 131072, -1048654, 0, 131072, -1048653, 0, 131072, -1048652, 0, 131072, -1048651, 0, 131072, -1048650, 0, 131072, -1048649, 0, 131072, -1048648, 0, 131072, -1048647, 0, 131072, -1048646, 0, 131072, -1048645, 0, 131072, -1048644, 0, 131072, -1048643, 0, 131072, -1048642, 0, 131072, -1048641, 0, 131072, -1048640, 0, 131072, -1048639, 0, 131072, -1048638, 0, 131072, -1048637, 0, 131072, -1048636, 0, 131072, -1048635, 0, 131072, -1048634, 0, 131072, -1048633, 0, 131072, -1048632, 0, 131072, -1048631, 0, 131072, -1048630, 0, 131072, -1048629, 0, 131072, -1048628, 0, 131072, -1048627, 0, 131072, -1048626, 0, 131072, -1048625, 0, 131072, -1048624, 0, 131072, -1048623, 0, 131072, -1048622, 0, 131072, -1048621, 0, 131072, -1048620, 0, 131072, -1048619, 0, 131072, -1048618, 0, 131072, -1048617, 0, 131072, -1048616, 0, 131072, -1048615, 0, 131072, -1048614, 0, 131072, -1048613, 0, 131072, -1048612, 0, 131072, -1048611, 0, 131072, -1048610, 0, 131072, -1048609, 0, 131072, -1048608, 0, 131072, -1048607, 0, 131072, -1048606, 0, 131072, -1048605, 0, 131072, -1048604, 0, 131072, -1048603, 0, 131072, -1048602, 0, 131072, -1048601, 0, 131072, -1048600, 0, 131072, -1048599, 0, 131072, -1048598, 0, 131072, -1048597, 0, 131072, -1048596, 0, 131072, -1048595, 0, 131072, -1048594, 0, 131072, -1048593, 0, 131072, -1048592, 0, 131072, -1048591, 0, 131072, -1048590, 0, 131072, -1048589, 0, 131072, -1048588, 0, 131072, -1048587, 0, 131072, -1048586, 0, 131072, -1048585, 0, 131072, -1048584, 0, 131072, -1048583, 0, 131072, -1048582, 0, 131072, -1048581, 0, 131072, -1048580, 0, 131072, -1048579, 0, 131072, -1048578, 0, 131072, -1048577, 0, 131072, -1114112, 0, 131072, -1114111, 0, 131072, -1114110, 0, 131072, -1114109, 0, 131072, -1114108, 0, 131072, -1114107, 0, 131072, -1114106, 0, 131072, -1114105, 0, 131072, -1114104, 0, 131072, -1114103, 0, 131072, -1114102, 0, 131072, -1114101, 0, 131072, -1114100, 0, 131072, -1114099, 0, 131072, -1114098, 0, 131072, -1114097, 0, 131072, -1114096, 0, 131072, -1114095, 0, 131072, -1114094, 0, 131072, -1114093, 0, 131072, -1114092, 0, 131072, -1114091, 0, 131072, -1114090, 0, 131072, -1114089, 0, 131072, -1114088, 0, 131072, -1114087, 0, 131072, -1114086, 0, 131072, -1114085, 0, 131072, -1114084, 0, 131072, -1114083, 0, 131072, -1114082, 0, 131072, -1114081, 0, 131072, -1114080, 0, 131072, -1114079, 0, 131072, -1114078, 0, 131072, -1114077, 0, 131072, -1114076, 0, 131072, -1114075, 0, 131072, -1114074, 0, 131072, -1114073, 0, 131072, -1114072, 0, 131072, -1114071, 0, 131072, -1114070, 0, 131072, -1114069, 0, 131072, -1114068, 0, 131072, -1114067, 0, 131072, -1114066, 0, 131072, -1114065, 0, 131072, -1114064, 0, 131072, -1114063, 0, 131072, -1114062, 0, 131072, -1114061, 0, 131072, -1114060, 0, 131072, -1114059, 0, 131072, -1114058, 0, 131072, -1114057, 0, 131072, -1114056, 0, 131072, -1114055, 0, 131072, -1114054, 0, 131072, -1114053, 0, 131072, -1114052, 0, 131072, -1114051, 0, 131072, -1114050, 0, 131072, -1114049, 0, 131072, -1114048, 0, 131072, -1114047, 0, 131072, -1114046, 0, 131072, -1114045, 0, 131072, -1114044, 0, 131072, -1114043, 0, 131072, -1114042, 0, 131072, -1114041, 0, 131072, -1114040, 0, 131072, -1114039, 0, 131072, -1114038, 0, 131072, -1114037, 0, 131072, -1114036, 0, 131072, -1114035, 0, 131072, -1114034, 0, 131072, -1114033, 0, 131072, -1114032, 0, 131072, -1114031, 0, 131072, -1114030, 0, 131072, -1114029, 0, 131072, -1114028, 0, 131072, -1114027, 0, 131072, -1114026, 0, 131072, -1114025, 0, 131072, -1114024, 0, 131072, -1114023, 0, 131072, -1114022, 0, 131072, -1114021, 0, 131072, -1114020, 0, 131072, -1114019, 0, 131072, -1114018, 0, 131072, -1114017, 0, 131072, -1114016, 0, 131072, -1114015, 0, 131072, -1114014, 0, 131072, -1114013, 0, 131072, -1114012, 0, 131072, -1114011, 0, 131072, -1114010, 0, 131072, -1114009, 0, 131072, -1114008, 0, 131072, -1114007, 0, 131072, -1114006, 0, 131072, -1114005, 0, 131072, -1114004, 0, 131072, -1114003, 0, 131072, -1114002, 0, 131072, -1114001, 0, 131072, -1114000, 0, 131072, -1113999, 0, 131072, -1113998, 0, 131072, -1113997, 0, 131072, -1113996, 0, 131072, -1113995, 0, 131072, -1113994, 0, 131072, -1113993, 0, 131072, -1113992, 0, 131072, -1113991, 0, 131072, -1113990, 0, 131072, -1113989, 0, 131072, -1113988, 0, 131072, -1113987, 0, 131072, -1113986, 0, 131072, -1113985, 0, 131072, -1113984, 0, 131072, -1113983, 0, 131072, -1113982, 0, 131072, -1113981, 0, 131072, -1113980, 0, 131072, -1113979, 0, 131072, -1113978, 0, 131072, -1113977, 0, 131072, -1113976, 0, 131072, -1113975, 0, 131072, -1113974, 0, 131072, -1113973, 0, 131072, -1113972, 0, 131072, -1113971, 0, 131072, -1113970, 0, 131072, -1113969, 0, 131072, -1113968, 0, 131072, -1113967, 0, 131072, -1113966, 0, 131072, -1113965, 0, 131072, -1113964, 0, 131072, -1113963, 0, 131072, -1113962, 0, 131072, -1113961, 0, 131072, -1113960, 0, 131072, -1113959, 0, 131072, -1113958, 0, 131072, -1113957, 0, 131072, -1113956, 0, 131072, -1113955, 0, 131072, -1113954, 0, 131072, -1113953, 0, 131072, -1113952, 0, 131072, -1113951, 0, 131072, -1113950, 0, 131072, -1113949, 0, 131072, -1113948, 0, 131072, -1113947, 0, 131072, -1113946, 0, 131072, -1113945, 0, 131072, -1113944, 0, 131072, -1113943, 0, 131072, -1113942, 0, 131072, -1113941, 0, 131072, -1113940, 0, 131072, -1113939, 0, 131072, -1113938, 0, 131072, -1113937, 0, 131072, -1113936, 0, 131072, -1113935, 0, 131072, -1113934, 0, 131072, -1113933, 0, 131072, -1113932, 0, 131072, -1113931, 0, 131072, -1113930, 0, 131072, -1113929, 0, 131072, -1113928, 0, 131072, -1113927, 0, 131072, -983147, 0, 131072, -983146, 0, 131072, -983145, 0, 131072, -983144, 0, 131072, -983143, 0, 131072, -983142, 0, 131072, -983141, 0, 131072, -983140, 0, 131072, -983139, 0, 131072, -983138, 0, 131072, -983137, 0, 131072, -983136, 0, 131072, -983135, 0, 131072, -983134, 0, 131072, -983133, 0, 131072, -983132, 0, 131072, -983131, 0, 131072, -983130, 0, 131072, -983129, 0, 131072, -983128, 0, 131072, -983127, 0, 131072, -983126, 0, 131072, -983125, 0, 131072, -983124, 0, 131072, -983123, 0, 131072, -983122, 0, 131072, -983121, 0, 131072, -983120, 0, 131072, -983119, 0, 131072, -983118, 0, 131072, -983117, 0, 131072, -983116, 0, 131072, -983115, 0, 131072, -983114, 0, 131072, -983113, 0, 131072, -983112, 0, 131072, -983111, 0, 131072, -983110, 0, 131072, -983109, 0, 131072, -983108, 0, 131072, -983107, 0, 131072, -983106, 0, 131072, -983105, 0, 131072, -983104, 0, 131072, -983103, 0, 131072, -983102, 0, 131072, -983101, 0, 131072, -983100, 0, 131072, -983099, 0, 131072, -983098, 0, 131072, -983097, 0, 131072, -983096, 0, 131072, -983095, 0, 131072, -983094, 0, 131072, -983093, 0, 131072, -983092, 0, 131072, -983091, 0, 131072, -983090, 0, 131072, -983089, 0, 131072, -983088, 0, 131072, -983087, 0, 131072, -983086, 0, 131072, -983085, 0, 131072, -983084, 0, 131072, -983083, 0, 131072, -983082, 0, 131072, -983081, 0, 131072, -983080, 0, 131072, -983079, 0, 131072, -983078, 0, 131072, -983077, 0, 131072, -983076, 0, 131072, -983075, 0, 131072, -983074, 0, 131072, -983073, 0, 131072, -983072, 0, 131072, -983071, 0, 131072, -983070, 0, 131072, -983069, 0, 131072, -983068, 0, 131072, -983067, 0, 131072, -983066, 0, 131072, -983065, 0, 131072, -983064, 0, 131072, -983063, 0, 131072, -983062, 0, 131072, -983061, 0, 131072, -983060, 0, 131072, -983059, 0, 131072, -983058, 0, 131072, -983057, 0, 131072, -983056, 0, 131072, -983055, 0, 131072, -983054, 0, 131072, -983053, 0, 131072, -983052, 0, 131072, -983051, 0, 131072, -983050, 0, 131072, -983049, 0, 131072, -983048, 0, 131072, -983047, 0, 131072, -983046, 0, 131072, -983045, 0, 131072, -983044, 0, 131072, -983043, 0, 131072, -983042, 0, 131072, -983041, 0, 131072, -1048576, 0, 131072, -1048575, 0, 131072, -1048574, 0, 131072, -1048573, 0, 131072, -1048572, 0, 131072, -1048571, 0, 131072, -1048570, 0, 131072, -1048569, 0, 131072, -1048568, 0, 131072, -1048567, 0, 131072, -1048566, 0, 131072, -1048565, 0, 131072, -1048564, 0, 131072, -1048563, 0, 131072, -1048562, 0, 131072, -1048561, 0, 131072, -1048560, 0, 131072, -1048559, 0, 131072, -1048558, 0, 131072, -1048557, 0, 131072, -1048556, 0, 131072, -1048555, 0, 131072, -1048554, 0, 131072, -1048553, 0, 131072, -1048552, 0, 131072, -1048551, 0, 131072, -1048550, 0, 131072, -1048549, 0, 131072, -1048548, 0, 131072, -1048547, 0, 131072, -1048546, 0, 131072, -1048545, 0, 131072, -1048544, 0, 131072, -1048543, 0, 131072, -1048542, 0, 131072, -1048541, 0, 131072, -1048540, 0, 131072, -1048539, 0, 131072, -1048538, 0, 131072, -1048537, 0, 131072, -1048536, 0, 131072, -1048535, 0, 131072, -1048534, 0, 131072, -1048533, 0, 131072, -1048532, 0, 131072, -1048531, 0, 131072, -1048530, 0, 131072, -1048529, 0, 131072, -1048528, 0, 131072, -1048527, 0, 131072, -1048526, 0, 131072, -1048525, 0, 131072, -1048524, 0, 131072, -1048523, 0, 131072, -1048522, 0, 131072, -1048521, 0, 131072, -1048520, 0, 131072, -1048519, 0, 131072, -1048518, 0, 131072, -1048517, 0, 131072, -1048516, 0, 131072, -1048515, 0, 131072, -1048514, 0, 131072, -1048513, 0, 131072, -1048512, 0, 131072, -1048511, 0, 131072, -1048510, 0, 131072, -1048509, 0, 131072, -1048508, 0, 131072, -1048507, 0, 131072, -1048506, 0, 131072, -1048505, 0, 131072, -1048504, 0, 131072, -1048503, 0, 131072, -1048502, 0, 131072, -1048501, 0, 131072, -1048500, 0, 131072, -1048499, 0, 131072, -1048498, 0, 131072, -1048497, 0, 131072, -1048496, 0, 131072, -1048495, 0, 131072, -1048494, 0, 131072, -1048493, 0, 131072, -1048492, 0, 131072, -1048491, 0, 131072, -1048490, 0, 131072, -1048489, 0, 131072, -1048488, 0, 131072, -1048487, 0, 131072, -1048486, 0, 131072, -1048485, 0, 131072, -1048484, 0, 131072, -1048483, 0, 131072, -1048482, 0, 131072, -1048481, 0, 131072, -1048480, 0, 131072, -1048479, 0, 131072, -1048478, 0, 131072, -1048477, 0, 131072, -1048476, 0, 131072, -1048475, 0, 131072, -1048474, 0, 131072, -1048473, 0, 131072, -1048472, 0, 131072, -1048471, 0, 131072, -1048470, 0, 131072, -1048469, 0, 131072, -1048468, 0, 131072, -1048467, 0, 131072, -1048466, 0, 131072, -1048465, 0, 131072, -1048464, 0, 131072, -1048463, 0, 131072, -1048462, 0, 131072, -1048461, 0, 131072, -1048460, 0, 131072, -1048459, 0, 131072, -1048458, 0, 131072, -1048457, 0, 131072, -1048456, 0, 131072, -1048455, 0, 131072, -1048454, 0, 131072, -1048453, 0, 131072, -1048452, 0, 131072, -1048451, 0, 131072, -1048450, 0, 131072, -1048449, 0, 131072, -1048448, 0, 131072, -1048447, 0, 131072, -1048446, 0, 131072, -1048445, 0, 131072, -1048444, 0, 131072, -1048443, 0, 131072, -1048442, 0, 131072, -1048441, 0, 131072, -1048440, 0, 131072, -1048439, 0, 131072, -1048438, 0, 131072, -1048437, 0, 131072, -1048436, 0, 131072, -1048435, 0, 131072, -1048434, 0, 131072, -1048433, 0, 131072, -1048432, 0, 131072, -1048431, 0, 131072, -1048430, 0, 131072, -1048429, 0, 131072, -1048428, 0, 131072, -1048427, 0, 131072, -1048426, 0, 131072, -1048425, 0, 131072, -1048424, 0, 131072, -1048423, 0, 131072, -1048422, 0, 131072, -1048421, 0, 131072, -1048420, 0, 131072, -1048419, 0, 131072, -1048418, 0, 131072, -1048417, 0, 131072, -1048416, 0, 131072, -1048415, 0, 131072, -1048414, 0, 131072, -1048413, 0, 131072, -1048412, 0, 131072, -1048411, 0, 131072, -1048410, 0, 131072, -1048409, 0, 131072, -1048408, 0, 131072, -1048407, 0, 131072, -1048406, 0, 131072, -1048405, 0, 131072, -1048404, 0, 131072, -1048403, 0, 131072, -1048402, 0, 131072, -1048401, 0, 131072, -1048400, 0, 131072, -1048399, 0, 131072, -1048398, 0, 131072, -1048397, 0, 131072, -1048396, 0, 131072, -1048395, 0, 131072, -1048394, 0, 131072, -1048393, 0, 131072, -1048392, 0, 131072, -1048391, 0, 131072, -1048390, 0, 131072, -917611, 0, 131072, -917610, 0, 131072, -917609, 0, 131072, -917608, 0, 131072, -917607, 0, 131072, -917606, 0, 131072, -917605, 0, 131072, -917604, 0, 131072, -917603, 0, 131072, -917602, 0, 131072, -917601, 0, 131072, -917600, 0, 131072, -917599, 0, 131072, -917598, 0, 131072, -917597, 0, 131072, -917596, 0, 131072, -917595, 0, 131072, -917594, 0, 131072, -917593, 0, 131072, -917592, 0, 131072, -917591, 0, 131072, -917590, 0, 131072, -917589, 0, 131072, -917588, 0, 131072, -917587, 0, 131072, -917586, 0, 131072, -917585, 0, 131072, -917584, 0, 131072, -917583, 0, 131072, -917582, 0, 131072, -917581, 0, 131072, -917580, 0, 131072, -917579, 0, 131072, -917578, 0, 131072, -917577, 0, 131072, -917576, 0, 131072, -917575, 0, 131072, -917574, 0, 131072, -917573, 0, 131072, -917572, 0, 131072, -917571, 0, 131072, -917570, 0, 131072, -917569, 0, 131072, -917568, 0, 131072, -917567, 0, 131072, -917566, 0, 131072, -917565, 0, 131072, -917564, 0, 131072, -917563, 0, 131072, -917562, 0, 131072, -917561, 0, 131072, -917560, 0, 131072, -917559, 0, 131072, -917558, 0, 131072, -917557, 0, 131072, -917556, 0, 131072, -917555, 0, 131072, -917554, 0, 131072, -917553, 0, 131072, -917552, 0, 131072, -917551, 0, 131072, -917550, 0, 131072, -917549, 0, 131072, -917548, 0, 131072, -917547, 0, 131072, -917546, 0, 131072, -917545, 0, 131072, -917544, 0, 131072, -917543, 0, 131072, -917542, 0, 131072, -917541, 0, 131072, -917540, 0, 131072, -917539, 0, 131072, -917538, 0, 131072, -917537, 0, 131072, -917536, 0, 131072, -917535, 0, 131072, -917534, 0, 131072, -917533, 0, 131072, -917532, 0, 131072, -917531, 0, 131072, -917530, 0, 131072, -917529, 0, 131072, -917528, 0, 131072, -917527, 0, 131072, -917526, 0, 131072, -917525, 0, 131072, -917524, 0, 131072, -917523, 0, 131072, -917522, 0, 131072, -917521, 0, 131072, -917520, 0, 131072, -917519, 0, 131072, -917518, 0, 131072, -917517, 0, 131072, -917516, 0, 131072, -917515, 0, 131072, -917514, 0, 131072, -917513, 0, 131072, -917512, 0, 131072, -917511, 0, 131072, -917510, 0, 131072, -917509, 0, 131072, -917508, 0, 131072, -917507, 0, 131072, -917506, 0, 131072, -917505, 0, 131072, -983040, 0, 131072, -983039, 0, 131072, -983038, 0, 131072, -983037, 0, 131072, -983036, 0, 131072, -983035, 0, 131072, -983034, 0, 131072, -983033, 0, 131072, -983032, 0, 131072, -983031, 0, 131072, -983030, 0, 131072, -983029, 0, 131072, -983028, 0, 131072, -983027, 0, 131072, -983026, 0, 131072, -983025, 0, 131072, -983024, 0, 131072, -983023, 0, 131072, -983022, 0, 131072, -983021, 0, 131072, -983020, 0, 131072, -983019, 0, 131072, -983018, 0, 131072, -983017, 0, 131072, -983016, 0, 131072, -983015, 0, 131072, -983014, 0, 131072, -983013, 0, 131072, -983012, 0, 131072, -983011, 0, 131072, -983010, 0, 131072, -983009, 0, 131072, -983008, 0, 131072, -983007, 0, 131072, -983006, 0, 131072, -983005, 0, 131072, -983004, 0, 131072, -983003, 0, 131072, -983002, 0, 131072, -983001, 0, 131072, -983000, 0, 131072, -982999, 0, 131072, -982998, 0, 131072, -982997, 0, 131072, -982996, 0, 131072, -982995, 0, 131072, -982994, 0, 131072, -982993, 0, 131072, -982992, 0, 131072, -982991, 0, 131072, -982990, 0, 131072, -982989, 0, 131072, -982988, 0, 131072, -982987, 0, 131072, -982986, 0, 131072, -982985, 0, 131072, -982984, 0, 131072, -982983, 0, 131072, -982982, 0, 131072, -982981, 0, 131072, -982980, 0, 131072, -982979, 0, 131072, -982978, 0, 131072, -982977, 0, 131072, -982976, 0, 131072, -982975, 0, 131072, -982974, 0, 131072, -982973, 0, 131072, -982972, 0, 131072, -982971, 0, 131072, -982970, 0, 131072, -982969, 0, 131072, -982968, 0, 131072, -982967, 0, 131072, -982966, 0, 131072, -982965, 0, 131072, -982964, 0, 131072, -982963, 0, 131072, -982962, 0, 131072, -982961, 0, 131072, -982960, 0, 131072, -982959, 0, 131072, -982958, 0, 131072, -982957, 0, 131072, -982956, 0, 131072, -982955, 0, 131072, -982954, 0, 131072, -982953, 0, 131072, -982952, 0, 131072, -982951, 0, 131072, -982950, 0, 131072, -982949, 0, 131072, -982948, 0, 131072, -982947, 0, 131072, -982946, 0, 131072, -982945, 0, 131072, -982944, 0, 131072, -982943, 0, 131072, -982942, 0, 131072, -982941, 0, 131072, -982940, 0, 131072, -982939, 0, 131072, -982938, 0, 131072, -982937, 0, 131072, -982936, 0, 131072, -982935, 0, 131072, -982934, 0, 131072, -982933, 0, 131072, -982932, 0, 131072, -982931, 0, 131072, -982930, 0, 131072, -982929, 0, 131072, -982928, 0, 131072, -982927, 0, 131072, -982926, 0, 131072, -982925, 0, 131072, -982924, 0, 131072, -982923, 0, 131072, -982922, 0, 131072, -982921, 0, 131072, -982920, 0, 131072, -982919, 0, 131072, -982918, 0, 131072, -982917, 0, 131072, -982916, 0, 131072, -982915, 0, 131072, -982914, 0, 131072, -982913, 0, 131072, -982912, 0, 131072, -982911, 0, 131072, -982910, 0, 131072, -982909, 0, 131072, -982908, 0, 131072, -982907, 0, 131072, -982906, 0, 131072, -982905, 0, 131072, -982904, 0, 131072, -982903, 0, 131072, -982902, 0, 131072, -982901, 0, 131072, -982900, 0, 131072, -982899, 0, 131072, -982898, 0, 131072, -982897, 0, 131072, -982896, 0, 131072, -982895, 0, 131072, -982894, 0, 131072, -982893, 0, 131072, -982892, 0, 131072, -982891, 0, 131072, -982890, 0, 131072, -982889, 0, 131072, -982888, 0, 131072, -982887, 0, 131072, -982886, 0, 131072, -982885, 0, 131072, -982884, 0, 131072, -982883, 0, 131072, -982882, 0, 131072, -982881, 0, 131072, -982880, 0, 131072, -982879, 0, 131072, -982878, 0, 131072, -982877, 0, 131072, -982876, 0, 131072, -982875, 0, 131072, -982874, 0, 131072, -982873, 0, 131072, -982872, 0, 131072, -982871, 0, 131072, -982870, 0, 131072, -982869, 0, 131072, -982868, 0, 131072, -982867, 0, 131072, -982866, 0, 131072, -982865, 0, 131072, -982864, 0, 131072, -982863, 0, 131072, -982862, 0, 131072, -982861, 0, 131072, -982860, 0, 131072, -982859, 0, 131072, -982858, 0, 131072, -982857, 0, 131072, -982856, 0, 131072, -982855, 0, 131072, -982854, 0, 131072, -982853, 0, 131072, -852074, 0, 131072, -852073, 0, 131072, -852072, 0, 131072, -852071, 0, 131072, -852070, 0, 131072, -852069, 0, 131072, -852068, 0, 131072, -852067, 0, 131072, -852066, 0, 131072, -852065, 0, 131072, -852064, 0, 131072, -852063, 0, 131072, -852062, 0, 131072, -852061, 0, 131072, -852060, 0, 131072, -852059, 0, 131072, -852058, 0, 131072, -852057, 0, 131072, -852056, 0, 131072, -852055, 0, 131072, -852054, 0, 131072, -852053, 0, 131072, -852052, 0, 131072, -852051, 0, 131072, -852050, 0, 131072, -852049, 0, 131072, -852048, 0, 131072, -852047, 0, 131072, -852046, 0, 131072, -852045, 0, 131072, -852044, 0, 131072, -852043, 0, 131072, -852042, 0, 131072, -852041, 0, 131072, -852040, 0, 131072, -852039, 0, 131072, -852038, 0, 131072, -852037, 0, 131072, -852036, 0, 131072, -852035, 0, 131072, -852034, 0, 131072, -852033, 0, 131072, -852032, 0, 131072, -852031, 0, 131072, -852030, 0, 131072, -852029, 0, 131072, -852028, 0, 131072, -852027, 0, 131072, -852026, 0, 131072, -852025, 0, 131072, -852024, 0, 131072, -852023, 0, 131072, -852022, 0, 131072, -852021, 0, 131072, -852020, 0, 131072, -852019, 0, 131072, -852018, 0, 131072, -852017, 0, 131072, -852016, 0, 131072, -852015, 0, 131072, -852014, 0, 131072, -852013, 0, 131072, -852012, 0, 131072, -852011, 0, 131072, -852010, 0, 131072, -852009, 0, 131072, -852008, 0, 131072, -852007, 0, 131072, -852006, 0, 131072, -852005, 0, 131072, -852004, 0, 131072, -852003, 0, 131072, -852002, 0, 131072, -852001, 0, 131072, -852000, 0, 131072, -851999, 0, 131072, -851998, 0, 131072, -851997, 0, 131072, -851996, 0, 131072, -851995, 0, 131072, -851994, 0, 131072, -851993, 0, 131072, -851992, 0, 131072, -851991, 0, 131072, -851990, 0, 131072, -851989, 0, 131072, -851988, 0, 131072, -851987, 0, 131072, -851986, 0, 131072, -851985, 0, 131072, -851984, 0, 131072, -851983, 0, 131072, -851982, 0, 131072, -851981, 0, 131072, -851980, 0, 131072, -851979, 0, 131072, -851978, 0, 131072, -851977, 0, 131072, -851976, 0, 131072, -851975, 0, 131072, -851974, 0, 131072, -851973, 0, 131072, -851972, 0, 131072, -851971, 0, 131072, -851970, 0, 131072, -851969, 0, 131072, -917504, 0, 131072, -917503, 0, 131072, -917502, 0, 131072, -917501, 0, 131072, -917500, 0, 131072, -917499, 0, 131072, -917498, 0, 131072, -917497, 0, 131072, -917496, 0, 131072, -917495, 0, 131072, -917494, 0, 131072, -917493, 0, 131072, -917492, 0, 131072, -917491, 0, 131072, -917490, 0, 131072, -917489, 0, 131072, -917488, 0, 131072, -917487, 0, 131072, -917486, 0, 131072, -917485, 0, 131072, -917484, 0, 131072, -917483, 0, 131072, -917482, 0, 131072, -917481, 0, 131072, -917480, 0, 131072, -917479, 0, 131072, -917478, 0, 131072, -917477, 0, 131072, -917476, 0, 131072, -917475, 0, 131072, -917474, 0, 131072, -917473, 0, 131072, -917472, 0, 131072, -917471, 0, 131072, -917470, 0, 131072, -917469, 0, 131072, -917468, 0, 131072, -917467, 0, 131072, -917466, 0, 131072, -917465, 0, 131072, -917464, 0, 131072, -917463, 0, 131072, -917462, 0, 131072, -917461, 0, 131072, -917460, 0, 131072, -917459, 0, 131072, -917458, 0, 131072, -917457, 0, 131072, -917456, 0, 131072, -917455, 0, 131072, -917454, 0, 131072, -917453, 0, 131072, -917452, 0, 131072, -917451, 0, 131072, -917450, 0, 131072, -917449, 0, 131072, -917448, 0, 131072, -917447, 0, 131072, -917446, 0, 131072, -917445, 0, 131072, -917444, 0, 131072, -917443, 0, 131072, -917442, 0, 131072, -917441, 0, 131072, -917440, 0, 131072, -917439, 0, 131072, -917438, 0, 131072, -917437, 0, 131072, -917436, 0, 131072, -917435, 0, 131072, -917434, 0, 131072, -917433, 0, 131072, -917432, 0, 131072, -917431, 0, 131072, -917430, 0, 131072, -917429, 0, 131072, -917428, 0, 131072, -917427, 0, 131072, -917426, 0, 131072, -917425, 0, 131072, -917424, 0, 131072, -917423, 0, 131072, -917422, 0, 131072, -917421, 0, 131072, -917420, 0, 131072, -917419, 0, 131072, -917418, 0, 131072, -917417, 0, 131072, -917416, 0, 131072, -917415, 0, 131072, -917414, 0, 131072, -917413, 0, 131072, -917412, 0, 131072, -917411, 0, 131072, -917410, 0, 131072, -917409, 0, 131072, -917408, 0, 131072, -917407, 0, 131072, -917406, 0, 131072, -917405, 0, 131072, -917404, 0, 131072, -917403, 0, 131072, -917402, 0, 131072, -917401, 0, 131072, -917400, 0, 131072, -917399, 0, 131072, -917398, 0, 131072, -917397, 0, 131072, -917396, 0, 131072, -917395, 0, 131072, -917394, 0, 131072, -917393, 0, 131072, -917392, 0, 131072, -917391, 0, 131072, -917390, 0, 131072, -917389, 0, 131072, -917388, 0, 131072, -917387, 0, 131072, -917386, 0, 131072, -917385, 0, 131072, -917384, 0, 131072, -917383, 0, 131072, -917382, 0, 131072, -917381, 0, 131072, -917380, 0, 131072, -917379, 0, 131072, -917378, 0, 131072, -917377, 0, 131072, -917376, 0, 131072, -917375, 0, 131072, -917374, 0, 131072, -917373, 0, 131072, -917372, 0, 131072, -917371, 0, 131072, -917370, 0, 131072, -917369, 0, 131072, -917368, 0, 131072, -917367, 0, 131072, -917366, 0, 131072, -917365, 0, 131072, -917364, 0, 131072, -917363, 0, 131072, -917362, 0, 131072, -917361, 0, 131072, -917360, 0, 131072, -917359, 0, 131072, -917358, 0, 131072, -917357, 0, 131072, -917356, 0, 131072, -917355, 0, 131072, -917354, 0, 131072, -917353, 0, 131072, -917352, 0, 131072, -917351, 0, 131072, -917350, 0, 131072, -917349, 0, 131072, -917348, 0, 131072, -917347, 0, 131072, -917346, 0, 131072, -917345, 0, 131072, -917344, 0, 131072, -917343, 0, 131072, -917342, 0, 131072, -917341, 0, 131072, -917340, 0, 131072, -917339, 0, 131072, -917338, 0, 131072, -917337, 0, 131072, -917336, 0, 131072, -917335, 0, 131072, -917334, 0, 131072, -917333, 0, 131072, -917332, 0, 131072, -917331, 0, 131072, -917330, 0, 131072, -917329, 0, 131072, -917328, 0, 131072, -917327, 0, 131072, -917326, 0, 131072, -917325, 0, 131072, -917324, 0, 131072, -917323, 0, 131072, -917322, 0, 131072, -917321, 0, 131072, -917320, 0, 131072, -917319, 0, 131072, -917318, 0, 131072, -917317, 0, 131072, -786538, 0, 131072, -786537, 0, 131072, -786536, 0, 131072, -786535, 0, 131072, -786534, 0, 131072, -786533, 0, 131072, -786532, 0, 131072, -786531, 0, 131072, -786530, 0, 131072, -786529, 0, 131072, -786528, 0, 131072, -786527, 0, 131072, -786526, 0, 131072, -786525, 0, 131072, -786524, 0, 131072, -786523, 0, 131072, -786522, 0, 131072, -786521, 0, 131072, -786520, 0, 131072, -786519, 0, 131072, -786518, 0, 131072, -786517, 0, 131072, -786516, 0, 131072, -786515, 0, 131072, -786514, 0, 131072, -786513, 0, 131072, -786512, 0, 131072, -786511, 0, 131072, -786510, 0, 131072, -786509, 0, 131072, -786508, 0, 131072, -786507, 0, 131072, -786506, 0, 131072, -786505, 0, 131072, -786504, 0, 131072, -786503, 0, 131072, -786502, 0, 131072, -786501, 0, 131072, -786500, 0, 131072, -786499, 0, 131072, -786498, 0, 131072, -786497, 0, 131072, -786496, 0, 131072, -786495, 0, 131072, -786494, 0, 131072, -786493, 0, 131072, -786492, 0, 131072, -786491, 0, 131072, -786490, 0, 131072, -786489, 0, 131072, -786488, 0, 131072, -786487, 0, 131072, -786486, 0, 131072, -786485, 0, 131072, -786484, 0, 131072, -786483, 0, 131072, -786482, 0, 131072, -786481, 0, 131072, -786480, 0, 131072, -786479, 0, 131072, -786478, 0, 131072, -786477, 0, 131072, -786476, 0, 131072, -786475, 0, 131072, -786474, 0, 131072, -786473, 0, 131072, -786472, 0, 131072, -786471, 0, 131072, -786470, 0, 131072, -786469, 0, 131072, -786468, 0, 131072, -786467, 0, 131072, -786466, 0, 131072, -786465, 0, 131072, -786464, 0, 131072, -786463, 0, 131072, -786462, 0, 131072, -786461, 0, 131072, -786460, 0, 131072, -786459, 0, 131072, -786458, 0, 131072, -786457, 0, 131072, -786456, 0, 131072, -786455, 0, 131072, -786454, 0, 131072, -786453, 0, 131072, -786452, 0, 131072, -786451, 0, 131072, -786450, 0, 131072, -786449, 0, 131072, -786448, 0, 131072, -786447, 0, 131072, -786446, 0, 131072, -786445, 0, 131072, -786444, 0, 131072, -786443, 0, 131072, -786442, 0, 131072, -786441, 0, 131072, -786440, 0, 131072, -786439, 0, 131072, -786438, 0, 131072, -786437, 0, 131072, -786436, 0, 131072, -786435, 0, 131072, -786434, 0, 131072, -786433, 0, 131072, -851968, 0, 131072, -851967, 0, 131072, -851966, 0, 131072, -851965, 0, 131072, -851964, 0, 131072, -851963, 0, 131072, -851962, 0, 131072, -851961, 0, 131072, -851960, 0, 131072, -851959, 0, 131072, -851958, 0, 131072, -851957, 0, 131072, -851956, 0, 131072, -851955, 0, 131072, -851954, 0, 131072, -851953, 0, 131072, -851952, 0, 131072, -851951, 0, 131072, -851950, 0, 131072, -851949, 0, 131072, -851948, 0, 131072, -851947, 0, 131072, -851946, 0, 131072, -851945, 0, 131072, -851944, 0, 131072, -851943, 0, 131072, -851942, 0, 131072, -851941, 0, 131072, -851940, 0, 131072, -851939, 0, 131072, -851938, 0, 131072, -851937, 0, 131072, -851936, 0, 131072, -851935, 0, 131072, -851934, 0, 131072, -851933, 0, 131072, -851932, 0, 131072, -851931, 0, 131072, -851930, 0, 131072, -851929, 0, 131072, -851928, 0, 131072, -851927, 0, 131072, -851926, 0, 131072, -851925, 0, 131072, -851924, 0, 131072, -851923, 0, 131072, -851922, 0, 131072, -851921, 0, 131072, -851920, 0, 131072, -851919, 0, 131072, -851918, 0, 131072, -851917, 0, 131072, -851916, 0, 131072, -851915, 0, 131072, -851914, 0, 131072, -851913, 0, 131072, -851912, 0, 131072, -851911, 0, 131072, -851910, 0, 131072, -851909, 0, 131072, -851908, 0, 131072, -851907, 0, 131072, -851906, 0, 131072, -851905, 0, 131072, -851904, 0, 131072, -851903, 0, 131072, -851902, 0, 131072, -851901, 0, 131072, -851900, 0, 131072, -851899, 0, 131072, -851898, 0, 131072, -851897, 0, 131072, -851896, 0, 131072, -851895, 0, 131072, -851894, 0, 131072, -851893, 0, 131072, -851892, 0, 131072, -851891, 0, 131072, -851890, 0, 131072, -851889, 0, 131072, -851888, 0, 131072, -851887, 0, 131072, -851886, 0, 131072, -851885, 0, 131072, -851884, 0, 131072, -851883, 0, 131072, -851882, 0, 131072, -851881, 0, 131072, -851880, 0, 131072, -851879, 0, 131072, -851878, 0, 131072, -851877, 0, 131072, -851876, 0, 131072, -851875, 0, 131072, -851874, 0, 131072, -851873, 0, 131072, -851872, 0, 131072, -851871, 0, 131072, -851870, 0, 131072, -851869, 0, 131072, -851868, 0, 131072, -851867, 0, 131072, -851866, 0, 131072, -851865, 0, 131072, -851864, 0, 131072, -851863, 0, 131072, -851862, 0, 131072, -851861, 0, 131072, -851860, 0, 131072, -851859, 0, 131072, -851858, 0, 131072, -851857, 0, 131072, -851856, 0, 131072, -851855, 0, 131072, -851854, 0, 131072, -851853, 0, 131072, -851852, 0, 131072, -851851, 0, 131072, -851850, 0, 131072, -851849, 0, 131072, -851848, 0, 131072, -851847, 0, 131072, -851846, 0, 131072, -851845, 0, 131072, -851844, 0, 131072, -851843, 0, 131072, -851842, 0, 131072, -851841, 0, 131072, -851840, 0, 131072, -851839, 0, 131072, -851838, 0, 131072, -851837, 0, 131072, -851836, 0, 131072, -851835, 0, 131072, -851834, 0, 131072, -851833, 0, 131072, -851832, 0, 131072, -851831, 0, 131072, -851830, 0, 131072, -851829, 0, 131072, -851828, 0, 131072, -851827, 0, 131072, -851826, 0, 131072, -851825, 0, 131072, -851824, 0, 131072, -851823, 0, 131072, -851822, 0, 131072, -851821, 0, 131072, -851820, 0, 131072, -851819, 0, 131072, -851818, 0, 131072, -851817, 0, 131072, -851816, 0, 131072, -851815, 0, 131072, -851814, 0, 131072, -851813, 0, 131072, -851812, 0, 131072, -851811, 0, 131072, -851810, 0, 131072, -851809, 0, 131072, -851808, 0, 131072, -851807, 0, 131072, -851806, 0, 131072, -851805, 0, 131072, -851804, 0, 131072, -851803, 0, 131072, -851802, 0, 131072, -851801, 0, 131072, -851800, 0, 131072, -851799, 0, 131072, -851798, 0, 131072, -851797, 0, 131072, -851796, 0, 131072, -851795, 0, 131072, -851794, 0, 131072, -851793, 0, 131072, -851792, 0, 131072, -851791, 0, 131072, -851790, 0, 131072, -851789, 0, 131072, -851788, 0, 131072, -851787, 0, 131072, -851786, 0, 131072, -851785, 0, 131072, -851784, 0, 131072, -851783, 0, 131072, -851782, 0, 131072, -851781, 0, 131072, -851780, 0, 131072, -721001, 0, 131072, -721000, 0, 131072, -720999, 0, 131072, -720998, 0, 131072, -720997, 0, 131072, -720996, 0, 131072, -720995, 0, 131072, -720994, 0, 131072, -720993, 0, 131072, -720992, 0, 131072, -720991, 0, 131072, -720990, 0, 131072, -720989, 0, 131072, -720988, 0, 131072, -720987, 0, 131072, -720986, 0, 131072, -720985, 0, 131072, -720984, 0, 131072, -720983, 0, 131072, -720982, 0, 131072, -720981, 0, 131072, -720980, 0, 131072, -720979, 0, 131072, -720978, 0, 131072, -720977, 0, 131072, -720976, 0, 131072, -720975, 0, 131072, -720974, 0, 131072, -720973, 0, 131072, -720972, 0, 131072, -720971, 0, 131072, -720970, 0, 131072, -720969, 0, 131072, -720968, 0, 131072, -720967, 0, 131072, -720966, 0, 131072, -720965, 0, 131072, -720964, 0, 131072, -720963, 0, 131072, -720962, 0, 131072, -720961, 0, 131072, -720960, 0, 131072, -720959, 0, 131072, -720958, 0, 131072, -720957, 0, 131072, -720956, 0, 131072, -720955, 0, 131072, -720954, 0, 131072, -720953, 0, 131072, -720952, 0, 131072, -720951, 0, 131072, -720950, 0, 131072, -720949, 0, 131072, -720948, 0, 131072, -720947, 0, 131072, -720946, 0, 131072, -720945, 0, 131072, -720944, 0, 131072, -720943, 0, 131072, -720942, 0, 131072, -720941, 0, 131072, -720940, 0, 131072, -720939, 0, 131072, -720938, 0, 131072, -720937, 0, 131072, -720936, 0, 131072, -720935, 0, 131072, -720934, 0, 131072, -720933, 0, 131072, -720932, 0, 131072, -720931, 0, 131072, -720930, 0, 131072, -720929, 0, 131072, -720928, 0, 131072, -720927, 0, 131072, -720926, 0, 131072, -720925, 0, 131072, -720924, 0, 131072, -720923, 0, 131072, -720922, 0, 131072, -720921, 0, 131072, -720920, 0, 131072, -720919, 0, 131072, -720918, 0, 131072, -720917, 0, 131072, -720916, 0, 131072, -720915, 0, 131072, -720914, 0, 131072, -720913, 0, 131072, -720912, 0, 131072, -720911, 0, 131072, -720910, 0, 131072, -720909, 0, 131072, -720908, 0, 131072, -720907, 0, 131072, -720906, 0, 131072, -720905, 0, 131072, -720904, 0, 131072, -720903, 0, 131072, -720902, 0, 131072, -720901, 0, 131072, -720900, 0, 131072, -720899, 0, 131072, -720898, 0, 131072, -720897, 0, 131072, -786432, 0, 131072, -786431, 0, 131072, -786430, 0, 131072, -786429, 0, 131072, -786428, 0, 131072, -786427, 0, 131072, -786426, 0, 131072, -786425, 0, 131072, -786424, 0, 131072, -786423, 0, 131072, -786422, 0, 131072, -786421, 0, 131072, -786420, 0, 131072, -786419, 0, 131072, -786418, 0, 131072, -786417, 0, 131072, -786416, 0, 131072, -786415, 0, 131072, -786414, 0, 131072, -786413, 0, 131072, -786412, 0, 131072, -786411, 0, 131072, -786410, 0, 131072, -786409, 0, 131072, -786408, 0, 131072, -786407, 0, 131072, -786406, 0, 131072, -786405, 0, 131072, -786404, 0, 131072, -786403, 0, 131072, -786402, 0, 131072, -786401, 0, 131072, -786400, 0, 131072, -786399, 0, 131072, -786398, 0, 131072, -786397, 0, 131072, -786396, 0, 131072, -786395, 0, 131072, -786394, 0, 131072, -786393, 0, 131072, -786392, 0, 131072, -786391, 0, 131072, -786390, 0, 131072, -786389, 0, 131072, -786388, 0, 131072, -786387, 0, 131072, -786386, 0, 131072, -786385, 0, 131072, -786384, 0, 131072, -786383, 0, 131072, -786382, 0, 131072, -786381, 0, 131072, -786380, 0, 131072, -786379, 0, 131072, -786378, 0, 131072, -786377, 0, 131072, -786376, 0, 131072, -786375, 0, 131072, -786374, 0, 131072, -786373, 0, 131072, -786372, 0, 131072, -786371, 0, 131072, -786370, 0, 131072, -786369, 0, 131072, -786368, 0, 131072, -786367, 0, 131072, -786366, 0, 131072, -786365, 0, 131072, -786364, 0, 131072, -786363, 0, 131072, -786362, 0, 131072, -786361, 0, 131072, -786360, 0, 131072, -786359, 0, 131072, -786358, 0, 131072, -786357, 0, 131072, -786356, 0, 131072, -786355, 0, 131072, -786354, 0, 131072, -786353, 0, 131072, -786352, 0, 131072, -786351, 0, 131072, -786350, 0, 131072, -786349, 0, 131072, -786348, 0, 131072, -786347, 0, 131072, -786346, 0, 131072, -786345, 0, 131072, -786344, 0, 131072, -786343, 0, 131072, -786342, 0, 131072, -786341, 0, 131072, -786340, 0, 131072, -786339, 0, 131072, -786338, 0, 131072, -786337, 0, 131072, -786336, 0, 131072, -786335, 0, 131072, -786334, 0, 131072, -786333, 0, 131072, -786332, 0, 131072, -786331, 0, 131072, -786330, 0, 131072, -786329, 0, 131072, -786328, 0, 131072, -786327, 0, 131072, -786326, 0, 131072, -786325, 0, 131072, -786324, 0, 131072, -786323, 0, 131072, -786322, 0, 131072, -786321, 0, 131072, -786320, 0, 131072, -786319, 0, 131072, -786318, 0, 131072, -786317, 0, 131072, -786316, 0, 131072, -786315, 0, 131072, -786314, 0, 131072, -786313, 0, 131072, -786312, 0, 131072, -786311, 0, 131072, -786310, 0, 131072, -786309, 0, 131072, -786308, 0, 131072, -786307, 0, 131072, -786306, 0, 131072, -786305, 0, 131072, -786304, 0, 131072, -786303, 0, 131072, -786302, 0, 131072, -786301, 0, 131072, -786300, 0, 131072, -786299, 0, 131072, -786298, 0, 131072, -786297, 0, 131072, -786296, 0, 131072, -786295, 0, 131072, -786294, 0, 131072, -786293, 0, 131072, -786292, 0, 131072, -786291, 0, 131072, -786290, 0, 131072, -786289, 0, 131072, -786288, 0, 131072, -786287, 0, 131072, -786286, 0, 131072, -786285, 0, 131072, -786284, 0, 131072, -786283, 0, 131072, -786282, 0, 131072, -786281, 0, 131072, -786280, 0, 131072, -786279, 0, 131072, -786278, 0, 131072, -786277, 0, 131072, -786276, 0, 131072, -786275, 0, 131072, -786274, 0, 131072, -786273, 0, 131072, -786272, 0, 131072, -786271, 0, 131072, -786270, 0, 131072, -786269, 0, 131072, -786268, 0, 131072, -786267, 0, 131072, -786266, 0, 131072, -786265, 0, 131072, -786264, 0, 131072, -786263, 0, 131072, -786262, 0, 131072, -786261, 0, 131072, -786260, 0, 131072, -786259, 0, 131072, -786258, 0, 131072, -786257, 0, 131072, -786256, 0, 131072, -786255, 0, 131072, -786254, 0, 131072, -786253, 0, 131072, -786252, 0, 131072, -786251, 0, 131072, -786250, 0, 131072, -786249, 0, 131072, -786248, 0, 131072, -786247, 0, 131072, -786246, 0, 131072, -786245, 0, 131072, -786244, 0, 131072, -786243, 0, 131072, -655465, 0, 131072, -655464, 0, 131072, -655463, 0, 131072, -655462, 0, 131072, -655461, 0, 131072, -655460, 0, 131072, -655459, 0, 131072, -655458, 0, 131072, -655457, 0, 131072, -655456, 0, 131072, -655455, 0, 131072, -655454, 0, 131072, -655453, 0, 131072, -655452, 0, 131072, -655451, 0, 131072, -655450, 0, 131072, -655449, 0, 131072, -655448, 0, 131072, -655447, 0, 131072, -655446, 0, 131072, -655445, 0, 131072, -655444, 0, 131072, -655443, 0, 131072, -655442, 0, 131072, -655441, 0, 131072, -655440, 0, 131072, -655439, 0, 131072, -655438, 0, 131072, -655437, 0, 131072, -655436, 0, 131072, -655435, 0, 131072, -655434, 0, 131072, -655433, 0, 131072, -655432, 0, 131072, -655431, 0, 131072, -655430, 0, 131072, -655429, 0, 131072, -655428, 0, 131072, -655427, 0, 131072, -655426, 0, 131072, -655425, 0, 131072, -655424, 0, 131072, -655423, 0, 131072, -655422, 0, 131072, -655421, 0, 131072, -655420, 0, 131072, -655419, 0, 131072, -655418, 0, 131072, -655417, 0, 131072, -655416, 0, 131072, -655415, 0, 131072, -655414, 0, 131072, -655413, 0, 131072, -655412, 0, 131072, -655411, 0, 131072, -655410, 0, 131072, -655409, 0, 131072, -655408, 0, 131072, -655407, 0, 131072, -655406, 0, 131072, -655405, 0, 131072, -655404, 0, 131072, -655403, 0, 131072, -655402, 0, 131072, -655401, 0, 131072, -655400, 0, 131072, -655399, 0, 131072, -655398, 0, 131072, -655397, 0, 131072, -655396, 0, 131072, -655395, 0, 131072, -655394, 0, 131072, -655393, 0, 131072, -655392, 0, 131072, -655391, 0, 131072, -655390, 0, 131072, -655389, 0, 131072, -655388, 0, 131072, -655387, 0, 131072, -655386, 0, 131072, -655385, 0, 131072, -655384, 0, 131072, -655383, 0, 131072, -655382, 0, 131072, -655381, 0, 131072, -655380, 0, 131072, -655379, 0, 131072, -655378, 0, 131072, -655377, 0, 131072, -655376, 0, 131072, -655375, 0, 131072, -655374, 0, 131072, -655373, 0, 131072, -655372, 0, 131072, -655371, 0, 131072, -655370, 0, 131072, -655369, 0, 131072, -655368, 0, 131072, -655367, 0, 131072, -655366, 0, 131072, -655365, 0, 131072, -655364, 0, 131072, -655363, 0, 131072, -655362, 0, 131072, -655361, 0, 131072, -720896, 0, 131072, -720895, 0, 131072, -720894, 0, 131072, -720893, 0, 131072, -720892, 0, 131072, -720891, 0, 131072, -720890, 0, 131072, -720889, 0, 131072, -720888, 0, 131072, -720887, 0, 131072, -720886, 0, 131072, -720885, 0, 131072, -720884, 0, 131072, -720883, 0, 131072, -720882, 0, 131072, -720881, 0, 131072, -720880, 0, 131072, -720879, 0, 131072, -720878, 0, 131072, -720877, 0, 131072, -720876, 0, 131072, -720875, 0, 131072, -720874, 0, 131072, -720873, 0, 131072, -720872, 0, 131072, -720871, 0, 131072, -720870, 0, 131072, -720869, 0, 131072, -720868, 0, 131072, -720867, 0, 131072, -720866, 0, 131072, -720865, 0, 131072, -720864, 0, 131072, -720863, 0, 131072, -720862, 0, 131072, -720861, 0, 131072, -720860, 0, 131072, -720859, 0, 131072, -720858, 0, 131072, -720857, 0, 131072, -720856, 0, 131072, -720855, 0, 131072, -720854, 0, 131072, -720853, 0, 131072, -720852, 0, 131072, -720851, 0, 131072, -720850, 0, 131072, -720849, 0, 131072, -720848, 0, 131072, -720847, 0, 131072, -720846, 0, 131072, -720845, 0, 131072, -720844, 0, 131072, -720843, 0, 131072, -720842, 0, 131072, -720841, 0, 131072, -720840, 0, 131072, -720839, 0, 131072, -720838, 0, 131072, -720837, 0, 131072, -720836, 0, 131072, -720835, 0, 131072, -720834, 0, 131072, -720833, 0, 131072, -720832, 0, 131072, -720831, 0, 131072, -720830, 0, 131072, -720829, 0, 131072, -720828, 0, 131072, -720827, 0, 131072, -720826, 0, 131072, -720825, 0, 131072, -720824, 0, 131072, -720823, 0, 131072, -720822, 0, 131072, -720821, 0, 131072, -720820, 0, 131072, -720819, 0, 131072, -720818, 0, 131072, -720817, 0, 131072, -720816, 0, 131072, -720815, 0, 131072, -720814, 0, 131072, -720813, 0, 131072, -720812, 0, 131072, -720811, 0, 131072, -720810, 0, 131072, -720809, 0, 131072, -720808, 0, 131072, -720807, 0, 131072, -720806, 0, 131072, -720805, 0, 131072, -720804, 0, 131072, -720803, 0, 131072, -720802, 0, 131072, -720801, 0, 131072, -720800, 0, 131072, -720799, 0, 131072, -720798, 0, 131072, -720797, 0, 131072, -720796, 0, 131072, -720795, 0, 131072, -720794, 0, 131072, -720793, 0, 131072, -720792, 0, 131072, -720791, 0, 131072, -720790, 0, 131072, -720789, 0, 131072, -720788, 0, 131072, -720787, 0, 131072, -720786, 0, 131072, -720785, 0, 131072, -720784, 0, 131072, -720783, 0, 131072, -720782, 0, 131072, -720781, 0, 131072, -720780, 0, 131072, -720779, 0, 131072, -720778, 0, 131072, -720777, 0, 131072, -720776, 0, 131072, -720775, 0, 131072, -720774, 0, 131072, -720773, 0, 131072, -720772, 0, 131072, -720771, 0, 131072, -720770, 0, 131072, -720769, 0, 131072, -720768, 0, 131072, -720767, 0, 131072, -720766, 0, 131072, -720765, 0, 131072, -720764, 0, 131072, -720763, 0, 131072, -720762, 0, 131072, -720761, 0, 131072, -720760, 0, 131072, -720759, 0, 131072, -720758, 0, 131072, -720757, 0, 131072, -720756, 0, 131072, -720755, 0, 131072, -720754, 0, 131072, -720753, 0, 131072, -720752, 0, 131072, -720751, 0, 131072, -720750, 0, 131072, -720749, 0, 131072, -720748, 0, 131072, -720747, 0, 131072, -720746, 0, 131072, -720745, 0, 131072, -720744, 0, 131072, -720743, 0, 131072, -720742, 0, 131072, -720741, 0, 131072, -720740, 0, 131072, -720739, 0, 131072, -720738, 0, 131072, -720737, 0, 131072, -720736, 0, 131072, -720735, 0, 131072, -720734, 0, 131072, -720733, 0, 131072, -720732, 0, 131072, -720731, 0, 131072, -720730, 0, 131072, -720729, 0, 131072, -720728, 0, 131072, -720727, 0, 131072, -720726, 0, 131072, -720725, 0, 131072, -720724, 0, 131072, -720723, 0, 131072, -720722, 0, 131072, -720721, 0, 131072, -720720, 0, 131072, -720719, 0, 131072, -720718, 0, 131072, -720717, 0, 131072, -720716, 0, 131072, -720715, 0, 131072, -720714, 0, 131072, -720713, 0, 131072, -720712, 0, 131072, -720711, 0, 131072, -720710, 0, 131072, -720709, 0, 131072, -720708, 0, 131072, -720707, 0, 131072, -589929, 0, 131072, -589928, 0, 131072, -589927, 0, 131072, -589926, 0, 131072, -589925, 0, 131072, -589924, 0, 131072, -589923, 0, 131072, -589922, 0, 131072, -589921, 0, 131072, -589920, 0, 131072, -589919, 0, 131072, -589918, 0, 131072, -589917, 0, 131072, -589916, 0, 131072, -589915, 0, 131072, -589914, 0, 131072, -589913, 0, 131072, -589912, 0, 131072, -589911, 0, 131072, -589910, 0, 131072, -589909, 0, 131072, -589908, 0, 131072, -589907, 0, 131072, -589906, 0, 131072, -589905, 0, 131072, -589904, 0, 131072, -589903, 0, 131072, -589902, 0, 131072, -589901, 0, 131072, -589900, 0, 131072, -589899, 0, 131072, -589898, 0, 131072, -589897, 0, 131072, -589896, 0, 131072, -589895, 0, 131072, -589894, 0, 131072, -589893, 0, 131072, -589892, 0, 131072, -589891, 0, 131072, -589890, 0, 131072, -589889, 0, 131072, -589888, 0, 131072, -589887, 0, 131072, -589886, 0, 131072, -589885, 0, 131072, -589884, 0, 131072, -589883, 0, 131072, -589882, 0, 131072, -589881, 0, 131072, -589880, 0, 131072, -589879, 0, 131072, -589878, 0, 131072, -589877, 0, 131072, -589876, 0, 131072, -589875, 0, 131072, -589874, 0, 131072, -589873, 0, 131072, -589872, 0, 131072, -589871, 0, 131072, -589870, 0, 131072, -589869, 0, 131072, -589868, 0, 131072, -589867, 0, 131072, -589866, 0, 131072, -589865, 0, 131072, -589864, 0, 131072, -589863, 0, 131072, -589862, 0, 131072, -589861, 0, 131072, -589860, 0, 131072, -589859, 0, 131072, -589858, 0, 131072, -589857, 0, 131072, -589856, 0, 131072, -589855, 0, 131072, -589854, 0, 131072, -589853, 0, 131072, -589852, 0, 131072, -589851, 0, 131072, -589850, 0, 131072, -589849, 0, 131072, -589848, 0, 131072, -589847, 0, 131072, -589846, 0, 131072, -589845, 0, 131072, -589844, 0, 131072, -589843, 0, 131072, -589842, 0, 131072, -589841, 0, 131072, -589840, 0, 131072, -589839, 0, 131072, -589838, 0, 131072, -589837, 0, 131072, -589836, 0, 131072, -589835, 0, 131072, -589834, 0, 131072, -589833, 0, 131072, -589832, 0, 131072, -589831, 0, 131072, -589830, 0, 131072, -589829, 0, 131072, -589828, 0, 131072, -589827, 0, 131072, -589826, 0, 131072, -589825, 0, 131072, -655360, 0, 131072, -655359, 0, 131072, -655358, 0, 131072, -655357, 0, 131072, -655356, 0, 131072, -655355, 0, 131072, -655354, 0, 131072, -655353, 0, 131072, -655352, 0, 131072, -655351, 0, 131072, -655350, 0, 131072, -655349, 0, 131072, -655348, 0, 131072, -655347, 0, 131072, -655346, 0, 131072, -655345, 0, 131072, -655344, 0, 131072, -655343, 0, 131072, -655342, 0, 131072, -655341, 0, 131072, -655340, 0, 131072, -655339, 0, 131072, -655338, 0, 131072, -655337, 0, 131072, -655336, 0, 131072, -655335, 0, 131072, -655334, 0, 131072, -655333, 0, 131072, -655332, 0, 131072, -655331, 0, 131072, -655330, 0, 131072, -655329, 0, 131072, -655328, 0, 131072, -655327, 0, 131072, -655326, 0, 131072, -655325, 0, 131072, -655324, 0, 131072, -655323, 0, 131072, -655322, 0, 131072, -655321, 0, 131072, -655320, 0, 131072, -655319, 0, 131072, -655318, 0, 131072, -655317, 0, 131072, -655316, 0, 131072, -655315, 0, 131072, -655314, 0, 131072, -655313, 0, 131072, -655312, 0, 131072, -655311, 0, 131072, -655310, 0, 131072, -655309, 0, 131072, -655308, 0, 131072, -655307, 0, 131072, -655306, 0, 131072, -655305, 0, 131072, -655304, 0, 131072, -655303, 0, 131072, -655302, 0, 131072, -655301, 0, 131072, -655300, 0, 131072, -655299, 0, 131072, -655298, 0, 131072, -655297, 0, 131072, -655296, 0, 131072, -655295, 0, 131072, -655294, 0, 131072, -655293, 0, 131072, -655292, 0, 131072, -655291, 0, 131072, -655290, 0, 131072, -655289, 0, 131072, -655288, 0, 131072, -655287, 0, 131072, -655286, 0, 131072, -655285, 0, 131072, -655284, 0, 131072, -655283, 0, 131072, -655282, 0, 131072, -655281, 0, 131072, -655280, 0, 131072, -655279, 0, 131072, -655278, 0, 131072, -655277, 0, 131072, -655276, 0, 131072, -655275, 0, 131072, -655274, 0, 131072, -655273, 0, 131072, -655272, 0, 131072, -655271, 0, 131072, -655270, 0, 131072, -655269, 0, 131072, -655268, 0, 131072, -655267, 0, 131072, -655266, 0, 131072, -655265, 0, 131072, -655264, 0, 131072, -655263, 0, 131072, -655262, 0, 131072, -655261, 0, 131072, -655260, 0, 131072, -655259, 0, 131072, -655258, 0, 131072, -655257, 0, 131072, -655256, 0, 131072, -655255, 0, 131072, -655254, 0, 131072, -655253, 0, 131072, -655252, 0, 131072, -655251, 0, 131072, -655250, 0, 131072, -655249, 0, 131072, -655248, 0, 131072, -655247, 0, 131072, -655246, 0, 131072, -655245, 0, 131072, -655244, 0, 131072, -655243, 0, 131072, -655242, 0, 131072, -655241, 0, 131072, -655240, 0, 131072, -655239, 0, 131072, -655238, 0, 131072, -655237, 0, 131072, -655236, 0, 131072, -655235, 0, 131072, -655234, 0, 131072, -655233, 0, 131072, -655232, 0, 131072, -655231, 0, 131072, -655230, 0, 131072, -655229, 0, 131072, -655228, 0, 131072, -655227, 0, 131072, -655226, 0, 131072, -655225, 0, 131072, -655224, 0, 131072, -655223, 0, 131072, -655222, 0, 131072, -655221, 0, 131072, -655220, 0, 131072, -655219, 0, 131072, -655218, 0, 131072, -655217, 0, 131072, -655216, 0, 131072, -655215, 0, 131072, -655214, 0, 131072, -655213, 0, 131072, -655212, 0, 131072, -655211, 0, 131072, -655210, 0, 131072, -655209, 0, 131072, -655208, 0, 131072, -655207, 0, 131072, -655206, 0, 131072, -655205, 0, 131072, -655204, 0, 131072, -655203, 0, 131072, -655202, 0, 131072, -655201, 0, 131072, -655200, 0, 131072, -655199, 0, 131072, -655198, 0, 131072, -655197, 0, 131072, -655196, 0, 131072, -655195, 0, 131072, -655194, 0, 131072, -655193, 0, 131072, -655192, 0, 131072, -655191, 0, 131072, -655190, 0, 131072, -655189, 0, 131072, -655188, 0, 131072, -655187, 0, 131072, -655186, 0, 131072, -655185, 0, 131072, -655184, 0, 131072, -655183, 0, 131072, -655182, 0, 131072, -655181, 0, 131072, -655180, 0, 131072, -655179, 0, 131072, -655178, 0, 131072, -655177, 0, 131072, -655176, 0, 131072, -655175, 0, 131072, -655174, 0, 131072, -655173, 0, 131072, -655172, 0, 131072, -655171, 0, 131072, -655170, 0, 131072, -524392, 0, 131072, -524391, 0, 131072, -524390, 0, 131072, -524389, 0, 131072, -524388, 0, 131072, -524387, 0, 131072, -524386, 0, 131072, -524385, 0, 131072, -524384, 0, 131072, -524383, 0, 131072, -524382, 0, 131072, -524381, 0, 131072, -524380, 0, 131072, -524379, 0, 131072, -524378, 0, 131072, -524377, 0, 131072, -524376, 0, 131072, -524375, 0, 131072, -524374, 0, 131072, -524373, 0, 131072, -524372, 0, 131072, -524371, 0, 131072, -524370, 0, 131072, -524369, 0, 131072, -524368, 0, 131072, -524367, 0, 131072, -524366, 0, 131072, -524365, 0, 131072, -524364, 0, 131072, -524363, 0, 131072, -524362, 0, 131072, -524361, 0, 131072, -524360, 0, 131072, -524359, 0, 131072, -524358, 0, 131072, -524357, 0, 131072, -524356, 0, 131072, -524355, 0, 131072, -524354, 0, 131072, -524353, 0, 131072, -524352, 0, 131072, -524351, 0, 131072, -524350, 0, 131072, -524349, 0, 131072, -524348, 0, 131072, -524347, 0, 131072, -524346, 0, 131072, -524345, 0, 131072, -524344, 0, 131072, -524343, 0, 131072, -524342, 0, 131072, -524341, 0, 131072, -524340, 0, 131072, -524339, 0, 131072, -524338, 0, 131072, -524337, 0, 131072, -524336, 0, 131072, -524335, 0, 131072, -524334, 0, 131072, -524333, 0, 131072, -524332, 0, 131072, -524331, 0, 131072, -524330, 0, 131072, -524329, 0, 131072, -524328, 0, 131072, -524327, 0, 131072, -524326, 0, 131072, -524325, 0, 131072, -524324, 0, 131072, -524323, 0, 131072, -524322, 0, 131072, -524321, 0, 131072, -524320, 0, 131072, -524319, 0, 131072, -524318, 0, 131072, -524317, 0, 131072, -524316, 0, 131072, -524315, 0, 131072, -524314, 0, 131072, -524313, 0, 131072, -524312, 0, 131072, -524311, 0, 131072, -524310, 0, 131072, -524309, 0, 131072, -524308, 0, 131072, -524307, 0, 131072, -524306, 0, 131072, -524305, 0, 131072, -524304, 0, 131072, -524303, 0, 131072, -524302, 0, 131072, -524301, 0, 131072, -524300, 0, 131072, -524299, 0, 131072, -524298, 0, 131072, -524297, 0, 131072, -524296, 0, 131072, -524295, 0, 131072, -524294, 0, 131072, -524293, 0, 131072, -524292, 0, 131072, -524291, 0, 131072, -524290, 0, 131072, -524289, 0, 131072, -589824, 0, 131072, -589823, 0, 131072, -589822, 0, 131072, -589821, 0, 131072, -589820, 0, 131072, -589819, 0, 131072, -589818, 0, 131072, -589817, 0, 131072, -589816, 0, 131072, -589815, 0, 131072, -589814, 0, 131072, -589813, 0, 131072, -589812, 0, 131072, -589811, 0, 131072, -589810, 0, 131072, -589809, 0, 131072, -589808, 0, 131072, -589807, 0, 131072, -589806, 0, 131072, -589805, 0, 131072, -589804, 0, 131072, -589803, 0, 131072, -589802, 0, 131072, -589801, 0, 131072, -589800, 0, 131072, -589799, 0, 131072, -589798, 0, 131072, -589797, 0, 131072, -589796, 0, 131072, -589795, 0, 131072, -589794, 0, 131072, -589793, 0, 131072, -589792, 0, 131072, -589791, 0, 131072, -589790, 0, 131072, -589789, 0, 131072, -589788, 0, 131072, -589787, 0, 131072, -589786, 0, 131072, -589785, 0, 131072, -589784, 0, 131072, -589783, 0, 131072, -589782, 0, 131072, -589781, 0, 131072, -589780, 0, 131072, -589779, 0, 131072, -589778, 0, 131072, -589777, 0, 131072, -589776, 0, 131072, -589775, 0, 131072, -589774, 0, 131072, -589773, 0, 131072, -589772, 0, 131072, -589771, 0, 131072, -589770, 0, 131072, -589769, 0, 131072, -589768, 0, 131072, -589767, 0, 131072, -589766, 0, 131072, -589765, 0, 131072, -589764, 0, 131072, -589763, 0, 131072, -589762, 0, 131072, -589761, 0, 131072, -589760, 0, 131072, -589759, 0, 131072, -589758, 0, 131072, -589757, 0, 131072, -589756, 0, 131072, -589755, 0, 131072, -589754, 0, 131072, -589753, 0, 131072, -589752, 0, 131072, -589751, 0, 131072, -589750, 0, 131072, -589749, 0, 131072, -589748, 0, 131072, -589747, 0, 131072, -589746, 0, 131072, -589745, 0, 131072, -589744, 0, 131072, -589743, 0, 131072, -589742, 0, 131072, -589741, 0, 131072, -589740, 0, 131072, -589739, 0, 131072, -589738, 0, 131072, -589737, 0, 131072, -589736, 0, 131072, -589735, 0, 131072, -589734, 0, 131072, -589733, 0, 131072, -589732, 0, 131072, -589731, 0, 131072, -589730, 0, 131072, -589729, 0, 131072, -589728, 0, 131072, -589727, 0, 131072, -589726, 0, 131072, -589725, 0, 131072, -589724, 0, 131072, -589723, 0, 131072, -589722, 0, 131072, -589721, 0, 131072, -589720, 0, 131072, -589719, 0, 131072, -589718, 0, 131072, -589717, 0, 131072, -589716, 0, 131072, -589715, 0, 131072, -589714, 0, 131072, -589713, 0, 131072, -589712, 0, 131072, -589711, 0, 131072, -589710, 0, 131072, -589709, 0, 131072, -589708, 0, 131072, -589707, 0, 131072, -589706, 0, 131072, -589705, 0, 131072, -589704, 0, 131072, -589703, 0, 131072, -589702, 0, 131072, -589701, 0, 131072, -589700, 0, 131072, -589699, 0, 131072, -589698, 0, 131072, -589697, 0, 131072, -589696, 0, 131072, -589695, 0, 131072, -589694, 0, 131072, -589693, 0, 131072, -589692, 0, 131072, -589691, 0, 131072, -589690, 0, 131072, -589689, 0, 131072, -589688, 0, 131072, -589687, 0, 131072, -589686, 0, 131072, -589685, 0, 131072, -589684, 0, 131072, -589683, 0, 131072, -589682, 0, 131072, -589681, 0, 131072, -589680, 0, 131072, -589679, 0, 131072, -589678, 0, 131072, -589677, 0, 131072, -589676, 0, 131072, -589675, 0, 131072, -589674, 0, 131072, -589673, 0, 131072, -589672, 0, 131072, -589671, 0, 131072, -589670, 0, 131072, -589669, 0, 131072, -589668, 0, 131072, -589667, 0, 131072, -589666, 0, 131072, -589665, 0, 131072, -589664, 0, 131072, -589663, 0, 131072, -589662, 0, 131072, -589661, 0, 131072, -589660, 0, 131072, -589659, 0, 131072, -589658, 0, 131072, -589657, 0, 131072, -589656, 0, 131072, -589655, 0, 131072, -589654, 0, 131072, -589653, 0, 131072, -589652, 0, 131072, -589651, 0, 131072, -589650, 0, 131072, -589649, 0, 131072, -589648, 0, 131072, -589647, 0, 131072, -589646, 0, 131072, -589645, 0, 131072, -589644, 0, 131072, -589643, 0, 131072, -589642, 0, 131072, -589641, 0, 131072, -589640, 0, 131072, -589639, 0, 131072, -589638, 0, 131072, -589637, 0, 131072, -589636, 0, 131072, -589635, 0, 131072, -589634, 0, 131072, -589633, 0, 131072, -458856, 0, 131072, -458855, 0, 131072, -458854, 0, 131072, -458853, 0, 131072, -458852, 0, 131072, -458851, 0, 131072, -458850, 0, 131072, -458849, 0, 131072, -458848, 0, 131072, -458847, 0, 131072, -458846, 0, 131072, -458845, 0, 131072, -458844, 0, 131072, -458843, 0, 131072, -458842, 0, 131072, -458841, 0, 131072, -458840, 0, 131072, -458839, 0, 131072, -458838, 0, 131072, -458837, 0, 131072, -458836, 0, 131072, -458835, 0, 131072, -458834, 0, 131072, -458833, 0, 131072, -458832, 0, 131072, -458831, 0, 131072, -458830, 0, 131072, -458829, 0, 131072, -458828, 0, 131072, -458827, 0, 131072, -458826, 0, 131072, -458825, 0, 131072, -458824, 0, 131072, -458823, 0, 131072, -458822, 0, 131072, -458821, 0, 131072, -458820, 0, 131072, -458819, 0, 131072, -458818, 0, 131072, -458817, 0, 131072, -458816, 0, 131072, -458815, 0, 131072, -458814, 0, 131072, -458813, 0, 131072, -458812, 0, 131072, -458811, 0, 131072, -458810, 0, 131072, -458809, 0, 131072, -458808, 0, 131072, -458807, 0, 131072, -458806, 0, 131072, -458805, 0, 131072, -458804, 0, 131072, -458803, 0, 131072, -458802, 0, 131072, -458801, 0, 131072, -458800, 0, 131072, -458799, 0, 131072, -458798, 0, 131072, -458797, 0, 131072, -458796, 0, 131072, -458795, 0, 131072, -458794, 0, 131072, -458793, 0, 131072, -458792, 0, 131072, -458791, 0, 131072, -458790, 0, 131072, -458789, 0, 131072, -458788, 0, 131072, -458787, 0, 131072, -458786, 0, 131072, -458785, 0, 131072, -458784, 0, 131072, -458783, 0, 131072, -458782, 0, 131072, -458781, 0, 131072, -458780, 0, 131072, -458779, 0, 131072, -458778, 0, 131072, -458777, 0, 131072, -458776, 0, 131072, -458775, 0, 131072, -458774, 0, 131072, -458773, 0, 131072, -458772, 0, 131072, -458771, 0, 131072, -458770, 0, 131072, -458769, 0, 131072, -458768, 0, 131072, -458767, 0, 131072, -458766, 0, 131072, -458765, 0, 131072, -458764, 0, 131072, -458763, 0, 131072, -458762, 0, 131072, -458761, 0, 131072, -458760, 0, 131072, -458759, 0, 131072, -458758, 0, 131072, -458757, 0, 131072, -458756, 0, 131072, -458755, 0, 131072, -458754, 0, 131072, -458753, 0, 131072, -524288, 0, 131072, -524287, 0, 131072, -524286, 0, 131072, -524285, 0, 131072, -524284, 0, 131072, -524283, 0, 131072, -524282, 0, 131072, -524281, 0, 131072, -524280, 0, 131072, -524279, 0, 131072, -524278, 0, 131072, -524277, 0, 131072, -524276, 0, 131072, -524275, 0, 131072, -524274, 0, 131072, -524273, 0, 131072, -524272, 0, 131072, -524271, 0, 131072, -524270, 0, 131072, -524269, 0, 131072, -524268, 0, 131072, -524267, 0, 131072, -524266, 0, 131072, -524265, 0, 131072, -524264, 0, 131072, -524263, 0, 131072, -524262, 0, 131072, -524261, 0, 131072, -524260, 0, 131072, -524259, 0, 131072, -524258, 0, 131072, -524257, 0, 131072, -524256, 0, 131072, -524255, 0, 131072, -524254, 0, 131072, -524253, 0, 131072, -524252, 0, 131072, -524251, 0, 131072, -524250, 0, 131072, -524249, 0, 131072, -524248, 0, 131072, -524247, 0, 131072, -524246, 0, 131072, -524245, 0, 131072, -524244, 0, 131072, -524243, 0, 131072, -524242, 0, 131072, -524241, 0, 131072, -524240, 0, 131072, -524239, 0, 131072, -524238, 0, 131072, -524237, 0, 131072, -524236, 0, 131072, -524235, 0, 131072, -524234, 0, 131072, -524233, 0, 131072, -524232, 0, 131072, -524231, 0, 131072, -524230, 0, 131072, -524229, 0, 131072, -524228, 0, 131072, -524227, 0, 131072, -524226, 0, 131072, -524225, 0, 131072, -524224, 0, 131072, -524223, 0, 131072, -524222, 0, 131072, -524221, 0, 131072, -524220, 0, 131072, -524219, 0, 131072, -524218, 0, 131072, -524217, 0, 131072, -524216, 0, 131072, -524215, 0, 131072, -524214, 0, 131072, -524213, 0, 131072, -524212, 0, 131072, -524211, 0, 131072, -524210, 0, 131072, -524209, 0, 131072, -524208, 0, 131072, -524207, 0, 131072, -524206, 0, 131072, -524205, 0, 131072, -524204, 0, 131072, -524203, 0, 131072, -524202, 0, 131072, -524201, 0, 131072, -524200, 0, 131072, -524199, 0, 131072, -524198, 0, 131072, -524197, 0, 131072, -524196, 0, 131072, -524195, 0, 131072, -524194, 0, 131072, -524193, 0, 131072, -524192, 0, 131072, -524191, 0, 131072, -524190, 0, 131072, -524189, 0, 131072, -524188, 0, 131072, -524187, 0, 131072, -524186, 0, 131072, -524185, 0, 131072, -524184, 0, 131072, -524183, 0, 131072, -524182, 0, 131072, -524181, 0, 131072, -524180, 0, 131072, -524179, 0, 131072, -524178, 0, 131072, -524177, 0, 131072, -524176, 0, 131072, -524175, 0, 131072, -524174, 0, 131072, -524173, 0, 131072, -524172, 0, 131072, -524171, 0, 131072, -524170, 0, 131072, -524169, 0, 131072, -524168, 0, 131072, -524167, 0, 131072, -524166, 0, 131072, -524165, 0, 131072, -524164, 0, 131072, -524163, 0, 131072, -524162, 0, 131072, -524161, 0, 131072, -524160, 0, 131072, -524159, 0, 131072, -524158, 0, 131072, -524157, 0, 131072, -524156, 0, 131072, -524155, 0, 131072, -524154, 0, 131072, -524153, 0, 131072, -524152, 0, 131072, -524151, 0, 131072, -524150, 0, 131072, -524149, 0, 131072, -524148, 0, 131072, -524147, 0, 131072, -524146, 0, 131072, -524145, 0, 131072, -524144, 0, 131072, -524143, 0, 131072, -524142, 0, 131072, -524141, 0, 131072, -524140, 0, 131072, -524139, 0, 131072, -524138, 0, 131072, -524137, 0, 131072, -524136, 0, 131072, -524135, 0, 131072, -524134, 0, 131072, -524133, 0, 131072, -524132, 0, 131072, -524131, 0, 131072, -524130, 0, 131072, -524129, 0, 131072, -524128, 0, 131072, -524127, 0, 131072, -524126, 0, 131072, -524125, 0, 131072, -524124, 0, 131072, -524123, 0, 131072, -524122, 0, 131072, -524121, 0, 131072, -524120, 0, 131072, -524119, 0, 131072, -524118, 0, 131072, -524117, 0, 131072, -524116, 0, 131072, -524115, 0, 131072, -524114, 0, 131072, -524113, 0, 131072, -524112, 0, 131072, -524111, 0, 131072, -524110, 0, 131072, -524109, 0, 131072, -524108, 0, 131072, -524107, 0, 131072, -524106, 0, 131072, -524105, 0, 131072, -524104, 0, 131072, -524103, 0, 131072, -524102, 0, 131072, -524101, 0, 131072, -524100, 0, 131072, -524099, 0, 131072, -524098, 0, 131072, -524097, 0, 131072, -524096, 0, 131072, -393319, 0, 131072, -393318, 0, 131072, -393317, 0, 131072, -393316, 0, 131072, -393315, 0, 131072, -393314, 0, 131072, -393313, 0, 131072, -393312, 0, 131072, -393311, 0, 131072, -393310, 0, 131072, -393309, 0, 131072, -393308, 0, 131072, -393307, 0, 131072, -393306, 0, 131072, -393305, 0, 131072, -393304, 0, 131072, -393303, 0, 131072, -393302, 0, 131072, -393301, 0, 131072, -393300, 0, 131072, -393299, 0, 131072, -393298, 0, 131072, -393297, 0, 131072, -393296, 0, 131072, -393295, 0, 131072, -393294, 0, 131072, -393293, 0, 131072, -393292, 0, 131072, -393291, 0, 131072, -393290, 0, 131072, -393289, 0, 131072, -393288, 0, 131072, -393287, 0, 131072, -393286, 0, 131072, -393285, 0, 131072, -393284, 0, 131072, -393283, 0, 131072, -393282, 0, 131072, -393281, 0, 131072, -393280, 0, 131072, -393279, 0, 131072, -393278, 0, 131072, -393277, 0, 131072, -393276, 0, 131072, -393275, 0, 131072, -393274, 0, 131072, -393273, 0, 131072, -393272, 0, 131072, -393271, 0, 131072, -393270, 0, 131072, -393269, 0, 131072, -393268, 0, 131072, -393267, 0, 131072, -393266, 0, 131072, -393265, 0, 131072, -393264, 0, 131072, -393263, 0, 131072, -393262, 0, 131072, -393261, 0, 131072, -393260, 0, 131072, -393259, 0, 131072, -393258, 0, 131072, -393257, 0, 131072, -393256, 0, 131072, -393255, 0, 131072, -393254, 0, 131072, -393253, 0, 131072, -393252, 0, 131072, -393251, 0, 131072, -393250, 0, 131072, -393249, 0, 131072, -393248, 0, 131072, -393247, 0, 131072, -393246, 0, 131072, -393245, 0, 131072, -393244, 0, 131072, -393243, 0, 131072, -393242, 0, 131072, -393241, 0, 131072, -393240, 0, 131072, -393239, 0, 131072, -393238, 0, 131072, -393237, 0, 131072, -393236, 0, 131072, -393235, 0, 131072, -393234, 0, 131072, -393233, 0, 131072, -393232, 0, 131072, -393231, 0, 131072, -393230, 0, 131072, -393229, 0, 131072, -393228, 0, 131072, -393227, 0, 131072, -393226, 0, 131072, -393225, 0, 131072, -393224, 0, 131072, -393223, 0, 131072, -393222, 0, 131072, -393221, 0, 131072, -393220, 0, 131072, -393219, 0, 131072, -393218, 0, 131072, -393217, 0, 131072, -458752, 0, 131072, -458751, 0, 131072, -458750, 0, 131072, -458749, 0, 131072, -458748, 0, 131072, -458747, 0, 131072, -458746, 0, 131072, -458745, 0, 131072, -458744, 0, 131072, -458743, 0, 131072, -458742, 0, 131072, -458741, 0, 131072, -458740, 0, 131072, -458739, 0, 131072, -458738, 0, 131072, -458737, 0, 131072, -458736, 0, 131072, -458735, 0, 131072, -458734, 0, 131072, -458733, 0, 131072, -458732, 0, 131072, -458731, 0, 131072, -458730, 0, 131072, -458729, 0, 131072, -458728, 0, 131072, -458727, 0, 131072, -458726, 0, 131072, -458725, 0, 131072, -458724, 0, 131072, -458723, 0, 131072, -458722, 0, 131072, -458721, 0, 131072, -458720, 0, 131072, -458719, 0, 131072, -458718, 0, 131072, -458717, 0, 131072, -458716, 0, 131072, -458715, 0, 131072, -458714, 0, 131072, -458713, 0, 131072, -458712, 0, 131072, -458711, 0, 131072, -458710, 0, 131072, -458709, 0, 131072, -458708, 0, 131072, -458707, 0, 131072, -458706, 0, 131072, -458705, 0, 131072, -458704, 0, 131072, -458703, 0, 131072, -458702, 0, 131072, -458701, 0, 131072, -458700, 0, 131072, -458699, 0, 131072, -458698, 0, 131072, -458697, 0, 131072, -458696, 0, 131072, -458695, 0, 131072, -458694, 0, 131072, -458693, 0, 131072, -458692, 0, 131072, -458691, 0, 131072, -458690, 0, 131072, -458689, 0, 131072, -458688, 0, 131072, -458687, 0, 131072, -458686, 0, 131072, -458685, 0, 131072, -458684, 0, 131072, -458683, 0, 131072, -458682, 0, 131072, -458681, 0, 131072, -458680, 0, 131072, -458679, 0, 131072, -458678, 0, 131072, -458677, 0, 131072, -458676, 0, 131072, -458675, 0, 131072, -458674, 0, 131072, -458673, 0, 131072, -458672, 0, 131072, -458671, 0, 131072, -458670, 0, 131072, -458669, 0, 131072, -458668, 0, 131072, -458667, 0, 131072, -458666, 0, 131072, -458665, 0, 131072, -458664, 0, 131072, -458663, 0, 131072, -458662, 0, 131072, -458661, 0, 131072, -458660, 0, 131072, -458659, 0, 131072, -458658, 0, 131072, -458657, 0, 131072, -458656, 0, 131072, -458655, 0, 131072, -458654, 0, 131072, -458653, 0, 131072, -458652, 0, 131072, -458651, 0, 131072, -458650, 0, 131072, -458649, 0, 131072, -458648, 0, 131072, -458647, 0, 131072, -458646, 0, 131072, -458645, 0, 131072, -458644, 0, 131072, -458643, 0, 131072, -458642, 0, 131072, -458641, 0, 131072, -458640, 0, 131072, -458639, 0, 131072, -458638, 0, 131072, -458637, 0, 131072, -458636, 0, 131072, -458635, 0, 131072, -458634, 0, 131072, -458633, 0, 131072, -458632, 0, 131072, -458631, 0, 131072, -458630, 0, 131072, -458629, 0, 131072, -458628, 0, 131072, -458627, 0, 131072, -458626, 0, 131072, -458625, 0, 131072, -458624, 0, 131072, -458623, 0, 131072, -458622, 0, 131072, -458621, 0, 131072, -458620, 0, 131072, -458619, 0, 131072, -458618, 0, 131072, -458617, 0, 131072, -458616, 0, 131072, -458615, 0, 131072, -458614, 0, 131072, -458613, 0, 131072, -458612, 0, 131072, -458611, 0, 131072, -458610, 0, 131072, -458609, 0, 131072, -458608, 0, 131072, -458607, 0, 131072, -458606, 0, 131072, -458605, 0, 131072, -458604, 0, 131072, -458603, 0, 131072, -458602, 0, 131072, -458601, 0, 131072, -458600, 0, 131072, -458599, 0, 131072, -458598, 0, 131072, -458597, 0, 131072, -458596, 0, 131072, -458595, 0, 131072, -458594, 0, 131072, -458593, 0, 131072, -458592, 0, 131072, -458591, 0, 131072, -458590, 0, 131072, -458589, 0, 131072, -458588, 0, 131072, -458587, 0, 131072, -458586, 0, 131072, -458585, 0, 131072, -458584, 0, 131072, -458583, 0, 131072, -458582, 0, 131072, -458581, 0, 131072, -458580, 0, 131072, -458579, 0, 131072, -458578, 0, 131072, -458577, 0, 131072, -458576, 0, 131072, -458575, 0, 131072, -458574, 0, 131072, -458573, 0, 131072, -458572, 0, 131072, -458571, 0, 131072, -458570, 0, 131072, -458569, 0, 131072, -458568, 0, 131072, -458567, 0, 131072, -458566, 0, 131072, -458565, 0, 131072, -458564, 0, 131072, -458563, 0, 131072, -458562, 0, 131072, -458561, 0, 131072, -458560, 0, 131072, -327783, 0, 131072, -327782, 0, 131072, -327781, 0, 131072, -327780, 0, 131072, -327779, 0, 131072, -327778, 0, 131072, -327777, 0, 131072, -327776, 0, 131072, -327775, 0, 131072, -327774, 0, 131072, -327773, 0, 131072, -327772, 0, 131072, -327771, 0, 131072, -327770, 0, 131072, -327769, 0, 131072, -327768, 0, 131072, -327767, 0, 131072, -327766, 0, 131072, -327765, 0, 131072, -327764, 0, 131072, -327763, 0, 131072, -327762, 0, 131072, -327761, 0, 131072, -327760, 0, 131072, -327759, 0, 131072, -327758, 0, 131072, -327757, 0, 131072, -327756, 0, 131072, -327755, 0, 131072, -327754, 0, 131072, -327753, 0, 131072, -327752, 0, 131072, -327751, 0, 131072, -327750, 0, 131072, -327749, 0, 131072, -327748, 0, 131072, -327747, 0, 131072, -327746, 0, 131072, -327745, 0, 131072, -327744, 0, 131072, -327743, 0, 131072, -327742, 0, 131072, -327741, 0, 131072, -327740, 0, 131072, -327739, 0, 131072, -327738, 0, 131072, -327737, 0, 131072, -327736, 0, 131072, -327735, 0, 131072, -327734, 0, 131072, -327733, 0, 131072, -327732, 0, 131072, -327731, 0, 131072, -327730, 0, 131072, -327729, 0, 131072, -327728, 0, 131072, -327727, 0, 131072, -327726, 0, 131072, -327725, 0, 131072, -327724, 0, 131072, -327723, 0, 131072, -327722, 0, 131072, -327721, 0, 131072, -327720, 0, 131072, -327719, 0, 131072, -327718, 0, 131072, -327717, 0, 131072, -327716, 0, 131072, -327715, 0, 131072, -327714, 0, 131072, -327713, 0, 131072, -327712, 0, 131072, -327711, 0, 131072, -327710, 0, 131072, -327709, 0, 131072, -327708, 0, 131072, -327707, 0, 131072, -327706, 0, 131072, -327705, 0, 131072, -327704, 0, 131072, -327703, 0, 131072, -327702, 0, 131072, -327701, 0, 131072, -327700, 0, 131072, -327699, 0, 131072, -327698, 0, 131072, -327697, 0, 131072, -327696, 0, 131072, -327695, 0, 131072, -327694, 0, 131072, -327693, 0, 131072, -327692, 0, 131072, -327691, 0, 131072, -327690, 0, 131072, -327689, 0, 131072, -327688, 0, 131072, -327687, 0, 131072, -327686, 0, 131072, -327685, 0, 131072, -327684, 0, 131072, -327683, 0, 131072, -327682, 0, 131072, -327681, 0, 131072, -393216, 0, 131072, -393215, 0, 131072, -393214, 0, 131072, -393213, 0, 131072, -393212, 0, 131072, -393211, 0, 131072, -393210, 0, 131072, -393209, 0, 131072, -393208, 0, 131072, -393207, 0, 131072, -393206, 0, 131072, -393205, 0, 131072, -393204, 0, 131072, -393203, 0, 131072, -393202, 0, 131072, -393201, 0, 131072, -393200, 0, 131072, -393199, 0, 131072, -393198, 0, 131072, -393197, 0, 131072, -393196, 0, 131072, -393195, 0, 131072, -393194, 0, 131072, -393193, 0, 131072, -393192, 0, 131072, -393191, 0, 131072, -393190, 0, 131072, -393189, 0, 131072, -393188, 0, 131072, -393187, 0, 131072, -393186, 0, 131072, -393185, 0, 131072, -393184, 0, 131072, -393183, 0, 131072, -393182, 0, 131072, -393181, 0, 131072, -393180, 0, 131072, -393179, 0, 131072, -393178, 0, 131072, -393177, 0, 131072, -393176, 0, 131072, -393175, 0, 131072, -393174, 0, 131072, -393173, 0, 131072, -393172, 0, 131072, -393171, 0, 131072, -393170, 0, 131072, -393169, 0, 131072, -393168, 0, 131072, -393167, 0, 131072, -393166, 0, 131072, -393165, 0, 131072, -393164, 0, 131072, -393163, 0, 131072, -393162, 0, 131072, -393161, 0, 131072, -393160, 0, 131072, -393159, 0, 131072, -393158, 0, 131072, -393157, 0, 131072, -393156, 0, 131072, -393155, 0, 131072, -393154, 0, 131072, -393153, 0, 131072, -393152, 0, 131072, -393151, 0, 131072, -393150, 0, 131072, -393149, 0, 131072, -393148, 0, 131072, -393147, 0, 131072, -393146, 0, 131072, -393145, 0, 131072, -393144, 0, 131072, -393143, 0, 131072, -393142, 0, 131072, -393141, 0, 131072, -393140, 0, 131072, -393139, 0, 131072, -393138, 0, 131072, -393137, 0, 131072, -393136, 0, 131072, -393135, 0, 131072, -393134, 0, 131072, -393133, 0, 131072, -393132, 0, 131072, -393131, 0, 131072, -393130, 0, 131072, -393129, 0, 131072, -393128, 0, 131072, -393127, 0, 131072, -393126, 0, 131072, -393125, 0, 131072, -393124, 0, 131072, -393123, 0, 131072, -393122, 0, 131072, -393121, 0, 131072, -393120, 0, 131072, -393119, 0, 131072, -393118, 0, 131072, -393117, 0, 131072, -393116, 0, 131072, -393115, 0, 131072, -393114, 0, 131072, -393113, 0, 131072, -393112, 0, 131072, -393111, 0, 131072, -393110, 0, 131072, -393109, 0, 131072, -393108, 0, 131072, -393107, 0, 131072, -393106, 0, 131072, -393105, 0, 131072, -393104, 0, 131072, -393103, 0, 131072, -393102, 0, 131072, -393101, 0, 131072, -393100, 0, 131072, -393099, 0, 131072, -393098, 0, 131072, -393097, 0, 131072, -393096, 0, 131072, -393095, 0, 131072, -393094, 0, 131072, -393093, 0, 131072, -393092, 0, 131072, -393091, 0, 131072, -393090, 0, 131072, -393089, 0, 131072, -393088, 0, 131072, -393087, 0, 131072, -393086, 0, 131072, -393085, 0, 131072, -393084, 0, 131072, -393083, 0, 131072, -393082, 0, 131072, -393081, 0, 131072, -393080, 0, 131072, -393079, 0, 131072, -393078, 0, 131072, -393077, 0, 131072, -393076, 0, 131072, -393075, 0, 131072, -393074, 0, 131072, -393073, 0, 131072, -393072, 0, 131072, -393071, 0, 131072, -393070, 0, 131072, -393069, 0, 131072, -393068, 0, 131072, -393067, 0, 131072, -393066, 0, 131072, -393065, 0, 131072, -393064, 0, 131072, -393063, 0, 131072, -393062, 0, 131072, -393061, 0, 131072, -393060, 0, 131072, -393059, 0, 131072, -393058, 0, 131072, -393057, 0, 131072, -393056, 0, 131072, -393055, 0, 131072, -393054, 0, 131072, -393053, 0, 131072, -393052, 0, 131072, -393051, 0, 131072, -393050, 0, 131072, -393049, 0, 131072, -393048, 0, 131072, -393047, 0, 131072, -393046, 0, 131072, -393045, 0, 131072, -393044, 0, 131072, -393043, 0, 131072, -393042, 0, 131072, -393041, 0, 131072, -393040, 0, 131072, -393039, 0, 131072, -393038, 0, 131072, -393037, 0, 131072, -393036, 0, 131072, -393035, 0, 131072, -393034, 0, 131072, -393033, 0, 131072, -393032, 0, 131072, -393031, 0, 131072, -393030, 0, 131072, -393029, 0, 131072, -393028, 0, 131072, -393027, 0, 131072, -393026, 0, 131072, -393025, 0, 131072, -393024, 0, 131072, -393023, 0, 131072, -262246, 0, 131072, -262245, 0, 131072, -262244, 0, 131072, -262243, 0, 131072, -262242, 0, 131072, -262241, 0, 131072, -262240, 0, 131072, -262239, 0, 131072, -262238, 0, 131072, -262237, 0, 131072, -262236, 0, 131072, -262235, 0, 131072, -262234, 0, 131072, -262233, 0, 131072, -262232, 0, 131072, -262231, 0, 131072, -262230, 0, 131072, -262229, 0, 131072, -262228, 0, 131072, -262227, 0, 131072, -262226, 0, 131072, -262225, 0, 131072, -262224, 0, 131072, -262223, 0, 131072, -262222, 0, 131072, -262221, 0, 131072, -262220, 0, 131072, -262219, 0, 131072, -262218, 0, 131072, -262217, 0, 131072, -262216, 0, 131072, -262215, 0, 131072, -262214, 0, 131072, -262213, 0, 131072, -262212, 0, 131072, -262211, 0, 131072, -262210, 0, 131072, -262209, 0, 131072, -262208, 0, 131072, -262207, 0, 131072, -262206, 0, 131072, -262205, 0, 131072, -262204, 0, 131072, -262203, 0, 131072, -262202, 0, 131072, -262201, 0, 131072, -262200, 0, 131072, -262199, 0, 131072, -262198, 0, 131072, -262197, 0, 131072, -262196, 0, 131072, -262195, 0, 131072, -262194, 0, 131072, -262193, 0, 131072, -262192, 0, 131072, -262191, 0, 131072, -262190, 0, 131072, -262189, 0, 131072, -262188, 0, 131072, -262187, 0, 131072, -262186, 0, 131072, -262185, 0, 131072, -262184, 0, 131072, -262183, 0, 131072, -262182, 0, 131072, -262181, 0, 131072, -262180, 0, 131072, -262179, 0, 131072, -262178, 0, 131072, -262177, 0, 131072, -262176, 0, 131072, -262175, 0, 131072, -262174, 0, 131072, -262173, 0, 131072, -262172, 0, 131072, -262171, 0, 131072, -262170, 0, 131072, -262169, 0, 131072, -262168, 0, 131072, -262167, 0, 131072, -262166, 0, 131072, -262165, 0, 131072, -262164, 0, 131072, -262163, 0, 131072, -262162, 0, 131072, -262161, 0, 131072, -262160, 0, 131072, -262159, 0, 131072, -262158, 0, 131072, -262157, 0, 131072, -262156, 0, 131072, -262155, 0, 131072, -262154, 0, 131072, -262153, 0, 131072, -262152, 0, 131072, -262151, 0, 131072, -262150, 0, 131072, -262149, 0, 131072, -262148, 0, 131072, -262147, 0, 131072, -262146, 0, 131072, -262145, 0, 131072, -327680, 0, 131072, -327679, 0, 131072, -327678, 0, 131072, -327677, 0, 131072, -327676, 0, 131072, -327675, 0, 131072, -327674, 0, 131072, -327673, 0, 131072, -327672, 0, 131072, -327671, 0, 131072, -327670, 0, 131072, -327669, 0, 131072, -327668, 0, 131072, -327667, 0, 131072, -327666, 0, 131072, -327665, 0, 131072, -327664, 0, 131072, -327663, 0, 131072, -327662, 0, 131072, -327661, 0, 131072, -327660, 0, 131072, -327659, 0, 131072, -327658, 0, 131072, -327657, 0, 131072, -327656, 0, 131072, -327655, 0, 131072, -327654, 0, 131072, -327653, 0, 131072, -327652, 0, 131072, -327651, 0, 131072, -327650, 0, 131072, -327649, 0, 131072, -327648, 0, 131072, -327647, 0, 131072, -327646, 0, 131072, -327645, 0, 131072, -327644, 0, 131072, -327643, 0, 131072, -327642, 0, 131072, -327641, 0, 131072, -327640, 0, 131072, -327639, 0, 131072, -327638, 0, 131072, -327637, 0, 131072, -327636, 0, 131072, -327635, 0, 131072, -327634, 0, 131072, -327633, 0, 131072, -327632, 0, 131072, -327631, 0, 131072, -327630, 0, 131072, -327629, 0, 131072, -327628, 0, 131072, -327627, 0, 131072, -327626, 0, 131072, -327625, 0, 131072, -327624, 0, 131072, -327623, 0, 131072, -327622, 0, 131072, -327621, 0, 131072, -327620, 0, 131072, -327619, 0, 131072, -327618, 0, 131072, -327617, 0, 131072, -327616, 0, 131072, -327615, 0, 131072, -327614, 0, 131072, -327613, 0, 131072, -327612, 0, 131072, -327611, 0, 131072, -327610, 0, 131072, -327609, 0, 131072, -327608, 0, 131072, -327607, 0, 131072, -327606, 0, 131072, -327605, 0, 131072, -327604, 0, 131072, -327603, 0, 131072, -327602, 0, 131072, -327601, 0, 131072, -327600, 0, 131072, -327599, 0, 131072, -327598, 0, 131072, -327597, 0, 131072, -327596, 0, 131072, -327595, 0, 131072, -327594, 0, 131072, -327593, 0, 131072, -327592, 0, 131072, -327591, 0, 131072, -327590, 0, 131072, -327589, 0, 131072, -327588, 0, 131072, -327587, 0, 131072, -327586, 0, 131072, -327585, 0, 131072, -327584, 0, 131072, -327583, 0, 131072, -327582, 0, 131072, -327581, 0, 131072, -327580, 0, 131072, -327579, 0, 131072, -327578, 0, 131072, -327577, 0, 131072, -327576, 0, 131072, -327575, 0, 131072, -327574, 0, 131072, -327573, 0, 131072, -327572, 0, 131072, -327571, 0, 131072, -327570, 0, 131072, -327569, 0, 131072, -327568, 0, 131072, -327567, 0, 131072, -327566, 0, 131072, -327565, 0, 131072, -327564, 0, 131072, -327563, 0, 131072, -327562, 0, 131072, -327561, 0, 131072, -327560, 0, 131072, -327559, 0, 131072, -327558, 0, 131072, -327557, 0, 131072, -327556, 0, 131072, -327555, 0, 131072, -327554, 0, 131072, -327553, 0, 131072, -327552, 0, 131072, -327551, 0, 131072, -327550, 0, 131072, -327549, 0, 131072, -327548, 0, 131072, -327547, 0, 131072, -327546, 0, 131072, -327545, 0, 131072, -327544, 0, 131072, -327543, 0, 131072, -327542, 0, 131072, -327541, 0, 131072, -327540, 0, 131072, -327539, 0, 131072, -327538, 0, 131072, -327537, 0, 131072, -327536, 0, 131072, -327535, 0, 131072, -327534, 0, 131072, -327533, 0, 131072, -327532, 0, 131072, -327531, 0, 131072, -327530, 0, 131072, -327529, 0, 131072, -327528, 0, 131072, -327527, 0, 131072, -327526, 0, 131072, -327525, 0, 131072, -327524, 0, 131072, -327523, 0, 131072, -327522, 0, 131072, -327521, 0, 131072, -327520, 0, 131072, -327519, 0, 131072, -327518, 0, 131072, -327517, 0, 131072, -327516, 0, 131072, -327515, 0, 131072, -327514, 0, 131072, -327513, 0, 131072, -327512, 0, 131072, -327511, 0, 131072, -327510, 0, 131072, -327509, 0, 131072, -327508, 0, 131072, -327507, 0, 131072, -327506, 0, 131072, -327505, 0, 131072, -327504, 0, 131072, -327503, 0, 131072, -327502, 0, 131072, -327501, 0, 131072, -327500, 0, 131072, -327499, 0, 131072, -327498, 0, 131072, -327497, 0, 131072, -327496, 0, 131072, -327495, 0, 131072, -327494, 0, 131072, -327493, 0, 131072, -327492, 0, 131072, -327491, 0, 131072, -327490, 0, 131072, -327489, 0, 131072, -327488, 0, 131072, -327487, 0, 131072, -327486, 0, 131072, -196710, 0, 131072, -196709, 0, 131072, -196708, 0, 131072, -196707, 0, 131072, -196706, 0, 131072, -196705, 0, 131072, -196704, 0, 131072, -196703, 0, 131072, -196702, 0, 131072, -196701, 0, 131072, -196700, 0, 131072, -196699, 0, 131072, -196698, 0, 131072, -196697, 0, 131072, -196696, 0, 131072, -196695, 0, 131072, -196694, 0, 131072, -196693, 0, 131072, -196692, 0, 131072, -196691, 0, 131072, -196690, 0, 131072, -196689, 0, 131072, -196688, 0, 131072, -196687, 0, 131072, -196686, 0, 131072, -196685, 0, 131072, -196684, 0, 131072, -196683, 0, 131072, -196682, 0, 131072, -196681, 0, 131072, -196680, 0, 131072, -196679, 0, 131072, -196678, 0, 131072, -196677, 0, 131072, -196676, 0, 131072, -196675, 0, 131072, -196674, 0, 131072, -196673, 0, 131072, -196672, 0, 131072, -196671, 0, 131072, -196670, 0, 131072, -196669, 0, 131072, -196668, 0, 131072, -196667, 0, 131072, -196666, 0, 131072, -196665, 0, 131072, -196664, 0, 131072, -196663, 0, 131072, -196662, 0, 131072, -196661, 0, 131072, -196660, 0, 131072, -196659, 0, 131072, -196658, 0, 131072, -196657, 0, 131072, -196656, 0, 131072, -196655, 0, 131072, -196654, 0, 131072, -196653, 0, 131072, -196652, 0, 131072, -196651, 0, 131072, -196650, 0, 131072, -196649, 0, 131072, -196648, 0, 131072, -196647, 0, 131072, -196646, 0, 131072, -196645, 0, 131072, -196644, 0, 131072, -196643, 0, 131072, -196642, 0, 131072, -196641, 0, 131072, -196640, 0, 131072, -196639, 0, 131072, -196638, 0, 131072, -196637, 0, 131072, -196636, 0, 131072, -196635, 0, 131072, -196634, 0, 131072, -196633, 0, 131072, -196632, 0, 131072, -196631, 0, 131072, -196630, 0, 131072, -196629, 0, 131072, -196628, 0, 131072, -196627, 0, 131072, -196626, 0, 131072, -196625, 0, 131072, -196624, 0, 131072, -196623, 0, 131072, -196622, 0, 131072, -196621, 0, 131072, -196620, 0, 131072, -196619, 0, 131072, -196618, 0, 131072, -196617, 0, 131072, -196616, 0, 131072, -196615, 0, 131072, -196614, 0, 131072, -196613, 0, 131072, -196612, 0, 131072, -196611, 0, 131072, -196610, 0, 131072, -196609, 0, 131072, -262144, 0, 131072, -262143, 0, 131072, -262142, 0, 131072, -262141, 0, 131072, -262140, 0, 131072, -262139, 0, 131072, -262138, 0, 131072, -262137, 0, 131072, -262136, 0, 131072, -262135, 0, 131072, -262134, 0, 131072, -262133, 0, 131072, -262132, 0, 131072, -262131, 0, 131072, -262130, 0, 131072, -262129, 0, 131072, -262128, 0, 131072, -262127, 0, 131072, -262126, 0, 131072, -262125, 0, 131072, -262124, 0, 131072, -262123, 0, 131072, -262122, 0, 131072, -262121, 0, 131072, -262120, 0, 131072, -262119, 0, 131072, -262118, 0, 131072, -262117, 0, 131072, -262116, 0, 131072, -262115, 0, 131072, -262114, 0, 131072, -262113, 0, 131072, -262112, 0, 131072, -262111, 0, 131072, -262110, 0, 131072, -262109, 0, 131072, -262108, 0, 131072, -262107, 0, 131072, -262106, 0, 131072, -262105, 0, 131072, -262104, 0, 131072, -262103, 0, 131072, -262102, 0, 131072, -262101, 0, 131072, -262100, 0, 131072, -262099, 0, 131072, -262098, 0, 131072, -262097, 0, 131072, -262096, 0, 131072, -262095, 0, 131072, -262094, 0, 131072, -262093, 0, 131072, -262092, 0, 131072, -262091, 0, 131072, -262090, 0, 131072, -262089, 0, 131072, -262088, 0, 131072, -262087, 0, 131072, -262086, 0, 131072, -262085, 0, 131072, -262084, 0, 131072, -262083, 0, 131072, -262082, 0, 131072, -262081, 0, 131072, -262080, 0, 131072, -262079, 0, 131072, -262078, 0, 131072, -262077, 0, 131072, -262076, 0, 131072, -262075, 0, 131072, -262074, 0, 131072, -262073, 0, 131072, -262072, 0, 131072, -262071, 0, 131072, -262070, 0, 131072, -262069, 0, 131072, -262068, 0, 131072, -262067, 0, 131072, -262066, 0, 131072, -262065, 0, 131072, -262064, 0, 131072, -262063, 0, 131072, -262062, 0, 131072, -262061, 0, 131072, -262060, 0, 131072, -262059, 0, 131072, -262058, 0, 131072, -262057, 0, 131072, -262056, 0, 131072, -262055, 0, 131072, -262054, 0, 131072, -262053, 0, 131072, -262052, 0, 131072, -262051, 0, 131072, -262050, 0, 131072, -262049, 0, 131072, -262048, 0, 131072, -262047, 0, 131072, -262046, 0, 131072, -262045, 0, 131072, -262044, 0, 131072, -262043, 0, 131072, -262042, 0, 131072, -262041, 0, 131072, -262040, 0, 131072, -262039, 0, 131072, -262038, 0, 131072, -262037, 0, 131072, -262036, 0, 131072, -262035, 0, 131072, -262034, 0, 131072, -262033, 0, 131072, -262032, 0, 131072, -262031, 0, 131072, -262030, 0, 131072, -262029, 0, 131072, -262028, 0, 131072, -262027, 0, 131072, -262026, 0, 131072, -262025, 0, 131072, -262024, 0, 131072, -262023, 0, 131072, -262022, 0, 131072, -262021, 0, 131072, -262020, 0, 131072, -262019, 0, 131072, -262018, 0, 131072, -262017, 0, 131072, -262016, 0, 131072, -262015, 0, 131072, -262014, 0, 131072, -262013, 0, 131072, -262012, 0, 131072, -262011, 0, 131072, -262010, 0, 131072, -262009, 0, 131072, -262008, 0, 131072, -262007, 0, 131072, -262006, 0, 131072, -262005, 0, 131072, -262004, 0, 131072, -262003, 0, 131072, -262002, 0, 131072, -262001, 0, 131072, -262000, 0, 131072, -261999, 0, 131072, -261998, 0, 131072, -261997, 0, 131072, -261996, 0, 131072, -261995, 0, 131072, -261994, 0, 131072, -261993, 0, 131072, -261992, 0, 131072, -261991, 0, 131072, -261990, 0, 131072, -261989, 0, 131072, -261988, 0, 131072, -261987, 0, 131072, -261986, 0, 131072, -261985, 0, 131072, -261984, 0, 131072, -261983, 0, 131072, -261982, 0, 131072, -261981, 0, 131072, -261980, 0, 131072, -261979, 0, 131072, -261978, 0, 131072, -261977, 0, 131072, -261976, 0, 131072, -261975, 0, 131072, -261974, 0, 131072, -261973, 0, 131072, -261972, 0, 131072, -261971, 0, 131072, -261970, 0, 131072, -261969, 0, 131072, -261968, 0, 131072, -261967, 0, 131072, -261966, 0, 131072, -261965, 0, 131072, -261964, 0, 131072, -261963, 0, 131072, -261962, 0, 131072, -261961, 0, 131072, -261960, 0, 131072, -261959, 0, 131072, -261958, 0, 131072, -261957, 0, 131072, -261956, 0, 131072, -261955, 0, 131072, -261954, 0, 131072, -261953, 0, 131072, -261952, 0, 131072, -261951, 0, 131072, -261950, 0, 131072, -131173, 0, 131072, -131172, 0, 131072, -131171, 0, 131072, -131170, 0, 131072, -131169, 0, 131072, -131168, 0, 131072, -131167, 0, 131072, -131166, 0, 131072, -131165, 0, 131072, -131164, 0, 131072, -131163, 0, 131072, -131162, 0, 131072, -131161, 0, 131072, -131160, 0, 131072, -131159, 0, 131072, -131158, 0, 131072, -131157, 0, 131072, -131156, 0, 131072, -131155, 0, 131072, -131154, 0, 131072, -131153, 0, 131072, -131152, 0, 131072, -131151, 0, 131072, -131150, 0, 131072, -131149, 0, 131072, -131148, 0, 131072, -131147, 0, 131072, -131146, 0, 131072, -131145, 0, 131072, -131144, 0, 131072, -131143, 0, 131072, -131142, 0, 131072, -131141, 0, 131072, -131140, 0, 131072, -131139, 0, 131072, -131138, 0, 131072, -131137, 0, 131072, -131136, 0, 131072, -131135, 0, 131072, -131134, 0, 131072, -131133, 0, 131072, -131132, 0, 131072, -131131, 0, 131072, -131130, 0, 131072, -131129, 0, 131072, -131128, 0, 131072, -131127, 0, 131072, -131126, 0, 131072, -131125, 0, 131072, -131124, 0, 131072, -131123, 0, 131072, -131122, 0, 131072, -131121, 0, 131072, -131120, 0, 131072, -131119, 0, 131072, -131118, 0, 131072, -131117, 0, 131072, -131116, 0, 131072, -131115, 0, 131072, -131114, 0, 131072, -131113, 0, 131072, -131112, 0, 131072, -131111, 0, 131072, -131110, 0, 131072, -131109, 0, 131072, -131108, 0, 131072, -131107, 0, 131072, -131106, 0, 131072, -131105, 0, 131072, -131104, 0, 131072, -131103, 0, 131072, -131102, 0, 131072, -131101, 0, 131072, -131100, 0, 131072, -131099, 0, 131072, -131098, 0, 131072, -131097, 0, 131072, -131096, 0, 131072, -131095, 0, 131072, -131094, 0, 131072, -131093, 0, 131072, -131092, 0, 131072, -131091, 0, 131072, -131090, 0, 131072, -131089, 0, 131072, -131088, 0, 131072, -131087, 0, 131072, -131086, 0, 131072, -131085, 0, 131072, -131084, 0, 131072, -131083, 0, 131072, -131082, 0, 131072, -131081, 0, 131072, -131080, 0, 131072, -131079, 0, 131072, -131078, 0, 131072, -131077, 0, 131072, -131076, 0, 131072, -131075, 0, 131072, -131074, 0, 131072, -131073, 0, 131072, -196608, 0, 131072, -196607, 0, 131072, -196606, 0, 131072, -196605, 0, 131072, -196604, 0, 131072, -196603, 0, 131072, -196602, 0, 131072, -196601, 0, 131072, -196600, 0, 131072, -196599, 0, 131072, -196598, 0, 131072, -196597, 0, 131072, -196596, 0, 131072, -196595, 0, 131072, -196594, 0, 131072, -196593, 0, 131072, -196592, 0, 131072, -196591, 0, 131072, -196590, 0, 131072, -196589, 0, 131072, -196588, 0, 131072, -196587, 0, 131072, -196586, 0, 131072, -196585, 0, 131072, -196584, 0, 131072, -196583, 0, 131072, -196582, 0, 131072, -196581, 0, 131072, -196580, 0, 131072, -196579, 0, 131072, -196578, 0, 131072, -196577, 0, 131072, -196576, 0, 131072, -196575, 0, 131072, -196574, 0, 131072, -196573, 0, 131072, -196572, 0, 131072, -196571, 0, 131072, -196570, 0, 131072, -196569, 0, 131072, -196568, 0, 131072, -196567, 0, 131072, -196566, 0, 131072, -196565, 0, 131072, -196564, 0, 131072, -196563, 0, 131072, -196562, 0, 131072, -196561, 0, 131072, -196560, 0, 131072, -196559, 0, 131072, -196558, 0, 131072, -196557, 0, 131072, -196556, 0, 131072, -196555, 0, 131072, -196554, 0, 131072, -196553, 0, 131072, -196552, 0, 131072, -196551, 0, 131072, -196550, 0, 131072, -196549, 0, 131072, -196548, 0, 131072, -196547, 0, 131072, -196546, 0, 131072, -196545, 0, 131072, -196544, 0, 131072, -196543, 0, 131072, -196542, 0, 131072, -196541, 0, 131072, -196540, 0, 131072, -196539, 0, 131072, -196538, 0, 131072, -196537, 0, 131072, -196536, 0, 131072, -196535, 0, 131072, -196534, 0, 131072, -196533, 0, 131072, -196532, 0, 131072, -196531, 0, 131072, -196530, 0, 131072, -196529, 0, 131072, -196528, 0, 131072, -196527, 0, 131072, -196526, 0, 131072, -196525, 0, 131072, -196524, 0, 131072, -196523, 0, 131072, -196522, 0, 131072, -196521, 0, 131072, -196520, 0, 131072, -196519, 0, 131072, -196518, 0, 131072, -196517, 0, 131072, -196516, 0, 131072, -196515, 0, 131072, -196514, 0, 131072, -196513, 0, 131072, -196512, 0, 131072, -196511, 0, 131072, -196510, 0, 131072, -196509, 0, 131072, -196508, 0, 131072, -196507, 0, 131072, -196506, 0, 131072, -196505, 0, 131072, -196504, 0, 131072, -196503, 0, 131072, -196502, 0, 131072, -196501, 0, 131072, -196500, 0, 131072, -196499, 0, 131072, -196498, 0, 131072, -196497, 0, 131072, -196496, 0, 131072, -196495, 0, 131072, -196494, 0, 131072, -196493, 0, 131072, -196492, 0, 131072, -196491, 0, 131072, -196490, 0, 131072, -196489, 0, 131072, -196488, 0, 131072, -196487, 0, 131072, -196486, 0, 131072, -196485, 0, 131072, -196484, 0, 131072, -196483, 0, 131072, -196482, 0, 131072, -196481, 0, 131072, -196480, 0, 131072, -196479, 0, 131072, -196478, 0, 131072, -196477, 0, 131072, -196476, 0, 131072, -196475, 0, 131072, -196474, 0, 131072, -196473, 0, 131072, -196472, 0, 131072, -196471, 0, 131072, -196470, 0, 131072, -196469, 0, 131072, -196468, 0, 131072, -196467, 0, 131072, -196466, 0, 131072, -196465, 0, 131072, -196464, 0, 131072, -196463, 0, 131072, -196462, 0, 131072, -196461, 0, 131072, -196460, 0, 131072, -196459, 0, 131072, -196458, 0, 131072, -196457, 0, 131072, -196456, 0, 131072, -196455, 0, 131072, -196454, 0, 131072, -196453, 0, 131072, -196452, 0, 131072, -196451, 0, 131072, -196450, 0, 131072, -196449, 0, 131072, -196448, 0, 131072, -196447, 0, 131072, -196446, 0, 131072, -196445, 0, 131072, -196444, 0, 131072, -196443, 0, 131072, -196442, 0, 131072, -196441, 0, 131072, -196440, 0, 131072, -196439, 0, 131072, -196438, 0, 131072, -196437, 0, 131072, -196436, 0, 131072, -196435, 0, 131072, -196434, 0, 131072, -196433, 0, 131072, -196432, 0, 131072, -196431, 0, 131072, -196430, 0, 131072, -196429, 0, 131072, -196428, 0, 131072, -196427, 0, 131072, -196426, 0, 131072, -196425, 0, 131072, -196424, 0, 131072, -196423, 0, 131072, -196422, 0, 131072, -196421, 0, 131072, -196420, 0, 131072, -196419, 0, 131072, -196418, 0, 131072, -196417, 0, 131072, -196416, 0, 131072, -196415, 0, 131072, -196414, 0, 131072, -196413, 0, 131072, -65637, 0, 131072, -65636, 0, 131072, -65635, 0, 131072, -65634, 0, 131072, -65633, 0, 131072, -65632, 0, 131072, -65631, 0, 131072, -65630, 0, 131072, -65629, 0, 131072, -65628, 0, 131072, -65627, 0, 131072, -65626, 0, 131072, -65625, 0, 131072, -65624, 0, 131072, -65623, 0, 131072, -65622, 0, 131072, -65621, 0, 131072, -65620, 0, 131072, -65619, 0, 131072, -65618, 0, 131072, -65617, 0, 131072, -65616, 0, 131072, -65615, 0, 131072, -65614, 0, 131072, -65613, 0, 131072, -65612, 0, 131072, -65611, 0, 131072, -65610, 0, 131072, -65609, 0, 131072, -65608, 0, 131072, -65607, 0, 131072, -65606, 0, 131072, -65605, 0, 131072, -65604, 0, 131072, -65603, 0, 131072, -65602, 0, 131072, -65601, 0, 131072, -65600, 0, 131072, -65599, 0, 131072, -65598, 0, 131072, -65597, 0, 131072, -65596, 0, 131072, -65595, 0, 131072, -65594, 0, 131072, -65593, 0, 131072, -65592, 0, 131072, -65591, 0, 131072, -65590, 0, 131072, -65589, 0, 131072, -65588, 0, 131072, -65587, 0, 131072, -65586, 0, 131072, -65585, 0, 131072, -65584, 0, 131072, -65583, 0, 131072, -65582, 0, 131072, -65581, 0, 131072, -65580, 0, 131072, -65579, 0, 131072, -65578, 0, 131072, -65577, 0, 131072, -65576, 0, 131072, -65575, 0, 131072, -65574, 0, 131072, -65573, 0, 131072, -65572, 0, 131072, -65571, 0, 131072, -65570, 0, 131072, -65569, 0, 131072, -65568, 0, 131072, -65567, 0, 131072, -65566, 0, 131072, -65565, 0, 131072, -65564, 0, 131072, -65563, 0, 131072, -65562, 0, 131072, -65561, 0, 131072, -65560, 0, 131072, -65559, 0, 131072, -65558, 0, 131072, -65557, 0, 131072, -65556, 0, 131072, -65555, 0, 131072, -65554, 0, 131072, -65553, 0, 131072, -65552, 0, 131072, -65551, 0, 131072, -65550, 0, 131072, -65549, 0, 131072, -65548, 0, 131072, -65547, 0, 131072, -65546, 0, 131072, -65545, 0, 131072, -65544, 0, 131072, -65543, 0, 131072, -65542, 0, 131072, -65541, 0, 131072, -65540, 0, 131072, -65539, 0, 131072, -65538, 0, 131072, -65537, 0, 131072, -131072, 0, 131072, -131071, 0, 131072, -131070, 0, 131072, -131069, 0, 131072, -131068, 0, 131072, -131067, 0, 131072, -131066, 0, 131072, -131065, 0, 131072, -131064, 0, 131072, -131063, 0, 131072, -131062, 0, 131072, -131061, 0, 131072, -131060, 0, 131072, -131059, 0, 131072, -131058, 0, 131072, -131057, 0, 131072, -131056, 0, 131072, -131055, 0, 131072, -131054, 0, 131072, -131053, 0, 131072, -131052, 0, 131072, -131051, 0, 131072, -131050, 0, 131072, -131049, 0, 131072, -131048, 0, 131072, -131047, 0, 131072, -131046, 0, 131072, -131045, 0, 131072, -131044, 0, 131072, -131043, 0, 131072, -131042, 0, 131072, -131041, 0, 131072, -131040, 0, 131072, -131039, 0, 131072, -131038, 0, 131072, -131037, 0, 131072, -131036, 0, 131072, -131035, 0, 131072, -131034, 0, 131072, -131033, 0, 131072, -131032, 0, 131072, -131031, 0, 131072, -131030, 0, 131072, -131029, 0, 131072, -131028, 0, 131072, -131027, 0, 131072, -131026, 0, 131072, -131025, 0, 131072, -131024, 0, 131072, -131023, 0, 131072, -131022, 0, 131072, -131021, 0, 131072, -131020, 0, 131072, -131019, 0, 131072, -131018, 0, 131072, -131017, 0, 131072, -131016, 0, 131072, -131015, 0, 131072, -131014, 0, 131072, -131013, 0, 131072, -131012, 0, 131072, -131011, 0, 131072, -131010, 0, 131072, -131009, 0, 131072, -131008, 0, 131072, -131007, 0, 131072, -131006, 0, 131072, -131005, 0, 131072, -131004, 0, 131072, -131003, 0, 131072, -131002, 0, 131072, -131001, 0, 131072, -131000, 0, 131072, -130999, 0, 131072, -130998, 0, 131072, -130997, 0, 131072, -130996, 0, 131072, -130995, 0, 131072, -130994, 0, 131072, -130993, 0, 131072, -130992, 0, 131072, -130991, 0, 131072, -130990, 0, 131072, -130989, 0, 131072, -130988, 0, 131072, -130987, 0, 131072, -130986, 0, 131072, -130985, 0, 131072, -130984, 0, 131072, -130983, 0, 131072, -130982, 0, 131072, -130981, 0, 131072, -130980, 0, 131072, -130979, 0, 131072, -130978, 0, 131072, -130977, 0, 131072, -130976, 0, 131072, -130975, 0, 131072, -130974, 0, 131072, -130973, 0, 131072, -130972, 0, 131072, -130971, 0, 131072, -130970, 0, 131072, -130969, 0, 131072, -130968, 0, 131072, -130967, 0, 131072, -130966, 0, 131072, -130965, 0, 131072, -130964, 0, 131072, -130963, 0, 131072, -130962, 0, 131072, -130961, 0, 131072, -130960, 0, 131072, -130959, 0, 131072, -130958, 0, 131072, -130957, 0, 131072, -130956, 0, 131072, -130955, 0, 131072, -130954, 0, 131072, -130953, 0, 131072, -130952, 0, 131072, -130951, 0, 131072, -130950, 0, 131072, -130949, 0, 131072, -130948, 0, 131072, -130947, 0, 131072, -130946, 0, 131072, -130945, 0, 131072, -130944, 0, 131072, -130943, 0, 131072, -130942, 0, 131072, -130941, 0, 131072, -130940, 0, 131072, -130939, 0, 131072, -130938, 0, 131072, -130937, 0, 131072, -130936, 0, 131072, -130935, 0, 131072, -130934, 0, 131072, -130933, 0, 131072, -130932, 0, 131072, -130931, 0, 131072, -130930, 0, 131072, -130929, 0, 131072, -130928, 0, 131072, -130927, 0, 131072, -130926, 0, 131072, -130925, 0, 131072, -130924, 0, 131072, -130923, 0, 131072, -130922, 0, 131072, -130921, 0, 131072, -130920, 0, 131072, -130919, 0, 131072, -130918, 0, 131072, -130917, 0, 131072, -130916, 0, 131072, -130915, 0, 131072, -130914, 0, 131072, -130913, 0, 131072, -130912, 0, 131072, -130911, 0, 131072, -130910, 0, 131072, -130909, 0, 131072, -130908, 0, 131072, -130907, 0, 131072, -130906, 0, 131072, -130905, 0, 131072, -130904, 0, 131072, -130903, 0, 131072, -130902, 0, 131072, -130901, 0, 131072, -130900, 0, 131072, -130899, 0, 131072, -130898, 0, 131072, -130897, 0, 131072, -130896, 0, 131072, -130895, 0, 131072, -130894, 0, 131072, -130893, 0, 131072, -130892, 0, 131072, -130891, 0, 131072, -130890, 0, 131072, -130889, 0, 131072, -130888, 0, 131072, -130887, 0, 131072, -130886, 0, 131072, -130885, 0, 131072, -130884, 0, 131072, -130883, 0, 131072, -130882, 0, 131072, -130881, 0, 131072, -130880, 0, 131072, -130879, 0, 131072, -130878, 0, 131072, -130877, 0, 131072, -130876, 0, 131072, -100, 0, 131072, -99, 0, 131072, -98, 0, 131072, -97, 0, 131072, -96, 0, 131072, -95, 0, 131072, -94, 0, 131072, -93, 0, 131072, -92, 0, 131072, -91, 0, 131072, -90, 0, 131072, -89, 0, 131072, -88, 0, 131072, -87, 0, 131072, -86, 0, 131072, -85, 0, 131072, -84, 0, 131072, -83, 0, 131072, -82, 0, 131072, -81, 0, 131072, -80, 0, 131072, -79, 0, 131072, -78, 0, 131072, -77, 0, 131072, -76, 0, 131072, -75, 0, 131072, -74, 0, 131072, -73, 0, 131072, -72, 0, 131072, -71, 0, 131072, -70, 0, 131072, -69, 0, 131072, -68, 0, 131072, -67, 0, 131072, -66, 0, 131072, -65, 0, 131072, -64, 0, 131072, -63, 0, 131072, -62, 0, 131072, -61, 0, 131072, -60, 0, 131072, -59, 0, 131072, -58, 0, 131072, -57, 0, 131072, -56, 0, 131072, -55, 0, 131072, -54, 0, 131072, -53, 0, 131072, -52, 0, 131072, -51, 0, 131072, -50, 0, 131072, -49, 0, 131072, -48, 0, 131072, -47, 0, 131072, -46, 0, 131072, -45, 0, 131072, -44, 0, 131072, -43, 0, 131072, -42, 0, 131072, -41, 0, 131072, -40, 0, 131072, -39, 0, 131072, -38, 0, 131072, -37, 0, 131072, -36, 0, 131072, -35, 0, 131072, -34, 0, 131072, -33, 0, 131072, -32, 0, 131072, -31, 0, 131072, -30, 0, 131072, -29, 0, 131072, -28, 0, 131072, -27, 0, 131072, -26, 0, 131072, -25, 0, 131072, -24, 0, 131072, -23, 0, 131072, -22, 0, 131072, -21, 0, 131072, -20, 0, 131072, -19, 0, 131072, -18, 0, 131072, -17, 0, 131072, -16, 0, 131072, -15, 0, 131072, -14, 0, 131072, -13, 0, 131072, -12, 0, 131072, -11, 0, 131072, -10, 0, 131072, -9, 0, 131072, -8, 0, 131072, -7, 0, 131072, -6, 0, 131072, -5, 0, 131072, -4, 0, 131072, -3, 0, 131072, -2, 0, 131072, -1, 0, 131072, -65536, 0, 131072, -65535, 0, 131072, -65534, 0, 131072, -65533, 0, 131072, -65532, 0, 131072, -65531, 0, 131072, -65530, 0, 131072, -65529, 0, 131072, -65528, 0, 131072, -65527, 0, 131072, -65526, 0, 131072, -65525, 0, 131072, -65524, 0, 131072, -65523, 0, 131072, -65522, 0, 131072, -65521, 0, 131072, -65520, 0, 131072, -65519, 0, 131072, -65518, 0, 131072, -65517, 0, 131072, -65516, 0, 131072, -65515, 0, 131072, -65514, 0, 131072, -65513, 0, 131072, -65512, 0, 131072, -65511, 0, 131072, -65510, 0, 131072, -65509, 0, 131072, -65508, 0, 131072, -65507, 0, 131072, -65506, 0, 131072, -65505, 0, 131072, -65504, 0, 131072, -65503, 0, 131072, -65502, 0, 131072, -65501, 0, 131072, -65500, 0, 131072, -65499, 0, 131072, -65498, 0, 131072, -65497, 0, 131072, -65496, 0, 131072, -65495, 0, 131072, -65494, 0, 131072, -65493, 0, 131072, -65492, 0, 131072, -65491, 0, 131072, -65490, 0, 131072, -65489, 0, 131072, -65488, 0, 131072, -65487, 0, 131072, -65486, 0, 131072, -65485, 0, 131072, -65484, 0, 131072, -65483, 0, 131072, -65482, 0, 131072, -65481, 0, 131072, -65480, 0, 131072, -65479, 0, 131072, -65478, 0, 131072, -65477, 0, 131072, -65476, 0, 131072, -65475, 0, 131072, -65474, 0, 131072, -65473, 0, 131072, -65472, 0, 131072, -65471, 0, 131072, -65470, 0, 131072, -65469, 0, 131072, -65468, 0, 131072, -65467, 0, 131072, -65466, 0, 131072, -65465, 0, 131072, -65464, 0, 131072, -65463, 0, 131072, -65462, 0, 131072, -65461, 0, 131072, -65460, 0, 131072, -65459, 0, 131072, -65458, 0, 131072, -65457, 0, 131072, -65456, 0, 131072, -65455, 0, 131072, -65454, 0, 131072, -65453, 0, 131072, -65452, 0, 131072, -65451, 0, 131072, -65450, 0, 131072, -65449, 0, 131072, -65448, 0, 131072, -65447, 0, 131072, -65446, 0, 131072, -65445, 0, 131072, -65444, 0, 131072, -65443, 0, 131072, -65442, 0, 131072, -65441, 0, 131072, -65440, 0, 131072, -65439, 0, 131072, -65438, 0, 131072, -65437, 0, 131072, -65436, 0, 131072, -65435, 0, 131072, -65434, 0, 131072, -65433, 0, 131072, -65432, 0, 131072, -65431, 0, 131072, -65430, 0, 131072, -65429, 0, 131072, -65428, 0, 131072, -65427, 0, 131072, -65426, 0, 131072, -65425, 0, 131072, -65424, 0, 131072, -65423, 0, 131072, -65422, 0, 131072, -65421, 0, 131072, -65420, 0, 131072, -65419, 0, 131072, -65418, 0, 131072, -65417, 0, 131072, -65416, 0, 131072, -65415, 0, 131072, -65414, 0, 131072, -65413, 0, 131072, -65412, 0, 131072, -65411, 0, 131072, -65410, 0, 131072, -65409, 0, 131072, -65408, 0, 131072, -65407, 0, 131072, -65406, 0, 131072, -65405, 0, 131072, -65404, 0, 131072, -65403, 0, 131072, -65402, 0, 131072, -65401, 0, 131072, -65400, 0, 131072, -65399, 0, 131072, -65398, 0, 131072, -65397, 0, 131072, -65396, 0, 131072, -65395, 0, 131072, -65394, 0, 131072, -65393, 0, 131072, -65392, 0, 131072, -65391, 0, 131072, -65390, 0, 131072, -65389, 0, 131072, -65388, 0, 131072, -65387, 0, 131072, -65386, 0, 131072, -65385, 0, 131072, -65384, 0, 131072, -65383, 0, 131072, -65382, 0, 131072, -65381, 0, 131072, -65380, 0, 131072, -65379, 0, 131072, -65378, 0, 131072, -65377, 0, 131072, -65376, 0, 131072, -65375, 0, 131072, -65374, 0, 131072, -65373, 0, 131072, -65372, 0, 131072, -65371, 0, 131072, -65370, 0, 131072, -65369, 0, 131072, -65368, 0, 131072, -65367, 0, 131072, -65366, 0, 131072, -65365, 0, 131072, -65364, 0, 131072, -65363, 0, 131072, -65362, 0, 131072, -65361, 0, 131072, -65360, 0, 131072, -65359, 0, 131072, -65358, 0, 131072, -65357, 0, 131072, -65356, 0, 131072, -65355, 0, 131072, -65354, 0, 131072, -65353, 0, 131072, -65352, 0, 131072, -65351, 0, 131072, -65350, 0, 131072, -65349, 0, 131072, -65348, 0, 131072, -65347, 0, 131072, -65346, 0, 131072, -65345, 0, 131072, -65344, 0, 131072, -65343, 0, 131072, -65342, 0, 131072, -65341, 0, 131072, -65340, 0, 131072, 65437, 0, 131072, 65438, 0, 131072, 65439, 0, 131072, 65440, 0, 131072, 65441, 0, 131072, 65442, 0, 131072, 65443, 0, 131072, 65444, 0, 131072, 65445, 0, 131072, 65446, 0, 131072, 65447, 0, 131072, 65448, 0, 131072, 65449, 0, 131072, 65450, 0, 131072, 65451, 0, 131072, 65452, 0, 131072, 65453, 0, 131072, 65454, 0, 131072, 65455, 0, 131072, 65456, 0, 131072, 65457, 0, 131072, 65458, 0, 131072, 65459, 0, 131072, 65460, 0, 131072, 65461, 0, 131072, 65462, 0, 131072, 65463, 0, 131072, 65464, 0, 131072, 65465, 0, 131072, 65466, 0, 131072, 65467, 0, 131072, 65468, 0, 131072, 65469, 0, 131072, 65470, 0, 131072, 65471, 0, 131072, 65472, 0, 131072, 65473, 0, 131072, 65474, 0, 131072, 65475, 0, 131072, 65476, 0, 131072, 65477, 0, 131072, 65478, 0, 131072, 65479, 0, 131072, 65480, 0, 131072, 65481, 0, 131072, 65482, 0, 131072, 65483, 0, 131072, 65484, 0, 131072, 65485, 0, 131072, 65486, 0, 131072, 65487, 0, 131072, 65488, 0, 131072, 65489, 0, 131072, 65490, 0, 131072, 65491, 0, 131072, 65492, 0, 131072, 65493, 0, 131072, 65494, 0, 131072, 65495, 0, 131072, 65496, 0, 131072, 65497, 0, 131072, 65498, 0, 131072, 65499, 0, 131072, 65500, 0, 131072, 65501, 0, 131072, 65502, 0, 131072, 65503, 0, 131072, 65504, 0, 131072, 65505, 0, 131072, 65506, 0, 131072, 65507, 0, 131072, 65508, 0, 131072, 65509, 0, 131072, 65510, 0, 131072, 65511, 0, 131072, 65512, 0, 131072, 65513, 0, 131072, 65514, 0, 131072, 65515, 0, 131072, 65516, 0, 131072, 65517, 0, 131072, 65518, 0, 131072, 65519, 0, 131072, 65520, 0, 131072, 65521, 0, 131072, 65522, 0, 131072, 65523, 0, 131072, 65524, 0, 131072, 65525, 0, 131072, 65526, 0, 131072, 65527, 0, 131072, 65528, 0, 131072, 65529, 0, 131072, 65530, 0, 131072, 65531, 0, 131072, 65532, 0, 131072, 65533, 0, 131072, 65534, 0, 131072, 65535, 0, 131072, 0, 0, 131072, 1, 0, 131072, 2, 0, 131072, 3, 0, 131072, 4, 0, 131072, 5, 0, 131072, 6, 0, 131072, 7, 0, 131072, 8, 0, 131072, 9, 0, 131072, 10, 0, 131072, 11, 0, 131072, 12, 0, 131072, 13, 0, 131072, 14, 0, 131072, 15, 0, 131072, 16, 0, 131072, 17, 0, 131072, 18, 0, 131072, 19, 0, 131072, 20, 0, 131072, 21, 0, 131072, 22, 0, 131072, 23, 0, 131072, 24, 0, 131072, 25, 0, 131072, 26, 0, 131072, 27, 0, 131072, 28, 0, 131072, 29, 0, 131072, 30, 0, 131072, 31, 0, 131072, 32, 0, 131072, 33, 0, 131072, 34, 0, 131072, 35, 0, 131072, 36, 0, 131072, 37, 0, 131072, 38, 0, 131072, 39, 0, 131072, 40, 0, 131072, 41, 0, 131072, 42, 0, 131072, 43, 0, 131072, 44, 0, 131072, 45, 0, 131072, 46, 0, 131072, 47, 0, 131072, 48, 0, 131072, 49, 0, 131072, 50, 0, 131072, 51, 0, 131072, 52, 0, 131072, 53, 0, 131072, 54, 0, 131072, 55, 0, 131072, 56, 0, 131072, 57, 0, 131072, 58, 0, 131072, 59, 0, 131072, 60, 0, 131072, 61, 0, 131072, 62, 0, 131072, 63, 0, 131072, 64, 0, 131072, 65, 0, 131072, 66, 0, 131072, 67, 0, 131072, 68, 0, 131072, 69, 0, 131072, 70, 0, 131072, 71, 0, 131072, 72, 0, 131072, 73, 0, 131072, 74, 0, 131072, 75, 0, 131072, 76, 0, 131072, 77, 0, 131072, 78, 0, 131072, 79, 0, 131072, 80, 0, 131072, 81, 0, 131072, 82, 0, 131072, 83, 0, 131072, 84, 0, 131072, 85, 0, 131072, 86, 0, 131072, 87, 0, 131072, 88, 0, 131072, 89, 0, 131072, 90, 0, 131072, 91, 0, 131072, 92, 0, 131072, 93, 0, 131072, 94, 0, 131072, 95, 0, 131072, 96, 0, 131072, 97, 0, 131072, 98, 0, 131072, 99, 0, 131072, 100, 0, 131072, 101, 0, 131072, 102, 0, 131072, 103, 0, 131072, 104, 0, 131072, 105, 0, 131072, 106, 0, 131072, 107, 0, 131072, 108, 0, 131072, 109, 0, 131072, 110, 0, 131072, 111, 0, 131072, 112, 0, 131072, 113, 0, 131072, 114, 0, 131072, 115, 0, 131072, 116, 0, 131072, 117, 0, 131072, 118, 0, 131072, 119, 0, 131072, 120, 0, 131072, 121, 0, 131072, 122, 0, 131072, 123, 0, 131072, 124, 0, 131072, 125, 0, 131072, 126, 0, 131072, 127, 0, 131072, 128, 0, 131072, 129, 0, 131072, 130, 0, 131072, 131, 0, 131072, 132, 0, 131072, 133, 0, 131072, 134, 0, 131072, 135, 0, 131072, 136, 0, 131072, 137, 0, 131072, 138, 0, 131072, 139, 0, 131072, 140, 0, 131072, 141, 0, 131072, 142, 0, 131072, 143, 0, 131072, 144, 0, 131072, 145, 0, 131072, 146, 0, 131072, 147, 0, 131072, 148, 0, 131072, 149, 0, 131072, 150, 0, 131072, 151, 0, 131072, 152, 0, 131072, 153, 0, 131072, 154, 0, 131072, 155, 0, 131072, 156, 0, 131072, 157, 0, 131072, 158, 0, 131072, 159, 0, 131072, 160, 0, 131072, 161, 0, 131072, 162, 0, 131072, 163, 0, 131072, 164, 0, 131072, 165, 0, 131072, 166, 0, 131072, 167, 0, 131072, 168, 0, 131072, 169, 0, 131072, 170, 0, 131072, 171, 0, 131072, 172, 0, 131072, 173, 0, 131072, 174, 0, 131072, 175, 0, 131072, 176, 0, 131072, 177, 0, 131072, 178, 0, 131072, 179, 0, 131072, 180, 0, 131072, 181, 0, 131072, 182, 0, 131072, 183, 0, 131072, 184, 0, 131072, 185, 0, 131072, 186, 0, 131072, 187, 0, 131072, 188, 0, 131072, 189, 0, 131072, 190, 0, 131072, 191, 0, 131072, 192, 0, 131072, 193, 0, 131072, 194, 0, 131072, 195, 0, 131072, 196, 0, 131072, 197, 0, 131072, 130973, 0, 131072, 130974, 0, 131072, 130975, 0, 131072, 130976, 0, 131072, 130977, 0, 131072, 130978, 0, 131072, 130979, 0, 131072, 130980, 0, 131072, 130981, 0, 131072, 130982, 0, 131072, 130983, 0, 131072, 130984, 0, 131072, 130985, 0, 131072, 130986, 0, 131072, 130987, 0, 131072, 130988, 0, 131072, 130989, 0, 131072, 130990, 0, 131072, 130991, 0, 131072, 130992, 0, 131072, 130993, 0, 131072, 130994, 0, 131072, 130995, 0, 131072, 130996, 0, 131072, 130997, 0, 131072, 130998, 0, 131072, 130999, 0, 131072, 131000, 0, 131072, 131001, 0, 131072, 131002, 0, 131072, 131003, 0, 131072, 131004, 0, 131072, 131005, 0, 131072, 131006, 0, 131072, 131007, 0, 131072, 131008, 0, 131072, 131009, 0, 131072, 131010, 0, 131072, 131011, 0, 131072, 131012, 0, 131072, 131013, 0, 131072, 131014, 0, 131072, 131015, 0, 131072, 131016, 0, 131072, 131017, 0, 131072, 131018, 0, 131072, 131019, 0, 131072, 131020, 0, 131072, 131021, 0, 131072, 131022, 0, 131072, 131023, 0, 131072, 131024, 0, 131072, 131025, 0, 131072, 131026, 0, 131072, 131027, 0, 131072, 131028, 0, 131072, 131029, 0, 131072, 131030, 0, 131072, 131031, 0, 131072, 131032, 0, 131072, 131033, 0, 131072, 131034, 0, 131072, 131035, 0, 131072, 131036, 0, 131072, 131037, 0, 131072, 131038, 0, 131072, 131039, 0, 131072, 131040, 0, 131072, 131041, 0, 131072, 131042, 0, 131072, 131043, 0, 131072, 131044, 0, 131072, 131045, 0, 131072, 131046, 0, 131072, 131047, 0, 131072, 131048, 0, 131072, 131049, 0, 131072, 131050, 0, 131072, 131051, 0, 131072, 131052, 0, 131072, 131053, 0, 131072, 131054, 0, 131072, 131055, 0, 131072, 131056, 0, 131072, 131057, 0, 131072, 131058, 0, 131072, 131059, 0, 131072, 131060, 0, 131072, 131061, 0, 131072, 131062, 0, 131072, 131063, 0, 131072, 131064, 0, 131072, 131065, 0, 131072, 131066, 0, 131072, 131067, 0, 131072, 131068, 0, 131072, 131069, 0, 131072, 131070, 0, 131072, 131071, 0, 131072, 65536, 0, 131072, 65537, 0, 131072, 65538, 0, 131072, 65539, 0, 131072, 65540, 0, 131072, 65541, 0, 131072, 65542, 0, 131072, 65543, 0, 131072, 65544, 0, 131072, 65545, 0, 131072, 65546, 0, 131072, 65547, 0, 131072, 65548, 0, 131072, 65549, 0, 131072, 65550, 0, 131072, 65551, 0, 131072, 65552, 0, 131072, 65553, 0, 131072, 65554, 0, 131072, 65555, 0, 131072, 65556, 0, 131072, 65557, 0, 131072, 65558, 0, 131072, 65559, 0, 131072, 65560, 0, 131072, 65561, 0, 131072, 65562, 0, 131072, 65563, 0, 131072, 65564, 0, 131072, 65565, 0, 131072, 65566, 0, 131072, 65567, 0, 131072, 65568, 0, 131072, 65569, 0, 131072, 65570, 0, 131072, 65571, 0, 131072, 65572, 0, 131072, 65573, 0, 131072, 65574, 0, 131072, 65575, 0, 131072, 65576, 0, 131072, 65577, 0, 131072, 65578, 0, 131072, 65579, 0, 131072, 65580, 0, 131072, 65581, 0, 131072, 65582, 0, 131072, 65583, 0, 131072, 65584, 0, 131072, 65585, 0, 131072, 65586, 0, 131072, 65587, 0, 131072, 65588, 0, 131072, 65589, 0, 131072, 65590, 0, 131072, 65591, 0, 131072, 65592, 0, 131072, 65593, 0, 131072, 65594, 0, 131072, 65595, 0, 131072, 65596, 0, 131072, 65597, 0, 131072, 65598, 0, 131072, 65599, 0, 131072, 65600, 0, 131072, 65601, 0, 131072, 65602, 0, 131072, 65603, 0, 131072, 65604, 0, 131072, 65605, 0, 131072, 65606, 0, 131072, 65607, 0, 131072, 65608, 0, 131072, 65609, 0, 131072, 65610, 0, 131072, 65611, 0, 131072, 65612, 0, 131072, 65613, 0, 131072, 65614, 0, 131072, 65615, 0, 131072, 65616, 0, 131072, 65617, 0, 131072, 65618, 0, 131072, 65619, 0, 131072, 65620, 0, 131072, 65621, 0, 131072, 65622, 0, 131072, 65623, 0, 131072, 65624, 0, 131072, 65625, 0, 131072, 65626, 0, 131072, 65627, 0, 131072, 65628, 0, 131072, 65629, 0, 131072, 65630, 0, 131072, 65631, 0, 131072, 65632, 0, 131072, 65633, 0, 131072, 65634, 0, 131072, 65635, 0, 131072, 65636, 0, 131072, 65637, 0, 131072, 65638, 0, 131072, 65639, 0, 131072, 65640, 0, 131072, 65641, 0, 131072, 65642, 0, 131072, 65643, 0, 131072, 65644, 0, 131072, 65645, 0, 131072, 65646, 0, 131072, 65647, 0, 131072, 65648, 0, 131072, 65649, 0, 131072, 65650, 0, 131072, 65651, 0, 131072, 65652, 0, 131072, 65653, 0, 131072, 65654, 0, 131072, 65655, 0, 131072, 65656, 0, 131072, 65657, 0, 131072, 65658, 0, 131072, 65659, 0, 131072, 65660, 0, 131072, 65661, 0, 131072, 65662, 0, 131072, 65663, 0, 131072, 65664, 0, 131072, 65665, 0, 131072, 65666, 0, 131072, 65667, 0, 131072, 65668, 0, 131072, 65669, 0, 131072, 65670, 0, 131072, 65671, 0, 131072, 65672, 0, 131072, 65673, 0, 131072, 65674, 0, 131072, 65675, 0, 131072, 65676, 0, 131072, 65677, 0, 131072, 65678, 0, 131072, 65679, 0, 131072, 65680, 0, 131072, 65681, 0, 131072, 65682, 0, 131072, 65683, 0, 131072, 65684, 0, 131072, 65685, 0, 131072, 65686, 0, 131072, 65687, 0, 131072, 65688, 0, 131072, 65689, 0, 131072, 65690, 0, 131072, 65691, 0, 131072, 65692, 0, 131072, 65693, 0, 131072, 65694, 0, 131072, 65695, 0, 131072, 65696, 0, 131072, 65697, 0, 131072, 65698, 0, 131072, 65699, 0, 131072, 65700, 0, 131072, 65701, 0, 131072, 65702, 0, 131072, 65703, 0, 131072, 65704, 0, 131072, 65705, 0, 131072, 65706, 0, 131072, 65707, 0, 131072, 65708, 0, 131072, 65709, 0, 131072, 65710, 0, 131072, 65711, 0, 131072, 65712, 0, 131072, 65713, 0, 131072, 65714, 0, 131072, 65715, 0, 131072, 65716, 0, 131072, 65717, 0, 131072, 65718, 0, 131072, 65719, 0, 131072, 65720, 0, 131072, 65721, 0, 131072, 65722, 0, 131072, 65723, 0, 131072, 65724, 0, 131072, 65725, 0, 131072, 65726, 0, 131072, 65727, 0, 131072, 65728, 0, 131072, 65729, 0, 131072, 65730, 0, 131072, 65731, 0, 131072, 65732, 0, 131072, 65733, 0, 131072, 65734, 0, 131072, 196510, 0, 131072, 196511, 0, 131072, 196512, 0, 131072, 196513, 0, 131072, 196514, 0, 131072, 196515, 0, 131072, 196516, 0, 131072, 196517, 0, 131072, 196518, 0, 131072, 196519, 0, 131072, 196520, 0, 131072, 196521, 0, 131072, 196522, 0, 131072, 196523, 0, 131072, 196524, 0, 131072, 196525, 0, 131072, 196526, 0, 131072, 196527, 0, 131072, 196528, 0, 131072, 196529, 0, 131072, 196530, 0, 131072, 196531, 0, 131072, 196532, 0, 131072, 196533, 0, 131072, 196534, 0, 131072, 196535, 0, 131072, 196536, 0, 131072, 196537, 0, 131072, 196538, 0, 131072, 196539, 0, 131072, 196540, 0, 131072, 196541, 0, 131072, 196542, 0, 131072, 196543, 0, 131072, 196544, 0, 131072, 196545, 0, 131072, 196546, 0, 131072, 196547, 0, 131072, 196548, 0, 131072, 196549, 0, 131072, 196550, 0, 131072, 196551, 0, 131072, 196552, 0, 131072, 196553, 0, 131072, 196554, 0, 131072, 196555, 0, 131072, 196556, 0, 131072, 196557, 0, 131072, 196558, 0, 131072, 196559, 0, 131072, 196560, 0, 131072, 196561, 0, 131072, 196562, 0, 131072, 196563, 0, 131072, 196564, 0, 131072, 196565, 0, 131072, 196566, 0, 131072, 196567, 0, 131072, 196568, 0, 131072, 196569, 0, 131072, 196570, 0, 131072, 196571, 0, 131072, 196572, 0, 131072, 196573, 0, 131072, 196574, 0, 131072, 196575, 0, 131072, 196576, 0, 131072, 196577, 0, 131072, 196578, 0, 131072, 196579, 0, 131072, 196580, 0, 131072, 196581, 0, 131072, 196582, 0, 131072, 196583, 0, 131072, 196584, 0, 131072, 196585, 0, 131072, 196586, 0, 131072, 196587, 0, 131072, 196588, 0, 131072, 196589, 0, 131072, 196590, 0, 131072, 196591, 0, 131072, 196592, 0, 131072, 196593, 0, 131072, 196594, 0, 131072, 196595, 0, 131072, 196596, 0, 131072, 196597, 0, 131072, 196598, 0, 131072, 196599, 0, 131072, 196600, 0, 131072, 196601, 0, 131072, 196602, 0, 131072, 196603, 0, 131072, 196604, 0, 131072, 196605, 0, 131072, 196606, 0, 131072, 196607, 0, 131072, 131072, 0, 131072, 131073, 0, 131072, 131074, 0, 131072, 131075, 0, 131072, 131076, 0, 131072, 131077, 0, 131072, 131078, 0, 131072, 131079, 0, 131072, 131080, 0, 131072, 131081, 0, 131072, 131082, 0, 131072, 131083, 0, 131072, 131084, 0, 131072, 131085, 0, 131072, 131086, 0, 131072, 131087, 0, 131072, 131088, 0, 131072, 131089, 0, 131072, 131090, 0, 131072, 131091, 0, 131072, 131092, 0, 131072, 131093, 0, 131072, 131094, 0, 131072, 131095, 0, 131072, 131096, 0, 131072, 131097, 0, 131072, 131098, 0, 131072, 131099, 0, 131072, 131100, 0, 131072, 131101, 0, 131072, 131102, 0, 131072, 131103, 0, 131072, 131104, 0, 131072, 131105, 0, 131072, 131106, 0, 131072, 131107, 0, 131072, 131108, 0, 131072, 131109, 0, 131072, 131110, 0, 131072, 131111, 0, 131072, 131112, 0, 131072, 131113, 0, 131072, 131114, 0, 131072, 131115, 0, 131072, 131116, 0, 131072, 131117, 0, 131072, 131118, 0, 131072, 131119, 0, 131072, 131120, 0, 131072, 131121, 0, 131072, 131122, 0, 131072, 131123, 0, 131072, 131124, 0, 131072, 131125, 0, 131072, 131126, 0, 131072, 131127, 0, 131072, 131128, 0, 131072, 131129, 0, 131072, 131130, 0, 131072, 131131, 0, 131072, 131132, 0, 131072, 131133, 0, 131072, 131134, 0, 131072, 131135, 0, 131072, 131136, 0, 131072, 131137, 0, 131072, 131138, 0, 131072, 131139, 0, 131072, 131140, 0, 131072, 131141, 0, 131072, 131142, 0, 131072, 131143, 0, 131072, 131144, 0, 131072, 131145, 0, 131072, 131146, 0, 131072, 131147, 0, 131072, 131148, 0, 131072, 131149, 0, 131072, 131150, 0, 131072, 131151, 0, 131072, 131152, 0, 131072, 131153, 0, 131072, 131154, 0, 131072, 131155, 0, 131072, 131156, 0, 131072, 131157, 0, 131072, 131158, 0, 131072, 131159, 0, 131072, 131160, 0, 131072, 131161, 0, 131072, 131162, 0, 131072, 131163, 0, 131072, 131164, 0, 131072, 131165, 0, 131072, 131166, 0, 131072, 131167, 0, 131072, 131168, 0, 131072, 131169, 0, 131072, 131170, 0, 131072, 131171, 0, 131072, 131172, 0, 131072, 131173, 0, 131072, 131174, 0, 131072, 131175, 0, 131072, 131176, 0, 131072, 131177, 0, 131072, 131178, 0, 131072, 131179, 0, 131072, 131180, 0, 131072, 131181, 0, 131072, 131182, 0, 131072, 131183, 0, 131072, 131184, 0, 131072, 131185, 0, 131072, 131186, 0, 131072, 131187, 0, 131072, 131188, 0, 131072, 131189, 0, 131072, 131190, 0, 131072, 131191, 0, 131072, 131192, 0, 131072, 131193, 0, 131072, 131194, 0, 131072, 131195, 0, 131072, 131196, 0, 131072, 131197, 0, 131072, 131198, 0, 131072, 131199, 0, 131072, 131200, 0, 131072, 131201, 0, 131072, 131202, 0, 131072, 131203, 0, 131072, 131204, 0, 131072, 131205, 0, 131072, 131206, 0, 131072, 131207, 0, 131072, 131208, 0, 131072, 131209, 0, 131072, 131210, 0, 131072, 131211, 0, 131072, 131212, 0, 131072, 131213, 0, 131072, 131214, 0, 131072, 131215, 0, 131072, 131216, 0, 131072, 131217, 0, 131072, 131218, 0, 131072, 131219, 0, 131072, 131220, 0, 131072, 131221, 0, 131072, 131222, 0, 131072, 131223, 0, 131072, 131224, 0, 131072, 131225, 0, 131072, 131226, 0, 131072, 131227, 0, 131072, 131228, 0, 131072, 131229, 0, 131072, 131230, 0, 131072, 131231, 0, 131072, 131232, 0, 131072, 131233, 0, 131072, 131234, 0, 131072, 131235, 0, 131072, 131236, 0, 131072, 131237, 0, 131072, 131238, 0, 131072, 131239, 0, 131072, 131240, 0, 131072, 131241, 0, 131072, 131242, 0, 131072, 131243, 0, 131072, 131244, 0, 131072, 131245, 0, 131072, 131246, 0, 131072, 131247, 0, 131072, 131248, 0, 131072, 131249, 0, 131072, 131250, 0, 131072, 131251, 0, 131072, 131252, 0, 131072, 131253, 0, 131072, 131254, 0, 131072, 131255, 0, 131072, 131256, 0, 131072, 131257, 0, 131072, 131258, 0, 131072, 131259, 0, 131072, 131260, 0, 131072, 131261, 0, 131072, 131262, 0, 131072, 131263, 0, 131072, 131264, 0, 131072, 131265, 0, 131072, 131266, 0, 131072, 131267, 0, 131072, 131268, 0, 131072, 131269, 0, 131072, 131270, 0, 131072, 262047, 0, 131072, 262048, 0, 131072, 262049, 0, 131072, 262050, 0, 131072, 262051, 0, 131072, 262052, 0, 131072, 262053, 0, 131072, 262054, 0, 131072, 262055, 0, 131072, 262056, 0, 131072, 262057, 0, 131072, 262058, 0, 131072, 262059, 0, 131072, 262060, 0, 131072, 262061, 0, 131072, 262062, 0, 131072, 262063, 0, 131072, 262064, 0, 131072, 262065, 0, 131072, 262066, 0, 131072, 262067, 0, 131072, 262068, 0, 131072, 262069, 0, 131072, 262070, 0, 131072, 262071, 0, 131072, 262072, 0, 131072, 262073, 0, 131072, 262074, 0, 131072, 262075, 0, 131072, 262076, 0, 131072, 262077, 0, 131072, 262078, 0, 131072, 262079, 0, 131072, 262080, 0, 131072, 262081, 0, 131072, 262082, 0, 131072, 262083, 0, 131072, 262084, 0, 131072, 262085, 0, 131072, 262086, 0, 131072, 262087, 0, 131072, 262088, 0, 131072, 262089, 0, 131072, 262090, 0, 131072, 262091, 0, 131072, 262092, 0, 131072, 262093, 0, 131072, 262094, 0, 131072, 262095, 0, 131072, 262096, 0, 131072, 262097, 0, 131072, 262098, 0, 131072, 262099, 0, 131072, 262100, 0, 131072, 262101, 0, 131072, 262102, 0, 131072, 262103, 0, 131072, 262104, 0, 131072, 262105, 0, 131072, 262106, 0, 131072, 262107, 0, 131072, 262108, 0, 131072, 262109, 0, 131072, 262110, 0, 131072, 262111, 0, 131072, 262112, 0, 131072, 262113, 0, 131072, 262114, 0, 131072, 262115, 0, 131072, 262116, 0, 131072, 262117, 0, 131072, 262118, 0, 131072, 262119, 0, 131072, 262120, 0, 131072, 262121, 0, 131072, 262122, 0, 131072, 262123, 0, 131072, 262124, 0, 131072, 262125, 0, 131072, 262126, 0, 131072, 262127, 0, 131072, 262128, 0, 131072, 262129, 0, 131072, 262130, 0, 131072, 262131, 0, 131072, 262132, 0, 131072, 262133, 0, 131072, 262134, 0, 131072, 262135, 0, 131072, 262136, 0, 131072, 262137, 0, 131072, 262138, 0, 131072, 262139, 0, 131072, 262140, 0, 131072, 262141, 0, 131072, 262142, 0, 131072, 262143, 0, 131072, 196608, 0, 131072, 196609, 0, 131072, 196610, 0, 131072, 196611, 0, 131072, 196612, 0, 131072, 196613, 0, 131072, 196614, 0, 131072, 196615, 0, 131072, 196616, 0, 131072, 196617, 0, 131072, 196618, 0, 131072, 196619, 0, 131072, 196620, 0, 131072, 196621, 0, 131072, 196622, 0, 131072, 196623, 0, 131072, 196624, 0, 131072, 196625, 0, 131072, 196626, 0, 131072, 196627, 0, 131072, 196628, 0, 131072, 196629, 0, 131072, 196630, 0, 131072, 196631, 0, 131072, 196632, 0, 131072, 196633, 0, 131072, 196634, 0, 131072, 196635, 0, 131072, 196636, 0, 131072, 196637, 0, 131072, 196638, 0, 131072, 196639, 0, 131072, 196640, 0, 131072, 196641, 0, 131072, 196642, 0, 131072, 196643, 0, 131072, 196644, 0, 131072, 196645, 0, 131072, 196646, 0, 131072, 196647, 0, 131072, 196648, 0, 131072, 196649, 0, 131072, 196650, 0, 131072, 196651, 0, 131072, 196652, 0, 131072, 196653, 0, 131072, 196654, 0, 131072, 196655, 0, 131072, 196656, 0, 131072, 196657, 0, 131072, 196658, 0, 131072, 196659, 0, 131072, 196660, 0, 131072, 196661, 0, 131072, 196662, 0, 131072, 196663, 0, 131072, 196664, 0, 131072, 196665, 0, 131072, 196666, 0, 131072, 196667, 0, 131072, 196668, 0, 131072, 196669, 0, 131072, 196670, 0, 131072, 196671, 0, 131072, 196672, 0, 131072, 196673, 0, 131072, 196674, 0, 131072, 196675, 0, 131072, 196676, 0, 131072, 196677, 0, 131072, 196678, 0, 131072, 196679, 0, 131072, 196680, 0, 131072, 196681, 0, 131072, 196682, 0, 131072, 196683, 0, 131072, 196684, 0, 131072, 196685, 0, 131072, 196686, 0, 131072, 196687, 0, 131072, 196688, 0, 131072, 196689, 0, 131072, 196690, 0, 131072, 196691, 0, 131072, 196692, 0, 131072, 196693, 0, 131072, 196694, 0, 131072, 196695, 0, 131072, 196696, 0, 131072, 196697, 0, 131072, 196698, 0, 131072, 196699, 0, 131072, 196700, 0, 131072, 196701, 0, 131072, 196702, 0, 131072, 196703, 0, 131072, 196704, 0, 131072, 196705, 0, 131072, 196706, 0, 131072, 196707, 0, 131072, 196708, 0, 131072, 196709, 0, 131072, 196710, 0, 131072, 196711, 0, 131072, 196712, 0, 131072, 196713, 0, 131072, 196714, 0, 131072, 196715, 0, 131072, 196716, 0, 131072, 196717, 0, 131072, 196718, 0, 131072, 196719, 0, 131072, 196720, 0, 131072, 196721, 0, 131072, 196722, 0, 131072, 196723, 0, 131072, 196724, 0, 131072, 196725, 0, 131072, 196726, 0, 131072, 196727, 0, 131072, 196728, 0, 131072, 196729, 0, 131072, 196730, 0, 131072, 196731, 0, 131072, 196732, 0, 131072, 196733, 0, 131072, 196734, 0, 131072, 196735, 0, 131072, 196736, 0, 131072, 196737, 0, 131072, 196738, 0, 131072, 196739, 0, 131072, 196740, 0, 131072, 196741, 0, 131072, 196742, 0, 131072, 196743, 0, 131072, 196744, 0, 131072, 196745, 0, 131072, 196746, 0, 131072, 196747, 0, 131072, 196748, 0, 131072, 196749, 0, 131072, 196750, 0, 131072, 196751, 0, 131072, 196752, 0, 131072, 196753, 0, 131072, 196754, 0, 131072, 196755, 0, 131072, 196756, 0, 131072, 196757, 0, 131072, 196758, 0, 131072, 196759, 0, 131072, 196760, 0, 131072, 196761, 0, 131072, 196762, 0, 131072, 196763, 0, 131072, 196764, 0, 131072, 196765, 0, 131072, 196766, 0, 131072, 196767, 0, 131072, 196768, 0, 131072, 196769, 0, 131072, 196770, 0, 131072, 196771, 0, 131072, 196772, 0, 131072, 196773, 0, 131072, 196774, 0, 131072, 196775, 0, 131072, 196776, 0, 131072, 196777, 0, 131072, 196778, 0, 131072, 196779, 0, 131072, 196780, 0, 131072, 196781, 0, 131072, 196782, 0, 131072, 196783, 0, 131072, 196784, 0, 131072, 196785, 0, 131072, 196786, 0, 131072, 196787, 0, 131072, 196788, 0, 131072, 196789, 0, 131072, 196790, 0, 131072, 196791, 0, 131072, 196792, 0, 131072, 196793, 0, 131072, 196794, 0, 131072, 196795, 0, 131072, 196796, 0, 131072, 196797, 0, 131072, 196798, 0, 131072, 196799, 0, 131072, 196800, 0, 131072, 196801, 0, 131072, 196802, 0, 131072, 196803, 0, 131072, 196804, 0, 131072, 196805, 0, 131072, 196806, 0, 131072, 196807, 0, 131072, 327583, 0, 131072, 327584, 0, 131072, 327585, 0, 131072, 327586, 0, 131072, 327587, 0, 131072, 327588, 0, 131072, 327589, 0, 131072, 327590, 0, 131072, 327591, 0, 131072, 327592, 0, 131072, 327593, 0, 131072, 327594, 0, 131072, 327595, 0, 131072, 327596, 0, 131072, 327597, 0, 131072, 327598, 0, 131072, 327599, 0, 131072, 327600, 0, 131072, 327601, 0, 131072, 327602, 0, 131072, 327603, 0, 131072, 327604, 0, 131072, 327605, 0, 131072, 327606, 0, 131072, 327607, 0, 131072, 327608, 0, 131072, 327609, 0, 131072, 327610, 0, 131072, 327611, 0, 131072, 327612, 0, 131072, 327613, 0, 131072, 327614, 0, 131072, 327615, 0, 131072, 327616, 0, 131072, 327617, 0, 131072, 327618, 0, 131072, 327619, 0, 131072, 327620, 0, 131072, 327621, 0, 131072, 327622, 0, 131072, 327623, 0, 131072, 327624, 0, 131072, 327625, 0, 131072, 327626, 0, 131072, 327627, 0, 131072, 327628, 0, 131072, 327629, 0, 131072, 327630, 0, 131072, 327631, 0, 131072, 327632, 0, 131072, 327633, 0, 131072, 327634, 0, 131072, 327635, 0, 131072, 327636, 0, 131072, 327637, 0, 131072, 327638, 0, 131072, 327639, 0, 131072, 327640, 0, 131072, 327641, 0, 131072, 327642, 0, 131072, 327643, 0, 131072, 327644, 0, 131072, 327645, 0, 131072, 327646, 0, 131072, 327647, 0, 131072, 327648, 0, 131072, 327649, 0, 131072, 327650, 0, 131072, 327651, 0, 131072, 327652, 0, 131072, 327653, 0, 131072, 327654, 0, 131072, 327655, 0, 131072, 327656, 0, 131072, 327657, 0, 131072, 327658, 0, 131072, 327659, 0, 131072, 327660, 0, 131072, 327661, 0, 131072, 327662, 0, 131072, 327663, 0, 131072, 327664, 0, 131072, 327665, 0, 131072, 327666, 0, 131072, 327667, 0, 131072, 327668, 0, 131072, 327669, 0, 131072, 327670, 0, 131072, 327671, 0, 131072, 327672, 0, 131072, 327673, 0, 131072, 327674, 0, 131072, 327675, 0, 131072, 327676, 0, 131072, 327677, 0, 131072, 327678, 0, 131072, 327679, 0, 131072, 262144, 0, 131072, 262145, 0, 131072, 262146, 0, 131072, 262147, 0, 131072, 262148, 0, 131072, 262149, 0, 131072, 262150, 0, 131072, 262151, 0, 131072, 262152, 0, 131072, 262153, 0, 131072, 262154, 0, 131072, 262155, 0, 131072, 262156, 0, 131072, 262157, 0, 131072, 262158, 0, 131072, 262159, 0, 131072, 262160, 0, 131072, 262161, 0, 131072, 262162, 0, 131072, 262163, 0, 131072, 262164, 0, 131072, 262165, 0, 131072, 262166, 0, 131072, 262167, 0, 131072, 262168, 0, 131072, 262169, 0, 131072, 262170, 0, 131072, 262171, 0, 131072, 262172, 0, 131072, 262173, 0, 131072, 262174, 0, 131072, 262175, 0, 131072, 262176, 0, 131072, 262177, 0, 131072, 262178, 0, 131072, 262179, 0, 131072, 262180, 0, 131072, 262181, 0, 131072, 262182, 0, 131072, 262183, 0, 131072, 262184, 0, 131072, 262185, 0, 131072, 262186, 0, 131072, 262187, 0, 131072, 262188, 0, 131072, 262189, 0, 131072, 262190, 0, 131072, 262191, 0, 131072, 262192, 0, 131072, 262193, 0, 131072, 262194, 0, 131072, 262195, 0, 131072, 262196, 0, 131072, 262197, 0, 131072, 262198, 0, 131072, 262199, 0, 131072, 262200, 0, 131072, 262201, 0, 131072, 262202, 0, 131072, 262203, 0, 131072, 262204, 0, 131072, 262205, 0, 131072, 262206, 0, 131072, 262207, 0, 131072, 262208, 0, 131072, 262209, 0, 131072, 262210, 0, 131072, 262211, 0, 131072, 262212, 0, 131072, 262213, 0, 131072, 262214, 0, 131072, 262215, 0, 131072, 262216, 0, 131072, 262217, 0, 131072, 262218, 0, 131072, 262219, 0, 131072, 262220, 0, 131072, 262221, 0, 131072, 262222, 0, 131072, 262223, 0, 131072, 262224, 0, 131072, 262225, 0, 131072, 262226, 0, 131072, 262227, 0, 131072, 262228, 0, 131072, 262229, 0, 131072, 262230, 0, 131072, 262231, 0, 131072, 262232, 0, 131072, 262233, 0, 131072, 262234, 0, 131072, 262235, 0, 131072, 262236, 0, 131072, 262237, 0, 131072, 262238, 0, 131072, 262239, 0, 131072, 262240, 0, 131072, 262241, 0, 131072, 262242, 0, 131072, 262243, 0, 131072, 262244, 0, 131072, 262245, 0, 131072, 262246, 0, 131072, 262247, 0, 131072, 262248, 0, 131072, 262249, 0, 131072, 262250, 0, 131072, 262251, 0, 131072, 262252, 0, 131072, 262253, 0, 131072, 262254, 0, 131072, 262255, 0, 131072, 262256, 0, 131072, 262257, 0, 131072, 262258, 0, 131072, 262259, 0, 131072, 262260, 0, 131072, 262261, 0, 131072, 262262, 0, 131072, 262263, 0, 131072, 262264, 0, 131072, 262265, 0, 131072, 262266, 0, 131072, 262267, 0, 131072, 262268, 0, 131072, 262269, 0, 131072, 262270, 0, 131072, 262271, 0, 131072, 262272, 0, 131072, 262273, 0, 131072, 262274, 0, 131072, 262275, 0, 131072, 262276, 0, 131072, 262277, 0, 131072, 262278, 0, 131072, 262279, 0, 131072, 262280, 0, 131072, 262281, 0, 131072, 262282, 0, 131072, 262283, 0, 131072, 262284, 0, 131072, 262285, 0, 131072, 262286, 0, 131072, 262287, 0, 131072, 262288, 0, 131072, 262289, 0, 131072, 262290, 0, 131072, 262291, 0, 131072, 262292, 0, 131072, 262293, 0, 131072, 262294, 0, 131072, 262295, 0, 131072, 262296, 0, 131072, 262297, 0, 131072, 262298, 0, 131072, 262299, 0, 131072, 262300, 0, 131072, 262301, 0, 131072, 262302, 0, 131072, 262303, 0, 131072, 262304, 0, 131072, 262305, 0, 131072, 262306, 0, 131072, 262307, 0, 131072, 262308, 0, 131072, 262309, 0, 131072, 262310, 0, 131072, 262311, 0, 131072, 262312, 0, 131072, 262313, 0, 131072, 262314, 0, 131072, 262315, 0, 131072, 262316, 0, 131072, 262317, 0, 131072, 262318, 0, 131072, 262319, 0, 131072, 262320, 0, 131072, 262321, 0, 131072, 262322, 0, 131072, 262323, 0, 131072, 262324, 0, 131072, 262325, 0, 131072, 262326, 0, 131072, 262327, 0, 131072, 262328, 0, 131072, 262329, 0, 131072, 262330, 0, 131072, 262331, 0, 131072, 262332, 0, 131072, 262333, 0, 131072, 262334, 0, 131072, 262335, 0, 131072, 262336, 0, 131072, 262337, 0, 131072, 262338, 0, 131072, 262339, 0, 131072, 262340, 0, 131072, 262341, 0, 131072, 262342, 0, 131072, 262343, 0, 131072, 393120, 0, 131072, 393121, 0, 131072, 393122, 0, 131072, 393123, 0, 131072, 393124, 0, 131072, 393125, 0, 131072, 393126, 0, 131072, 393127, 0, 131072, 393128, 0, 131072, 393129, 0, 131072, 393130, 0, 131072, 393131, 0, 131072, 393132, 0, 131072, 393133, 0, 131072, 393134, 0, 131072, 393135, 0, 131072, 393136, 0, 131072, 393137, 0, 131072, 393138, 0, 131072, 393139, 0, 131072, 393140, 0, 131072, 393141, 0, 131072, 393142, 0, 131072, 393143, 0, 131072, 393144, 0, 131072, 393145, 0, 131072, 393146, 0, 131072, 393147, 0, 131072, 393148, 0, 131072, 393149, 0, 131072, 393150, 0, 131072, 393151, 0, 131072, 393152, 0, 131072, 393153, 0, 131072, 393154, 0, 131072, 393155, 0, 131072, 393156, 0, 131072, 393157, 0, 131072, 393158, 0, 131072, 393159, 0, 131072, 393160, 0, 131072, 393161, 0, 131072, 393162, 0, 131072, 393163, 0, 131072, 393164, 0, 131072, 393165, 0, 131072, 393166, 0, 131072, 393167, 0, 131072, 393168, 0, 131072, 393169, 0, 131072, 393170, 0, 131072, 393171, 0, 131072, 393172, 0, 131072, 393173, 0, 131072, 393174, 0, 131072, 393175, 0, 131072, 393176, 0, 131072, 393177, 0, 131072, 393178, 0, 131072, 393179, 0, 131072, 393180, 0, 131072, 393181, 0, 131072, 393182, 0, 131072, 393183, 0, 131072, 393184, 0, 131072, 393185, 0, 131072, 393186, 0, 131072, 393187, 0, 131072, 393188, 0, 131072, 393189, 0, 131072, 393190, 0, 131072, 393191, 0, 131072, 393192, 0, 131072, 393193, 0, 131072, 393194, 0, 131072, 393195, 0, 131072, 393196, 0, 131072, 393197, 0, 131072, 393198, 0, 131072, 393199, 0, 131072, 393200, 0, 131072, 393201, 0, 131072, 393202, 0, 131072, 393203, 0, 131072, 393204, 0, 131072, 393205, 0, 131072, 393206, 0, 131072, 393207, 0, 131072, 393208, 0, 131072, 393209, 0, 131072, 393210, 0, 131072, 393211, 0, 131072, 393212, 0, 131072, 393213, 0, 131072, 393214, 0, 131072, 393215, 0, 131072, 327680, 0, 131072, 327681, 0, 131072, 327682, 0, 131072, 327683, 0, 131072, 327684, 0, 131072, 327685, 0, 131072, 327686, 0, 131072, 327687, 0, 131072, 327688, 0, 131072, 327689, 0, 131072, 327690, 0, 131072, 327691, 0, 131072, 327692, 0, 131072, 327693, 0, 131072, 327694, 0, 131072, 327695, 0, 131072, 327696, 0, 131072, 327697, 0, 131072, 327698, 0, 131072, 327699, 0, 131072, 327700, 0, 131072, 327701, 0, 131072, 327702, 0, 131072, 327703, 0, 131072, 327704, 0, 131072, 327705, 0, 131072, 327706, 0, 131072, 327707, 0, 131072, 327708, 0, 131072, 327709, 0, 131072, 327710, 0, 131072, 327711, 0, 131072, 327712, 0, 131072, 327713, 0, 131072, 327714, 0, 131072, 327715, 0, 131072, 327716, 0, 131072, 327717, 0, 131072, 327718, 0, 131072, 327719, 0, 131072, 327720, 0, 131072, 327721, 0, 131072, 327722, 0, 131072, 327723, 0, 131072, 327724, 0, 131072, 327725, 0, 131072, 327726, 0, 131072, 327727, 0, 131072, 327728, 0, 131072, 327729, 0, 131072, 327730, 0, 131072, 327731, 0, 131072, 327732, 0, 131072, 327733, 0, 131072, 327734, 0, 131072, 327735, 0, 131072, 327736, 0, 131072, 327737, 0, 131072, 327738, 0, 131072, 327739, 0, 131072, 327740, 0, 131072, 327741, 0, 131072, 327742, 0, 131072, 327743, 0, 131072, 327744, 0, 131072, 327745, 0, 131072, 327746, 0, 131072, 327747, 0, 131072, 327748, 0, 131072, 327749, 0, 131072, 327750, 0, 131072, 327751, 0, 131072, 327752, 0, 131072, 327753, 0, 131072, 327754, 0, 131072, 327755, 0, 131072, 327756, 0, 131072, 327757, 0, 131072, 327758, 0, 131072, 327759, 0, 131072, 327760, 0, 131072, 327761, 0, 131072, 327762, 0, 131072, 327763, 0, 131072, 327764, 0, 131072, 327765, 0, 131072, 327766, 0, 131072, 327767, 0, 131072, 327768, 0, 131072, 327769, 0, 131072, 327770, 0, 131072, 327771, 0, 131072, 327772, 0, 131072, 327773, 0, 131072, 327774, 0, 131072, 327775, 0, 131072, 327776, 0, 131072, 327777, 0, 131072, 327778, 0, 131072, 327779, 0, 131072, 327780, 0, 131072, 327781, 0, 131072, 327782, 0, 131072, 327783, 0, 131072, 327784, 0, 131072, 327785, 0, 131072, 327786, 0, 131072, 327787, 0, 131072, 327788, 0, 131072, 327789, 0, 131072, 327790, 0, 131072, 327791, 0, 131072, 327792, 0, 131072, 327793, 0, 131072, 327794, 0, 131072, 327795, 0, 131072, 327796, 0, 131072, 327797, 0, 131072, 327798, 0, 131072, 327799, 0, 131072, 327800, 0, 131072, 327801, 0, 131072, 327802, 0, 131072, 327803, 0, 131072, 327804, 0, 131072, 327805, 0, 131072, 327806, 0, 131072, 327807, 0, 131072, 327808, 0, 131072, 327809, 0, 131072, 327810, 0, 131072, 327811, 0, 131072, 327812, 0, 131072, 327813, 0, 131072, 327814, 0, 131072, 327815, 0, 131072, 327816, 0, 131072, 327817, 0, 131072, 327818, 0, 131072, 327819, 0, 131072, 327820, 0, 131072, 327821, 0, 131072, 327822, 0, 131072, 327823, 0, 131072, 327824, 0, 131072, 327825, 0, 131072, 327826, 0, 131072, 327827, 0, 131072, 327828, 0, 131072, 327829, 0, 131072, 327830, 0, 131072, 327831, 0, 131072, 327832, 0, 131072, 327833, 0, 131072, 327834, 0, 131072, 327835, 0, 131072, 327836, 0, 131072, 327837, 0, 131072, 327838, 0, 131072, 327839, 0, 131072, 327840, 0, 131072, 327841, 0, 131072, 327842, 0, 131072, 327843, 0, 131072, 327844, 0, 131072, 327845, 0, 131072, 327846, 0, 131072, 327847, 0, 131072, 327848, 0, 131072, 327849, 0, 131072, 327850, 0, 131072, 327851, 0, 131072, 327852, 0, 131072, 327853, 0, 131072, 327854, 0, 131072, 327855, 0, 131072, 327856, 0, 131072, 327857, 0, 131072, 327858, 0, 131072, 327859, 0, 131072, 327860, 0, 131072, 327861, 0, 131072, 327862, 0, 131072, 327863, 0, 131072, 327864, 0, 131072, 327865, 0, 131072, 327866, 0, 131072, 327867, 0, 131072, 327868, 0, 131072, 327869, 0, 131072, 327870, 0, 131072, 327871, 0, 131072, 327872, 0, 131072, 327873, 0, 131072, 327874, 0, 131072, 327875, 0, 131072, 327876, 0, 131072, 327877, 0, 131072, 327878, 0, 131072, 327879, 0, 131072, 327880, 0, 131072, 458657, 0, 131072, 458658, 0, 131072, 458659, 0, 131072, 458660, 0, 131072, 458661, 0, 131072, 458662, 0, 131072, 458663, 0, 131072, 458664, 0, 131072, 458665, 0, 131072, 458666, 0, 131072, 458667, 0, 131072, 458668, 0, 131072, 458669, 0, 131072, 458670, 0, 131072, 458671, 0, 131072, 458672, 0, 131072, 458673, 0, 131072, 458674, 0, 131072, 458675, 0, 131072, 458676, 0, 131072, 458677, 0, 131072, 458678, 0, 131072, 458679, 0, 131072, 458680, 0, 131072, 458681, 0, 131072, 458682, 0, 131072, 458683, 0, 131072, 458684, 0, 131072, 458685, 0, 131072, 458686, 0, 131072, 458687, 0, 131072, 458688, 0, 131072, 458689, 0, 131072, 458690, 0, 131072, 458691, 0, 131072, 458692, 0, 131072, 458693, 0, 131072, 458694, 0, 131072, 458695, 0, 131072, 458696, 0, 131072, 458697, 0, 131072, 458698, 0, 131072, 458699, 0, 131072, 458700, 0, 131072, 458701, 0, 131072, 458702, 0, 131072, 458703, 0, 131072, 458704, 0, 131072, 458705, 0, 131072, 458706, 0, 131072, 458707, 0, 131072, 458708, 0, 131072, 458709, 0, 131072, 458710, 0, 131072, 458711, 0, 131072, 458712, 0, 131072, 458713, 0, 131072, 458714, 0, 131072, 458715, 0, 131072, 458716, 0, 131072, 458717, 0, 131072, 458718, 0, 131072, 458719, 0, 131072, 458720, 0, 131072, 458721, 0, 131072, 458722, 0, 131072, 458723, 0, 131072, 458724, 0, 131072, 458725, 0, 131072, 458726, 0, 131072, 458727, 0, 131072, 458728, 0, 131072, 458729, 0, 131072, 458730, 0, 131072, 458731, 0, 131072, 458732, 0, 131072, 458733, 0, 131072, 458734, 0, 131072, 458735, 0, 131072, 458736, 0, 131072, 458737, 0, 131072, 458738, 0, 131072, 458739, 0, 131072, 458740, 0, 131072, 458741, 0, 131072, 458742, 0, 131072, 458743, 0, 131072, 458744, 0, 131072, 458745, 0, 131072, 458746, 0, 131072, 458747, 0, 131072, 458748, 0, 131072, 458749, 0, 131072, 458750, 0, 131072, 458751, 0, 131072, 393216, 0, 131072, 393217, 0, 131072, 393218, 0, 131072, 393219, 0, 131072, 393220, 0, 131072, 393221, 0, 131072, 393222, 0, 131072, 393223, 0, 131072, 393224, 0, 131072, 393225, 0, 131072, 393226, 0, 131072, 393227, 0, 131072, 393228, 0, 131072, 393229, 0, 131072, 393230, 0, 131072, 393231, 0, 131072, 393232, 0, 131072, 393233, 0, 131072, 393234, 0, 131072, 393235, 0, 131072, 393236, 0, 131072, 393237, 0, 131072, 393238, 0, 131072, 393239, 0, 131072, 393240, 0, 131072, 393241, 0, 131072, 393242, 0, 131072, 393243, 0, 131072, 393244, 0, 131072, 393245, 0, 131072, 393246, 0, 131072, 393247, 0, 131072, 393248, 0, 131072, 393249, 0, 131072, 393250, 0, 131072, 393251, 0, 131072, 393252, 0, 131072, 393253, 0, 131072, 393254, 0, 131072, 393255, 0, 131072, 393256, 0, 131072, 393257, 0, 131072, 393258, 0, 131072, 393259, 0, 131072, 393260, 0, 131072, 393261, 0, 131072, 393262, 0, 131072, 393263, 0, 131072, 393264, 0, 131072, 393265, 0, 131072, 393266, 0, 131072, 393267, 0, 131072, 393268, 0, 131072, 393269, 0, 131072, 393270, 0, 131072, 393271, 0, 131072, 393272, 0, 131072, 393273, 0, 131072, 393274, 0, 131072, 393275, 0, 131072, 393276, 0, 131072, 393277, 0, 131072, 393278, 0, 131072, 393279, 0, 131072, 393280, 0, 131072, 393281, 0, 131072, 393282, 0, 131072, 393283, 0, 131072, 393284, 0, 131072, 393285, 0, 131072, 393286, 0, 131072, 393287, 0, 131072, 393288, 0, 131072, 393289, 0, 131072, 393290, 0, 131072, 393291, 0, 131072, 393292, 0, 131072, 393293, 0, 131072, 393294, 0, 131072, 393295, 0, 131072, 393296, 0, 131072, 393297, 0, 131072, 393298, 0, 131072, 393299, 0, 131072, 393300, 0, 131072, 393301, 0, 131072, 393302, 0, 131072, 393303, 0, 131072, 393304, 0, 131072, 393305, 0, 131072, 393306, 0, 131072, 393307, 0, 131072, 393308, 0, 131072, 393309, 0, 131072, 393310, 0, 131072, 393311, 0, 131072, 393312, 0, 131072, 393313, 0, 131072, 393314, 0, 131072, 393315, 0, 131072, 393316, 0, 131072, 393317, 0, 131072, 393318, 0, 131072, 393319, 0, 131072, 393320, 0, 131072, 393321, 0, 131072, 393322, 0, 131072, 393323, 0, 131072, 393324, 0, 131072, 393325, 0, 131072, 393326, 0, 131072, 393327, 0, 131072, 393328, 0, 131072, 393329, 0, 131072, 393330, 0, 131072, 393331, 0, 131072, 393332, 0, 131072, 393333, 0, 131072, 393334, 0, 131072, 393335, 0, 131072, 393336, 0, 131072, 393337, 0, 131072, 393338, 0, 131072, 393339, 0, 131072, 393340, 0, 131072, 393341, 0, 131072, 393342, 0, 131072, 393343, 0, 131072, 393344, 0, 131072, 393345, 0, 131072, 393346, 0, 131072, 393347, 0, 131072, 393348, 0, 131072, 393349, 0, 131072, 393350, 0, 131072, 393351, 0, 131072, 393352, 0, 131072, 393353, 0, 131072, 393354, 0, 131072, 393355, 0, 131072, 393356, 0, 131072, 393357, 0, 131072, 393358, 0, 131072, 393359, 0, 131072, 393360, 0, 131072, 393361, 0, 131072, 393362, 0, 131072, 393363, 0, 131072, 393364, 0, 131072, 393365, 0, 131072, 393366, 0, 131072, 393367, 0, 131072, 393368, 0, 131072, 393369, 0, 131072, 393370, 0, 131072, 393371, 0, 131072, 393372, 0, 131072, 393373, 0, 131072, 393374, 0, 131072, 393375, 0, 131072, 393376, 0, 131072, 393377, 0, 131072, 393378, 0, 131072, 393379, 0, 131072, 393380, 0, 131072, 393381, 0, 131072, 393382, 0, 131072, 393383, 0, 131072, 393384, 0, 131072, 393385, 0, 131072, 393386, 0, 131072, 393387, 0, 131072, 393388, 0, 131072, 393389, 0, 131072, 393390, 0, 131072, 393391, 0, 131072, 393392, 0, 131072, 393393, 0, 131072, 393394, 0, 131072, 393395, 0, 131072, 393396, 0, 131072, 393397, 0, 131072, 393398, 0, 131072, 393399, 0, 131072, 393400, 0, 131072, 393401, 0, 131072, 393402, 0, 131072, 393403, 0, 131072, 393404, 0, 131072, 393405, 0, 131072, 393406, 0, 131072, 393407, 0, 131072, 393408, 0, 131072, 393409, 0, 131072, 393410, 0, 131072, 393411, 0, 131072, 393412, 0, 131072, 393413, 0, 131072, 393414, 0, 131072, 393415, 0, 131072, 393416, 0, 131072, 524193, 0, 131072, 524194, 0, 131072, 524195, 0, 131072, 524196, 0, 131072, 524197, 0, 131072, 524198, 0, 131072, 524199, 0, 131072, 524200, 0, 131072, 524201, 0, 131072, 524202, 0, 131072, 524203, 0, 131072, 524204, 0, 131072, 524205, 0, 131072, 524206, 0, 131072, 524207, 0, 131072, 524208, 0, 131072, 524209, 0, 131072, 524210, 0, 131072, 524211, 0, 131072, 524212, 0, 131072, 524213, 0, 131072, 524214, 0, 131072, 524215, 0, 131072, 524216, 0, 131072, 524217, 0, 131072, 524218, 0, 131072, 524219, 0, 131072, 524220, 0, 131072, 524221, 0, 131072, 524222, 0, 131072, 524223, 0, 131072, 524224, 0, 131072, 524225, 0, 131072, 524226, 0, 131072, 524227, 0, 131072, 524228, 0, 131072, 524229, 0, 131072, 524230, 0, 131072, 524231, 0, 131072, 524232, 0, 131072, 524233, 0, 131072, 524234, 0, 131072, 524235, 0, 131072, 524236, 0, 131072, 524237, 0, 131072, 524238, 0, 131072, 524239, 0, 131072, 524240, 0, 131072, 524241, 0, 131072, 524242, 0, 131072, 524243, 0, 131072, 524244, 0, 131072, 524245, 0, 131072, 524246, 0, 131072, 524247, 0, 131072, 524248, 0, 131072, 524249, 0, 131072, 524250, 0, 131072, 524251, 0, 131072, 524252, 0, 131072, 524253, 0, 131072, 524254, 0, 131072, 524255, 0, 131072, 524256, 0, 131072, 524257, 0, 131072, 524258, 0, 131072, 524259, 0, 131072, 524260, 0, 131072, 524261, 0, 131072, 524262, 0, 131072, 524263, 0, 131072, 524264, 0, 131072, 524265, 0, 131072, 524266, 0, 131072, 524267, 0, 131072, 524268, 0, 131072, 524269, 0, 131072, 524270, 0, 131072, 524271, 0, 131072, 524272, 0, 131072, 524273, 0, 131072, 524274, 0, 131072, 524275, 0, 131072, 524276, 0, 131072, 524277, 0, 131072, 524278, 0, 131072, 524279, 0, 131072, 524280, 0, 131072, 524281, 0, 131072, 524282, 0, 131072, 524283, 0, 131072, 524284, 0, 131072, 524285, 0, 131072, 524286, 0, 131072, 524287, 0, 131072, 458752, 0, 131072, 458753, 0, 131072, 458754, 0, 131072, 458755, 0, 131072, 458756, 0, 131072, 458757, 0, 131072, 458758, 0, 131072, 458759, 0, 131072, 458760, 0, 131072, 458761, 0, 131072, 458762, 0, 131072, 458763, 0, 131072, 458764, 0, 131072, 458765, 0, 131072, 458766, 0, 131072, 458767, 0, 131072, 458768, 0, 131072, 458769, 0, 131072, 458770, 0, 131072, 458771, 0, 131072, 458772, 0, 131072, 458773, 0, 131072, 458774, 0, 131072, 458775, 0, 131072, 458776, 0, 131072, 458777, 0, 131072, 458778, 0, 131072, 458779, 0, 131072, 458780, 0, 131072, 458781, 0, 131072, 458782, 0, 131072, 458783, 0, 131072, 458784, 0, 131072, 458785, 0, 131072, 458786, 0, 131072, 458787, 0, 131072, 458788, 0, 131072, 458789, 0, 131072, 458790, 0, 131072, 458791, 0, 131072, 458792, 0, 131072, 458793, 0, 131072, 458794, 0, 131072, 458795, 0, 131072, 458796, 0, 131072, 458797, 0, 131072, 458798, 0, 131072, 458799, 0, 131072, 458800, 0, 131072, 458801, 0, 131072, 458802, 0, 131072, 458803, 0, 131072, 458804, 0, 131072, 458805, 0, 131072, 458806, 0, 131072, 458807, 0, 131072, 458808, 0, 131072, 458809, 0, 131072, 458810, 0, 131072, 458811, 0, 131072, 458812, 0, 131072, 458813, 0, 131072, 458814, 0, 131072, 458815, 0, 131072, 458816, 0, 131072, 458817, 0, 131072, 458818, 0, 131072, 458819, 0, 131072, 458820, 0, 131072, 458821, 0, 131072, 458822, 0, 131072, 458823, 0, 131072, 458824, 0, 131072, 458825, 0, 131072, 458826, 0, 131072, 458827, 0, 131072, 458828, 0, 131072, 458829, 0, 131072, 458830, 0, 131072, 458831, 0, 131072, 458832, 0, 131072, 458833, 0, 131072, 458834, 0, 131072, 458835, 0, 131072, 458836, 0, 131072, 458837, 0, 131072, 458838, 0, 131072, 458839, 0, 131072, 458840, 0, 131072, 458841, 0, 131072, 458842, 0, 131072, 458843, 0, 131072, 458844, 0, 131072, 458845, 0, 131072, 458846, 0, 131072, 458847, 0, 131072, 458848, 0, 131072, 458849, 0, 131072, 458850, 0, 131072, 458851, 0, 131072, 458852, 0, 131072, 458853, 0, 131072, 458854, 0, 131072, 458855, 0, 131072, 458856, 0, 131072, 458857, 0, 131072, 458858, 0, 131072, 458859, 0, 131072, 458860, 0, 131072, 458861, 0, 131072, 458862, 0, 131072, 458863, 0, 131072, 458864, 0, 131072, 458865, 0, 131072, 458866, 0, 131072, 458867, 0, 131072, 458868, 0, 131072, 458869, 0, 131072, 458870, 0, 131072, 458871, 0, 131072, 458872, 0, 131072, 458873, 0, 131072, 458874, 0, 131072, 458875, 0, 131072, 458876, 0, 131072, 458877, 0, 131072, 458878, 0, 131072, 458879, 0, 131072, 458880, 0, 131072, 458881, 0, 131072, 458882, 0, 131072, 458883, 0, 131072, 458884, 0, 131072, 458885, 0, 131072, 458886, 0, 131072, 458887, 0, 131072, 458888, 0, 131072, 458889, 0, 131072, 458890, 0, 131072, 458891, 0, 131072, 458892, 0, 131072, 458893, 0, 131072, 458894, 0, 131072, 458895, 0, 131072, 458896, 0, 131072, 458897, 0, 131072, 458898, 0, 131072, 458899, 0, 131072, 458900, 0, 131072, 458901, 0, 131072, 458902, 0, 131072, 458903, 0, 131072, 458904, 0, 131072, 458905, 0, 131072, 458906, 0, 131072, 458907, 0, 131072, 458908, 0, 131072, 458909, 0, 131072, 458910, 0, 131072, 458911, 0, 131072, 458912, 0, 131072, 458913, 0, 131072, 458914, 0, 131072, 458915, 0, 131072, 458916, 0, 131072, 458917, 0, 131072, 458918, 0, 131072, 458919, 0, 131072, 458920, 0, 131072, 458921, 0, 131072, 458922, 0, 131072, 458923, 0, 131072, 458924, 0, 131072, 458925, 0, 131072, 458926, 0, 131072, 458927, 0, 131072, 458928, 0, 131072, 458929, 0, 131072, 458930, 0, 131072, 458931, 0, 131072, 458932, 0, 131072, 458933, 0, 131072, 458934, 0, 131072, 458935, 0, 131072, 458936, 0, 131072, 458937, 0, 131072, 458938, 0, 131072, 458939, 0, 131072, 458940, 0, 131072, 458941, 0, 131072, 458942, 0, 131072, 458943, 0, 131072, 458944, 0, 131072, 458945, 0, 131072, 458946, 0, 131072, 458947, 0, 131072, 458948, 0, 131072, 458949, 0, 131072, 458950, 0, 131072, 458951, 0, 131072, 458952, 0, 131072, 458953, 0, 131072, 589730, 0, 131072, 589731, 0, 131072, 589732, 0, 131072, 589733, 0, 131072, 589734, 0, 131072, 589735, 0, 131072, 589736, 0, 131072, 589737, 0, 131072, 589738, 0, 131072, 589739, 0, 131072, 589740, 0, 131072, 589741, 0, 131072, 589742, 0, 131072, 589743, 0, 131072, 589744, 0, 131072, 589745, 0, 131072, 589746, 0, 131072, 589747, 0, 131072, 589748, 0, 131072, 589749, 0, 131072, 589750, 0, 131072, 589751, 0, 131072, 589752, 0, 131072, 589753, 0, 131072, 589754, 0, 131072, 589755, 0, 131072, 589756, 0, 131072, 589757, 0, 131072, 589758, 0, 131072, 589759, 0, 131072, 589760, 0, 131072, 589761, 0, 131072, 589762, 0, 131072, 589763, 0, 131072, 589764, 0, 131072, 589765, 0, 131072, 589766, 0, 131072, 589767, 0, 131072, 589768, 0, 131072, 589769, 0, 131072, 589770, 0, 131072, 589771, 0, 131072, 589772, 0, 131072, 589773, 0, 131072, 589774, 0, 131072, 589775, 0, 131072, 589776, 0, 131072, 589777, 0, 131072, 589778, 0, 131072, 589779, 0, 131072, 589780, 0, 131072, 589781, 0, 131072, 589782, 0, 131072, 589783, 0, 131072, 589784, 0, 131072, 589785, 0, 131072, 589786, 0, 131072, 589787, 0, 131072, 589788, 0, 131072, 589789, 0, 131072, 589790, 0, 131072, 589791, 0, 131072, 589792, 0, 131072, 589793, 0, 131072, 589794, 0, 131072, 589795, 0, 131072, 589796, 0, 131072, 589797, 0, 131072, 589798, 0, 131072, 589799, 0, 131072, 589800, 0, 131072, 589801, 0, 131072, 589802, 0, 131072, 589803, 0, 131072, 589804, 0, 131072, 589805, 0, 131072, 589806, 0, 131072, 589807, 0, 131072, 589808, 0, 131072, 589809, 0, 131072, 589810, 0, 131072, 589811, 0, 131072, 589812, 0, 131072, 589813, 0, 131072, 589814, 0, 131072, 589815, 0, 131072, 589816, 0, 131072, 589817, 0, 131072, 589818, 0, 131072, 589819, 0, 131072, 589820, 0, 131072, 589821, 0, 131072, 589822, 0, 131072, 589823, 0, 131072, 524288, 0, 131072, 524289, 0, 131072, 524290, 0, 131072, 524291, 0, 131072, 524292, 0, 131072, 524293, 0, 131072, 524294, 0, 131072, 524295, 0, 131072, 524296, 0, 131072, 524297, 0, 131072, 524298, 0, 131072, 524299, 0, 131072, 524300, 0, 131072, 524301, 0, 131072, 524302, 0, 131072, 524303, 0, 131072, 524304, 0, 131072, 524305, 0, 131072, 524306, 0, 131072, 524307, 0, 131072, 524308, 0, 131072, 524309, 0, 131072, 524310, 0, 131072, 524311, 0, 131072, 524312, 0, 131072, 524313, 0, 131072, 524314, 0, 131072, 524315, 0, 131072, 524316, 0, 131072, 524317, 0, 131072, 524318, 0, 131072, 524319, 0, 131072, 524320, 0, 131072, 524321, 0, 131072, 524322, 0, 131072, 524323, 0, 131072, 524324, 0, 131072, 524325, 0, 131072, 524326, 0, 131072, 524327, 0, 131072, 524328, 0, 131072, 524329, 0, 131072, 524330, 0, 131072, 524331, 0, 131072, 524332, 0, 131072, 524333, 0, 131072, 524334, 0, 131072, 524335, 0, 131072, 524336, 0, 131072, 524337, 0, 131072, 524338, 0, 131072, 524339, 0, 131072, 524340, 0, 131072, 524341, 0, 131072, 524342, 0, 131072, 524343, 0, 131072, 524344, 0, 131072, 524345, 0, 131072, 524346, 0, 131072, 524347, 0, 131072, 524348, 0, 131072, 524349, 0, 131072, 524350, 0, 131072, 524351, 0, 131072, 524352, 0, 131072, 524353, 0, 131072, 524354, 0, 131072, 524355, 0, 131072, 524356, 0, 131072, 524357, 0, 131072, 524358, 0, 131072, 524359, 0, 131072, 524360, 0, 131072, 524361, 0, 131072, 524362, 0, 131072, 524363, 0, 131072, 524364, 0, 131072, 524365, 0, 131072, 524366, 0, 131072, 524367, 0, 131072, 524368, 0, 131072, 524369, 0, 131072, 524370, 0, 131072, 524371, 0, 131072, 524372, 0, 131072, 524373, 0, 131072, 524374, 0, 131072, 524375, 0, 131072, 524376, 0, 131072, 524377, 0, 131072, 524378, 0, 131072, 524379, 0, 131072, 524380, 0, 131072, 524381, 0, 131072, 524382, 0, 131072, 524383, 0, 131072, 524384, 0, 131072, 524385, 0, 131072, 524386, 0, 131072, 524387, 0, 131072, 524388, 0, 131072, 524389, 0, 131072, 524390, 0, 131072, 524391, 0, 131072, 524392, 0, 131072, 524393, 0, 131072, 524394, 0, 131072, 524395, 0, 131072, 524396, 0, 131072, 524397, 0, 131072, 524398, 0, 131072, 524399, 0, 131072, 524400, 0, 131072, 524401, 0, 131072, 524402, 0, 131072, 524403, 0, 131072, 524404, 0, 131072, 524405, 0, 131072, 524406, 0, 131072, 524407, 0, 131072, 524408, 0, 131072, 524409, 0, 131072, 524410, 0, 131072, 524411, 0, 131072, 524412, 0, 131072, 524413, 0, 131072, 524414, 0, 131072, 524415, 0, 131072, 524416, 0, 131072, 524417, 0, 131072, 524418, 0, 131072, 524419, 0, 131072, 524420, 0, 131072, 524421, 0, 131072, 524422, 0, 131072, 524423, 0, 131072, 524424, 0, 131072, 524425, 0, 131072, 524426, 0, 131072, 524427, 0, 131072, 524428, 0, 131072, 524429, 0, 131072, 524430, 0, 131072, 524431, 0, 131072, 524432, 0, 131072, 524433, 0, 131072, 524434, 0, 131072, 524435, 0, 131072, 524436, 0, 131072, 524437, 0, 131072, 524438, 0, 131072, 524439, 0, 131072, 524440, 0, 131072, 524441, 0, 131072, 524442, 0, 131072, 524443, 0, 131072, 524444, 0, 131072, 524445, 0, 131072, 524446, 0, 131072, 524447, 0, 131072, 524448, 0, 131072, 524449, 0, 131072, 524450, 0, 131072, 524451, 0, 131072, 524452, 0, 131072, 524453, 0, 131072, 524454, 0, 131072, 524455, 0, 131072, 524456, 0, 131072, 524457, 0, 131072, 524458, 0, 131072, 524459, 0, 131072, 524460, 0, 131072, 524461, 0, 131072, 524462, 0, 131072, 524463, 0, 131072, 524464, 0, 131072, 524465, 0, 131072, 524466, 0, 131072, 524467, 0, 131072, 524468, 0, 131072, 524469, 0, 131072, 524470, 0, 131072, 524471, 0, 131072, 524472, 0, 131072, 524473, 0, 131072, 524474, 0, 131072, 524475, 0, 131072, 524476, 0, 131072, 524477, 0, 131072, 524478, 0, 131072, 524479, 0, 131072, 524480, 0, 131072, 524481, 0, 131072, 524482, 0, 131072, 524483, 0, 131072, 524484, 0, 131072, 524485, 0, 131072, 524486, 0, 131072, 524487, 0, 131072, 524488, 0, 131072, 524489, 0, 131072, 655267, 0, 131072, 655268, 0, 131072, 655269, 0, 131072, 655270, 0, 131072, 655271, 0, 131072, 655272, 0, 131072, 655273, 0, 131072, 655274, 0, 131072, 655275, 0, 131072, 655276, 0, 131072, 655277, 0, 131072, 655278, 0, 131072, 655279, 0, 131072, 655280, 0, 131072, 655281, 0, 131072, 655282, 0, 131072, 655283, 0, 131072, 655284, 0, 131072, 655285, 0, 131072, 655286, 0, 131072, 655287, 0, 131072, 655288, 0, 131072, 655289, 0, 131072, 655290, 0, 131072, 655291, 0, 131072, 655292, 0, 131072, 655293, 0, 131072, 655294, 0, 131072, 655295, 0, 131072, 655296, 0, 131072, 655297, 0, 131072, 655298, 0, 131072, 655299, 0, 131072, 655300, 0, 131072, 655301, 0, 131072, 655302, 0, 131072, 655303, 0, 131072, 655304, 0, 131072, 655305, 0, 131072, 655306, 0, 131072, 655307, 0, 131072, 655308, 0, 131072, 655309, 0, 131072, 655310, 0, 131072, 655311, 0, 131072, 655312, 0, 131072, 655313, 0, 131072, 655314, 0, 131072, 655315, 0, 131072, 655316, 0, 131072, 655317, 0, 131072, 655318, 0, 131072, 655319, 0, 131072, 655320, 0, 131072, 655321, 0, 131072, 655322, 0, 131072, 655323, 0, 131072, 655324, 0, 131072, 655325, 0, 131072, 655326, 0, 131072, 655327, 0, 131072, 655328, 0, 131072, 655329, 0, 131072, 655330, 0, 131072, 655331, 0, 131072, 655332, 0, 131072, 655333, 0, 131072, 655334, 0, 131072, 655335, 0, 131072, 655336, 0, 131072, 655337, 0, 131072, 655338, 0, 131072, 655339, 0, 131072, 655340, 0, 131072, 655341, 0, 131072, 655342, 0, 131072, 655343, 0, 131072, 655344, 0, 131072, 655345, 0, 131072, 655346, 0, 131072, 655347, 0, 131072, 655348, 0, 131072, 655349, 0, 131072, 655350, 0, 131072, 655351, 0, 131072, 655352, 0, 131072, 655353, 0, 131072, 655354, 0, 131072, 655355, 0, 131072, 655356, 0, 131072, 655357, 0, 131072, 655358, 0, 131072, 655359, 0, 131072, 589824, 0, 131072, 589825, 0, 131072, 589826, 0, 131072, 589827, 0, 131072, 589828, 0, 131072, 589829, 0, 131072, 589830, 0, 131072, 589831, 0, 131072, 589832, 0, 131072, 589833, 0, 131072, 589834, 0, 131072, 589835, 0, 131072, 589836, 0, 131072, 589837, 0, 131072, 589838, 0, 131072, 589839, 0, 131072, 589840, 0, 131072, 589841, 0, 131072, 589842, 0, 131072, 589843, 0, 131072, 589844, 0, 131072, 589845, 0, 131072, 589846, 0, 131072, 589847, 0, 131072, 589848, 0, 131072, 589849, 0, 131072, 589850, 0, 131072, 589851, 0, 131072, 589852, 0, 131072, 589853, 0, 131072, 589854, 0, 131072, 589855, 0, 131072, 589856, 0, 131072, 589857, 0, 131072, 589858, 0, 131072, 589859, 0, 131072, 589860, 0, 131072, 589861, 0, 131072, 589862, 0, 131072, 589863, 0, 131072, 589864, 0, 131072, 589865, 0, 131072, 589866, 0, 131072, 589867, 0, 131072, 589868, 0, 131072, 589869, 0, 131072, 589870, 0, 131072, 589871, 0, 131072, 589872, 0, 131072, 589873, 0, 131072, 589874, 0, 131072, 589875, 0, 131072, 589876, 0, 131072, 589877, 0, 131072, 589878, 0, 131072, 589879, 0, 131072, 589880, 0, 131072, 589881, 0, 131072, 589882, 0, 131072, 589883, 0, 131072, 589884, 0, 131072, 589885, 0, 131072, 589886, 0, 131072, 589887, 0, 131072, 589888, 0, 131072, 589889, 0, 131072, 589890, 0, 131072, 589891, 0, 131072, 589892, 0, 131072, 589893, 0, 131072, 589894, 0, 131072, 589895, 0, 131072, 589896, 0, 131072, 589897, 0, 131072, 589898, 0, 131072, 589899, 0, 131072, 589900, 0, 131072, 589901, 0, 131072, 589902, 0, 131072, 589903, 0, 131072, 589904, 0, 131072, 589905, 0, 131072, 589906, 0, 131072, 589907, 0, 131072, 589908, 0, 131072, 589909, 0, 131072, 589910, 0, 131072, 589911, 0, 131072, 589912, 0, 131072, 589913, 0, 131072, 589914, 0, 131072, 589915, 0, 131072, 589916, 0, 131072, 589917, 0, 131072, 589918, 0, 131072, 589919, 0, 131072, 589920, 0, 131072, 589921, 0, 131072, 589922, 0, 131072, 589923, 0, 131072, 589924, 0, 131072, 589925, 0, 131072, 589926, 0, 131072, 589927, 0, 131072, 589928, 0, 131072, 589929, 0, 131072, 589930, 0, 131072, 589931, 0, 131072, 589932, 0, 131072, 589933, 0, 131072, 589934, 0, 131072, 589935, 0, 131072, 589936, 0, 131072, 589937, 0, 131072, 589938, 0, 131072, 589939, 0, 131072, 589940, 0, 131072, 589941, 0, 131072, 589942, 0, 131072, 589943, 0, 131072, 589944, 0, 131072, 589945, 0, 131072, 589946, 0, 131072, 589947, 0, 131072, 589948, 0, 131072, 589949, 0, 131072, 589950, 0, 131072, 589951, 0, 131072, 589952, 0, 131072, 589953, 0, 131072, 589954, 0, 131072, 589955, 0, 131072, 589956, 0, 131072, 589957, 0, 131072, 589958, 0, 131072, 589959, 0, 131072, 589960, 0, 131072, 589961, 0, 131072, 589962, 0, 131072, 589963, 0, 131072, 589964, 0, 131072, 589965, 0, 131072, 589966, 0, 131072, 589967, 0, 131072, 589968, 0, 131072, 589969, 0, 131072, 589970, 0, 131072, 589971, 0, 131072, 589972, 0, 131072, 589973, 0, 131072, 589974, 0, 131072, 589975, 0, 131072, 589976, 0, 131072, 589977, 0, 131072, 589978, 0, 131072, 589979, 0, 131072, 589980, 0, 131072, 589981, 0, 131072, 589982, 0, 131072, 589983, 0, 131072, 589984, 0, 131072, 589985, 0, 131072, 589986, 0, 131072, 589987, 0, 131072, 589988, 0, 131072, 589989, 0, 131072, 589990, 0, 131072, 589991, 0, 131072, 589992, 0, 131072, 589993, 0, 131072, 589994, 0, 131072, 589995, 0, 131072, 589996, 0, 131072, 589997, 0, 131072, 589998, 0, 131072, 589999, 0, 131072, 590000, 0, 131072, 590001, 0, 131072, 590002, 0, 131072, 590003, 0, 131072, 590004, 0, 131072, 590005, 0, 131072, 590006, 0, 131072, 590007, 0, 131072, 590008, 0, 131072, 590009, 0, 131072, 590010, 0, 131072, 590011, 0, 131072, 590012, 0, 131072, 590013, 0, 131072, 590014, 0, 131072, 590015, 0, 131072, 590016, 0, 131072, 590017, 0, 131072, 590018, 0, 131072, 590019, 0, 131072, 590020, 0, 131072, 590021, 0, 131072, 590022, 0, 131072, 590023, 0, 131072, 590024, 0, 131072, 590025, 0, 131072, 590026, 0, 131072, 720803, 0, 131072, 720804, 0, 131072, 720805, 0, 131072, 720806, 0, 131072, 720807, 0, 131072, 720808, 0, 131072, 720809, 0, 131072, 720810, 0, 131072, 720811, 0, 131072, 720812, 0, 131072, 720813, 0, 131072, 720814, 0, 131072, 720815, 0, 131072, 720816, 0, 131072, 720817, 0, 131072, 720818, 0, 131072, 720819, 0, 131072, 720820, 0, 131072, 720821, 0, 131072, 720822, 0, 131072, 720823, 0, 131072, 720824, 0, 131072, 720825, 0, 131072, 720826, 0, 131072, 720827, 0, 131072, 720828, 0, 131072, 720829, 0, 131072, 720830, 0, 131072, 720831, 0, 131072, 720832, 0, 131072, 720833, 0, 131072, 720834, 0, 131072, 720835, 0, 131072, 720836, 0, 131072, 720837, 0, 131072, 720838, 0, 131072, 720839, 0, 131072, 720840, 0, 131072, 720841, 0, 131072, 720842, 0, 131072, 720843, 0, 131072, 720844, 0, 131072, 720845, 0, 131072, 720846, 0, 131072, 720847, 0, 131072, 720848, 0, 131072, 720849, 0, 131072, 720850, 0, 131072, 720851, 0, 131072, 720852, 0, 131072, 720853, 0, 131072, 720854, 0, 131072, 720855, 0, 131072, 720856, 0, 131072, 720857, 0, 131072, 720858, 0, 131072, 720859, 0, 131072, 720860, 0, 131072, 720861, 0, 131072, 720862, 0, 131072, 720863, 0, 131072, 720864, 0, 131072, 720865, 0, 131072, 720866, 0, 131072, 720867, 0, 131072, 720868, 0, 131072, 720869, 0, 131072, 720870, 0, 131072, 720871, 0, 131072, 720872, 0, 131072, 720873, 0, 131072, 720874, 0, 131072, 720875, 0, 131072, 720876, 0, 131072, 720877, 0, 131072, 720878, 0, 131072, 720879, 0, 131072, 720880, 0, 131072, 720881, 0, 131072, 720882, 0, 131072, 720883, 0, 131072, 720884, 0, 131072, 720885, 0, 131072, 720886, 0, 131072, 720887, 0, 131072, 720888, 0, 131072, 720889, 0, 131072, 720890, 0, 131072, 720891, 0, 131072, 720892, 0, 131072, 720893, 0, 131072, 720894, 0, 131072, 720895, 0, 131072, 655360, 0, 131072, 655361, 0, 131072, 655362, 0, 131072, 655363, 0, 131072, 655364, 0, 131072, 655365, 0, 131072, 655366, 0, 131072, 655367, 0, 131072, 655368, 0, 131072, 655369, 0, 131072, 655370, 0, 131072, 655371, 0, 131072, 655372, 0, 131072, 655373, 0, 131072, 655374, 0, 131072, 655375, 0, 131072, 655376, 0, 131072, 655377, 0, 131072, 655378, 0, 131072, 655379, 0, 131072, 655380, 0, 131072, 655381, 0, 131072, 655382, 0, 131072, 655383, 0, 131072, 655384, 0, 131072, 655385, 0, 131072, 655386, 0, 131072, 655387, 0, 131072, 655388, 0, 131072, 655389, 0, 131072, 655390, 0, 131072, 655391, 0, 131072, 655392, 0, 131072, 655393, 0, 131072, 655394, 0, 131072, 655395, 0, 131072, 655396, 0, 131072, 655397, 0, 131072, 655398, 0, 131072, 655399, 0, 131072, 655400, 0, 131072, 655401, 0, 131072, 655402, 0, 131072, 655403, 0, 131072, 655404, 0, 131072, 655405, 0, 131072, 655406, 0, 131072, 655407, 0, 131072, 655408, 0, 131072, 655409, 0, 131072, 655410, 0, 131072, 655411, 0, 131072, 655412, 0, 131072, 655413, 0, 131072, 655414, 0, 131072, 655415, 0, 131072, 655416, 0, 131072, 655417, 0, 131072, 655418, 0, 131072, 655419, 0, 131072, 655420, 0, 131072, 655421, 0, 131072, 655422, 0, 131072, 655423, 0, 131072, 655424, 0, 131072, 655425, 0, 131072, 655426, 0, 131072, 655427, 0, 131072, 655428, 0, 131072, 655429, 0, 131072, 655430, 0, 131072, 655431, 0, 131072, 655432, 0, 131072, 655433, 0, 131072, 655434, 0, 131072, 655435, 0, 131072, 655436, 0, 131072, 655437, 0, 131072, 655438, 0, 131072, 655439, 0, 131072, 655440, 0, 131072, 655441, 0, 131072, 655442, 0, 131072, 655443, 0, 131072, 655444, 0, 131072, 655445, 0, 131072, 655446, 0, 131072, 655447, 0, 131072, 655448, 0, 131072, 655449, 0, 131072, 655450, 0, 131072, 655451, 0, 131072, 655452, 0, 131072, 655453, 0, 131072, 655454, 0, 131072, 655455, 0, 131072, 655456, 0, 131072, 655457, 0, 131072, 655458, 0, 131072, 655459, 0, 131072, 655460, 0, 131072, 655461, 0, 131072, 655462, 0, 131072, 655463, 0, 131072, 655464, 0, 131072, 655465, 0, 131072, 655466, 0, 131072, 655467, 0, 131072, 655468, 0, 131072, 655469, 0, 131072, 655470, 0, 131072, 655471, 0, 131072, 655472, 0, 131072, 655473, 0, 131072, 655474, 0, 131072, 655475, 0, 131072, 655476, 0, 131072, 655477, 0, 131072, 655478, 0, 131072, 655479, 0, 131072, 655480, 0, 131072, 655481, 0, 131072, 655482, 0, 131072, 655483, 0, 131072, 655484, 0, 131072, 655485, 0, 131072, 655486, 0, 131072, 655487, 0, 131072, 655488, 0, 131072, 655489, 0, 131072, 655490, 0, 131072, 655491, 0, 131072, 655492, 0, 131072, 655493, 0, 131072, 655494, 0, 131072, 655495, 0, 131072, 655496, 0, 131072, 655497, 0, 131072, 655498, 0, 131072, 655499, 0, 131072, 655500, 0, 131072, 655501, 0, 131072, 655502, 0, 131072, 655503, 0, 131072, 655504, 0, 131072, 655505, 0, 131072, 655506, 0, 131072, 655507, 0, 131072, 655508, 0, 131072, 655509, 0, 131072, 655510, 0, 131072, 655511, 0, 131072, 655512, 0, 131072, 655513, 0, 131072, 655514, 0, 131072, 655515, 0, 131072, 655516, 0, 131072, 655517, 0, 131072, 655518, 0, 131072, 655519, 0, 131072, 655520, 0, 131072, 655521, 0, 131072, 655522, 0, 131072, 655523, 0, 131072, 655524, 0, 131072, 655525, 0, 131072, 655526, 0, 131072, 655527, 0, 131072, 655528, 0, 131072, 655529, 0, 131072, 655530, 0, 131072, 655531, 0, 131072, 655532, 0, 131072, 655533, 0, 131072, 655534, 0, 131072, 655535, 0, 131072, 655536, 0, 131072, 655537, 0, 131072, 655538, 0, 131072, 655539, 0, 131072, 655540, 0, 131072, 655541, 0, 131072, 655542, 0, 131072, 655543, 0, 131072, 655544, 0, 131072, 655545, 0, 131072, 655546, 0, 131072, 655547, 0, 131072, 655548, 0, 131072, 655549, 0, 131072, 655550, 0, 131072, 655551, 0, 131072, 655552, 0, 131072, 655553, 0, 131072, 655554, 0, 131072, 655555, 0, 131072, 655556, 0, 131072, 655557, 0, 131072, 655558, 0, 131072, 655559, 0, 131072, 655560, 0, 131072, 655561, 0, 131072, 655562, 0, 131072, 786340, 0, 131072, 786341, 0, 131072, 786342, 0, 131072, 786343, 0, 131072, 786344, 0, 131072, 786345, 0, 131072, 786346, 0, 131072, 786347, 0, 131072, 786348, 0, 131072, 786349, 0, 131072, 786350, 0, 131072, 786351, 0, 131072, 786352, 0, 131072, 786353, 0, 131072, 786354, 0, 131072, 786355, 0, 131072, 786356, 0, 131072, 786357, 0, 131072, 786358, 0, 131072, 786359, 0, 131072, 786360, 0, 131072, 786361, 0, 131072, 786362, 0, 131072, 786363, 0, 131072, 786364, 0, 131072, 786365, 0, 131072, 786366, 0, 131072, 786367, 0, 131072, 786368, 0, 131072, 786369, 0, 131072, 786370, 0, 131072, 786371, 0, 131072, 786372, 0, 131072, 786373, 0, 131072, 786374, 0, 131072, 786375, 0, 131072, 786376, 0, 131072, 786377, 0, 131072, 786378, 0, 131072, 786379, 0, 131072, 786380, 0, 131072, 786381, 0, 131072, 786382, 0, 131072, 786383, 0, 131072, 786384, 0, 131072, 786385, 0, 131072, 786386, 0, 131072, 786387, 0, 131072, 786388, 0, 131072, 786389, 0, 131072, 786390, 0, 131072, 786391, 0, 131072, 786392, 0, 131072, 786393, 0, 131072, 786394, 0, 131072, 786395, 0, 131072, 786396, 0, 131072, 786397, 0, 131072, 786398, 0, 131072, 786399, 0, 131072, 786400, 0, 131072, 786401, 0, 131072, 786402, 0, 131072, 786403, 0, 131072, 786404, 0, 131072, 786405, 0, 131072, 786406, 0, 131072, 786407, 0, 131072, 786408, 0, 131072, 786409, 0, 131072, 786410, 0, 131072, 786411, 0, 131072, 786412, 0, 131072, 786413, 0, 131072, 786414, 0, 131072, 786415, 0, 131072, 786416, 0, 131072, 786417, 0, 131072, 786418, 0, 131072, 786419, 0, 131072, 786420, 0, 131072, 786421, 0, 131072, 786422, 0, 131072, 786423, 0, 131072, 786424, 0, 131072, 786425, 0, 131072, 786426, 0, 131072, 786427, 0, 131072, 786428, 0, 131072, 786429, 0, 131072, 786430, 0, 131072, 786431, 0, 131072, 720896, 0, 131072, 720897, 0, 131072, 720898, 0, 131072, 720899, 0, 131072, 720900, 0, 131072, 720901, 0, 131072, 720902, 0, 131072, 720903, 0, 131072, 720904, 0, 131072, 720905, 0, 131072, 720906, 0, 131072, 720907, 0, 131072, 720908, 0, 131072, 720909, 0, 131072, 720910, 0, 131072, 720911, 0, 131072, 720912, 0, 131072, 720913, 0, 131072, 720914, 0, 131072, 720915, 0, 131072, 720916, 0, 131072, 720917, 0, 131072, 720918, 0, 131072, 720919, 0, 131072, 720920, 0, 131072, 720921, 0, 131072, 720922, 0, 131072, 720923, 0, 131072, 720924, 0, 131072, 720925, 0, 131072, 720926, 0, 131072, 720927, 0, 131072, 720928, 0, 131072, 720929, 0, 131072, 720930, 0, 131072, 720931, 0, 131072, 720932, 0, 131072, 720933, 0, 131072, 720934, 0, 131072, 720935, 0, 131072, 720936, 0, 131072, 720937, 0, 131072, 720938, 0, 131072, 720939, 0, 131072, 720940, 0, 131072, 720941, 0, 131072, 720942, 0, 131072, 720943, 0, 131072, 720944, 0, 131072, 720945, 0, 131072, 720946, 0, 131072, 720947, 0, 131072, 720948, 0, 131072, 720949, 0, 131072, 720950, 0, 131072, 720951, 0, 131072, 720952, 0, 131072, 720953, 0, 131072, 720954, 0, 131072, 720955, 0, 131072, 720956, 0, 131072, 720957, 0, 131072, 720958, 0, 131072, 720959, 0, 131072, 720960, 0, 131072, 720961, 0, 131072, 720962, 0, 131072, 720963, 0, 131072, 720964, 0, 131072, 720965, 0, 131072, 720966, 0, 131072, 720967, 0, 131072, 720968, 0, 131072, 720969, 0, 131072, 720970, 0, 131072, 720971, 0, 131072, 720972, 0, 131072, 720973, 0, 131072, 720974, 0, 131072, 720975, 0, 131072, 720976, 0, 131072, 720977, 0, 131072, 720978, 0, 131072, 720979, 0, 131072, 720980, 0, 131072, 720981, 0, 131072, 720982, 0, 131072, 720983, 0, 131072, 720984, 0, 131072, 720985, 0, 131072, 720986, 0, 131072, 720987, 0, 131072, 720988, 0, 131072, 720989, 0, 131072, 720990, 0, 131072, 720991, 0, 131072, 720992, 0, 131072, 720993, 0, 131072, 720994, 0, 131072, 720995, 0, 131072, 720996, 0, 131072, 720997, 0, 131072, 720998, 0, 131072, 720999, 0, 131072, 721000, 0, 131072, 721001, 0, 131072, 721002, 0, 131072, 721003, 0, 131072, 721004, 0, 131072, 721005, 0, 131072, 721006, 0, 131072, 721007, 0, 131072, 721008, 0, 131072, 721009, 0, 131072, 721010, 0, 131072, 721011, 0, 131072, 721012, 0, 131072, 721013, 0, 131072, 721014, 0, 131072, 721015, 0, 131072, 721016, 0, 131072, 721017, 0, 131072, 721018, 0, 131072, 721019, 0, 131072, 721020, 0, 131072, 721021, 0, 131072, 721022, 0, 131072, 721023, 0, 131072, 721024, 0, 131072, 721025, 0, 131072, 721026, 0, 131072, 721027, 0, 131072, 721028, 0, 131072, 721029, 0, 131072, 721030, 0, 131072, 721031, 0, 131072, 721032, 0, 131072, 721033, 0, 131072, 721034, 0, 131072, 721035, 0, 131072, 721036, 0, 131072, 721037, 0, 131072, 721038, 0, 131072, 721039, 0, 131072, 721040, 0, 131072, 721041, 0, 131072, 721042, 0, 131072, 721043, 0, 131072, 721044, 0, 131072, 721045, 0, 131072, 721046, 0, 131072, 721047, 0, 131072, 721048, 0, 131072, 721049, 0, 131072, 721050, 0, 131072, 721051, 0, 131072, 721052, 0, 131072, 721053, 0, 131072, 721054, 0, 131072, 721055, 0, 131072, 721056, 0, 131072, 721057, 0, 131072, 721058, 0, 131072, 721059, 0, 131072, 721060, 0, 131072, 721061, 0, 131072, 721062, 0, 131072, 721063, 0, 131072, 721064, 0, 131072, 721065, 0, 131072, 721066, 0, 131072, 721067, 0, 131072, 721068, 0, 131072, 721069, 0, 131072, 721070, 0, 131072, 721071, 0, 131072, 721072, 0, 131072, 721073, 0, 131072, 721074, 0, 131072, 721075, 0, 131072, 721076, 0, 131072, 721077, 0, 131072, 721078, 0, 131072, 721079, 0, 131072, 721080, 0, 131072, 721081, 0, 131072, 721082, 0, 131072, 721083, 0, 131072, 721084, 0, 131072, 721085, 0, 131072, 721086, 0, 131072, 721087, 0, 131072, 721088, 0, 131072, 721089, 0, 131072, 721090, 0, 131072, 721091, 0, 131072, 721092, 0, 131072, 721093, 0, 131072, 721094, 0, 131072, 721095, 0, 131072, 721096, 0, 131072, 721097, 0, 131072, 721098, 0, 131072, 851877, 0, 131072, 851878, 0, 131072, 851879, 0, 131072, 851880, 0, 131072, 851881, 0, 131072, 851882, 0, 131072, 851883, 0, 131072, 851884, 0, 131072, 851885, 0, 131072, 851886, 0, 131072, 851887, 0, 131072, 851888, 0, 131072, 851889, 0, 131072, 851890, 0, 131072, 851891, 0, 131072, 851892, 0, 131072, 851893, 0, 131072, 851894, 0, 131072, 851895, 0, 131072, 851896, 0, 131072, 851897, 0, 131072, 851898, 0, 131072, 851899, 0, 131072, 851900, 0, 131072, 851901, 0, 131072, 851902, 0, 131072, 851903, 0, 131072, 851904, 0, 131072, 851905, 0, 131072, 851906, 0, 131072, 851907, 0, 131072, 851908, 0, 131072, 851909, 0, 131072, 851910, 0, 131072, 851911, 0, 131072, 851912, 0, 131072, 851913, 0, 131072, 851914, 0, 131072, 851915, 0, 131072, 851916, 0, 131072, 851917, 0, 131072, 851918, 0, 131072, 851919, 0, 131072, 851920, 0, 131072, 851921, 0, 131072, 851922, 0, 131072, 851923, 0, 131072, 851924, 0, 131072, 851925, 0, 131072, 851926, 0, 131072, 851927, 0, 131072, 851928, 0, 131072, 851929, 0, 131072, 851930, 0, 131072, 851931, 0, 131072, 851932, 0, 131072, 851933, 0, 131072, 851934, 0, 131072, 851935, 0, 131072, 851936, 0, 131072, 851937, 0, 131072, 851938, 0, 131072, 851939, 0, 131072, 851940, 0, 131072, 851941, 0, 131072, 851942, 0, 131072, 851943, 0, 131072, 851944, 0, 131072, 851945, 0, 131072, 851946, 0, 131072, 851947, 0, 131072, 851948, 0, 131072, 851949, 0, 131072, 851950, 0, 131072, 851951, 0, 131072, 851952, 0, 131072, 851953, 0, 131072, 851954, 0, 131072, 851955, 0, 131072, 851956, 0, 131072, 851957, 0, 131072, 851958, 0, 131072, 851959, 0, 131072, 851960, 0, 131072, 851961, 0, 131072, 851962, 0, 131072, 851963, 0, 131072, 851964, 0, 131072, 851965, 0, 131072, 851966, 0, 131072, 851967, 0, 131072, 786432, 0, 131072, 786433, 0, 131072, 786434, 0, 131072, 786435, 0, 131072, 786436, 0, 131072, 786437, 0, 131072, 786438, 0, 131072, 786439, 0, 131072, 786440, 0, 131072, 786441, 0, 131072, 786442, 0, 131072, 786443, 0, 131072, 786444, 0, 131072, 786445, 0, 131072, 786446, 0, 131072, 786447, 0, 131072, 786448, 0, 131072, 786449, 0, 131072, 786450, 0, 131072, 786451, 0, 131072, 786452, 0, 131072, 786453, 0, 131072, 786454, 0, 131072, 786455, 0, 131072, 786456, 0, 131072, 786457, 0, 131072, 786458, 0, 131072, 786459, 0, 131072, 786460, 0, 131072, 786461, 0, 131072, 786462, 0, 131072, 786463, 0, 131072, 786464, 0, 131072, 786465, 0, 131072, 786466, 0, 131072, 786467, 0, 131072, 786468, 0, 131072, 786469, 0, 131072, 786470, 0, 131072, 786471, 0, 131072, 786472, 0, 131072, 786473, 0, 131072, 786474, 0, 131072, 786475, 0, 131072, 786476, 0, 131072, 786477, 0, 131072, 786478, 0, 131072, 786479, 0, 131072, 786480, 0, 131072, 786481, 0, 131072, 786482, 0, 131072, 786483, 0, 131072, 786484, 0, 131072, 786485, 0, 131072, 786486, 0, 131072, 786487, 0, 131072, 786488, 0, 131072, 786489, 0, 131072, 786490, 0, 131072, 786491, 0, 131072, 786492, 0, 131072, 786493, 0, 131072, 786494, 0, 131072, 786495, 0, 131072, 786496, 0, 131072, 786497, 0, 131072, 786498, 0, 131072, 786499, 0, 131072, 786500, 0, 131072, 786501, 0, 131072, 786502, 0, 131072, 786503, 0, 131072, 786504, 0, 131072, 786505, 0, 131072, 786506, 0, 131072, 786507, 0, 131072, 786508, 0, 131072, 786509, 0, 131072, 786510, 0, 131072, 786511, 0, 131072, 786512, 0, 131072, 786513, 0, 131072, 786514, 0, 131072, 786515, 0, 131072, 786516, 0, 131072, 786517, 0, 131072, 786518, 0, 131072, 786519, 0, 131072, 786520, 0, 131072, 786521, 0, 131072, 786522, 0, 131072, 786523, 0, 131072, 786524, 0, 131072, 786525, 0, 131072, 786526, 0, 131072, 786527, 0, 131072, 786528, 0, 131072, 786529, 0, 131072, 786530, 0, 131072, 786531, 0, 131072, 786532, 0, 131072, 786533, 0, 131072, 786534, 0, 131072, 786535, 0, 131072, 786536, 0, 131072, 786537, 0, 131072, 786538, 0, 131072, 786539, 0, 131072, 786540, 0, 131072, 786541, 0, 131072, 786542, 0, 131072, 786543, 0, 131072, 786544, 0, 131072, 786545, 0, 131072, 786546, 0, 131072, 786547, 0, 131072, 786548, 0, 131072, 786549, 0, 131072, 786550, 0, 131072, 786551, 0, 131072, 786552, 0, 131072, 786553, 0, 131072, 786554, 0, 131072, 786555, 0, 131072, 786556, 0, 131072, 786557, 0, 131072, 786558, 0, 131072, 786559, 0, 131072, 786560, 0, 131072, 786561, 0, 131072, 786562, 0, 131072, 786563, 0, 131072, 786564, 0, 131072, 786565, 0, 131072, 786566, 0, 131072, 786567, 0, 131072, 786568, 0, 131072, 786569, 0, 131072, 786570, 0, 131072, 786571, 0, 131072, 786572, 0, 131072, 786573, 0, 131072, 786574, 0, 131072, 786575, 0, 131072, 786576, 0, 131072, 786577, 0, 131072, 786578, 0, 131072, 786579, 0, 131072, 786580, 0, 131072, 786581, 0, 131072, 786582, 0, 131072, 786583, 0, 131072, 786584, 0, 131072, 786585, 0, 131072, 786586, 0, 131072, 786587, 0, 131072, 786588, 0, 131072, 786589, 0, 131072, 786590, 0, 131072, 786591, 0, 131072, 786592, 0, 131072, 786593, 0, 131072, 786594, 0, 131072, 786595, 0, 131072, 786596, 0, 131072, 786597, 0, 131072, 786598, 0, 131072, 786599, 0, 131072, 786600, 0, 131072, 786601, 0, 131072, 786602, 0, 131072, 786603, 0, 131072, 786604, 0, 131072, 786605, 0, 131072, 786606, 0, 131072, 786607, 0, 131072, 786608, 0, 131072, 786609, 0, 131072, 786610, 0, 131072, 786611, 0, 131072, 786612, 0, 131072, 786613, 0, 131072, 786614, 0, 131072, 786615, 0, 131072, 786616, 0, 131072, 786617, 0, 131072, 786618, 0, 131072, 786619, 0, 131072, 786620, 0, 131072, 786621, 0, 131072, 786622, 0, 131072, 786623, 0, 131072, 786624, 0, 131072, 786625, 0, 131072, 786626, 0, 131072, 786627, 0, 131072, 786628, 0, 131072, 786629, 0, 131072, 786630, 0, 131072, 786631, 0, 131072, 786632, 0, 131072, 786633, 0, 131072, 786634, 0, 131072, 786635, 0, 131072, 917413, 0, 131072, 917414, 0, 131072, 917415, 0, 131072, 917416, 0, 131072, 917417, 0, 131072, 917418, 0, 131072, 917419, 0, 131072, 917420, 0, 131072, 917421, 0, 131072, 917422, 0, 131072, 917423, 0, 131072, 917424, 0, 131072, 917425, 0, 131072, 917426, 0, 131072, 917427, 0, 131072, 917428, 0, 131072, 917429, 0, 131072, 917430, 0, 131072, 917431, 0, 131072, 917432, 0, 131072, 917433, 0, 131072, 917434, 0, 131072, 917435, 0, 131072, 917436, 0, 131072, 917437, 0, 131072, 917438, 0, 131072, 917439, 0, 131072, 917440, 0, 131072, 917441, 0, 131072, 917442, 0, 131072, 917443, 0, 131072, 917444, 0, 131072, 917445, 0, 131072, 917446, 0, 131072, 917447, 0, 131072, 917448, 0, 131072, 917449, 0, 131072, 917450, 0, 131072, 917451, 0, 131072, 917452, 0, 131072, 917453, 0, 131072, 917454, 0, 131072, 917455, 0, 131072, 917456, 0, 131072, 917457, 0, 131072, 917458, 0, 131072, 917459, 0, 131072, 917460, 0, 131072, 917461, 0, 131072, 917462, 0, 131072, 917463, 0, 131072, 917464, 0, 131072, 917465, 0, 131072, 917466, 0, 131072, 917467, 0, 131072, 917468, 0, 131072, 917469, 0, 131072, 917470, 0, 131072, 917471, 0, 131072, 917472, 0, 131072, 917473, 0, 131072, 917474, 0, 131072, 917475, 0, 131072, 917476, 0, 131072, 917477, 0, 131072, 917478, 0, 131072, 917479, 0, 131072, 917480, 0, 131072, 917481, 0, 131072, 917482, 0, 131072, 917483, 0, 131072, 917484, 0, 131072, 917485, 0, 131072, 917486, 0, 131072, 917487, 0, 131072, 917488, 0, 131072, 917489, 0, 131072, 917490, 0, 131072, 917491, 0, 131072, 917492, 0, 131072, 917493, 0, 131072, 917494, 0, 131072, 917495, 0, 131072, 917496, 0, 131072, 917497, 0, 131072, 917498, 0, 131072, 917499, 0, 131072, 917500, 0, 131072, 917501, 0, 131072, 917502, 0, 131072, 917503, 0, 131072, 851968, 0, 131072, 851969, 0, 131072, 851970, 0, 131072, 851971, 0, 131072, 851972, 0, 131072, 851973, 0, 131072, 851974, 0, 131072, 851975, 0, 131072, 851976, 0, 131072, 851977, 0, 131072, 851978, 0, 131072, 851979, 0, 131072, 851980, 0, 131072, 851981, 0, 131072, 851982, 0, 131072, 851983, 0, 131072, 851984, 0, 131072, 851985, 0, 131072, 851986, 0, 131072, 851987, 0, 131072, 851988, 0, 131072, 851989, 0, 131072, 851990, 0, 131072, 851991, 0, 131072, 851992, 0, 131072, 851993, 0, 131072, 851994, 0, 131072, 851995, 0, 131072, 851996, 0, 131072, 851997, 0, 131072, 851998, 0, 131072, 851999, 0, 131072, 852000, 0, 131072, 852001, 0, 131072, 852002, 0, 131072, 852003, 0, 131072, 852004, 0, 131072, 852005, 0, 131072, 852006, 0, 131072, 852007, 0, 131072, 852008, 0, 131072, 852009, 0, 131072, 852010, 0, 131072, 852011, 0, 131072, 852012, 0, 131072, 852013, 0, 131072, 852014, 0, 131072, 852015, 0, 131072, 852016, 0, 131072, 852017, 0, 131072, 852018, 0, 131072, 852019, 0, 131072, 852020, 0, 131072, 852021, 0, 131072, 852022, 0, 131072, 852023, 0, 131072, 852024, 0, 131072, 852025, 0, 131072, 852026, 0, 131072, 852027, 0, 131072, 852028, 0, 131072, 852029, 0, 131072, 852030, 0, 131072, 852031, 0, 131072, 852032, 0, 131072, 852033, 0, 131072, 852034, 0, 131072, 852035, 0, 131072, 852036, 0, 131072, 852037, 0, 131072, 852038, 0, 131072, 852039, 0, 131072, 852040, 0, 131072, 852041, 0, 131072, 852042, 0, 131072, 852043, 0, 131072, 852044, 0, 131072, 852045, 0, 131072, 852046, 0, 131072, 852047, 0, 131072, 852048, 0, 131072, 852049, 0, 131072, 852050, 0, 131072, 852051, 0, 131072, 852052, 0, 131072, 852053, 0, 131072, 852054, 0, 131072, 852055, 0, 131072, 852056, 0, 131072, 852057, 0, 131072, 852058, 0, 131072, 852059, 0, 131072, 852060, 0, 131072, 852061, 0, 131072, 852062, 0, 131072, 852063, 0, 131072, 852064, 0, 131072, 852065, 0, 131072, 852066, 0, 131072, 852067, 0, 131072, 852068, 0, 131072, 852069, 0, 131072, 852070, 0, 131072, 852071, 0, 131072, 852072, 0, 131072, 852073, 0, 131072, 852074, 0, 131072, 852075, 0, 131072, 852076, 0, 131072, 852077, 0, 131072, 852078, 0, 131072, 852079, 0, 131072, 852080, 0, 131072, 852081, 0, 131072, 852082, 0, 131072, 852083, 0, 131072, 852084, 0, 131072, 852085, 0, 131072, 852086, 0, 131072, 852087, 0, 131072, 852088, 0, 131072, 852089, 0, 131072, 852090, 0, 131072, 852091, 0, 131072, 852092, 0, 131072, 852093, 0, 131072, 852094, 0, 131072, 852095, 0, 131072, 852096, 0, 131072, 852097, 0, 131072, 852098, 0, 131072, 852099, 0, 131072, 852100, 0, 131072, 852101, 0, 131072, 852102, 0, 131072, 852103, 0, 131072, 852104, 0, 131072, 852105, 0, 131072, 852106, 0, 131072, 852107, 0, 131072, 852108, 0, 131072, 852109, 0, 131072, 852110, 0, 131072, 852111, 0, 131072, 852112, 0, 131072, 852113, 0, 131072, 852114, 0, 131072, 852115, 0, 131072, 852116, 0, 131072, 852117, 0, 131072, 852118, 0, 131072, 852119, 0, 131072, 852120, 0, 131072, 852121, 0, 131072, 852122, 0, 131072, 852123, 0, 131072, 852124, 0, 131072, 852125, 0, 131072, 852126, 0, 131072, 852127, 0, 131072, 852128, 0, 131072, 852129, 0, 131072, 852130, 0, 131072, 852131, 0, 131072, 852132, 0, 131072, 852133, 0, 131072, 852134, 0, 131072, 852135, 0, 131072, 852136, 0, 131072, 852137, 0, 131072, 852138, 0, 131072, 852139, 0, 131072, 852140, 0, 131072, 852141, 0, 131072, 852142, 0, 131072, 852143, 0, 131072, 852144, 0, 131072, 852145, 0, 131072, 852146, 0, 131072, 852147, 0, 131072, 852148, 0, 131072, 852149, 0, 131072, 852150, 0, 131072, 852151, 0, 131072, 852152, 0, 131072, 852153, 0, 131072, 852154, 0, 131072, 852155, 0, 131072, 852156, 0, 131072, 852157, 0, 131072, 852158, 0, 131072, 852159, 0, 131072, 852160, 0, 131072, 852161, 0, 131072, 852162, 0, 131072, 852163, 0, 131072, 852164, 0, 131072, 852165, 0, 131072, 852166, 0, 131072, 852167, 0, 131072, 852168, 0, 131072, 852169, 0, 131072, 852170, 0, 131072, 852171, 0, 131072, 982950, 0, 131072, 982951, 0, 131072, 982952, 0, 131072, 982953, 0, 131072, 982954, 0, 131072, 982955, 0, 131072, 982956, 0, 131072, 982957, 0, 131072, 982958, 0, 131072, 982959, 0, 131072, 982960, 0, 131072, 982961, 0, 131072, 982962, 0, 131072, 982963, 0, 131072, 982964, 0, 131072, 982965, 0, 131072, 982966, 0, 131072, 982967, 0, 131072, 982968, 0, 131072, 982969, 0, 131072, 982970, 0, 131072, 982971, 0, 131072, 982972, 0, 131072, 982973, 0, 131072, 982974, 0, 131072, 982975, 0, 131072, 982976, 0, 131072, 982977, 0, 131072, 982978, 0, 131072, 982979, 0, 131072, 982980, 0, 131072, 982981, 0, 131072, 982982, 0, 131072, 982983, 0, 131072, 982984, 0, 131072, 982985, 0, 131072, 982986, 0, 131072, 982987, 0, 131072, 982988, 0, 131072, 982989, 0, 131072, 982990, 0, 131072, 982991, 0, 131072, 982992, 0, 131072, 982993, 0, 131072, 982994, 0, 131072, 982995, 0, 131072, 982996, 0, 131072, 982997, 0, 131072, 982998, 0, 131072, 982999, 0, 131072, 983000, 0, 131072, 983001, 0, 131072, 983002, 0, 131072, 983003, 0, 131072, 983004, 0, 131072, 983005, 0, 131072, 983006, 0, 131072, 983007, 0, 131072, 983008, 0, 131072, 983009, 0, 131072, 983010, 0, 131072, 983011, 0, 131072, 983012, 0, 131072, 983013, 0, 131072, 983014, 0, 131072, 983015, 0, 131072, 983016, 0, 131072, 983017, 0, 131072, 983018, 0, 131072, 983019, 0, 131072, 983020, 0, 131072, 983021, 0, 131072, 983022, 0, 131072, 983023, 0, 131072, 983024, 0, 131072, 983025, 0, 131072, 983026, 0, 131072, 983027, 0, 131072, 983028, 0, 131072, 983029, 0, 131072, 983030, 0, 131072, 983031, 0, 131072, 983032, 0, 131072, 983033, 0, 131072, 983034, 0, 131072, 983035, 0, 131072, 983036, 0, 131072, 983037, 0, 131072, 983038, 0, 131072, 983039, 0, 131072, 917504, 0, 131072, 917505, 0, 131072, 917506, 0, 131072, 917507, 0, 131072, 917508, 0, 131072, 917509, 0, 131072, 917510, 0, 131072, 917511, 0, 131072, 917512, 0, 131072, 917513, 0, 131072, 917514, 0, 131072, 917515, 0, 131072, 917516, 0, 131072, 917517, 0, 131072, 917518, 0, 131072, 917519, 0, 131072, 917520, 0, 131072, 917521, 0, 131072, 917522, 0, 131072, 917523, 0, 131072, 917524, 0, 131072, 917525, 0, 131072, 917526, 0, 131072, 917527, 0, 131072, 917528, 0, 131072, 917529, 0, 131072, 917530, 0, 131072, 917531, 0, 131072, 917532, 0, 131072, 917533, 0, 131072, 917534, 0, 131072, 917535, 0, 131072, 917536, 0, 131072, 917537, 0, 131072, 917538, 0, 131072, 917539, 0, 131072, 917540, 0, 131072, 917541, 0, 131072, 917542, 0, 131072, 917543, 0, 131072, 917544, 0, 131072, 917545, 0, 131072, 917546, 0, 131072, 917547, 0, 131072, 917548, 0, 131072, 917549, 0, 131072, 917550, 0, 131072, 917551, 0, 131072, 917552, 0, 131072, 917553, 0, 131072, 917554, 0, 131072, 917555, 0, 131072, 917556, 0, 131072, 917557, 0, 131072, 917558, 0, 131072, 917559, 0, 131072, 917560, 0, 131072, 917561, 0, 131072, 917562, 0, 131072, 917563, 0, 131072, 917564, 0, 131072, 917565, 0, 131072, 917566, 0, 131072, 917567, 0, 131072, 917568, 0, 131072, 917569, 0, 131072, 917570, 0, 131072, 917571, 0, 131072, 917572, 0, 131072, 917573, 0, 131072, 917574, 0, 131072, 917575, 0, 131072, 917576, 0, 131072, 917577, 0, 131072, 917578, 0, 131072, 917579, 0, 131072, 917580, 0, 131072, 917581, 0, 131072, 917582, 0, 131072, 917583, 0, 131072, 917584, 0, 131072, 917585, 0, 131072, 917586, 0, 131072, 917587, 0, 131072, 917588, 0, 131072, 917589, 0, 131072, 917590, 0, 131072, 917591, 0, 131072, 917592, 0, 131072, 917593, 0, 131072, 917594, 0, 131072, 917595, 0, 131072, 917596, 0, 131072, 917597, 0, 131072, 917598, 0, 131072, 917599, 0, 131072, 917600, 0, 131072, 917601, 0, 131072, 917602, 0, 131072, 917603, 0, 131072, 917604, 0, 131072, 917605, 0, 131072, 917606, 0, 131072, 917607, 0, 131072, 917608, 0, 131072, 917609, 0, 131072, 917610, 0, 131072, 917611, 0, 131072, 917612, 0, 131072, 917613, 0, 131072, 917614, 0, 131072, 917615, 0, 131072, 917616, 0, 131072, 917617, 0, 131072, 917618, 0, 131072, 917619, 0, 131072, 917620, 0, 131072, 917621, 0, 131072, 917622, 0, 131072, 917623, 0, 131072, 917624, 0, 131072, 917625, 0, 131072, 917626, 0, 131072, 917627, 0, 131072, 917628, 0, 131072, 917629, 0, 131072, 917630, 0, 131072, 917631, 0, 131072, 917632, 0, 131072, 917633, 0, 131072, 917634, 0, 131072, 917635, 0, 131072, 917636, 0, 131072, 917637, 0, 131072, 917638, 0, 131072, 917639, 0, 131072, 917640, 0, 131072, 917641, 0, 131072, 917642, 0, 131072, 917643, 0, 131072, 917644, 0, 131072, 917645, 0, 131072, 917646, 0, 131072, 917647, 0, 131072, 917648, 0, 131072, 917649, 0, 131072, 917650, 0, 131072, 917651, 0, 131072, 917652, 0, 131072, 917653, 0, 131072, 917654, 0, 131072, 917655, 0, 131072, 917656, 0, 131072, 917657, 0, 131072, 917658, 0, 131072, 917659, 0, 131072, 917660, 0, 131072, 917661, 0, 131072, 917662, 0, 131072, 917663, 0, 131072, 917664, 0, 131072, 917665, 0, 131072, 917666, 0, 131072, 917667, 0, 131072, 917668, 0, 131072, 917669, 0, 131072, 917670, 0, 131072, 917671, 0, 131072, 917672, 0, 131072, 917673, 0, 131072, 917674, 0, 131072, 917675, 0, 131072, 917676, 0, 131072, 917677, 0, 131072, 917678, 0, 131072, 917679, 0, 131072, 917680, 0, 131072, 917681, 0, 131072, 917682, 0, 131072, 917683, 0, 131072, 917684, 0, 131072, 917685, 0, 131072, 917686, 0, 131072, 917687, 0, 131072, 917688, 0, 131072, 917689, 0, 131072, 917690, 0, 131072, 917691, 0, 131072, 917692, 0, 131072, 917693, 0, 131072, 917694, 0, 131072, 917695, 0, 131072, 917696, 0, 131072, 917697, 0, 131072, 917698, 0, 131072, 917699, 0, 131072, 917700, 0, 131072, 917701, 0, 131072, 917702, 0, 131072, 917703, 0, 131072, 917704, 0, 131072, 917705, 0, 131072, 917706, 0, 131072, 917707, 0, 131072, 917708, 0, 131072, 1048487, 0, 131072, 1048488, 0, 131072, 1048489, 0, 131072, 1048490, 0, 131072, 1048491, 0, 131072, 1048492, 0, 131072, 1048493, 0, 131072, 1048494, 0, 131072, 1048495, 0, 131072, 1048496, 0, 131072, 1048497, 0, 131072, 1048498, 0, 131072, 1048499, 0, 131072, 1048500, 0, 131072, 1048501, 0, 131072, 1048502, 0, 131072, 1048503, 0, 131072, 1048504, 0, 131072, 1048505, 0, 131072, 1048506, 0, 131072, 1048507, 0, 131072, 1048508, 0, 131072, 1048509, 0, 131072, 1048510, 0, 131072, 1048511, 0, 131072, 1048512, 0, 131072, 1048513, 0, 131072, 1048514, 0, 131072, 1048515, 0, 131072, 1048516, 0, 131072, 1048517, 0, 131072, 1048518, 0, 131072, 1048519, 0, 131072, 1048520, 0, 131072, 1048521, 0, 131072, 1048522, 0, 131072, 1048523, 0, 131072, 1048524, 0, 131072, 1048525, 0, 131072, 1048526, 0, 131072, 1048527, 0, 131072, 1048528, 0, 131072, 1048529, 0, 131072, 1048530, 0, 131072, 1048531, 0, 131072, 1048532, 0, 131072, 1048533, 0, 131072, 1048534, 0, 131072, 1048535, 0, 131072, 1048536, 0, 131072, 1048537, 0, 131072, 1048538, 0, 131072, 1048539, 0, 131072, 1048540, 0, 131072, 1048541, 0, 131072, 1048542, 0, 131072, 1048543, 0, 131072, 1048544, 0, 131072, 1048545, 0, 131072, 1048546, 0, 131072, 1048547, 0, 131072, 1048548, 0, 131072, 1048549, 0, 131072, 1048550, 0, 131072, 1048551, 0, 131072, 1048552, 0, 131072, 1048553, 0, 131072, 1048554, 0, 131072, 1048555, 0, 131072, 1048556, 0, 131072, 1048557, 0, 131072, 1048558, 0, 131072, 1048559, 0, 131072, 1048560, 0, 131072, 1048561, 0, 131072, 1048562, 0, 131072, 1048563, 0, 131072, 1048564, 0, 131072, 1048565, 0, 131072, 1048566, 0, 131072, 1048567, 0, 131072, 1048568, 0, 131072, 1048569, 0, 131072, 1048570, 0, 131072, 1048571, 0, 131072, 1048572, 0, 131072, 1048573, 0, 131072, 1048574, 0, 131072, 1048575, 0, 131072, 983040, 0, 131072, 983041, 0, 131072, 983042, 0, 131072, 983043, 0, 131072, 983044, 0, 131072, 983045, 0, 131072, 983046, 0, 131072, 983047, 0, 131072, 983048, 0, 131072, 983049, 0, 131072, 983050, 0, 131072, 983051, 0, 131072, 983052, 0, 131072, 983053, 0, 131072, 983054, 0, 131072, 983055, 0, 131072, 983056, 0, 131072, 983057, 0, 131072, 983058, 0, 131072, 983059, 0, 131072, 983060, 0, 131072, 983061, 0, 131072, 983062, 0, 131072, 983063, 0, 131072, 983064, 0, 131072, 983065, 0, 131072, 983066, 0, 131072, 983067, 0, 131072, 983068, 0, 131072, 983069, 0, 131072, 983070, 0, 131072, 983071, 0, 131072, 983072, 0, 131072, 983073, 0, 131072, 983074, 0, 131072, 983075, 0, 131072, 983076, 0, 131072, 983077, 0, 131072, 983078, 0, 131072, 983079, 0, 131072, 983080, 0, 131072, 983081, 0, 131072, 983082, 0, 131072, 983083, 0, 131072, 983084, 0, 131072, 983085, 0, 131072, 983086, 0, 131072, 983087, 0, 131072, 983088, 0, 131072, 983089, 0, 131072, 983090, 0, 131072, 983091, 0, 131072, 983092, 0, 131072, 983093, 0, 131072, 983094, 0, 131072, 983095, 0, 131072, 983096, 0, 131072, 983097, 0, 131072, 983098, 0, 131072, 983099, 0, 131072, 983100, 0, 131072, 983101, 0, 131072, 983102, 0, 131072, 983103, 0, 131072, 983104, 0, 131072, 983105, 0, 131072, 983106, 0, 131072, 983107, 0, 131072, 983108, 0, 131072, 983109, 0, 131072, 983110, 0, 131072, 983111, 0, 131072, 983112, 0, 131072, 983113, 0, 131072, 983114, 0, 131072, 983115, 0, 131072, 983116, 0, 131072, 983117, 0, 131072, 983118, 0, 131072, 983119, 0, 131072, 983120, 0, 131072, 983121, 0, 131072, 983122, 0, 131072, 983123, 0, 131072, 983124, 0, 131072, 983125, 0, 131072, 983126, 0, 131072, 983127, 0, 131072, 983128, 0, 131072, 983129, 0, 131072, 983130, 0, 131072, 983131, 0, 131072, 983132, 0, 131072, 983133, 0, 131072, 983134, 0, 131072, 983135, 0, 131072, 983136, 0, 131072, 983137, 0, 131072, 983138, 0, 131072, 983139, 0, 131072, 983140, 0, 131072, 983141, 0, 131072, 983142, 0, 131072, 983143, 0, 131072, 983144, 0, 131072, 983145, 0, 131072, 983146, 0, 131072, 983147, 0, 131072, 983148, 0, 131072, 983149, 0, 131072, 983150, 0, 131072, 983151, 0, 131072, 983152, 0, 131072, 983153, 0, 131072, 983154, 0, 131072, 983155, 0, 131072, 983156, 0, 131072, 983157, 0, 131072, 983158, 0, 131072, 983159, 0, 131072, 983160, 0, 131072, 983161, 0, 131072, 983162, 0, 131072, 983163, 0, 131072, 983164, 0, 131072, 983165, 0, 131072, 983166, 0, 131072, 983167, 0, 131072, 983168, 0, 131072, 983169, 0, 131072, 983170, 0, 131072, 983171, 0, 131072, 983172, 0, 131072, 983173, 0, 131072, 983174, 0, 131072, 983175, 0, 131072, 983176, 0, 131072, 983177, 0, 131072, 983178, 0, 131072, 983179, 0, 131072, 983180, 0, 131072, 983181, 0, 131072, 983182, 0, 131072, 983183, 0, 131072, 983184, 0, 131072, 983185, 0, 131072, 983186, 0, 131072, 983187, 0, 131072, 983188, 0, 131072, 983189, 0, 131072, 983190, 0, 131072, 983191, 0, 131072, 983192, 0, 131072, 983193, 0, 131072, 983194, 0, 131072, 983195, 0, 131072, 983196, 0, 131072, 983197, 0, 131072, 983198, 0, 131072, 983199, 0, 131072, 983200, 0, 131072, 983201, 0, 131072, 983202, 0, 131072, 983203, 0, 131072, 983204, 0, 131072, 983205, 0, 131072, 983206, 0, 131072, 983207, 0, 131072, 983208, 0, 131072, 983209, 0, 131072, 983210, 0, 131072, 983211, 0, 131072, 983212, 0, 131072, 983213, 0, 131072, 983214, 0, 131072, 983215, 0, 131072, 983216, 0, 131072, 983217, 0, 131072, 983218, 0, 131072, 983219, 0, 131072, 983220, 0, 131072, 983221, 0, 131072, 983222, 0, 131072, 983223, 0, 131072, 983224, 0, 131072, 983225, 0, 131072, 983226, 0, 131072, 983227, 0, 131072, 983228, 0, 131072, 983229, 0, 131072, 983230, 0, 131072, 983231, 0, 131072, 983232, 0, 131072, 983233, 0, 131072, 983234, 0, 131072, 983235, 0, 131072, 983236, 0, 131072, 983237, 0, 131072, 983238, 0, 131072, 983239, 0, 131072, 983240, 0, 131072, 983241, 0, 131072, 983242, 0, 131072, 983243, 0, 131072, 983244, 0, 131072, 1114023, 0, 131072, 1114024, 0, 131072, 1114025, 0, 131072, 1114026, 0, 131072, 1114027, 0, 131072, 1114028, 0, 131072, 1114029, 0, 131072, 1114030, 0, 131072, 1114031, 0, 131072, 1114032, 0, 131072, 1114033, 0, 131072, 1114034, 0, 131072, 1114035, 0, 131072, 1114036, 0, 131072, 1114037, 0, 131072, 1114038, 0, 131072, 1114039, 0, 131072, 1114040, 0, 131072, 1114041, 0, 131072, 1114042, 0, 131072, 1114043, 0, 131072, 1114044, 0, 131072, 1114045, 0, 131072, 1114046, 0, 131072, 1114047, 0, 131072, 1114048, 0, 131072, 1114049, 0, 131072, 1114050, 0, 131072, 1114051, 0, 131072, 1114052, 0, 131072, 1114053, 0, 131072, 1114054, 0, 131072, 1114055, 0, 131072, 1114056, 0, 131072, 1114057, 0, 131072, 1114058, 0, 131072, 1114059, 0, 131072, 1114060, 0, 131072, 1114061, 0, 131072, 1114062, 0, 131072, 1114063, 0, 131072, 1114064, 0, 131072, 1114065, 0, 131072, 1114066, 0, 131072, 1114067, 0, 131072, 1114068, 0, 131072, 1114069, 0, 131072, 1114070, 0, 131072, 1114071, 0, 131072, 1114072, 0, 131072, 1114073, 0, 131072, 1114074, 0, 131072, 1114075, 0, 131072, 1114076, 0, 131072, 1114077, 0, 131072, 1114078, 0, 131072, 1114079, 0, 131072, 1114080, 0, 131072, 1114081, 0, 131072, 1114082, 0, 131072, 1114083, 0, 131072, 1114084, 0, 131072, 1114085, 0, 131072, 1114086, 0, 131072, 1114087, 0, 131072, 1114088, 0, 131072, 1114089, 0, 131072, 1114090, 0, 131072, 1114091, 0, 131072, 1114092, 0, 131072, 1114093, 0, 131072, 1114094, 0, 131072, 1114095, 0, 131072, 1114096, 0, 131072, 1114097, 0, 131072, 1114098, 0, 131072, 1114099, 0, 131072, 1114100, 0, 131072, 1114101, 0, 131072, 1114102, 0, 131072, 1114103, 0, 131072, 1114104, 0, 131072, 1114105, 0, 131072, 1114106, 0, 131072, 1114107, 0, 131072, 1114108, 0, 131072, 1114109, 0, 131072, 1114110, 0, 131072, 1114111, 0, 131072, 1048576, 0, 131072, 1048577, 0, 131072, 1048578, 0, 131072, 1048579, 0, 131072, 1048580, 0, 131072, 1048581, 0, 131072, 1048582, 0, 131072, 1048583, 0, 131072, 1048584, 0, 131072, 1048585, 0, 131072, 1048586, 0, 131072, 1048587, 0, 131072, 1048588, 0, 131072, 1048589, 0, 131072, 1048590, 0, 131072, 1048591, 0, 131072, 1048592, 0, 131072, 1048593, 0, 131072, 1048594, 0, 131072, 1048595, 0, 131072, 1048596, 0, 131072, 1048597, 0, 131072, 1048598, 0, 131072, 1048599, 0, 131072, 1048600, 0, 131072, 1048601, 0, 131072, 1048602, 0, 131072, 1048603, 0, 131072, 1048604, 0, 131072, 1048605, 0, 131072, 1048606, 0, 131072, 1048607, 0, 131072, 1048608, 0, 131072, 1048609, 0, 131072, 1048610, 0, 131072, 1048611, 0, 131072, 1048612, 0, 131072, 1048613, 0, 131072, 1048614, 0, 131072, 1048615, 0, 131072, 1048616, 0, 131072, 1048617, 0, 131072, 1048618, 0, 131072, 1048619, 0, 131072, 1048620, 0, 131072, 1048621, 0, 131072, 1048622, 0, 131072, 1048623, 0, 131072, 1048624, 0, 131072, 1048625, 0, 131072, 1048626, 0, 131072, 1048627, 0, 131072, 1048628, 0, 131072, 1048629, 0, 131072, 1048630, 0, 131072, 1048631, 0, 131072, 1048632, 0, 131072, 1048633, 0, 131072, 1048634, 0, 131072, 1048635, 0, 131072, 1048636, 0, 131072, 1048637, 0, 131072, 1048638, 0, 131072, 1048639, 0, 131072, 1048640, 0, 131072, 1048641, 0, 131072, 1048642, 0, 131072, 1048643, 0, 131072, 1048644, 0, 131072, 1048645, 0, 131072, 1048646, 0, 131072, 1048647, 0, 131072, 1048648, 0, 131072, 1048649, 0, 131072, 1048650, 0, 131072, 1048651, 0, 131072, 1048652, 0, 131072, 1048653, 0, 131072, 1048654, 0, 131072, 1048655, 0, 131072, 1048656, 0, 131072, 1048657, 0, 131072, 1048658, 0, 131072, 1048659, 0, 131072, 1048660, 0, 131072, 1048661, 0, 131072, 1048662, 0, 131072, 1048663, 0, 131072, 1048664, 0, 131072, 1048665, 0, 131072, 1048666, 0, 131072, 1048667, 0, 131072, 1048668, 0, 131072, 1048669, 0, 131072, 1048670, 0, 131072, 1048671, 0, 131072, 1048672, 0, 131072, 1048673, 0, 131072, 1048674, 0, 131072, 1048675, 0, 131072, 1048676, 0, 131072, 1048677, 0, 131072, 1048678, 0, 131072, 1048679, 0, 131072, 1048680, 0, 131072, 1048681, 0, 131072, 1048682, 0, 131072, 1048683, 0, 131072, 1048684, 0, 131072, 1048685, 0, 131072, 1048686, 0, 131072, 1048687, 0, 131072, 1048688, 0, 131072, 1048689, 0, 131072, 1048690, 0, 131072, 1048691, 0, 131072, 1048692, 0, 131072, 1048693, 0, 131072, 1048694, 0, 131072, 1048695, 0, 131072, 1048696, 0, 131072, 1048697, 0, 131072, 1048698, 0, 131072, 1048699, 0, 131072, 1048700, 0, 131072, 1048701, 0, 131072, 1048702, 0, 131072, 1048703, 0, 131072, 1048704, 0, 131072, 1048705, 0, 131072, 1048706, 0, 131072, 1048707, 0, 131072, 1048708, 0, 131072, 1048709, 0, 131072, 1048710, 0, 131072, 1048711, 0, 131072, 1048712, 0, 131072, 1048713, 0, 131072, 1048714, 0, 131072, 1048715, 0, 131072, 1048716, 0, 131072, 1048717, 0, 131072, 1048718, 0, 131072, 1048719, 0, 131072, 1048720, 0, 131072, 1048721, 0, 131072, 1048722, 0, 131072, 1048723, 0, 131072, 1048724, 0, 131072, 1048725, 0, 131072, 1048726, 0, 131072, 1048727, 0, 131072, 1048728, 0, 131072, 1048729, 0, 131072, 1048730, 0, 131072, 1048731, 0, 131072, 1048732, 0, 131072, 1048733, 0, 131072, 1048734, 0, 131072, 1048735, 0, 131072, 1048736, 0, 131072, 1048737, 0, 131072, 1048738, 0, 131072, 1048739, 0, 131072, 1048740, 0, 131072, 1048741, 0, 131072, 1048742, 0, 131072, 1048743, 0, 131072, 1048744, 0, 131072, 1048745, 0, 131072, 1048746, 0, 131072, 1048747, 0, 131072, 1048748, 0, 131072, 1048749, 0, 131072, 1048750, 0, 131072, 1048751, 0, 131072, 1048752, 0, 131072, 1048753, 0, 131072, 1048754, 0, 131072, 1048755, 0, 131072, 1048756, 0, 131072, 1048757, 0, 131072, 1048758, 0, 131072, 1048759, 0, 131072, 1048760, 0, 131072, 1048761, 0, 131072, 1048762, 0, 131072, 1048763, 0, 131072, 1048764, 0, 131072, 1048765, 0, 131072, 1048766, 0, 131072, 1048767, 0, 131072, 1048768, 0, 131072, 1048769, 0, 131072, 1048770, 0, 131072, 1048771, 0, 131072, 1048772, 0, 131072, 1048773, 0, 131072, 1048774, 0, 131072, 1048775, 0, 131072, 1048776, 0, 131072, 1048777, 0, 131072, 1048778, 0, 131072, 1048779, 0, 131072, 1048780, 0, 131072, 1179560, 0, 131072, 1179561, 0, 131072, 1179562, 0, 131072, 1179563, 0, 131072, 1179564, 0, 131072, 1179565, 0, 131072, 1179566, 0, 131072, 1179567, 0, 131072, 1179568, 0, 131072, 1179569, 0, 131072, 1179570, 0, 131072, 1179571, 0, 131072, 1179572, 0, 131072, 1179573, 0, 131072, 1179574, 0, 131072, 1179575, 0, 131072, 1179576, 0, 131072, 1179577, 0, 131072, 1179578, 0, 131072, 1179579, 0, 131072, 1179580, 0, 131072, 1179581, 0, 131072, 1179582, 0, 131072, 1179583, 0, 131072, 1179584, 0, 131072, 1179585, 0, 131072, 1179586, 0, 131072, 1179587, 0, 131072, 1179588, 0, 131072, 1179589, 0, 131072, 1179590, 0, 131072, 1179591, 0, 131072, 1179592, 0, 131072, 1179593, 0, 131072, 1179594, 0, 131072, 1179595, 0, 131072, 1179596, 0, 131072, 1179597, 0, 131072, 1179598, 0, 131072, 1179599, 0, 131072, 1179600, 0, 131072, 1179601, 0, 131072, 1179602, 0, 131072, 1179603, 0, 131072, 1179604, 0, 131072, 1179605, 0, 131072, 1179606, 0, 131072, 1179607, 0, 131072, 1179608, 0, 131072, 1179609, 0, 131072, 1179610, 0, 131072, 1179611, 0, 131072, 1179612, 0, 131072, 1179613, 0, 131072, 1179614, 0, 131072, 1179615, 0, 131072, 1179616, 0, 131072, 1179617, 0, 131072, 1179618, 0, 131072, 1179619, 0, 131072, 1179620, 0, 131072, 1179621, 0, 131072, 1179622, 0, 131072, 1179623, 0, 131072, 1179624, 0, 131072, 1179625, 0, 131072, 1179626, 0, 131072, 1179627, 0, 131072, 1179628, 0, 131072, 1179629, 0, 131072, 1179630, 0, 131072, 1179631, 0, 131072, 1179632, 0, 131072, 1179633, 0, 131072, 1179634, 0, 131072, 1179635, 0, 131072, 1179636, 0, 131072, 1179637, 0, 131072, 1179638, 0, 131072, 1179639, 0, 131072, 1179640, 0, 131072, 1179641, 0, 131072, 1179642, 0, 131072, 1179643, 0, 131072, 1179644, 0, 131072, 1179645, 0, 131072, 1179646, 0, 131072, 1179647, 0, 131072, 1114112, 0, 131072, 1114113, 0, 131072, 1114114, 0, 131072, 1114115, 0, 131072, 1114116, 0, 131072, 1114117, 0, 131072, 1114118, 0, 131072, 1114119, 0, 131072, 1114120, 0, 131072, 1114121, 0, 131072, 1114122, 0, 131072, 1114123, 0, 131072, 1114124, 0, 131072, 1114125, 0, 131072, 1114126, 0, 131072, 1114127, 0, 131072, 1114128, 0, 131072, 1114129, 0, 131072, 1114130, 0, 131072, 1114131, 0, 131072, 1114132, 0, 131072, 1114133, 0, 131072, 1114134, 0, 131072, 1114135, 0, 131072, 1114136, 0, 131072, 1114137, 0, 131072, 1114138, 0, 131072, 1114139, 0, 131072, 1114140, 0, 131072, 1114141, 0, 131072, 1114142, 0, 131072, 1114143, 0, 131072, 1114144, 0, 131072, 1114145, 0, 131072, 1114146, 0, 131072, 1114147, 0, 131072, 1114148, 0, 131072, 1114149, 0, 131072, 1114150, 0, 131072, 1114151, 0, 131072, 1114152, 0, 131072, 1114153, 0, 131072, 1114154, 0, 131072, 1114155, 0, 131072, 1114156, 0, 131072, 1114157, 0, 131072, 1114158, 0, 131072, 1114159, 0, 131072, 1114160, 0, 131072, 1114161, 0, 131072, 1114162, 0, 131072, 1114163, 0, 131072, 1114164, 0, 131072, 1114165, 0, 131072, 1114166, 0, 131072, 1114167, 0, 131072, 1114168, 0, 131072, 1114169, 0, 131072, 1114170, 0, 131072, 1114171, 0, 131072, 1114172, 0, 131072, 1114173, 0, 131072, 1114174, 0, 131072, 1114175, 0, 131072, 1114176, 0, 131072, 1114177, 0, 131072, 1114178, 0, 131072, 1114179, 0, 131072, 1114180, 0, 131072, 1114181, 0, 131072, 1114182, 0, 131072, 1114183, 0, 131072, 1114184, 0, 131072, 1114185, 0, 131072, 1114186, 0, 131072, 1114187, 0, 131072, 1114188, 0, 131072, 1114189, 0, 131072, 1114190, 0, 131072, 1114191, 0, 131072, 1114192, 0, 131072, 1114193, 0, 131072, 1114194, 0, 131072, 1114195, 0, 131072, 1114196, 0, 131072, 1114197, 0, 131072, 1114198, 0, 131072, 1114199, 0, 131072, 1114200, 0, 131072, 1114201, 0, 131072, 1114202, 0, 131072, 1114203, 0, 131072, 1114204, 0, 131072, 1114205, 0, 131072, 1114206, 0, 131072, 1114207, 0, 131072, 1114208, 0, 131072, 1114209, 0, 131072, 1114210, 0, 131072, 1114211, 0, 131072, 1114212, 0, 131072, 1114213, 0, 131072, 1114214, 0, 131072, 1114215, 0, 131072, 1114216, 0, 131072, 1114217, 0, 131072, 1114218, 0, 131072, 1114219, 0, 131072, 1114220, 0, 131072, 1114221, 0, 131072, 1114222, 0, 131072, 1114223, 0, 131072, 1114224, 0, 131072, 1114225, 0, 131072, 1114226, 0, 131072, 1114227, 0, 131072, 1114228, 0, 131072, 1114229, 0, 131072, 1114230, 0, 131072, 1114231, 0, 131072, 1114232, 0, 131072, 1114233, 0, 131072, 1114234, 0, 131072, 1114235, 0, 131072, 1114236, 0, 131072, 1114237, 0, 131072, 1114238, 0, 131072, 1114239, 0, 131072, 1114240, 0, 131072, 1114241, 0, 131072, 1114242, 0, 131072, 1114243, 0, 131072, 1114244, 0, 131072, 1114245, 0, 131072, 1114246, 0, 131072, 1114247, 0, 131072, 1114248, 0, 131072, 1114249, 0, 131072, 1114250, 0, 131072, 1114251, 0, 131072, 1114252, 0, 131072, 1114253, 0, 131072, 1114254, 0, 131072, 1114255, 0, 131072, 1114256, 0, 131072, 1114257, 0, 131072, 1114258, 0, 131072, 1114259, 0, 131072, 1114260, 0, 131072, 1114261, 0, 131072, 1114262, 0, 131072, 1114263, 0, 131072, 1114264, 0, 131072, 1114265, 0, 131072, 1114266, 0, 131072, 1114267, 0, 131072, 1114268, 0, 131072, 1114269, 0, 131072, 1114270, 0, 131072, 1114271, 0, 131072, 1114272, 0, 131072, 1114273, 0, 131072, 1114274, 0, 131072, 1114275, 0, 131072, 1114276, 0, 131072, 1114277, 0, 131072, 1114278, 0, 131072, 1114279, 0, 131072, 1114280, 0, 131072, 1114281, 0, 131072, 1114282, 0, 131072, 1114283, 0, 131072, 1114284, 0, 131072, 1114285, 0, 131072, 1114286, 0, 131072, 1114287, 0, 131072, 1114288, 0, 131072, 1114289, 0, 131072, 1114290, 0, 131072, 1114291, 0, 131072, 1114292, 0, 131072, 1114293, 0, 131072, 1114294, 0, 131072, 1114295, 0, 131072, 1114296, 0, 131072, 1114297, 0, 131072, 1114298, 0, 131072, 1114299, 0, 131072, 1114300, 0, 131072, 1114301, 0, 131072, 1114302, 0, 131072, 1114303, 0, 131072, 1114304, 0, 131072, 1114305, 0, 131072, 1114306, 0, 131072, 1114307, 0, 131072, 1114308, 0, 131072, 1114309, 0, 131072, 1114310, 0, 131072, 1114311, 0, 131072, 1114312, 0, 131072, 1114313, 0, 131072, 1114314, 0, 131072, 1114315, 0, 131072, 1114316, 0, 131072, 1114317, 0, 131072, 1245097, 0, 131072, 1245098, 0, 131072, 1245099, 0, 131072, 1245100, 0, 131072, 1245101, 0, 131072, 1245102, 0, 131072, 1245103, 0, 131072, 1245104, 0, 131072, 1245105, 0, 131072, 1245106, 0, 131072, 1245107, 0, 131072, 1245108, 0, 131072, 1245109, 0, 131072, 1245110, 0, 131072, 1245111, 0, 131072, 1245112, 0, 131072, 1245113, 0, 131072, 1245114, 0, 131072, 1245115, 0, 131072, 1245116, 0, 131072, 1245117, 0, 131072, 1245118, 0, 131072, 1245119, 0, 131072, 1245120, 0, 131072, 1245121, 0, 131072, 1245122, 0, 131072, 1245123, 0, 131072, 1245124, 0, 131072, 1245125, 0, 131072, 1245126, 0, 131072, 1245127, 0, 131072, 1245128, 0, 131072, 1245129, 0, 131072, 1245130, 0, 131072, 1245131, 0, 131072, 1245132, 0, 131072, 1245133, 0, 131072, 1245134, 0, 131072, 1245135, 0, 131072, 1245136, 0, 131072, 1245137, 0, 131072, 1245138, 0, 131072, 1245139, 0, 131072, 1245140, 0, 131072, 1245141, 0, 131072, 1245142, 0, 131072, 1245143, 0, 131072, 1245144, 0, 131072, 1245145, 0, 131072, 1245146, 0, 131072, 1245147, 0, 131072, 1245148, 0, 131072, 1245149, 0, 131072, 1245150, 0, 131072, 1245151, 0, 131072, 1245152, 0, 131072, 1245153, 0, 131072, 1245154, 0, 131072, 1245155, 0, 131072, 1245156, 0, 131072, 1245157, 0, 131072, 1245158, 0, 131072, 1245159, 0, 131072, 1245160, 0, 131072, 1245161, 0, 131072, 1245162, 0, 131072, 1245163, 0, 131072, 1245164, 0, 131072, 1245165, 0, 131072, 1245166, 0, 131072, 1245167, 0, 131072, 1245168, 0, 131072, 1245169, 0, 131072, 1245170, 0, 131072, 1245171, 0, 131072, 1245172, 0, 131072, 1245173, 0, 131072, 1245174, 0, 131072, 1245175, 0, 131072, 1245176, 0, 131072, 1245177, 0, 131072, 1245178, 0, 131072, 1245179, 0, 131072, 1245180, 0, 131072, 1245181, 0, 131072, 1245182, 0, 131072, 1245183, 0, 131072, 1179648, 0, 131072, 1179649, 0, 131072, 1179650, 0, 131072, 1179651, 0, 131072, 1179652, 0, 131072, 1179653, 0, 131072, 1179654, 0, 131072, 1179655, 0, 131072, 1179656, 0, 131072, 1179657, 0, 131072, 1179658, 0, 131072, 1179659, 0, 131072, 1179660, 0, 131072, 1179661, 0, 131072, 1179662, 0, 131072, 1179663, 0, 131072, 1179664, 0, 131072, 1179665, 0, 131072, 1179666, 0, 131072, 1179667, 0, 131072, 1179668, 0, 131072, 1179669, 0, 131072, 1179670, 0, 131072, 1179671, 0, 131072, 1179672, 0, 131072, 1179673, 0, 131072, 1179674, 0, 131072, 1179675, 0, 131072, 1179676, 0, 131072, 1179677, 0, 131072, 1179678, 0, 131072, 1179679, 0, 131072, 1179680, 0, 131072, 1179681, 0, 131072, 1179682, 0, 131072, 1179683, 0, 131072, 1179684, 0, 131072, 1179685, 0, 131072, 1179686, 0, 131072, 1179687, 0, 131072, 1179688, 0, 131072, 1179689, 0, 131072, 1179690, 0, 131072, 1179691, 0, 131072, 1179692, 0, 131072, 1179693, 0, 131072, 1179694, 0, 131072, 1179695, 0, 131072, 1179696, 0, 131072, 1179697, 0, 131072, 1179698, 0, 131072, 1179699, 0, 131072, 1179700, 0, 131072, 1179701, 0, 131072, 1179702, 0, 131072, 1179703, 0, 131072, 1179704, 0, 131072, 1179705, 0, 131072, 1179706, 0, 131072, 1179707, 0, 131072, 1179708, 0, 131072, 1179709, 0, 131072, 1179710, 0, 131072, 1179711, 0, 131072, 1179712, 0, 131072, 1179713, 0, 131072, 1179714, 0, 131072, 1179715, 0, 131072, 1179716, 0, 131072, 1179717, 0, 131072, 1179718, 0, 131072, 1179719, 0, 131072, 1179720, 0, 131072, 1179721, 0, 131072, 1179722, 0, 131072, 1179723, 0, 131072, 1179724, 0, 131072, 1179725, 0, 131072, 1179726, 0, 131072, 1179727, 0, 131072, 1179728, 0, 131072, 1179729, 0, 131072, 1179730, 0, 131072, 1179731, 0, 131072, 1179732, 0, 131072, 1179733, 0, 131072, 1179734, 0, 131072, 1179735, 0, 131072, 1179736, 0, 131072, 1179737, 0, 131072, 1179738, 0, 131072, 1179739, 0, 131072, 1179740, 0, 131072, 1179741, 0, 131072, 1179742, 0, 131072, 1179743, 0, 131072, 1179744, 0, 131072, 1179745, 0, 131072, 1179746, 0, 131072, 1179747, 0, 131072, 1179748, 0, 131072, 1179749, 0, 131072, 1179750, 0, 131072, 1179751, 0, 131072, 1179752, 0, 131072, 1179753, 0, 131072, 1179754, 0, 131072, 1179755, 0, 131072, 1179756, 0, 131072, 1179757, 0, 131072, 1179758, 0, 131072, 1179759, 0, 131072, 1179760, 0, 131072, 1179761, 0, 131072, 1179762, 0, 131072, 1179763, 0, 131072, 1179764, 0, 131072, 1179765, 0, 131072, 1179766, 0, 131072, 1179767, 0, 131072, 1179768, 0, 131072, 1179769, 0, 131072, 1179770, 0, 131072, 1179771, 0, 131072, 1179772, 0, 131072, 1179773, 0, 131072, 1179774, 0, 131072, 1179775, 0, 131072, 1179776, 0, 131072, 1179777, 0, 131072, 1179778, 0, 131072, 1179779, 0, 131072, 1179780, 0, 131072, 1179781, 0, 131072, 1179782, 0, 131072, 1179783, 0, 131072, 1179784, 0, 131072, 1179785, 0, 131072, 1179786, 0, 131072, 1179787, 0, 131072, 1179788, 0, 131072, 1179789, 0, 131072, 1179790, 0, 131072, 1179791, 0, 131072, 1179792, 0, 131072, 1179793, 0, 131072, 1179794, 0, 131072, 1179795, 0, 131072, 1179796, 0, 131072, 1179797, 0, 131072, 1179798, 0, 131072, 1179799, 0, 131072, 1179800, 0, 131072, 1179801, 0, 131072, 1179802, 0, 131072, 1179803, 0, 131072, 1179804, 0, 131072, 1179805, 0, 131072, 1179806, 0, 131072, 1179807, 0, 131072, 1179808, 0, 131072, 1179809, 0, 131072, 1179810, 0, 131072, 1179811, 0, 131072, 1179812, 0, 131072, 1179813, 0, 131072, 1179814, 0, 131072, 1179815, 0, 131072, 1179816, 0, 131072, 1179817, 0, 131072, 1179818, 0, 131072, 1179819, 0, 131072, 1179820, 0, 131072, 1179821, 0, 131072, 1179822, 0, 131072, 1179823, 0, 131072, 1179824, 0, 131072, 1179825, 0, 131072, 1179826, 0, 131072, 1179827, 0, 131072, 1179828, 0, 131072, 1179829, 0, 131072, 1179830, 0, 131072, 1179831, 0, 131072, 1179832, 0, 131072, 1179833, 0, 131072, 1179834, 0, 131072, 1179835, 0, 131072, 1179836, 0, 131072, 1179837, 0, 131072, 1179838, 0, 131072, 1179839, 0, 131072, 1179840, 0, 131072, 1179841, 0, 131072, 1179842, 0, 131072, 1179843, 0, 131072, 1179844, 0, 131072, 1179845, 0, 131072, 1179846, 0, 131072, 1179847, 0, 131072, 1179848, 0, 131072, 1179849, 0, 131072, 1179850, 0, 131072, 1179851, 0, 131072, 1179852, 0, 131072, 1179853, 0, 131072, 1310634, 0, 131072, 1310635, 0, 131072, 1310636, 0, 131072, 1310637, 0, 131072, 1310638, 0, 131072, 1310639, 0, 131072, 1310640, 0, 131072, 1310641, 0, 131072, 1310642, 0, 131072, 1310643, 0, 131072, 1310644, 0, 131072, 1310645, 0, 131072, 1310646, 0, 131072, 1310647, 0, 131072, 1310648, 0, 131072, 1310649, 0, 131072, 1310650, 0, 131072, 1310651, 0, 131072, 1310652, 0, 131072, 1310653, 0, 131072, 1310654, 0, 131072, 1310655, 0, 131072, 1310656, 0, 131072, 1310657, 0, 131072, 1310658, 0, 131072, 1310659, 0, 131072, 1310660, 0, 131072, 1310661, 0, 131072, 1310662, 0, 131072, 1310663, 0, 131072, 1310664, 0, 131072, 1310665, 0, 131072, 1310666, 0, 131072, 1310667, 0, 131072, 1310668, 0, 131072, 1310669, 0, 131072, 1310670, 0, 131072, 1310671, 0, 131072, 1310672, 0, 131072, 1310673, 0, 131072, 1310674, 0, 131072, 1310675, 0, 131072, 1310676, 0, 131072, 1310677, 0, 131072, 1310678, 0, 131072, 1310679, 0, 131072, 1310680, 0, 131072, 1310681, 0, 131072, 1310682, 0, 131072, 1310683, 0, 131072, 1310684, 0, 131072, 1310685, 0, 131072, 1310686, 0, 131072, 1310687, 0, 131072, 1310688, 0, 131072, 1310689, 0, 131072, 1310690, 0, 131072, 1310691, 0, 131072, 1310692, 0, 131072, 1310693, 0, 131072, 1310694, 0, 131072, 1310695, 0, 131072, 1310696, 0, 131072, 1310697, 0, 131072, 1310698, 0, 131072, 1310699, 0, 131072, 1310700, 0, 131072, 1310701, 0, 131072, 1310702, 0, 131072, 1310703, 0, 131072, 1310704, 0, 131072, 1310705, 0, 131072, 1310706, 0, 131072, 1310707, 0, 131072, 1310708, 0, 131072, 1310709, 0, 131072, 1310710, 0, 131072, 1310711, 0, 131072, 1310712, 0, 131072, 1310713, 0, 131072, 1310714, 0, 131072, 1310715, 0, 131072, 1310716, 0, 131072, 1310717, 0, 131072, 1310718, 0, 131072, 1310719, 0, 131072, 1245184, 0, 131072, 1245185, 0, 131072, 1245186, 0, 131072, 1245187, 0, 131072, 1245188, 0, 131072, 1245189, 0, 131072, 1245190, 0, 131072, 1245191, 0, 131072, 1245192, 0, 131072, 1245193, 0, 131072, 1245194, 0, 131072, 1245195, 0, 131072, 1245196, 0, 131072, 1245197, 0, 131072, 1245198, 0, 131072, 1245199, 0, 131072, 1245200, 0, 131072, 1245201, 0, 131072, 1245202, 0, 131072, 1245203, 0, 131072, 1245204, 0, 131072, 1245205, 0, 131072, 1245206, 0, 131072, 1245207, 0, 131072, 1245208, 0, 131072, 1245209, 0, 131072, 1245210, 0, 131072, 1245211, 0, 131072, 1245212, 0, 131072, 1245213, 0, 131072, 1245214, 0, 131072, 1245215, 0, 131072, 1245216, 0, 131072, 1245217, 0, 131072, 1245218, 0, 131072, 1245219, 0, 131072, 1245220, 0, 131072, 1245221, 0, 131072, 1245222, 0, 131072, 1245223, 0, 131072, 1245224, 0, 131072, 1245225, 0, 131072, 1245226, 0, 131072, 1245227, 0, 131072, 1245228, 0, 131072, 1245229, 0, 131072, 1245230, 0, 131072, 1245231, 0, 131072, 1245232, 0, 131072, 1245233, 0, 131072, 1245234, 0, 131072, 1245235, 0, 131072, 1245236, 0, 131072, 1245237, 0, 131072, 1245238, 0, 131072, 1245239, 0, 131072, 1245240, 0, 131072, 1245241, 0, 131072, 1245242, 0, 131072, 1245243, 0, 131072, 1245244, 0, 131072, 1245245, 0, 131072, 1245246, 0, 131072, 1245247, 0, 131072, 1245248, 0, 131072, 1245249, 0, 131072, 1245250, 0, 131072, 1245251, 0, 131072, 1245252, 0, 131072, 1245253, 0, 131072, 1245254, 0, 131072, 1245255, 0, 131072, 1245256, 0, 131072, 1245257, 0, 131072, 1245258, 0, 131072, 1245259, 0, 131072, 1245260, 0, 131072, 1245261, 0, 131072, 1245262, 0, 131072, 1245263, 0, 131072, 1245264, 0, 131072, 1245265, 0, 131072, 1245266, 0, 131072, 1245267, 0, 131072, 1245268, 0, 131072, 1245269, 0, 131072, 1245270, 0, 131072, 1245271, 0, 131072, 1245272, 0, 131072, 1245273, 0, 131072, 1245274, 0, 131072, 1245275, 0, 131072, 1245276, 0, 131072, 1245277, 0, 131072, 1245278, 0, 131072, 1245279, 0, 131072, 1245280, 0, 131072, 1245281, 0, 131072, 1245282, 0, 131072, 1245283, 0, 131072, 1245284, 0, 131072, 1245285, 0, 131072, 1245286, 0, 131072, 1245287, 0, 131072, 1245288, 0, 131072, 1245289, 0, 131072, 1245290, 0, 131072, 1245291, 0, 131072, 1245292, 0, 131072, 1245293, 0, 131072, 1245294, 0, 131072, 1245295, 0, 131072, 1245296, 0, 131072, 1245297, 0, 131072, 1245298, 0, 131072, 1245299, 0, 131072, 1245300, 0, 131072, 1245301, 0, 131072, 1245302, 0, 131072, 1245303, 0, 131072, 1245304, 0, 131072, 1245305, 0, 131072, 1245306, 0, 131072, 1245307, 0, 131072, 1245308, 0, 131072, 1245309, 0, 131072, 1245310, 0, 131072, 1245311, 0, 131072, 1245312, 0, 131072, 1245313, 0, 131072, 1245314, 0, 131072, 1245315, 0, 131072, 1245316, 0, 131072, 1245317, 0, 131072, 1245318, 0, 131072, 1245319, 0, 131072, 1245320, 0, 131072, 1245321, 0, 131072, 1245322, 0, 131072, 1245323, 0, 131072, 1245324, 0, 131072, 1245325, 0, 131072, 1245326, 0, 131072, 1245327, 0, 131072, 1245328, 0, 131072, 1245329, 0, 131072, 1245330, 0, 131072, 1245331, 0, 131072, 1245332, 0, 131072, 1245333, 0, 131072, 1245334, 0, 131072, 1245335, 0, 131072, 1245336, 0, 131072, 1245337, 0, 131072, 1245338, 0, 131072, 1245339, 0, 131072, 1245340, 0, 131072, 1245341, 0, 131072, 1245342, 0, 131072, 1245343, 0, 131072, 1245344, 0, 131072, 1245345, 0, 131072, 1245346, 0, 131072, 1245347, 0, 131072, 1245348, 0, 131072, 1245349, 0, 131072, 1245350, 0, 131072, 1245351, 0, 131072, 1245352, 0, 131072, 1245353, 0, 131072, 1245354, 0, 131072, 1245355, 0, 131072, 1245356, 0, 131072, 1245357, 0, 131072, 1245358, 0, 131072, 1245359, 0, 131072, 1245360, 0, 131072, 1245361, 0, 131072, 1245362, 0, 131072, 1245363, 0, 131072, 1245364, 0, 131072, 1245365, 0, 131072, 1245366, 0, 131072, 1245367, 0, 131072, 1245368, 0, 131072, 1245369, 0, 131072, 1245370, 0, 131072, 1245371, 0, 131072, 1245372, 0, 131072, 1245373, 0, 131072, 1245374, 0, 131072, 1245375, 0, 131072, 1245376, 0, 131072, 1245377, 0, 131072, 1245378, 0, 131072, 1245379, 0, 131072, 1245380, 0, 131072, 1245381, 0, 131072, 1245382, 0, 131072, 1245383, 0, 131072, 1245384, 0, 131072, 1245385, 0, 131072, 1245386, 0, 131072, 1245387, 0, 131072, 1245388, 0, 131072, 1245389, 0, 131072, 1245390, 0, 131072, 1376170, 0, 131072, 1376171, 0, 131072, 1376172, 0, 131072, 1376173, 0, 131072, 1376174, 0, 131072, 1376175, 0, 131072, 1376176, 0, 131072, 1376177, 0, 131072, 1376178, 0, 131072, 1376179, 0, 131072, 1376180, 0, 131072, 1376181, 0, 131072, 1376182, 0, 131072, 1376183, 0, 131072, 1376184, 0, 131072, 1376185, 0, 131072, 1376186, 0, 131072, 1376187, 0, 131072, 1376188, 0, 131072, 1376189, 0, 131072, 1376190, 0, 131072, 1376191, 0, 131072, 1376192, 0, 131072, 1376193, 0, 131072, 1376194, 0, 131072, 1376195, 0, 131072, 1376196, 0, 131072, 1376197, 0, 131072, 1376198, 0, 131072, 1376199, 0, 131072, 1376200, 0, 131072, 1376201, 0, 131072, 1376202, 0, 131072, 1376203, 0, 131072, 1376204, 0, 131072, 1376205, 0, 131072, 1376206, 0, 131072, 1376207, 0, 131072, 1376208, 0, 131072, 1376209, 0, 131072, 1376210, 0, 131072, 1376211, 0, 131072, 1376212, 0, 131072, 1376213, 0, 131072, 1376214, 0, 131072, 1376215, 0, 131072, 1376216, 0, 131072, 1376217, 0, 131072, 1376218, 0, 131072, 1376219, 0, 131072, 1376220, 0, 131072, 1376221, 0, 131072, 1376222, 0, 131072, 1376223, 0, 131072, 1376224, 0, 131072, 1376225, 0, 131072, 1376226, 0, 131072, 1376227, 0, 131072, 1376228, 0, 131072, 1376229, 0, 131072, 1376230, 0, 131072, 1376231, 0, 131072, 1376232, 0, 131072, 1376233, 0, 131072, 1376234, 0, 131072, 1376235, 0, 131072, 1376236, 0, 131072, 1376237, 0, 131072, 1376238, 0, 131072, 1376239, 0, 131072, 1376240, 0, 131072, 1376241, 0, 131072, 1376242, 0, 131072, 1376243, 0, 131072, 1376244, 0, 131072, 1376245, 0, 131072, 1376246, 0, 131072, 1376247, 0, 131072, 1376248, 0, 131072, 1376249, 0, 131072, 1376250, 0, 131072, 1376251, 0, 131072, 1376252, 0, 131072, 1376253, 0, 131072, 1376254, 0, 131072, 1376255, 0, 131072, 1310720, 0, 131072, 1310721, 0, 131072, 1310722, 0, 131072, 1310723, 0, 131072, 1310724, 0, 131072, 1310725, 0, 131072, 1310726, 0, 131072, 1310727, 0, 131072, 1310728, 0, 131072, 1310729, 0, 131072, 1310730, 0, 131072, 1310731, 0, 131072, 1310732, 0, 131072, 1310733, 0, 131072, 1310734, 0, 131072, 1310735, 0, 131072, 1310736, 0, 131072, 1310737, 0, 131072, 1310738, 0, 131072, 1310739, 0, 131072, 1310740, 0, 131072, 1310741, 0, 131072, 1310742, 0, 131072, 1310743, 0, 131072, 1310744, 0, 131072, 1310745, 0, 131072, 1310746, 0, 131072, 1310747, 0, 131072, 1310748, 0, 131072, 1310749, 0, 131072, 1310750, 0, 131072, 1310751, 0, 131072, 1310752, 0, 131072, 1310753, 0, 131072, 1310754, 0, 131072, 1310755, 0, 131072, 1310756, 0, 131072, 1310757, 0, 131072, 1310758, 0, 131072, 1310759, 0, 131072, 1310760, 0, 131072, 1310761, 0, 131072, 1310762, 0, 131072, 1310763, 0, 131072, 1310764, 0, 131072, 1310765, 0, 131072, 1310766, 0, 131072, 1310767, 0, 131072, 1310768, 0, 131072, 1310769, 0, 131072, 1310770, 0, 131072, 1310771, 0, 131072, 1310772, 0, 131072, 1310773, 0, 131072, 1310774, 0, 131072, 1310775, 0, 131072, 1310776, 0, 131072, 1310777, 0, 131072, 1310778, 0, 131072, 1310779, 0, 131072, 1310780, 0, 131072, 1310781, 0, 131072, 1310782, 0, 131072, 1310783, 0, 131072, 1310784, 0, 131072, 1310785, 0, 131072, 1310786, 0, 131072, 1310787, 0, 131072, 1310788, 0, 131072, 1310789, 0, 131072, 1310790, 0, 131072, 1310791, 0, 131072, 1310792, 0, 131072, 1310793, 0, 131072, 1310794, 0, 131072, 1310795, 0, 131072, 1310796, 0, 131072, 1310797, 0, 131072, 1310798, 0, 131072, 1310799, 0, 131072, 1310800, 0, 131072, 1310801, 0, 131072, 1310802, 0, 131072, 1310803, 0, 131072, 1310804, 0, 131072, 1310805, 0, 131072, 1310806, 0, 131072, 1310807, 0, 131072, 1310808, 0, 131072, 1310809, 0, 131072, 1310810, 0, 131072, 1310811, 0, 131072, 1310812, 0, 131072, 1310813, 0, 131072, 1310814, 0, 131072, 1310815, 0, 131072, 1310816, 0, 131072, 1310817, 0, 131072, 1310818, 0, 131072, 1310819, 0, 131072, 1310820, 0, 131072, 1310821, 0, 131072, 1310822, 0, 131072, 1310823, 0, 131072, 1310824, 0, 131072, 1310825, 0, 131072, 1310826, 0, 131072, 1310827, 0, 131072, 1310828, 0, 131072, 1310829, 0, 131072, 1310830, 0, 131072, 1310831, 0, 131072, 1310832, 0, 131072, 1310833, 0, 131072, 1310834, 0, 131072, 1310835, 0, 131072, 1310836, 0, 131072, 1310837, 0, 131072, 1310838, 0, 131072, 1310839, 0, 131072, 1310840, 0, 131072, 1310841, 0, 131072, 1310842, 0, 131072, 1310843, 0, 131072, 1310844, 0, 131072, 1310845, 0, 131072, 1310846, 0, 131072, 1310847, 0, 131072, 1310848, 0, 131072, 1310849, 0, 131072, 1310850, 0, 131072, 1310851, 0, 131072, 1310852, 0, 131072, 1310853, 0, 131072, 1310854, 0, 131072, 1310855, 0, 131072, 1310856, 0, 131072, 1310857, 0, 131072, 1310858, 0, 131072, 1310859, 0, 131072, 1310860, 0, 131072, 1310861, 0, 131072, 1310862, 0, 131072, 1310863, 0, 131072, 1310864, 0, 131072, 1310865, 0, 131072, 1310866, 0, 131072, 1310867, 0, 131072, 1310868, 0, 131072, 1310869, 0, 131072, 1310870, 0, 131072, 1310871, 0, 131072, 1310872, 0, 131072, 1310873, 0, 131072, 1310874, 0, 131072, 1310875, 0, 131072, 1310876, 0, 131072, 1310877, 0, 131072, 1310878, 0, 131072, 1310879, 0, 131072, 1310880, 0, 131072, 1310881, 0, 131072, 1310882, 0, 131072, 1310883, 0, 131072, 1310884, 0, 131072, 1310885, 0, 131072, 1310886, 0, 131072, 1310887, 0, 131072, 1310888, 0, 131072, 1310889, 0, 131072, 1310890, 0, 131072, 1310891, 0, 131072, 1310892, 0, 131072, 1310893, 0, 131072, 1310894, 0, 131072, 1310895, 0, 131072, 1310896, 0, 131072, 1310897, 0, 131072, 1310898, 0, 131072, 1310899, 0, 131072, 1310900, 0, 131072, 1310901, 0, 131072, 1310902, 0, 131072, 1310903, 0, 131072, 1310904, 0, 131072, 1310905, 0, 131072, 1310906, 0, 131072, 1310907, 0, 131072, 1310908, 0, 131072, 1310909, 0, 131072, 1310910, 0, 131072, 1310911, 0, 131072, 1310912, 0, 131072, 1310913, 0, 131072, 1310914, 0, 131072, 1310915, 0, 131072, 1310916, 0, 131072, 1310917, 0, 131072, 1310918, 0, 131072, 1310919, 0, 131072, 1310920, 0, 131072, 1310921, 0, 131072, 1310922, 0, 131072, 1310923, 0, 131072, 1310924, 0, 131072, 1310925, 0, 131072, 1310926, 0, 131072, 1441707, 0, 131072, 1441708, 0, 131072, 1441709, 0, 131072, 1441710, 0, 131072, 1441711, 0, 131072, 1441712, 0, 131072, 1441713, 0, 131072, 1441714, 0, 131072, 1441715, 0, 131072, 1441716, 0, 131072, 1441717, 0, 131072, 1441718, 0, 131072, 1441719, 0, 131072, 1441720, 0, 131072, 1441721, 0, 131072, 1441722, 0, 131072, 1441723, 0, 131072, 1441724, 0, 131072, 1441725, 0, 131072, 1441726, 0, 131072, 1441727, 0, 131072, 1441728, 0, 131072, 1441729, 0, 131072, 1441730, 0, 131072, 1441731, 0, 131072, 1441732, 0, 131072, 1441733, 0, 131072, 1441734, 0, 131072, 1441735, 0, 131072, 1441736, 0, 131072, 1441737, 0, 131072, 1441738, 0, 131072, 1441739, 0, 131072, 1441740, 0, 131072, 1441741, 0, 131072, 1441742, 0, 131072, 1441743, 0, 131072, 1441744, 0, 131072, 1441745, 0, 131072, 1441746, 0, 131072, 1441747, 0, 131072, 1441748, 0, 131072, 1441749, 0, 131072, 1441750, 0, 131072, 1441751, 0, 131072, 1441752, 0, 131072, 1441753, 0, 131072, 1441754, 0, 131072, 1441755, 0, 131072, 1441756, 0, 131072, 1441757, 0, 131072, 1441758, 0, 131072, 1441759, 0, 131072, 1441760, 0, 131072, 1441761, 0, 131072, 1441762, 0, 131072, 1441763, 0, 131072, 1441764, 0, 131072, 1441765, 0, 131072, 1441766, 0, 131072, 1441767, 0, 131072, 1441768, 0, 131072, 1441769, 0, 131072, 1441770, 0, 131072, 1441771, 0, 131072, 1441772, 0, 131072, 1441773, 0, 131072, 1441774, 0, 131072, 1441775, 0, 131072, 1441776, 0, 131072, 1441777, 0, 131072, 1441778, 0, 131072, 1441779, 0, 131072, 1441780, 0, 131072, 1441781, 0, 131072, 1441782, 0, 131072, 1441783, 0, 131072, 1441784, 0, 131072, 1441785, 0, 131072, 1441786, 0, 131072, 1441787, 0, 131072, 1441788, 0, 131072, 1441789, 0, 131072, 1441790, 0, 131072, 1441791, 0, 131072, 1376256, 0, 131072, 1376257, 0, 131072, 1376258, 0, 131072, 1376259, 0, 131072, 1376260, 0, 131072, 1376261, 0, 131072, 1376262, 0, 131072, 1376263, 0, 131072, 1376264, 0, 131072, 1376265, 0, 131072, 1376266, 0, 131072, 1376267, 0, 131072, 1376268, 0, 131072, 1376269, 0, 131072, 1376270, 0, 131072, 1376271, 0, 131072, 1376272, 0, 131072, 1376273, 0, 131072, 1376274, 0, 131072, 1376275, 0, 131072, 1376276, 0, 131072, 1376277, 0, 131072, 1376278, 0, 131072, 1376279, 0, 131072, 1376280, 0, 131072, 1376281, 0, 131072, 1376282, 0, 131072, 1376283, 0, 131072, 1376284, 0, 131072, 1376285, 0, 131072, 1376286, 0, 131072, 1376287, 0, 131072, 1376288, 0, 131072, 1376289, 0, 131072, 1376290, 0, 131072, 1376291, 0, 131072, 1376292, 0, 131072, 1376293, 0, 131072, 1376294, 0, 131072, 1376295, 0, 131072, 1376296, 0, 131072, 1376297, 0, 131072, 1376298, 0, 131072, 1376299, 0, 131072, 1376300, 0, 131072, 1376301, 0, 131072, 1376302, 0, 131072, 1376303, 0, 131072, 1376304, 0, 131072, 1376305, 0, 131072, 1376306, 0, 131072, 1376307, 0, 131072, 1376308, 0, 131072, 1376309, 0, 131072, 1376310, 0, 131072, 1376311, 0, 131072, 1376312, 0, 131072, 1376313, 0, 131072, 1376314, 0, 131072, 1376315, 0, 131072, 1376316, 0, 131072, 1376317, 0, 131072, 1376318, 0, 131072, 1376319, 0, 131072, 1376320, 0, 131072, 1376321, 0, 131072, 1376322, 0, 131072, 1376323, 0, 131072, 1376324, 0, 131072, 1376325, 0, 131072, 1376326, 0, 131072, 1376327, 0, 131072, 1376328, 0, 131072, 1376329, 0, 131072, 1376330, 0, 131072, 1376331, 0, 131072, 1376332, 0, 131072, 1376333, 0, 131072, 1376334, 0, 131072, 1376335, 0, 131072, 1376336, 0, 131072, 1376337, 0, 131072, 1376338, 0, 131072, 1376339, 0, 131072, 1376340, 0, 131072, 1376341, 0, 131072, 1376342, 0, 131072, 1376343, 0, 131072, 1376344, 0, 131072, 1376345, 0, 131072, 1376346, 0, 131072, 1376347, 0, 131072, 1376348, 0, 131072, 1376349, 0, 131072, 1376350, 0, 131072, 1376351, 0, 131072, 1376352, 0, 131072, 1376353, 0, 131072, 1376354, 0, 131072, 1376355, 0, 131072, 1376356, 0, 131072, 1376357, 0, 131072, 1376358, 0, 131072, 1376359, 0, 131072, 1376360, 0, 131072, 1376361, 0, 131072, 1376362, 0, 131072, 1376363, 0, 131072, 1376364, 0, 131072, 1376365, 0, 131072, 1376366, 0, 131072, 1376367, 0, 131072, 1376368, 0, 131072, 1376369, 0, 131072, 1376370, 0, 131072, 1376371, 0, 131072, 1376372, 0, 131072, 1376373, 0, 131072, 1376374, 0, 131072, 1376375, 0, 131072, 1376376, 0, 131072, 1376377, 0, 131072, 1376378, 0, 131072, 1376379, 0, 131072, 1376380, 0, 131072, 1376381, 0, 131072, 1376382, 0, 131072, 1376383, 0, 131072, 1376384, 0, 131072, 1376385, 0, 131072, 1376386, 0, 131072, 1376387, 0, 131072, 1376388, 0, 131072, 1376389, 0, 131072, 1376390, 0, 131072, 1376391, 0, 131072, 1376392, 0, 131072, 1376393, 0, 131072, 1376394, 0, 131072, 1376395, 0, 131072, 1376396, 0, 131072, 1376397, 0, 131072, 1376398, 0, 131072, 1376399, 0, 131072, 1376400, 0, 131072, 1376401, 0, 131072, 1376402, 0, 131072, 1376403, 0, 131072, 1376404, 0, 131072, 1376405, 0, 131072, 1376406, 0, 131072, 1376407, 0, 131072, 1376408, 0, 131072, 1376409, 0, 131072, 1376410, 0, 131072, 1376411, 0, 131072, 1376412, 0, 131072, 1376413, 0, 131072, 1376414, 0, 131072, 1376415, 0, 131072, 1376416, 0, 131072, 1376417, 0, 131072, 1376418, 0, 131072, 1376419, 0, 131072, 1376420, 0, 131072, 1376421, 0, 131072, 1376422, 0, 131072, 1376423, 0, 131072, 1376424, 0, 131072, 1376425, 0, 131072, 1376426, 0, 131072, 1376427, 0, 131072, 1376428, 0, 131072, 1376429, 0, 131072, 1376430, 0, 131072, 1376431, 0, 131072, 1376432, 0, 131072, 1376433, 0, 131072, 1376434, 0, 131072, 1376435, 0, 131072, 1376436, 0, 131072, 1376437, 0, 131072, 1376438, 0, 131072, 1376439, 0, 131072, 1376440, 0, 131072, 1376441, 0, 131072, 1376442, 0, 131072, 1376443, 0, 131072, 1376444, 0, 131072, 1376445, 0, 131072, 1376446, 0, 131072, 1376447, 0, 131072, 1376448, 0, 131072, 1376449, 0, 131072, 1376450, 0, 131072, 1376451, 0, 131072, 1376452, 0, 131072, 1376453, 0, 131072, 1376454, 0, 131072, 1376455, 0, 131072, 1376456, 0, 131072, 1376457, 0, 131072, 1376458, 0, 131072, 1376459, 0, 131072, 1376460, 0, 131072, 1376461, 0, 131072, 1376462, 0, 131072, 1376463, 0, 131072, 1507244, 0, 131072, 1507245, 0, 131072, 1507246, 0, 131072, 1507247, 0, 131072, 1507248, 0, 131072, 1507249, 0, 131072, 1507250, 0, 131072, 1507251, 0, 131072, 1507252, 0, 131072, 1507253, 0, 131072, 1507254, 0, 131072, 1507255, 0, 131072, 1507256, 0, 131072, 1507257, 0, 131072, 1507258, 0, 131072, 1507259, 0, 131072, 1507260, 0, 131072, 1507261, 0, 131072, 1507262, 0, 131072, 1507263, 0, 131072, 1507264, 0, 131072, 1507265, 0, 131072, 1507266, 0, 131072, 1507267, 0, 131072, 1507268, 0, 131072, 1507269, 0, 131072, 1507270, 0, 131072, 1507271, 0, 131072, 1507272, 0, 131072, 1507273, 0, 131072, 1507274, 0, 131072, 1507275, 0, 131072, 1507276, 0, 131072, 1507277, 0, 131072, 1507278, 0, 131072, 1507279, 0, 131072, 1507280, 0, 131072, 1507281, 0, 131072, 1507282, 0, 131072, 1507283, 0, 131072, 1507284, 0, 131072, 1507285, 0, 131072, 1507286, 0, 131072, 1507287, 0, 131072, 1507288, 0, 131072, 1507289, 0, 131072, 1507290, 0, 131072, 1507291, 0, 131072, 1507292, 0, 131072, 1507293, 0, 131072, 1507294, 0, 131072, 1507295, 0, 131072, 1507296, 0, 131072, 1507297, 0, 131072, 1507298, 0, 131072, 1507299, 0, 131072, 1507300, 0, 131072, 1507301, 0, 131072, 1507302, 0, 131072, 1507303, 0, 131072, 1507304, 0, 131072, 1507305, 0, 131072, 1507306, 0, 131072, 1507307, 0, 131072, 1507308, 0, 131072, 1507309, 0, 131072, 1507310, 0, 131072, 1507311, 0, 131072, 1507312, 0, 131072, 1507313, 0, 131072, 1507314, 0, 131072, 1507315, 0, 131072, 1507316, 0, 131072, 1507317, 0, 131072, 1507318, 0, 131072, 1507319, 0, 131072, 1507320, 0, 131072, 1507321, 0, 131072, 1507322, 0, 131072, 1507323, 0, 131072, 1507324, 0, 131072, 1507325, 0, 131072, 1507326, 0, 131072, 1507327, 0, 131072, 1441792, 0, 131072, 1441793, 0, 131072, 1441794, 0, 131072, 1441795, 0, 131072, 1441796, 0, 131072, 1441797, 0, 131072, 1441798, 0, 131072, 1441799, 0, 131072, 1441800, 0, 131072, 1441801, 0, 131072, 1441802, 0, 131072, 1441803, 0, 131072, 1441804, 0, 131072, 1441805, 0, 131072, 1441806, 0, 131072, 1441807, 0, 131072, 1441808, 0, 131072, 1441809, 0, 131072, 1441810, 0, 131072, 1441811, 0, 131072, 1441812, 0, 131072, 1441813, 0, 131072, 1441814, 0, 131072, 1441815, 0, 131072, 1441816, 0, 131072, 1441817, 0, 131072, 1441818, 0, 131072, 1441819, 0, 131072, 1441820, 0, 131072, 1441821, 0, 131072, 1441822, 0, 131072, 1441823, 0, 131072, 1441824, 0, 131072, 1441825, 0, 131072, 1441826, 0, 131072, 1441827, 0, 131072, 1441828, 0, 131072, 1441829, 0, 131072, 1441830, 0, 131072, 1441831, 0, 131072, 1441832, 0, 131072, 1441833, 0, 131072, 1441834, 0, 131072, 1441835, 0, 131072, 1441836, 0, 131072, 1441837, 0, 131072, 1441838, 0, 131072, 1441839, 0, 131072, 1441840, 0, 131072, 1441841, 0, 131072, 1441842, 0, 131072, 1441843, 0, 131072, 1441844, 0, 131072, 1441845, 0, 131072, 1441846, 0, 131072, 1441847, 0, 131072, 1441848, 0, 131072, 1441849, 0, 131072, 1441850, 0, 131072, 1441851, 0, 131072, 1441852, 0, 131072, 1441853, 0, 131072, 1441854, 0, 131072, 1441855, 0, 131072, 1441856, 0, 131072, 1441857, 0, 131072, 1441858, 0, 131072, 1441859, 0, 131072, 1441860, 0, 131072, 1441861, 0, 131072, 1441862, 0, 131072, 1441863, 0, 131072, 1441864, 0, 131072, 1441865, 0, 131072, 1441866, 0, 131072, 1441867, 0, 131072, 1441868, 0, 131072, 1441869, 0, 131072, 1441870, 0, 131072, 1441871, 0, 131072, 1441872, 0, 131072, 1441873, 0, 131072, 1441874, 0, 131072, 1441875, 0, 131072, 1441876, 0, 131072, 1441877, 0, 131072, 1441878, 0, 131072, 1441879, 0, 131072, 1441880, 0, 131072, 1441881, 0, 131072, 1441882, 0, 131072, 1441883, 0, 131072, 1441884, 0, 131072, 1441885, 0, 131072, 1441886, 0, 131072, 1441887, 0, 131072, 1441888, 0, 131072, 1441889, 0, 131072, 1441890, 0, 131072, 1441891, 0, 131072, 1441892, 0, 131072, 1441893, 0, 131072, 1441894, 0, 131072, 1441895, 0, 131072, 1441896, 0, 131072, 1441897, 0, 131072, 1441898, 0, 131072, 1441899, 0, 131072, 1441900, 0, 131072, 1441901, 0, 131072, 1441902, 0, 131072, 1441903, 0, 131072, 1441904, 0, 131072, 1441905, 0, 131072, 1441906, 0, 131072, 1441907, 0, 131072, 1441908, 0, 131072, 1441909, 0, 131072, 1441910, 0, 131072, 1441911, 0, 131072, 1441912, 0, 131072, 1441913, 0, 131072, 1441914, 0, 131072, 1441915, 0, 131072, 1441916, 0, 131072, 1441917, 0, 131072, 1441918, 0, 131072, 1441919, 0, 131072, 1441920, 0, 131072, 1441921, 0, 131072, 1441922, 0, 131072, 1441923, 0, 131072, 1441924, 0, 131072, 1441925, 0, 131072, 1441926, 0, 131072, 1441927, 0, 131072, 1441928, 0, 131072, 1441929, 0, 131072, 1441930, 0, 131072, 1441931, 0, 131072, 1441932, 0, 131072, 1441933, 0, 131072, 1441934, 0, 131072, 1441935, 0, 131072, 1441936, 0, 131072, 1441937, 0, 131072, 1441938, 0, 131072, 1441939, 0, 131072, 1441940, 0, 131072, 1441941, 0, 131072, 1441942, 0, 131072, 1441943, 0, 131072, 1441944, 0, 131072, 1441945, 0, 131072, 1441946, 0, 131072, 1441947, 0, 131072, 1441948, 0, 131072, 1441949, 0, 131072, 1441950, 0, 131072, 1441951, 0, 131072, 1441952, 0, 131072, 1441953, 0, 131072, 1441954, 0, 131072, 1441955, 0, 131072, 1441956, 0, 131072, 1441957, 0, 131072, 1441958, 0, 131072, 1441959, 0, 131072, 1441960, 0, 131072, 1441961, 0, 131072, 1441962, 0, 131072, 1441963, 0, 131072, 1441964, 0, 131072, 1441965, 0, 131072, 1441966, 0, 131072, 1441967, 0, 131072, 1441968, 0, 131072, 1441969, 0, 131072, 1441970, 0, 131072, 1441971, 0, 131072, 1441972, 0, 131072, 1441973, 0, 131072, 1441974, 0, 131072, 1441975, 0, 131072, 1441976, 0, 131072, 1441977, 0, 131072, 1441978, 0, 131072, 1441979, 0, 131072, 1441980, 0, 131072, 1441981, 0, 131072, 1441982, 0, 131072, 1441983, 0, 131072, 1441984, 0, 131072, 1441985, 0, 131072, 1441986, 0, 131072, 1441987, 0, 131072, 1441988, 0, 131072, 1441989, 0, 131072, 1441990, 0, 131072, 1441991, 0, 131072, 1441992, 0, 131072, 1441993, 0, 131072, 1441994, 0, 131072, 1441995, 0, 131072, 1441996, 0, 131072, 1441997, 0, 131072, 1441998, 0, 131072, 1441999, 0, 131072, 1572780, 0, 131072, 1572781, 0, 131072, 1572782, 0, 131072, 1572783, 0, 131072, 1572784, 0, 131072, 1572785, 0, 131072, 1572786, 0, 131072, 1572787, 0, 131072, 1572788, 0, 131072, 1572789, 0, 131072, 1572790, 0, 131072, 1572791, 0, 131072, 1572792, 0, 131072, 1572793, 0, 131072, 1572794, 0, 131072, 1572795, 0, 131072, 1572796, 0, 131072, 1572797, 0, 131072, 1572798, 0, 131072, 1572799, 0, 131072, 1572800, 0, 131072, 1572801, 0, 131072, 1572802, 0, 131072, 1572803, 0, 131072, 1572804, 0, 131072, 1572805, 0, 131072, 1572806, 0, 131072, 1572807, 0, 131072, 1572808, 0, 131072, 1572809, 0, 131072, 1572810, 0, 131072, 1572811, 0, 131072, 1572812, 0, 131072, 1572813, 0, 131072, 1572814, 0, 131072, 1572815, 0, 131072, 1572816, 0, 131072, 1572817, 0, 131072, 1572818, 0, 131072, 1572819, 0, 131072, 1572820, 0, 131072, 1572821, 0, 131072, 1572822, 0, 131072, 1572823, 0, 131072, 1572824, 0, 131072, 1572825, 0, 131072, 1572826, 0, 131072, 1572827, 0, 131072, 1572828, 0, 131072, 1572829, 0, 131072, 1572830, 0, 131072, 1572831, 0, 131072, 1572832, 0, 131072, 1572833, 0, 131072, 1572834, 0, 131072, 1572835, 0, 131072, 1572836, 0, 131072, 1572837, 0, 131072, 1572838, 0, 131072, 1572839, 0, 131072, 1572840, 0, 131072, 1572841, 0, 131072, 1572842, 0, 131072, 1572843, 0, 131072, 1572844, 0, 131072, 1572845, 0, 131072, 1572846, 0, 131072, 1572847, 0, 131072, 1572848, 0, 131072, 1572849, 0, 131072, 1572850, 0, 131072, 1572851, 0, 131072, 1572852, 0, 131072, 1572853, 0, 131072, 1572854, 0, 131072, 1572855, 0, 131072, 1572856, 0, 131072, 1572857, 0, 131072, 1572858, 0, 131072, 1572859, 0, 131072, 1572860, 0, 131072, 1572861, 0, 131072, 1572862, 0, 131072, 1572863, 0, 131072, 1507328, 0, 131072, 1507329, 0, 131072, 1507330, 0, 131072, 1507331, 0, 131072, 1507332, 0, 131072, 1507333, 0, 131072, 1507334, 0, 131072, 1507335, 0, 131072, 1507336, 0, 131072, 1507337, 0, 131072, 1507338, 0, 131072, 1507339, 0, 131072, 1507340, 0, 131072, 1507341, 0, 131072, 1507342, 0, 131072, 1507343, 0, 131072, 1507344, 0, 131072, 1507345, 0, 131072, 1507346, 0, 131072, 1507347, 0, 131072, 1507348, 0, 131072, 1507349, 0, 131072, 1507350, 0, 131072, 1507351, 0, 131072, 1507352, 0, 131072, 1507353, 0, 131072, 1507354, 0, 131072, 1507355, 0, 131072, 1507356, 0, 131072, 1507357, 0, 131072, 1507358, 0, 131072, 1507359, 0, 131072, 1507360, 0, 131072, 1507361, 0, 131072, 1507362, 0, 131072, 1507363, 0, 131072, 1507364, 0, 131072, 1507365, 0, 131072, 1507366, 0, 131072, 1507367, 0, 131072, 1507368, 0, 131072, 1507369, 0, 131072, 1507370, 0, 131072, 1507371, 0, 131072, 1507372, 0, 131072, 1507373, 0, 131072, 1507374, 0, 131072, 1507375, 0, 131072, 1507376, 0, 131072, 1507377, 0, 131072, 1507378, 0, 131072, 1507379, 0, 131072, 1507380, 0, 131072, 1507381, 0, 131072, 1507382, 0, 131072, 1507383, 0, 131072, 1507384, 0, 131072, 1507385, 0, 131072, 1507386, 0, 131072, 1507387, 0, 131072, 1507388, 0, 131072, 1507389, 0, 131072, 1507390, 0, 131072, 1507391, 0, 131072, 1507392, 0, 131072, 1507393, 0, 131072, 1507394, 0, 131072, 1507395, 0, 131072, 1507396, 0, 131072, 1507397, 0, 131072, 1507398, 0, 131072, 1507399, 0, 131072, 1507400, 0, 131072, 1507401, 0, 131072, 1507402, 0, 131072, 1507403, 0, 131072, 1507404, 0, 131072, 1507405, 0, 131072, 1507406, 0, 131072, 1507407, 0, 131072, 1507408, 0, 131072, 1507409, 0, 131072, 1507410, 0, 131072, 1507411, 0, 131072, 1507412, 0, 131072, 1507413, 0, 131072, 1507414, 0, 131072, 1507415, 0, 131072, 1507416, 0, 131072, 1507417, 0, 131072, 1507418, 0, 131072, 1507419, 0, 131072, 1507420, 0, 131072, 1507421, 0, 131072, 1507422, 0, 131072, 1507423, 0, 131072, 1507424, 0, 131072, 1507425, 0, 131072, 1507426, 0, 131072, 1507427, 0, 131072, 1507428, 0, 131072, 1507429, 0, 131072, 1507430, 0, 131072, 1507431, 0, 131072, 1507432, 0, 131072, 1507433, 0, 131072, 1507434, 0, 131072, 1507435, 0, 131072, 1507436, 0, 131072, 1507437, 0, 131072, 1507438, 0, 131072, 1507439, 0, 131072, 1507440, 0, 131072, 1507441, 0, 131072, 1507442, 0, 131072, 1507443, 0, 131072, 1507444, 0, 131072, 1507445, 0, 131072, 1507446, 0, 131072, 1507447, 0, 131072, 1507448, 0, 131072, 1507449, 0, 131072, 1507450, 0, 131072, 1507451, 0, 131072, 1507452, 0, 131072, 1507453, 0, 131072, 1507454, 0, 131072, 1507455, 0, 131072, 1507456, 0, 131072, 1507457, 0, 131072, 1507458, 0, 131072, 1507459, 0, 131072, 1507460, 0, 131072, 1507461, 0, 131072, 1507462, 0, 131072, 1507463, 0, 131072, 1507464, 0, 131072, 1507465, 0, 131072, 1507466, 0, 131072, 1507467, 0, 131072, 1507468, 0, 131072, 1507469, 0, 131072, 1507470, 0, 131072, 1507471, 0, 131072, 1507472, 0, 131072, 1507473, 0, 131072, 1507474, 0, 131072, 1507475, 0, 131072, 1507476, 0, 131072, 1507477, 0, 131072, 1507478, 0, 131072, 1507479, 0, 131072, 1507480, 0, 131072, 1507481, 0, 131072, 1507482, 0, 131072, 1507483, 0, 131072, 1507484, 0, 131072, 1507485, 0, 131072, 1507486, 0, 131072, 1507487, 0, 131072, 1507488, 0, 131072, 1507489, 0, 131072, 1507490, 0, 131072, 1507491, 0, 131072, 1507492, 0, 131072, 1507493, 0, 131072, 1507494, 0, 131072, 1507495, 0, 131072, 1507496, 0, 131072, 1507497, 0, 131072, 1507498, 0, 131072, 1507499, 0, 131072, 1507500, 0, 131072, 1507501, 0, 131072, 1507502, 0, 131072, 1507503, 0, 131072, 1507504, 0, 131072, 1507505, 0, 131072, 1507506, 0, 131072, 1507507, 0, 131072, 1507508, 0, 131072, 1507509, 0, 131072, 1507510, 0, 131072, 1507511, 0, 131072, 1507512, 0, 131072, 1507513, 0, 131072, 1507514, 0, 131072, 1507515, 0, 131072, 1507516, 0, 131072, 1507517, 0, 131072, 1507518, 0, 131072, 1507519, 0, 131072, 1507520, 0, 131072, 1507521, 0, 131072, 1507522, 0, 131072, 1507523, 0, 131072, 1507524, 0, 131072, 1507525, 0, 131072, 1507526, 0, 131072, 1507527, 0, 131072, 1507528, 0, 131072, 1507529, 0, 131072, 1507530, 0, 131072, 1507531, 0, 131072, 1507532, 0, 131072, 1507533, 0, 131072, 1507534, 0, 131072, 1507535, 0, 131072, 1638317, 0, 131072, 1638318, 0, 131072, 1638319, 0, 131072, 1638320, 0, 131072, 1638321, 0, 131072, 1638322, 0, 131072, 1638323, 0, 131072, 1638324, 0, 131072, 1638325, 0, 131072, 1638326, 0, 131072, 1638327, 0, 131072, 1638328, 0, 131072, 1638329, 0, 131072, 1638330, 0, 131072, 1638331, 0, 131072, 1638332, 0, 131072, 1638333, 0, 131072, 1638334, 0, 131072, 1638335, 0, 131072, 1638336, 0, 131072, 1638337, 0, 131072, 1638338, 0, 131072, 1638339, 0, 131072, 1638340, 0, 131072, 1638341, 0, 131072, 1638342, 0, 131072, 1638343, 0, 131072, 1638344, 0, 131072, 1638345, 0, 131072, 1638346, 0, 131072, 1638347, 0, 131072, 1638348, 0, 131072, 1638349, 0, 131072, 1638350, 0, 131072, 1638351, 0, 131072, 1638352, 0, 131072, 1638353, 0, 131072, 1638354, 0, 131072, 1638355, 0, 131072, 1638356, 0, 131072, 1638357, 0, 131072, 1638358, 0, 131072, 1638359, 0, 131072, 1638360, 0, 131072, 1638361, 0, 131072, 1638362, 0, 131072, 1638363, 0, 131072, 1638364, 0, 131072, 1638365, 0, 131072, 1638366, 0, 131072, 1638367, 0, 131072, 1638368, 0, 131072, 1638369, 0, 131072, 1638370, 0, 131072, 1638371, 0, 131072, 1638372, 0, 131072, 1638373, 0, 131072, 1638374, 0, 131072, 1638375, 0, 131072, 1638376, 0, 131072, 1638377, 0, 131072, 1638378, 0, 131072, 1638379, 0, 131072, 1638380, 0, 131072, 1638381, 0, 131072, 1638382, 0, 131072, 1638383, 0, 131072, 1638384, 0, 131072, 1638385, 0, 131072, 1638386, 0, 131072, 1638387, 0, 131072, 1638388, 0, 131072, 1638389, 0, 131072, 1638390, 0, 131072, 1638391, 0, 131072, 1638392, 0, 131072, 1638393, 0, 131072, 1638394, 0, 131072, 1638395, 0, 131072, 1638396, 0, 131072, 1638397, 0, 131072, 1638398, 0, 131072, 1638399, 0, 131072, 1572864, 0, 131072, 1572865, 0, 131072, 1572866, 0, 131072, 1572867, 0, 131072, 1572868, 0, 131072, 1572869, 0, 131072, 1572870, 0, 131072, 1572871, 0, 131072, 1572872, 0, 131072, 1572873, 0, 131072, 1572874, 0, 131072, 1572875, 0, 131072, 1572876, 0, 131072, 1572877, 0, 131072, 1572878, 0, 131072, 1572879, 0, 131072, 1572880, 0, 131072, 1572881, 0, 131072, 1572882, 0, 131072, 1572883, 0, 131072, 1572884, 0, 131072, 1572885, 0, 131072, 1572886, 0, 131072, 1572887, 0, 131072, 1572888, 0, 131072, 1572889, 0, 131072, 1572890, 0, 131072, 1572891, 0, 131072, 1572892, 0, 131072, 1572893, 0, 131072, 1572894, 0, 131072, 1572895, 0, 131072, 1572896, 0, 131072, 1572897, 0, 131072, 1572898, 0, 131072, 1572899, 0, 131072, 1572900, 0, 131072, 1572901, 0, 131072, 1572902, 0, 131072, 1572903, 0, 131072, 1572904, 0, 131072, 1572905, 0, 131072, 1572906, 0, 131072, 1572907, 0, 131072, 1572908, 0, 131072, 1572909, 0, 131072, 1572910, 0, 131072, 1572911, 0, 131072, 1572912, 0, 131072, 1572913, 0, 131072, 1572914, 0, 131072, 1572915, 0, 131072, 1572916, 0, 131072, 1572917, 0, 131072, 1572918, 0, 131072, 1572919, 0, 131072, 1572920, 0, 131072, 1572921, 0, 131072, 1572922, 0, 131072, 1572923, 0, 131072, 1572924, 0, 131072, 1572925, 0, 131072, 1572926, 0, 131072, 1572927, 0, 131072, 1572928, 0, 131072, 1572929, 0, 131072, 1572930, 0, 131072, 1572931, 0, 131072, 1572932, 0, 131072, 1572933, 0, 131072, 1572934, 0, 131072, 1572935, 0, 131072, 1572936, 0, 131072, 1572937, 0, 131072, 1572938, 0, 131072, 1572939, 0, 131072, 1572940, 0, 131072, 1572941, 0, 131072, 1572942, 0, 131072, 1572943, 0, 131072, 1572944, 0, 131072, 1572945, 0, 131072, 1572946, 0, 131072, 1572947, 0, 131072, 1572948, 0, 131072, 1572949, 0, 131072, 1572950, 0, 131072, 1572951, 0, 131072, 1572952, 0, 131072, 1572953, 0, 131072, 1572954, 0, 131072, 1572955, 0, 131072, 1572956, 0, 131072, 1572957, 0, 131072, 1572958, 0, 131072, 1572959, 0, 131072, 1572960, 0, 131072, 1572961, 0, 131072, 1572962, 0, 131072, 1572963, 0, 131072, 1572964, 0, 131072, 1572965, 0, 131072, 1572966, 0, 131072, 1572967, 0, 131072, 1572968, 0, 131072, 1572969, 0, 131072, 1572970, 0, 131072, 1572971, 0, 131072, 1572972, 0, 131072, 1572973, 0, 131072, 1572974, 0, 131072, 1572975, 0, 131072, 1572976, 0, 131072, 1572977, 0, 131072, 1572978, 0, 131072, 1572979, 0, 131072, 1572980, 0, 131072, 1572981, 0, 131072, 1572982, 0, 131072, 1572983, 0, 131072, 1572984, 0, 131072, 1572985, 0, 131072, 1572986, 0, 131072, 1572987, 0, 131072, 1572988, 0, 131072, 1572989, 0, 131072, 1572990, 0, 131072, 1572991, 0, 131072, 1572992, 0, 131072, 1572993, 0, 131072, 1572994, 0, 131072, 1572995, 0, 131072, 1572996, 0, 131072, 1572997, 0, 131072, 1572998, 0, 131072, 1572999, 0, 131072, 1573000, 0, 131072, 1573001, 0, 131072, 1573002, 0, 131072, 1573003, 0, 131072, 1573004, 0, 131072, 1573005, 0, 131072, 1573006, 0, 131072, 1573007, 0, 131072, 1573008, 0, 131072, 1573009, 0, 131072, 1573010, 0, 131072, 1573011, 0, 131072, 1573012, 0, 131072, 1573013, 0, 131072, 1573014, 0, 131072, 1573015, 0, 131072, 1573016, 0, 131072, 1573017, 0, 131072, 1573018, 0, 131072, 1573019, 0, 131072, 1573020, 0, 131072, 1573021, 0, 131072, 1573022, 0, 131072, 1573023, 0, 131072, 1573024, 0, 131072, 1573025, 0, 131072, 1573026, 0, 131072, 1573027, 0, 131072, 1573028, 0, 131072, 1573029, 0, 131072, 1573030, 0, 131072, 1573031, 0, 131072, 1573032, 0, 131072, 1573033, 0, 131072, 1573034, 0, 131072, 1573035, 0, 131072, 1573036, 0, 131072, 1573037, 0, 131072, 1573038, 0, 131072, 1573039, 0, 131072, 1573040, 0, 131072, 1573041, 0, 131072, 1573042, 0, 131072, 1573043, 0, 131072, 1573044, 0, 131072, 1573045, 0, 131072, 1573046, 0, 131072, 1573047, 0, 131072, 1573048, 0, 131072, 1573049, 0, 131072, 1573050, 0, 131072, 1573051, 0, 131072, 1573052, 0, 131072, 1573053, 0, 131072, 1573054, 0, 131072, 1573055, 0, 131072, 1573056, 0, 131072, 1573057, 0, 131072, 1573058, 0, 131072, 1573059, 0, 131072, 1573060, 0, 131072, 1573061, 0, 131072, 1573062, 0, 131072, 1573063, 0, 131072, 1573064, 0, 131072, 1573065, 0, 131072, 1573066, 0, 131072, 1573067, 0, 131072, 1573068, 0, 131072, 1573069, 0, 131072, 1573070, 0, 131072, 1573071, 0, 131072, 1703854, 0, 131072, 1703855, 0, 131072, 1703856, 0, 131072, 1703857, 0, 131072, 1703858, 0, 131072, 1703859, 0, 131072, 1703860, 0, 131072, 1703861, 0, 131072, 1703862, 0, 131072, 1703863, 0, 131072, 1703864, 0, 131072, 1703865, 0, 131072, 1703866, 0, 131072, 1703867, 0, 131072, 1703868, 0, 131072, 1703869, 0, 131072, 1703870, 0, 131072, 1703871, 0, 131072, 1703872, 0, 131072, 1703873, 0, 131072, 1703874, 0, 131072, 1703875, 0, 131072, 1703876, 0, 131072, 1703877, 0, 131072, 1703878, 0, 131072, 1703879, 0, 131072, 1703880, 0, 131072, 1703881, 0, 131072, 1703882, 0, 131072, 1703883, 0, 131072, 1703884, 0, 131072, 1703885, 0, 131072, 1703886, 0, 131072, 1703887, 0, 131072, 1703888, 0, 131072, 1703889, 0, 131072, 1703890, 0, 131072, 1703891, 0, 131072, 1703892, 0, 131072, 1703893, 0, 131072, 1703894, 0, 131072, 1703895, 0, 131072, 1703896, 0, 131072, 1703897, 0, 131072, 1703898, 0, 131072, 1703899, 0, 131072, 1703900, 0, 131072, 1703901, 0, 131072, 1703902, 0, 131072, 1703903, 0, 131072, 1703904, 0, 131072, 1703905, 0, 131072, 1703906, 0, 131072, 1703907, 0, 131072, 1703908, 0, 131072, 1703909, 0, 131072, 1703910, 0, 131072, 1703911, 0, 131072, 1703912, 0, 131072, 1703913, 0, 131072, 1703914, 0, 131072, 1703915, 0, 131072, 1703916, 0, 131072, 1703917, 0, 131072, 1703918, 0, 131072, 1703919, 0, 131072, 1703920, 0, 131072, 1703921, 0, 131072, 1703922, 0, 131072, 1703923, 0, 131072, 1703924, 0, 131072, 1703925, 0, 131072, 1703926, 0, 131072, 1703927, 0, 131072, 1703928, 0, 131072, 1703929, 0, 131072, 1703930, 0, 131072, 1703931, 0, 131072, 1703932, 0, 131072, 1703933, 0, 131072, 1703934, 0, 131072, 1703935, 0, 131072, 1638400, 0, 131072, 1638401, 0, 131072, 1638402, 0, 131072, 1638403, 0, 131072, 1638404, 0, 131072, 1638405, 0, 131072, 1638406, 0, 131072, 1638407, 0, 131072, 1638408, 0, 131072, 1638409, 0, 131072, 1638410, 0, 131072, 1638411, 0, 131072, 1638412, 0, 131072, 1638413, 0, 131072, 1638414, 0, 131072, 1638415, 0, 131072, 1638416, 0, 131072, 1638417, 0, 131072, 1638418, 0, 131072, 1638419, 0, 131072, 1638420, 0, 131072, 1638421, 0, 131072, 1638422, 0, 131072, 1638423, 0, 131072, 1638424, 0, 131072, 1638425, 0, 131072, 1638426, 0, 131072, 1638427, 0, 131072, 1638428, 0, 131072, 1638429, 0, 131072, 1638430, 0, 131072, 1638431, 0, 131072, 1638432, 0, 131072, 1638433, 0, 131072, 1638434, 0, 131072, 1638435, 0, 131072, 1638436, 0, 131072, 1638437, 0, 131072, 1638438, 0, 131072, 1638439, 0, 131072, 1638440, 0, 131072, 1638441, 0, 131072, 1638442, 0, 131072, 1638443, 0, 131072, 1638444, 0, 131072, 1638445, 0, 131072, 1638446, 0, 131072, 1638447, 0, 131072, 1638448, 0, 131072, 1638449, 0, 131072, 1638450, 0, 131072, 1638451, 0, 131072, 1638452, 0, 131072, 1638453, 0, 131072, 1638454, 0, 131072, 1638455, 0, 131072, 1638456, 0, 131072, 1638457, 0, 131072, 1638458, 0, 131072, 1638459, 0, 131072, 1638460, 0, 131072, 1638461, 0, 131072, 1638462, 0, 131072, 1638463, 0, 131072, 1638464, 0, 131072, 1638465, 0, 131072, 1638466, 0, 131072, 1638467, 0, 131072, 1638468, 0, 131072, 1638469, 0, 131072, 1638470, 0, 131072, 1638471, 0, 131072, 1638472, 0, 131072, 1638473, 0, 131072, 1638474, 0, 131072, 1638475, 0, 131072, 1638476, 0, 131072, 1638477, 0, 131072, 1638478, 0, 131072, 1638479, 0, 131072, 1638480, 0, 131072, 1638481, 0, 131072, 1638482, 0, 131072, 1638483, 0, 131072, 1638484, 0, 131072, 1638485, 0, 131072, 1638486, 0, 131072, 1638487, 0, 131072, 1638488, 0, 131072, 1638489, 0, 131072, 1638490, 0, 131072, 1638491, 0, 131072, 1638492, 0, 131072, 1638493, 0, 131072, 1638494, 0, 131072, 1638495, 0, 131072, 1638496, 0, 131072, 1638497, 0, 131072, 1638498, 0, 131072, 1638499, 0, 131072, 1638500, 0, 131072, 1638501, 0, 131072, 1638502, 0, 131072, 1638503, 0, 131072, 1638504, 0, 131072, 1638505, 0, 131072, 1638506, 0, 131072, 1638507, 0, 131072, 1638508, 0, 131072, 1638509, 0, 131072, 1638510, 0, 131072, 1638511, 0, 131072, 1638512, 0, 131072, 1638513, 0, 131072, 1638514, 0, 131072, 1638515, 0, 131072, 1638516, 0, 131072, 1638517, 0, 131072, 1638518, 0, 131072, 1638519, 0, 131072, 1638520, 0, 131072, 1638521, 0, 131072, 1638522, 0, 131072, 1638523, 0, 131072, 1638524, 0, 131072, 1638525, 0, 131072, 1638526, 0, 131072, 1638527, 0, 131072, 1638528, 0, 131072, 1638529, 0, 131072, 1638530, 0, 131072, 1638531, 0, 131072, 1638532, 0, 131072, 1638533, 0, 131072, 1638534, 0, 131072, 1638535, 0, 131072, 1638536, 0, 131072, 1638537, 0, 131072, 1638538, 0, 131072, 1638539, 0, 131072, 1638540, 0, 131072, 1638541, 0, 131072, 1638542, 0, 131072, 1638543, 0, 131072, 1638544, 0, 131072, 1638545, 0, 131072, 1638546, 0, 131072, 1638547, 0, 131072, 1638548, 0, 131072, 1638549, 0, 131072, 1638550, 0, 131072, 1638551, 0, 131072, 1638552, 0, 131072, 1638553, 0, 131072, 1638554, 0, 131072, 1638555, 0, 131072, 1638556, 0, 131072, 1638557, 0, 131072, 1638558, 0, 131072, 1638559, 0, 131072, 1638560, 0, 131072, 1638561, 0, 131072, 1638562, 0, 131072, 1638563, 0, 131072, 1638564, 0, 131072, 1638565, 0, 131072, 1638566, 0, 131072, 1638567, 0, 131072, 1638568, 0, 131072, 1638569, 0, 131072, 1638570, 0, 131072, 1638571, 0, 131072, 1638572, 0, 131072, 1638573, 0, 131072, 1638574, 0, 131072, 1638575, 0, 131072, 1638576, 0, 131072, 1638577, 0, 131072, 1638578, 0, 131072, 1638579, 0, 131072, 1638580, 0, 131072, 1638581, 0, 131072, 1638582, 0, 131072, 1638583, 0, 131072, 1638584, 0, 131072, 1638585, 0, 131072, 1638586, 0, 131072, 1638587, 0, 131072, 1638588, 0, 131072, 1638589, 0, 131072, 1638590, 0, 131072, 1638591, 0, 131072, 1638592, 0, 131072, 1638593, 0, 131072, 1638594, 0, 131072, 1638595, 0, 131072, 1638596, 0, 131072, 1638597, 0, 131072, 1638598, 0, 131072, 1638599, 0, 131072, 1638600, 0, 131072, 1638601, 0, 131072, 1638602, 0, 131072, 1638603, 0, 131072, 1638604, 0, 131072, 1638605, 0, 131072, 1638606, 0, 131072, 1638607, 0, 131072, 1638608, 0, 131072, 1769391, 0, 131072, 1769392, 0, 131072, 1769393, 0, 131072, 1769394, 0, 131072, 1769395, 0, 131072, 1769396, 0, 131072, 1769397, 0, 131072, 1769398, 0, 131072, 1769399, 0, 131072, 1769400, 0, 131072, 1769401, 0, 131072, 1769402, 0, 131072, 1769403, 0, 131072, 1769404, 0, 131072, 1769405, 0, 131072, 1769406, 0, 131072, 1769407, 0, 131072, 1769408, 0, 131072, 1769409, 0, 131072, 1769410, 0, 131072, 1769411, 0, 131072, 1769412, 0, 131072, 1769413, 0, 131072, 1769414, 0, 131072, 1769415, 0, 131072, 1769416, 0, 131072, 1769417, 0, 131072, 1769418, 0, 131072, 1769419, 0, 131072, 1769420, 0, 131072, 1769421, 0, 131072, 1769422, 0, 131072, 1769423, 0, 131072, 1769424, 0, 131072, 1769425, 0, 131072, 1769426, 0, 131072, 1769427, 0, 131072, 1769428, 0, 131072, 1769429, 0, 131072, 1769430, 0, 131072, 1769431, 0, 131072, 1769432, 0, 131072, 1769433, 0, 131072, 1769434, 0, 131072, 1769435, 0, 131072, 1769436, 0, 131072, 1769437, 0, 131072, 1769438, 0, 131072, 1769439, 0, 131072, 1769440, 0, 131072, 1769441, 0, 131072, 1769442, 0, 131072, 1769443, 0, 131072, 1769444, 0, 131072, 1769445, 0, 131072, 1769446, 0, 131072, 1769447, 0, 131072, 1769448, 0, 131072, 1769449, 0, 131072, 1769450, 0, 131072, 1769451, 0, 131072, 1769452, 0, 131072, 1769453, 0, 131072, 1769454, 0, 131072, 1769455, 0, 131072, 1769456, 0, 131072, 1769457, 0, 131072, 1769458, 0, 131072, 1769459, 0, 131072, 1769460, 0, 131072, 1769461, 0, 131072, 1769462, 0, 131072, 1769463, 0, 131072, 1769464, 0, 131072, 1769465, 0, 131072, 1769466, 0, 131072, 1769467, 0, 131072, 1769468, 0, 131072, 1769469, 0, 131072, 1769470, 0, 131072, 1769471, 0, 131072, 1703936, 0, 131072, 1703937, 0, 131072, 1703938, 0, 131072, 1703939, 0, 131072, 1703940, 0, 131072, 1703941, 0, 131072, 1703942, 0, 131072, 1703943, 0, 131072, 1703944, 0, 131072, 1703945, 0, 131072, 1703946, 0, 131072, 1703947, 0, 131072, 1703948, 0, 131072, 1703949, 0, 131072, 1703950, 0, 131072, 1703951, 0, 131072, 1703952, 0, 131072, 1703953, 0, 131072, 1703954, 0, 131072, 1703955, 0, 131072, 1703956, 0, 131072, 1703957, 0, 131072, 1703958, 0, 131072, 1703959, 0, 131072, 1703960, 0, 131072, 1703961, 0, 131072, 1703962, 0, 131072, 1703963, 0, 131072, 1703964, 0, 131072, 1703965, 0, 131072, 1703966, 0, 131072, 1703967, 0, 131072, 1703968, 0, 131072, 1703969, 0, 131072, 1703970, 0, 131072, 1703971, 0, 131072, 1703972, 0, 131072, 1703973, 0, 131072, 1703974, 0, 131072, 1703975, 0, 131072, 1703976, 0, 131072, 1703977, 0, 131072, 1703978, 0, 131072, 1703979, 0, 131072, 1703980, 0, 131072, 1703981, 0, 131072, 1703982, 0, 131072, 1703983, 0, 131072, 1703984, 0, 131072, 1703985, 0, 131072, 1703986, 0, 131072, 1703987, 0, 131072, 1703988, 0, 131072, 1703989, 0, 131072, 1703990, 0, 131072, 1703991, 0, 131072, 1703992, 0, 131072, 1703993, 0, 131072, 1703994, 0, 131072, 1703995, 0, 131072, 1703996, 0, 131072, 1703997, 0, 131072, 1703998, 0, 131072, 1703999, 0, 131072, 1704000, 0, 131072, 1704001, 0, 131072, 1704002, 0, 131072, 1704003, 0, 131072, 1704004, 0, 131072, 1704005, 0, 131072, 1704006, 0, 131072, 1704007, 0, 131072, 1704008, 0, 131072, 1704009, 0, 131072, 1704010, 0, 131072, 1704011, 0, 131072, 1704012, 0, 131072, 1704013, 0, 131072, 1704014, 0, 131072, 1704015, 0, 131072, 1704016, 0, 131072, 1704017, 0, 131072, 1704018, 0, 131072, 1704019, 0, 131072, 1704020, 0, 131072, 1704021, 0, 131072, 1704022, 0, 131072, 1704023, 0, 131072, 1704024, 0, 131072, 1704025, 0, 131072, 1704026, 0, 131072, 1704027, 0, 131072, 1704028, 0, 131072, 1704029, 0, 131072, 1704030, 0, 131072, 1704031, 0, 131072, 1704032, 0, 131072, 1704033, 0, 131072, 1704034, 0, 131072, 1704035, 0, 131072, 1704036, 0, 131072, 1704037, 0, 131072, 1704038, 0, 131072, 1704039, 0, 131072, 1704040, 0, 131072, 1704041, 0, 131072, 1704042, 0, 131072, 1704043, 0, 131072, 1704044, 0, 131072, 1704045, 0, 131072, 1704046, 0, 131072, 1704047, 0, 131072, 1704048, 0, 131072, 1704049, 0, 131072, 1704050, 0, 131072, 1704051, 0, 131072, 1704052, 0, 131072, 1704053, 0, 131072, 1704054, 0, 131072, 1704055, 0, 131072, 1704056, 0, 131072, 1704057, 0, 131072, 1704058, 0, 131072, 1704059, 0, 131072, 1704060, 0, 131072, 1704061, 0, 131072, 1704062, 0, 131072, 1704063, 0, 131072, 1704064, 0, 131072, 1704065, 0, 131072, 1704066, 0, 131072, 1704067, 0, 131072, 1704068, 0, 131072, 1704069, 0, 131072, 1704070, 0, 131072, 1704071, 0, 131072, 1704072, 0, 131072, 1704073, 0, 131072, 1704074, 0, 131072, 1704075, 0, 131072, 1704076, 0, 131072, 1704077, 0, 131072, 1704078, 0, 131072, 1704079, 0, 131072, 1704080, 0, 131072, 1704081, 0, 131072, 1704082, 0, 131072, 1704083, 0, 131072, 1704084, 0, 131072, 1704085, 0, 131072, 1704086, 0, 131072, 1704087, 0, 131072, 1704088, 0, 131072, 1704089, 0, 131072, 1704090, 0, 131072, 1704091, 0, 131072, 1704092, 0, 131072, 1704093, 0, 131072, 1704094, 0, 131072, 1704095, 0, 131072, 1704096, 0, 131072, 1704097, 0, 131072, 1704098, 0, 131072, 1704099, 0, 131072, 1704100, 0, 131072, 1704101, 0, 131072, 1704102, 0, 131072, 1704103, 0, 131072, 1704104, 0, 131072, 1704105, 0, 131072, 1704106, 0, 131072, 1704107, 0, 131072, 1704108, 0, 131072, 1704109, 0, 131072, 1704110, 0, 131072, 1704111, 0, 131072, 1704112, 0, 131072, 1704113, 0, 131072, 1704114, 0, 131072, 1704115, 0, 131072, 1704116, 0, 131072, 1704117, 0, 131072, 1704118, 0, 131072, 1704119, 0, 131072, 1704120, 0, 131072, 1704121, 0, 131072, 1704122, 0, 131072, 1704123, 0, 131072, 1704124, 0, 131072, 1704125, 0, 131072, 1704126, 0, 131072, 1704127, 0, 131072, 1704128, 0, 131072, 1704129, 0, 131072, 1704130, 0, 131072, 1704131, 0, 131072, 1704132, 0, 131072, 1704133, 0, 131072, 1704134, 0, 131072, 1704135, 0, 131072, 1704136, 0, 131072, 1704137, 0, 131072, 1704138, 0, 131072, 1704139, 0, 131072, 1704140, 0, 131072, 1704141, 0, 131072, 1704142, 0, 131072, 1704143, 0, 131072, 1704144, 0, 131072, 1834927, 0, 131072, 1834928, 0, 131072, 1834929, 0, 131072, 1834930, 0, 131072, 1834931, 0, 131072, 1834932, 0, 131072, 1834933, 0, 131072, 1834934, 0, 131072, 1834935, 0, 131072, 1834936, 0, 131072, 1834937, 0, 131072, 1834938, 0, 131072, 1834939, 0, 131072, 1834940, 0, 131072, 1834941, 0, 131072, 1834942, 0, 131072, 1834943, 0, 131072, 1834944, 0, 131072, 1834945, 0, 131072, 1834946, 0, 131072, 1834947, 0, 131072, 1834948, 0, 131072, 1834949, 0, 131072, 1834950, 0, 131072, 1834951, 0, 131072, 1834952, 0, 131072, 1834953, 0, 131072, 1834954, 0, 131072, 1834955, 0, 131072, 1834956, 0, 131072, 1834957, 0, 131072, 1834958, 0, 131072, 1834959, 0, 131072, 1834960, 0, 131072, 1834961, 0, 131072, 1834962, 0, 131072, 1834963, 0, 131072, 1834964, 0, 131072, 1834965, 0, 131072, 1834966, 0, 131072, 1834967, 0, 131072, 1834968, 0, 131072, 1834969, 0, 131072, 1834970, 0, 131072, 1834971, 0, 131072, 1834972, 0, 131072, 1834973, 0, 131072, 1834974, 0, 131072, 1834975, 0, 131072, 1834976, 0, 131072, 1834977, 0, 131072, 1834978, 0, 131072, 1834979, 0, 131072, 1834980, 0, 131072, 1834981, 0, 131072, 1834982, 0, 131072, 1834983, 0, 131072, 1834984, 0, 131072, 1834985, 0, 131072, 1834986, 0, 131072, 1834987, 0, 131072, 1834988, 0, 131072, 1834989, 0, 131072, 1834990, 0, 131072, 1834991, 0, 131072, 1834992, 0, 131072, 1834993, 0, 131072, 1834994, 0, 131072, 1834995, 0, 131072, 1834996, 0, 131072, 1834997, 0, 131072, 1834998, 0, 131072, 1834999, 0, 131072, 1835000, 0, 131072, 1835001, 0, 131072, 1835002, 0, 131072, 1835003, 0, 131072, 1835004, 0, 131072, 1835005, 0, 131072, 1835006, 0, 131072, 1835007, 0, 131072, 1769472, 0, 131072, 1769473, 0, 131072, 1769474, 0, 131072, 1769475, 0, 131072, 1769476, 0, 131072, 1769477, 0, 131072, 1769478, 0, 131072, 1769479, 0, 131072, 1769480, 0, 131072, 1769481, 0, 131072, 1769482, 0, 131072, 1769483, 0, 131072, 1769484, 0, 131072, 1769485, 0, 131072, 1769486, 0, 131072, 1769487, 0, 131072, 1769488, 0, 131072, 1769489, 0, 131072, 1769490, 0, 131072, 1769491, 0, 131072, 1769492, 0, 131072, 1769493, 0, 131072, 1769494, 0, 131072, 1769495, 0, 131072, 1769496, 0, 131072, 1769497, 0, 131072, 1769498, 0, 131072, 1769499, 0, 131072, 1769500, 0, 131072, 1769501, 0, 131072, 1769502, 0, 131072, 1769503, 0, 131072, 1769504, 0, 131072, 1769505, 0, 131072, 1769506, 0, 131072, 1769507, 0, 131072, 1769508, 0, 131072, 1769509, 0, 131072, 1769510, 0, 131072, 1769511, 0, 131072, 1769512, 0, 131072, 1769513, 0, 131072, 1769514, 0, 131072, 1769515, 0, 131072, 1769516, 0, 131072, 1769517, 0, 131072, 1769518, 0, 131072, 1769519, 0, 131072, 1769520, 0, 131072, 1769521, 0, 131072, 1769522, 0, 131072, 1769523, 0, 131072, 1769524, 0, 131072, 1769525, 0, 131072, 1769526, 0, 131072, 1769527, 0, 131072, 1769528, 0, 131072, 1769529, 0, 131072, 1769530, 0, 131072, 1769531, 0, 131072, 1769532, 0, 131072, 1769533, 0, 131072, 1769534, 0, 131072, 1769535, 0, 131072, 1769536, 0, 131072, 1769537, 0, 131072, 1769538, 0, 131072, 1769539, 0, 131072, 1769540, 0, 131072, 1769541, 0, 131072, 1769542, 0, 131072, 1769543, 0, 131072, 1769544, 0, 131072, 1769545, 0, 131072, 1769546, 0, 131072, 1769547, 0, 131072, 1769548, 0, 131072, 1769549, 0, 131072, 1769550, 0, 131072, 1769551, 0, 131072, 1769552, 0, 131072, 1769553, 0, 131072, 1769554, 0, 131072, 1769555, 0, 131072, 1769556, 0, 131072, 1769557, 0, 131072, 1769558, 0, 131072, 1769559, 0, 131072, 1769560, 0, 131072, 1769561, 0, 131072, 1769562, 0, 131072, 1769563, 0, 131072, 1769564, 0, 131072, 1769565, 0, 131072, 1769566, 0, 131072, 1769567, 0, 131072, 1769568, 0, 131072, 1769569, 0, 131072, 1769570, 0, 131072, 1769571, 0, 131072, 1769572, 0, 131072, 1769573, 0, 131072, 1769574, 0, 131072, 1769575, 0, 131072, 1769576, 0, 131072, 1769577, 0, 131072, 1769578, 0, 131072, 1769579, 0, 131072, 1769580, 0, 131072, 1769581, 0, 131072, 1769582, 0, 131072, 1769583, 0, 131072, 1769584, 0, 131072, 1769585, 0, 131072, 1769586, 0, 131072, 1769587, 0, 131072, 1769588, 0, 131072, 1769589, 0, 131072, 1769590, 0, 131072, 1769591, 0, 131072, 1769592, 0, 131072, 1769593, 0, 131072, 1769594, 0, 131072, 1769595, 0, 131072, 1769596, 0, 131072, 1769597, 0, 131072, 1769598, 0, 131072, 1769599, 0, 131072, 1769600, 0, 131072, 1769601, 0, 131072, 1769602, 0, 131072, 1769603, 0, 131072, 1769604, 0, 131072, 1769605, 0, 131072, 1769606, 0, 131072, 1769607, 0, 131072, 1769608, 0, 131072, 1769609, 0, 131072, 1769610, 0, 131072, 1769611, 0, 131072, 1769612, 0, 131072, 1769613, 0, 131072, 1769614, 0, 131072, 1769615, 0, 131072, 1769616, 0, 131072, 1769617, 0, 131072, 1769618, 0, 131072, 1769619, 0, 131072, 1769620, 0, 131072, 1769621, 0, 131072, 1769622, 0, 131072, 1769623, 0, 131072, 1769624, 0, 131072, 1769625, 0, 131072, 1769626, 0, 131072, 1769627, 0, 131072, 1769628, 0, 131072, 1769629, 0, 131072, 1769630, 0, 131072, 1769631, 0, 131072, 1769632, 0, 131072, 1769633, 0, 131072, 1769634, 0, 131072, 1769635, 0, 131072, 1769636, 0, 131072, 1769637, 0, 131072, 1769638, 0, 131072, 1769639, 0, 131072, 1769640, 0, 131072, 1769641, 0, 131072, 1769642, 0, 131072, 1769643, 0, 131072, 1769644, 0, 131072, 1769645, 0, 131072, 1769646, 0, 131072, 1769647, 0, 131072, 1769648, 0, 131072, 1769649, 0, 131072, 1769650, 0, 131072, 1769651, 0, 131072, 1769652, 0, 131072, 1769653, 0, 131072, 1769654, 0, 131072, 1769655, 0, 131072, 1769656, 0, 131072, 1769657, 0, 131072, 1769658, 0, 131072, 1769659, 0, 131072, 1769660, 0, 131072, 1769661, 0, 131072, 1769662, 0, 131072, 1769663, 0, 131072, 1769664, 0, 131072, 1769665, 0, 131072, 1769666, 0, 131072, 1769667, 0, 131072, 1769668, 0, 131072, 1769669, 0, 131072, 1769670, 0, 131072, 1769671, 0, 131072, 1769672, 0, 131072, 1769673, 0, 131072, 1769674, 0, 131072, 1769675, 0, 131072, 1769676, 0, 131072, 1769677, 0, 131072, 1769678, 0, 131072, 1769679, 0, 131072, 1769680, 0, 131072, 1900464, 0, 131072, 1900465, 0, 131072, 1900466, 0, 131072, 1900467, 0, 131072, 1900468, 0, 131072, 1900469, 0, 131072, 1900470, 0, 131072, 1900471, 0, 131072, 1900472, 0, 131072, 1900473, 0, 131072, 1900474, 0, 131072, 1900475, 0, 131072, 1900476, 0, 131072, 1900477, 0, 131072, 1900478, 0, 131072, 1900479, 0, 131072, 1900480, 0, 131072, 1900481, 0, 131072, 1900482, 0, 131072, 1900483, 0, 131072, 1900484, 0, 131072, 1900485, 0, 131072, 1900486, 0, 131072, 1900487, 0, 131072, 1900488, 0, 131072, 1900489, 0, 131072, 1900490, 0, 131072, 1900491, 0, 131072, 1900492, 0, 131072, 1900493, 0, 131072, 1900494, 0, 131072, 1900495, 0, 131072, 1900496, 0, 131072, 1900497, 0, 131072, 1900498, 0, 131072, 1900499, 0, 131072, 1900500, 0, 131072, 1900501, 0, 131072, 1900502, 0, 131072, 1900503, 0, 131072, 1900504, 0, 131072, 1900505, 0, 131072, 1900506, 0, 131072, 1900507, 0, 131072, 1900508, 0, 131072, 1900509, 0, 131072, 1900510, 0, 131072, 1900511, 0, 131072, 1900512, 0, 131072, 1900513, 0, 131072, 1900514, 0, 131072, 1900515, 0, 131072, 1900516, 0, 131072, 1900517, 0, 131072, 1900518, 0, 131072, 1900519, 0, 131072, 1900520, 0, 131072, 1900521, 0, 131072, 1900522, 0, 131072, 1900523, 0, 131072, 1900524, 0, 131072, 1900525, 0, 131072, 1900526, 0, 131072, 1900527, 0, 131072, 1900528, 0, 131072, 1900529, 0, 131072, 1900530, 0, 131072, 1900531, 0, 131072, 1900532, 0, 131072, 1900533, 0, 131072, 1900534, 0, 131072, 1900535, 0, 131072, 1900536, 0, 131072, 1900537, 0, 131072, 1900538, 0, 131072, 1900539, 0, 131072, 1900540, 0, 131072, 1900541, 0, 131072, 1900542, 0, 131072, 1900543, 0, 131072, 1835008, 0, 131072, 1835009, 0, 131072, 1835010, 0, 131072, 1835011, 0, 131072, 1835012, 0, 131072, 1835013, 0, 131072, 1835014, 0, 131072, 1835015, 0, 131072, 1835016, 0, 131072, 1835017, 0, 131072, 1835018, 0, 131072, 1835019, 0, 131072, 1835020, 0, 131072, 1835021, 0, 131072, 1835022, 0, 131072, 1835023, 0, 131072, 1835024, 0, 131072, 1835025, 0, 131072, 1835026, 0, 131072, 1835027, 0, 131072, 1835028, 0, 131072, 1835029, 0, 131072, 1835030, 0, 131072, 1835031, 0, 131072, 1835032, 0, 131072, 1835033, 0, 131072, 1835034, 0, 131072, 1835035, 0, 131072, 1835036, 0, 131072, 1835037, 0, 131072, 1835038, 0, 131072, 1835039, 0, 131072, 1835040, 0, 131072, 1835041, 0, 131072, 1835042, 0, 131072, 1835043, 0, 131072, 1835044, 0, 131072, 1835045, 0, 131072, 1835046, 0, 131072, 1835047, 0, 131072, 1835048, 0, 131072, 1835049, 0, 131072, 1835050, 0, 131072, 1835051, 0, 131072, 1835052, 0, 131072, 1835053, 0, 131072, 1835054, 0, 131072, 1835055, 0, 131072, 1835056, 0, 131072, 1835057, 0, 131072, 1835058, 0, 131072, 1835059, 0, 131072, 1835060, 0, 131072, 1835061, 0, 131072, 1835062, 0, 131072, 1835063, 0, 131072, 1835064, 0, 131072, 1835065, 0, 131072, 1835066, 0, 131072, 1835067, 0, 131072, 1835068, 0, 131072, 1835069, 0, 131072, 1835070, 0, 131072, 1835071, 0, 131072, 1835072, 0, 131072, 1835073, 0, 131072, 1835074, 0, 131072, 1835075, 0, 131072, 1835076, 0, 131072, 1835077, 0, 131072, 1835078, 0, 131072, 1835079, 0, 131072, 1835080, 0, 131072, 1835081, 0, 131072, 1835082, 0, 131072, 1835083, 0, 131072, 1835084, 0, 131072, 1835085, 0, 131072, 1835086, 0, 131072, 1835087, 0, 131072, 1835088, 0, 131072, 1835089, 0, 131072, 1835090, 0, 131072, 1835091, 0, 131072, 1835092, 0, 131072, 1835093, 0, 131072, 1835094, 0, 131072, 1835095, 0, 131072, 1835096, 0, 131072, 1835097, 0, 131072, 1835098, 0, 131072, 1835099, 0, 131072, 1835100, 0, 131072, 1835101, 0, 131072, 1835102, 0, 131072, 1835103, 0, 131072, 1835104, 0, 131072, 1835105, 0, 131072, 1835106, 0, 131072, 1835107, 0, 131072, 1835108, 0, 131072, 1835109, 0, 131072, 1835110, 0, 131072, 1835111, 0, 131072, 1835112, 0, 131072, 1835113, 0, 131072, 1835114, 0, 131072, 1835115, 0, 131072, 1835116, 0, 131072, 1835117, 0, 131072, 1835118, 0, 131072, 1835119, 0, 131072, 1835120, 0, 131072, 1835121, 0, 131072, 1835122, 0, 131072, 1835123, 0, 131072, 1835124, 0, 131072, 1835125, 0, 131072, 1835126, 0, 131072, 1835127, 0, 131072, 1835128, 0, 131072, 1835129, 0, 131072, 1835130, 0, 131072, 1835131, 0, 131072, 1835132, 0, 131072, 1835133, 0, 131072, 1835134, 0, 131072, 1835135, 0, 131072, 1835136, 0, 131072, 1835137, 0, 131072, 1835138, 0, 131072, 1835139, 0, 131072, 1835140, 0, 131072, 1835141, 0, 131072, 1835142, 0, 131072, 1835143, 0, 131072, 1835144, 0, 131072, 1835145, 0, 131072, 1835146, 0, 131072, 1835147, 0, 131072, 1835148, 0, 131072, 1835149, 0, 131072, 1835150, 0, 131072, 1835151, 0, 131072, 1835152, 0, 131072, 1835153, 0, 131072, 1835154, 0, 131072, 1835155, 0, 131072, 1835156, 0, 131072, 1835157, 0, 131072, 1835158, 0, 131072, 1835159, 0, 131072, 1835160, 0, 131072, 1835161, 0, 131072, 1835162, 0, 131072, 1835163, 0, 131072, 1835164, 0, 131072, 1835165, 0, 131072, 1835166, 0, 131072, 1835167, 0, 131072, 1835168, 0, 131072, 1835169, 0, 131072, 1835170, 0, 131072, 1835171, 0, 131072, 1835172, 0, 131072, 1835173, 0, 131072, 1835174, 0, 131072, 1835175, 0, 131072, 1835176, 0, 131072, 1835177, 0, 131072, 1835178, 0, 131072, 1835179, 0, 131072, 1835180, 0, 131072, 1835181, 0, 131072, 1835182, 0, 131072, 1835183, 0, 131072, 1835184, 0, 131072, 1835185, 0, 131072, 1835186, 0, 131072, 1835187, 0, 131072, 1835188, 0, 131072, 1835189, 0, 131072, 1835190, 0, 131072, 1835191, 0, 131072, 1835192, 0, 131072, 1835193, 0, 131072, 1835194, 0, 131072, 1835195, 0, 131072, 1835196, 0, 131072, 1835197, 0, 131072, 1835198, 0, 131072, 1835199, 0, 131072, 1835200, 0, 131072, 1835201, 0, 131072, 1835202, 0, 131072, 1835203, 0, 131072, 1835204, 0, 131072, 1835205, 0, 131072, 1835206, 0, 131072, 1835207, 0, 131072, 1835208, 0, 131072, 1835209, 0, 131072, 1835210, 0, 131072, 1835211, 0, 131072, 1835212, 0, 131072, 1835213, 0, 131072, 1835214, 0, 131072, 1835215, 0, 131072, 1835216, 0, 131072, 1966001, 0, 131072, 1966002, 0, 131072, 1966003, 0, 131072, 1966004, 0, 131072, 1966005, 0, 131072, 1966006, 0, 131072, 1966007, 0, 131072, 1966008, 0, 131072, 1966009, 0, 131072, 1966010, 0, 131072, 1966011, 0, 131072, 1966012, 0, 131072, 1966013, 0, 131072, 1966014, 0, 131072, 1966015, 0, 131072, 1966016, 0, 131072, 1966017, 0, 131072, 1966018, 0, 131072, 1966019, 0, 131072, 1966020, 0, 131072, 1966021, 0, 131072, 1966022, 0, 131072, 1966023, 0, 131072, 1966024, 0, 131072, 1966025, 0, 131072, 1966026, 0, 131072, 1966027, 0, 131072, 1966028, 0, 131072, 1966029, 0, 131072, 1966030, 0, 131072, 1966031, 0, 131072, 1966032, 0, 131072, 1966033, 0, 131072, 1966034, 0, 131072, 1966035, 0, 131072, 1966036, 0, 131072, 1966037, 0, 131072, 1966038, 0, 131072, 1966039, 0, 131072, 1966040, 0, 131072, 1966041, 0, 131072, 1966042, 0, 131072, 1966043, 0, 131072, 1966044, 0, 131072, 1966045, 0, 131072, 1966046, 0, 131072, 1966047, 0, 131072, 1966048, 0, 131072, 1966049, 0, 131072, 1966050, 0, 131072, 1966051, 0, 131072, 1966052, 0, 131072, 1966053, 0, 131072, 1966054, 0, 131072, 1966055, 0, 131072, 1966056, 0, 131072, 1966057, 0, 131072, 1966058, 0, 131072, 1966059, 0, 131072, 1966060, 0, 131072, 1966061, 0, 131072, 1966062, 0, 131072, 1966063, 0, 131072, 1966064, 0, 131072, 1966065, 0, 131072, 1966066, 0, 131072, 1966067, 0, 131072, 1966068, 0, 131072, 1966069, 0, 131072, 1966070, 0, 131072, 1966071, 0, 131072, 1966072, 0, 131072, 1966073, 0, 131072, 1966074, 0, 131072, 1966075, 0, 131072, 1966076, 0, 131072, 1966077, 0, 131072, 1966078, 0, 131072, 1966079, 0, 131072, 1900544, 0, 131072, 1900545, 0, 131072, 1900546, 0, 131072, 1900547, 0, 131072, 1900548, 0, 131072, 1900549, 0, 131072, 1900550, 0, 131072, 1900551, 0, 131072, 1900552, 0, 131072, 1900553, 0, 131072, 1900554, 0, 131072, 1900555, 0, 131072, 1900556, 0, 131072, 1900557, 0, 131072, 1900558, 0, 131072, 1900559, 0, 131072, 1900560, 0, 131072, 1900561, 0, 131072, 1900562, 0, 131072, 1900563, 0, 131072, 1900564, 0, 131072, 1900565, 0, 131072, 1900566, 0, 131072, 1900567, 0, 131072, 1900568, 0, 131072, 1900569, 0, 131072, 1900570, 0, 131072, 1900571, 0, 131072, 1900572, 0, 131072, 1900573, 0, 131072, 1900574, 0, 131072, 1900575, 0, 131072, 1900576, 0, 131072, 1900577, 0, 131072, 1900578, 0, 131072, 1900579, 0, 131072, 1900580, 0, 131072, 1900581, 0, 131072, 1900582, 0, 131072, 1900583, 0, 131072, 1900584, 0, 131072, 1900585, 0, 131072, 1900586, 0, 131072, 1900587, 0, 131072, 1900588, 0, 131072, 1900589, 0, 131072, 1900590, 0, 131072, 1900591, 0, 131072, 1900592, 0, 131072, 1900593, 0, 131072, 1900594, 0, 131072, 1900595, 0, 131072, 1900596, 0, 131072, 1900597, 0, 131072, 1900598, 0, 131072, 1900599, 0, 131072, 1900600, 0, 131072, 1900601, 0, 131072, 1900602, 0, 131072, 1900603, 0, 131072, 1900604, 0, 131072, 1900605, 0, 131072, 1900606, 0, 131072, 1900607, 0, 131072, 1900608, 0, 131072, 1900609, 0, 131072, 1900610, 0, 131072, 1900611, 0, 131072, 1900612, 0, 131072, 1900613, 0, 131072, 1900614, 0, 131072, 1900615, 0, 131072, 1900616, 0, 131072, 1900617, 0, 131072, 1900618, 0, 131072, 1900619, 0, 131072, 1900620, 0, 131072, 1900621, 0, 131072, 1900622, 0, 131072, 1900623, 0, 131072, 1900624, 0, 131072, 1900625, 0, 131072, 1900626, 0, 131072, 1900627, 0, 131072, 1900628, 0, 131072, 1900629, 0, 131072, 1900630, 0, 131072, 1900631, 0, 131072, 1900632, 0, 131072, 1900633, 0, 131072, 1900634, 0, 131072, 1900635, 0, 131072, 1900636, 0, 131072, 1900637, 0, 131072, 1900638, 0, 131072, 1900639, 0, 131072, 1900640, 0, 131072, 1900641, 0, 131072, 1900642, 0, 131072, 1900643, 0, 131072, 1900644, 0, 131072, 1900645, 0, 131072, 1900646, 0, 131072, 1900647, 0, 131072, 1900648, 0, 131072, 1900649, 0, 131072, 1900650, 0, 131072, 1900651, 0, 131072, 1900652, 0, 131072, 1900653, 0, 131072, 1900654, 0, 131072, 1900655, 0, 131072, 1900656, 0, 131072, 1900657, 0, 131072, 1900658, 0, 131072, 1900659, 0, 131072, 1900660, 0, 131072, 1900661, 0, 131072, 1900662, 0, 131072, 1900663, 0, 131072, 1900664, 0, 131072, 1900665, 0, 131072, 1900666, 0, 131072, 1900667, 0, 131072, 1900668, 0, 131072, 1900669, 0, 131072, 1900670, 0, 131072, 1900671, 0, 131072, 1900672, 0, 131072, 1900673, 0, 131072, 1900674, 0, 131072, 1900675, 0, 131072, 1900676, 0, 131072, 1900677, 0, 131072, 1900678, 0, 131072, 1900679, 0, 131072, 1900680, 0, 131072, 1900681, 0, 131072, 1900682, 0, 131072, 1900683, 0, 131072, 1900684, 0, 131072, 1900685, 0, 131072, 1900686, 0, 131072, 1900687, 0, 131072, 1900688, 0, 131072, 1900689, 0, 131072, 1900690, 0, 131072, 1900691, 0, 131072, 1900692, 0, 131072, 1900693, 0, 131072, 1900694, 0, 131072, 1900695, 0, 131072, 1900696, 0, 131072, 1900697, 0, 131072, 1900698, 0, 131072, 1900699, 0, 131072, 1900700, 0, 131072, 1900701, 0, 131072, 1900702, 0, 131072, 1900703, 0, 131072, 1900704, 0, 131072, 1900705, 0, 131072, 1900706, 0, 131072, 1900707, 0, 131072, 1900708, 0, 131072, 1900709, 0, 131072, 1900710, 0, 131072, 1900711, 0, 131072, 1900712, 0, 131072, 1900713, 0, 131072, 1900714, 0, 131072, 1900715, 0, 131072, 1900716, 0, 131072, 1900717, 0, 131072, 1900718, 0, 131072, 1900719, 0, 131072, 1900720, 0, 131072, 1900721, 0, 131072, 1900722, 0, 131072, 1900723, 0, 131072, 1900724, 0, 131072, 1900725, 0, 131072, 1900726, 0, 131072, 1900727, 0, 131072, 1900728, 0, 131072, 1900729, 0, 131072, 1900730, 0, 131072, 1900731, 0, 131072, 1900732, 0, 131072, 1900733, 0, 131072, 1900734, 0, 131072, 1900735, 0, 131072, 1900736, 0, 131072, 1900737, 0, 131072, 1900738, 0, 131072, 1900739, 0, 131072, 1900740, 0, 131072, 1900741, 0, 131072, 1900742, 0, 131072, 1900743, 0, 131072, 1900744, 0, 131072, 1900745, 0, 131072, 1900746, 0, 131072, 1900747, 0, 131072, 1900748, 0, 131072, 1900749, 0, 131072, 1900750, 0, 131072, 1900751, 0, 131072, 1900752, 0, 131072, 1900753, 0, 131072, 2031538, 0, 131072, 2031539, 0, 131072, 2031540, 0, 131072, 2031541, 0, 131072, 2031542, 0, 131072, 2031543, 0, 131072, 2031544, 0, 131072, 2031545, 0, 131072, 2031546, 0, 131072, 2031547, 0, 131072, 2031548, 0, 131072, 2031549, 0, 131072, 2031550, 0, 131072, 2031551, 0, 131072, 2031552, 0, 131072, 2031553, 0, 131072, 2031554, 0, 131072, 2031555, 0, 131072, 2031556, 0, 131072, 2031557, 0, 131072, 2031558, 0, 131072, 2031559, 0, 131072, 2031560, 0, 131072, 2031561, 0, 131072, 2031562, 0, 131072, 2031563, 0, 131072, 2031564, 0, 131072, 2031565, 0, 131072, 2031566, 0, 131072, 2031567, 0, 131072, 2031568, 0, 131072, 2031569, 0, 131072, 2031570, 0, 131072, 2031571, 0, 131072, 2031572, 0, 131072, 2031573, 0, 131072, 2031574, 0, 131072, 2031575, 0, 131072, 2031576, 0, 131072, 2031577, 0, 131072, 2031578, 0, 131072, 2031579, 0, 131072, 2031580, 0, 131072, 2031581, 0, 131072, 2031582, 0, 131072, 2031583, 0, 131072, 2031584, 0, 131072, 2031585, 0, 131072, 2031586, 0, 131072, 2031587, 0, 131072, 2031588, 0, 131072, 2031589, 0, 131072, 2031590, 0, 131072, 2031591, 0, 131072, 2031592, 0, 131072, 2031593, 0, 131072, 2031594, 0, 131072, 2031595, 0, 131072, 2031596, 0, 131072, 2031597, 0, 131072, 2031598, 0, 131072, 2031599, 0, 131072, 2031600, 0, 131072, 2031601, 0, 131072, 2031602, 0, 131072, 2031603, 0, 131072, 2031604, 0, 131072, 2031605, 0, 131072, 2031606, 0, 131072, 2031607, 0, 131072, 2031608, 0, 131072, 2031609, 0, 131072, 2031610, 0, 131072, 2031611, 0, 131072, 2031612, 0, 131072, 2031613, 0, 131072, 2031614, 0, 131072, 2031615, 0, 131072, 1966080, 0, 131072, 1966081, 0, 131072, 1966082, 0, 131072, 1966083, 0, 131072, 1966084, 0, 131072, 1966085, 0, 131072, 1966086, 0, 131072, 1966087, 0, 131072, 1966088, 0, 131072, 1966089, 0, 131072, 1966090, 0, 131072, 1966091, 0, 131072, 1966092, 0, 131072, 1966093, 0, 131072, 1966094, 0, 131072, 1966095, 0, 131072, 1966096, 0, 131072, 1966097, 0, 131072, 1966098, 0, 131072, 1966099, 0, 131072, 1966100, 0, 131072, 1966101, 0, 131072, 1966102, 0, 131072, 1966103, 0, 131072, 1966104, 0, 131072, 1966105, 0, 131072, 1966106, 0, 131072, 1966107, 0, 131072, 1966108, 0, 131072, 1966109, 0, 131072, 1966110, 0, 131072, 1966111, 0, 131072, 1966112, 0, 131072, 1966113, 0, 131072, 1966114, 0, 131072, 1966115, 0, 131072, 1966116, 0, 131072, 1966117, 0, 131072, 1966118, 0, 131072, 1966119, 0, 131072, 1966120, 0, 131072, 1966121, 0, 131072, 1966122, 0, 131072, 1966123, 0, 131072, 1966124, 0, 131072, 1966125, 0, 131072, 1966126, 0, 131072, 1966127, 0, 131072, 1966128, 0, 131072, 1966129, 0, 131072, 1966130, 0, 131072, 1966131, 0, 131072, 1966132, 0, 131072, 1966133, 0, 131072, 1966134, 0, 131072, 1966135, 0, 131072, 1966136, 0, 131072, 1966137, 0, 131072, 1966138, 0, 131072, 1966139, 0, 131072, 1966140, 0, 131072, 1966141, 0, 131072, 1966142, 0, 131072, 1966143, 0, 131072, 1966144, 0, 131072, 1966145, 0, 131072, 1966146, 0, 131072, 1966147, 0, 131072, 1966148, 0, 131072, 1966149, 0, 131072, 1966150, 0, 131072, 1966151, 0, 131072, 1966152, 0, 131072, 1966153, 0, 131072, 1966154, 0, 131072, 1966155, 0, 131072, 1966156, 0, 131072, 1966157, 0, 131072, 1966158, 0, 131072, 1966159, 0, 131072, 1966160, 0, 131072, 1966161, 0, 131072, 1966162, 0, 131072, 1966163, 0, 131072, 1966164, 0, 131072, 1966165, 0, 131072, 1966166, 0, 131072, 1966167, 0, 131072, 1966168, 0, 131072, 1966169, 0, 131072, 1966170, 0, 131072, 1966171, 0, 131072, 1966172, 0, 131072, 1966173, 0, 131072, 1966174, 0, 131072, 1966175, 0, 131072, 1966176, 0, 131072, 1966177, 0, 131072, 1966178, 0, 131072, 1966179, 0, 131072, 1966180, 0, 131072, 1966181, 0, 131072, 1966182, 0, 131072, 1966183, 0, 131072, 1966184, 0, 131072, 1966185, 0, 131072, 1966186, 0, 131072, 1966187, 0, 131072, 1966188, 0, 131072, 1966189, 0, 131072, 1966190, 0, 131072, 1966191, 0, 131072, 1966192, 0, 131072, 1966193, 0, 131072, 1966194, 0, 131072, 1966195, 0, 131072, 1966196, 0, 131072, 1966197, 0, 131072, 1966198, 0, 131072, 1966199, 0, 131072, 1966200, 0, 131072, 1966201, 0, 131072, 1966202, 0, 131072, 1966203, 0, 131072, 1966204, 0, 131072, 1966205, 0, 131072, 1966206, 0, 131072, 1966207, 0, 131072, 1966208, 0, 131072, 1966209, 0, 131072, 1966210, 0, 131072, 1966211, 0, 131072, 1966212, 0, 131072, 1966213, 0, 131072, 1966214, 0, 131072, 1966215, 0, 131072, 1966216, 0, 131072, 1966217, 0, 131072, 1966218, 0, 131072, 1966219, 0, 131072, 1966220, 0, 131072, 1966221, 0, 131072, 1966222, 0, 131072, 1966223, 0, 131072, 1966224, 0, 131072, 1966225, 0, 131072, 1966226, 0, 131072, 1966227, 0, 131072, 1966228, 0, 131072, 1966229, 0, 131072, 1966230, 0, 131072, 1966231, 0, 131072, 1966232, 0, 131072, 1966233, 0, 131072, 1966234, 0, 131072, 1966235, 0, 131072, 1966236, 0, 131072, 1966237, 0, 131072, 1966238, 0, 131072, 1966239, 0, 131072, 1966240, 0, 131072, 1966241, 0, 131072, 1966242, 0, 131072, 1966243, 0, 131072, 1966244, 0, 131072, 1966245, 0, 131072, 1966246, 0, 131072, 1966247, 0, 131072, 1966248, 0, 131072, 1966249, 0, 131072, 1966250, 0, 131072, 1966251, 0, 131072, 1966252, 0, 131072, 1966253, 0, 131072, 1966254, 0, 131072, 1966255, 0, 131072, 1966256, 0, 131072, 1966257, 0, 131072, 1966258, 0, 131072, 1966259, 0, 131072, 1966260, 0, 131072, 1966261, 0, 131072, 1966262, 0, 131072, 1966263, 0, 131072, 1966264, 0, 131072, 1966265, 0, 131072, 1966266, 0, 131072, 1966267, 0, 131072, 1966268, 0, 131072, 1966269, 0, 131072, 1966270, 0, 131072, 1966271, 0, 131072, 1966272, 0, 131072, 1966273, 0, 131072, 1966274, 0, 131072, 1966275, 0, 131072, 1966276, 0, 131072, 1966277, 0, 131072, 1966278, 0, 131072, 1966279, 0, 131072, 1966280, 0, 131072, 1966281, 0, 131072, 1966282, 0, 131072, 1966283, 0, 131072, 1966284, 0, 131072, 1966285, 0, 131072, 1966286, 0, 131072, 1966287, 0, 131072, 1966288, 0, 131072, 1966289, 0, 131072, 2097075, 0, 131072, 2097076, 0, 131072, 2097077, 0, 131072, 2097078, 0, 131072, 2097079, 0, 131072, 2097080, 0, 131072, 2097081, 0, 131072, 2097082, 0, 131072, 2097083, 0, 131072, 2097084, 0, 131072, 2097085, 0, 131072, 2097086, 0, 131072, 2097087, 0, 131072, 2097088, 0, 131072, 2097089, 0, 131072, 2097090, 0, 131072, 2097091, 0, 131072, 2097092, 0, 131072, 2097093, 0, 131072, 2097094, 0, 131072, 2097095, 0, 131072, 2097096, 0, 131072, 2097097, 0, 131072, 2097098, 0, 131072, 2097099, 0, 131072, 2097100, 0, 131072, 2097101, 0, 131072, 2097102, 0, 131072, 2097103, 0, 131072, 2097104, 0, 131072, 2097105, 0, 131072, 2097106, 0, 131072, 2097107, 0, 131072, 2097108, 0, 131072, 2097109, 0, 131072, 2097110, 0, 131072, 2097111, 0, 131072, 2097112, 0, 131072, 2097113, 0, 131072, 2097114, 0, 131072, 2097115, 0, 131072, 2097116, 0, 131072, 2097117, 0, 131072, 2097118, 0, 131072, 2097119, 0, 131072, 2097120, 0, 131072, 2097121, 0, 131072, 2097122, 0, 131072, 2097123, 0, 131072, 2097124, 0, 131072, 2097125, 0, 131072, 2097126, 0, 131072, 2097127, 0, 131072, 2097128, 0, 131072, 2097129, 0, 131072, 2097130, 0, 131072, 2097131, 0, 131072, 2097132, 0, 131072, 2097133, 0, 131072, 2097134, 0, 131072, 2097135, 0, 131072, 2097136, 0, 131072, 2097137, 0, 131072, 2097138, 0, 131072, 2097139, 0, 131072, 2097140, 0, 131072, 2097141, 0, 131072, 2097142, 0, 131072, 2097143, 0, 131072, 2097144, 0, 131072, 2097145, 0, 131072, 2097146, 0, 131072, 2097147, 0, 131072, 2097148, 0, 131072, 2097149, 0, 131072, 2097150, 0, 131072, 2097151, 0, 131072, 2031616, 0, 131072, 2031617, 0, 131072, 2031618, 0, 131072, 2031619, 0, 131072, 2031620, 0, 131072, 2031621, 0, 131072, 2031622, 0, 131072, 2031623, 0, 131072, 2031624, 0, 131072, 2031625, 0, 131072, 2031626, 0, 131072, 2031627, 0, 131072, 2031628, 0, 131072, 2031629, 0, 131072, 2031630, 0, 131072, 2031631, 0, 131072, 2031632, 0, 131072, 2031633, 0, 131072, 2031634, 0, 131072, 2031635, 0, 131072, 2031636, 0, 131072, 2031637, 0, 131072, 2031638, 0, 131072, 2031639, 0, 131072, 2031640, 0, 131072, 2031641, 0, 131072, 2031642, 0, 131072, 2031643, 0, 131072, 2031644, 0, 131072, 2031645, 0, 131072, 2031646, 0, 131072, 2031647, 0, 131072, 2031648, 0, 131072, 2031649, 0, 131072, 2031650, 0, 131072, 2031651, 0, 131072, 2031652, 0, 131072, 2031653, 0, 131072, 2031654, 0, 131072, 2031655, 0, 131072, 2031656, 0, 131072, 2031657, 0, 131072, 2031658, 0, 131072, 2031659, 0, 131072, 2031660, 0, 131072, 2031661, 0, 131072, 2031662, 0, 131072, 2031663, 0, 131072, 2031664, 0, 131072, 2031665, 0, 131072, 2031666, 0, 131072, 2031667, 0, 131072, 2031668, 0, 131072, 2031669, 0, 131072, 2031670, 0, 131072, 2031671, 0, 131072, 2031672, 0, 131072, 2031673, 0, 131072, 2031674, 0, 131072, 2031675, 0, 131072, 2031676, 0, 131072, 2031677, 0, 131072, 2031678, 0, 131072, 2031679, 0, 131072, 2031680, 0, 131072, 2031681, 0, 131072, 2031682, 0, 131072, 2031683, 0, 131072, 2031684, 0, 131072, 2031685, 0, 131072, 2031686, 0, 131072, 2031687, 0, 131072, 2031688, 0, 131072, 2031689, 0, 131072, 2031690, 0, 131072, 2031691, 0, 131072, 2031692, 0, 131072, 2031693, 0, 131072, 2031694, 0, 131072, 2031695, 0, 131072, 2031696, 0, 131072, 2031697, 0, 131072, 2031698, 0, 131072, 2031699, 0, 131072, 2031700, 0, 131072, 2031701, 0, 131072, 2031702, 0, 131072, 2031703, 0, 131072, 2031704, 0, 131072, 2031705, 0, 131072, 2031706, 0, 131072, 2031707, 0, 131072, 2031708, 0, 131072, 2031709, 0, 131072, 2031710, 0, 131072, 2031711, 0, 131072, 2031712, 0, 131072, 2031713, 0, 131072, 2031714, 0, 131072, 2031715, 0, 131072, 2031716, 0, 131072, 2031717, 0, 131072, 2031718, 0, 131072, 2031719, 0, 131072, 2031720, 0, 131072, 2031721, 0, 131072, 2031722, 0, 131072, 2031723, 0, 131072, 2031724, 0, 131072, 2031725, 0, 131072, 2031726, 0, 131072, 2031727, 0, 131072, 2031728, 0, 131072, 2031729, 0, 131072, 2031730, 0, 131072, 2031731, 0, 131072, 2031732, 0, 131072, 2031733, 0, 131072, 2031734, 0, 131072, 2031735, 0, 131072, 2031736, 0, 131072, 2031737, 0, 131072, 2031738, 0, 131072, 2031739, 0, 131072, 2031740, 0, 131072, 2031741, 0, 131072, 2031742, 0, 131072, 2031743, 0, 131072, 2031744, 0, 131072, 2031745, 0, 131072, 2031746, 0, 131072, 2031747, 0, 131072, 2031748, 0, 131072, 2031749, 0, 131072, 2031750, 0, 131072, 2031751, 0, 131072, 2031752, 0, 131072, 2031753, 0, 131072, 2031754, 0, 131072, 2031755, 0, 131072, 2031756, 0, 131072, 2031757, 0, 131072, 2031758, 0, 131072, 2031759, 0, 131072, 2031760, 0, 131072, 2031761, 0, 131072, 2031762, 0, 131072, 2031763, 0, 131072, 2031764, 0, 131072, 2031765, 0, 131072, 2031766, 0, 131072, 2031767, 0, 131072, 2031768, 0, 131072, 2031769, 0, 131072, 2031770, 0, 131072, 2031771, 0, 131072, 2031772, 0, 131072, 2031773, 0, 131072, 2031774, 0, 131072, 2031775, 0, 131072, 2031776, 0, 131072, 2031777, 0, 131072, 2031778, 0, 131072, 2031779, 0, 131072, 2031780, 0, 131072, 2031781, 0, 131072, 2031782, 0, 131072, 2031783, 0, 131072, 2031784, 0, 131072, 2031785, 0, 131072, 2031786, 0, 131072, 2031787, 0, 131072, 2031788, 0, 131072, 2031789, 0, 131072, 2031790, 0, 131072, 2031791, 0, 131072, 2031792, 0, 131072, 2031793, 0, 131072, 2031794, 0, 131072, 2031795, 0, 131072, 2031796, 0, 131072, 2031797, 0, 131072, 2031798, 0, 131072, 2031799, 0, 131072, 2031800, 0, 131072, 2031801, 0, 131072, 2031802, 0, 131072, 2031803, 0, 131072, 2031804, 0, 131072, 2031805, 0, 131072, 2031806, 0, 131072, 2031807, 0, 131072, 2031808, 0, 131072, 2031809, 0, 131072, 2031810, 0, 131072, 2031811, 0, 131072, 2031812, 0, 131072, 2031813, 0, 131072, 2031814, 0, 131072, 2031815, 0, 131072, 2031816, 0, 131072, 2031817, 0, 131072, 2031818, 0, 131072, 2031819, 0, 131072, 2031820, 0, 131072, 2031821, 0, 131072, 2031822, 0, 131072, 2031823, 0, 131072, 2031824, 0, 131072, 2031825, 0, 131072, 2162612, 0, 131072, 2162613, 0, 131072, 2162614, 0, 131072, 2162615, 0, 131072, 2162616, 0, 131072, 2162617, 0, 131072, 2162618, 0, 131072, 2162619, 0, 131072, 2162620, 0, 131072, 2162621, 0, 131072, 2162622, 0, 131072, 2162623, 0, 131072, 2162624, 0, 131072, 2162625, 0, 131072, 2162626, 0, 131072, 2162627, 0, 131072, 2162628, 0, 131072, 2162629, 0, 131072, 2162630, 0, 131072, 2162631, 0, 131072, 2162632, 0, 131072, 2162633, 0, 131072, 2162634, 0, 131072, 2162635, 0, 131072, 2162636, 0, 131072, 2162637, 0, 131072, 2162638, 0, 131072, 2162639, 0, 131072, 2162640, 0, 131072, 2162641, 0, 131072, 2162642, 0, 131072, 2162643, 0, 131072, 2162644, 0, 131072, 2162645, 0, 131072, 2162646, 0, 131072, 2162647, 0, 131072, 2162648, 0, 131072, 2162649, 0, 131072, 2162650, 0, 131072, 2162651, 0, 131072, 2162652, 0, 131072, 2162653, 0, 131072, 2162654, 0, 131072, 2162655, 0, 131072, 2162656, 0, 131072, 2162657, 0, 131072, 2162658, 0, 131072, 2162659, 0, 131072, 2162660, 0, 131072, 2162661, 0, 131072, 2162662, 0, 131072, 2162663, 0, 131072, 2162664, 0, 131072, 2162665, 0, 131072, 2162666, 0, 131072, 2162667, 0, 131072, 2162668, 0, 131072, 2162669, 0, 131072, 2162670, 0, 131072, 2162671, 0, 131072, 2162672, 0, 131072, 2162673, 0, 131072, 2162674, 0, 131072, 2162675, 0, 131072, 2162676, 0, 131072, 2162677, 0, 131072, 2162678, 0, 131072, 2162679, 0, 131072, 2162680, 0, 131072, 2162681, 0, 131072, 2162682, 0, 131072, 2162683, 0, 131072, 2162684, 0, 131072, 2162685, 0, 131072, 2162686, 0, 131072, 2162687, 0, 131072, 2097152, 0, 131072, 2097153, 0, 131072, 2097154, 0, 131072, 2097155, 0, 131072, 2097156, 0, 131072, 2097157, 0, 131072, 2097158, 0, 131072, 2097159, 0, 131072, 2097160, 0, 131072, 2097161, 0, 131072, 2097162, 0, 131072, 2097163, 0, 131072, 2097164, 0, 131072, 2097165, 0, 131072, 2097166, 0, 131072, 2097167, 0, 131072, 2097168, 0, 131072, 2097169, 0, 131072, 2097170, 0, 131072, 2097171, 0, 131072, 2097172, 0, 131072, 2097173, 0, 131072, 2097174, 0, 131072, 2097175, 0, 131072, 2097176, 0, 131072, 2097177, 0, 131072, 2097178, 0, 131072, 2097179, 0, 131072, 2097180, 0, 131072, 2097181, 0, 131072, 2097182, 0, 131072, 2097183, 0, 131072, 2097184, 0, 131072, 2097185, 0, 131072, 2097186, 0, 131072, 2097187, 0, 131072, 2097188, 0, 131072, 2097189, 0, 131072, 2097190, 0, 131072, 2097191, 0, 131072, 2097192, 0, 131072, 2097193, 0, 131072, 2097194, 0, 131072, 2097195, 0, 131072, 2097196, 0, 131072, 2097197, 0, 131072, 2097198, 0, 131072, 2097199, 0, 131072, 2097200, 0, 131072, 2097201, 0, 131072, 2097202, 0, 131072, 2097203, 0, 131072, 2097204, 0, 131072, 2097205, 0, 131072, 2097206, 0, 131072, 2097207, 0, 131072, 2097208, 0, 131072, 2097209, 0, 131072, 2097210, 0, 131072, 2097211, 0, 131072, 2097212, 0, 131072, 2097213, 0, 131072, 2097214, 0, 131072, 2097215, 0, 131072, 2097216, 0, 131072, 2097217, 0, 131072, 2097218, 0, 131072, 2097219, 0, 131072, 2097220, 0, 131072, 2097221, 0, 131072, 2097222, 0, 131072, 2097223, 0, 131072, 2097224, 0, 131072, 2097225, 0, 131072, 2097226, 0, 131072, 2097227, 0, 131072, 2097228, 0, 131072, 2097229, 0, 131072, 2097230, 0, 131072, 2097231, 0, 131072, 2097232, 0, 131072, 2097233, 0, 131072, 2097234, 0, 131072, 2097235, 0, 131072, 2097236, 0, 131072, 2097237, 0, 131072, 2097238, 0, 131072, 2097239, 0, 131072, 2097240, 0, 131072, 2097241, 0, 131072, 2097242, 0, 131072, 2097243, 0, 131072, 2097244, 0, 131072, 2097245, 0, 131072, 2097246, 0, 131072, 2097247, 0, 131072, 2097248, 0, 131072, 2097249, 0, 131072, 2097250, 0, 131072, 2097251, 0, 131072, 2097252, 0, 131072, 2097253, 0, 131072, 2097254, 0, 131072, 2097255, 0, 131072, 2097256, 0, 131072, 2097257, 0, 131072, 2097258, 0, 131072, 2097259, 0, 131072, 2097260, 0, 131072, 2097261, 0, 131072, 2097262, 0, 131072, 2097263, 0, 131072, 2097264, 0, 131072, 2097265, 0, 131072, 2097266, 0, 131072, 2097267, 0, 131072, 2097268, 0, 131072, 2097269, 0, 131072, 2097270, 0, 131072, 2097271, 0, 131072, 2097272, 0, 131072, 2097273, 0, 131072, 2097274, 0, 131072, 2097275, 0, 131072, 2097276, 0, 131072, 2097277, 0, 131072, 2097278, 0, 131072, 2097279, 0, 131072, 2097280, 0, 131072, 2097281, 0, 131072, 2097282, 0, 131072, 2097283, 0, 131072, 2097284, 0, 131072, 2097285, 0, 131072, 2097286, 0, 131072, 2097287, 0, 131072, 2097288, 0, 131072, 2097289, 0, 131072, 2097290, 0, 131072, 2097291, 0, 131072, 2097292, 0, 131072, 2097293, 0, 131072, 2097294, 0, 131072, 2097295, 0, 131072, 2097296, 0, 131072, 2097297, 0, 131072, 2097298, 0, 131072, 2097299, 0, 131072, 2097300, 0, 131072, 2097301, 0, 131072, 2097302, 0, 131072, 2097303, 0, 131072, 2097304, 0, 131072, 2097305, 0, 131072, 2097306, 0, 131072, 2097307, 0, 131072, 2097308, 0, 131072, 2097309, 0, 131072, 2097310, 0, 131072, 2097311, 0, 131072, 2097312, 0, 131072, 2097313, 0, 131072, 2097314, 0, 131072, 2097315, 0, 131072, 2097316, 0, 131072, 2097317, 0, 131072, 2097318, 0, 131072, 2097319, 0, 131072, 2097320, 0, 131072, 2097321, 0, 131072, 2097322, 0, 131072, 2097323, 0, 131072, 2097324, 0, 131072, 2097325, 0, 131072, 2097326, 0, 131072, 2097327, 0, 131072, 2097328, 0, 131072, 2097329, 0, 131072, 2097330, 0, 131072, 2097331, 0, 131072, 2097332, 0, 131072, 2097333, 0, 131072, 2097334, 0, 131072, 2097335, 0, 131072, 2097336, 0, 131072, 2097337, 0, 131072, 2097338, 0, 131072, 2097339, 0, 131072, 2097340, 0, 131072, 2097341, 0, 131072, 2097342, 0, 131072, 2097343, 0, 131072, 2097344, 0, 131072, 2097345, 0, 131072, 2097346, 0, 131072, 2097347, 0, 131072, 2097348, 0, 131072, 2097349, 0, 131072, 2097350, 0, 131072, 2097351, 0, 131072, 2097352, 0, 131072, 2097353, 0, 131072, 2097354, 0, 131072, 2097355, 0, 131072, 2097356, 0, 131072, 2097357, 0, 131072, 2097358, 0, 131072, 2097359, 0, 131072, 2097360, 0, 131072, 2097361, 0, 131072, 2228148, 0, 131072, 2228149, 0, 131072, 2228150, 0, 131072, 2228151, 0, 131072, 2228152, 0, 131072, 2228153, 0, 131072, 2228154, 0, 131072, 2228155, 0, 131072, 2228156, 0, 131072, 2228157, 0, 131072, 2228158, 0, 131072, 2228159, 0, 131072, 2228160, 0, 131072, 2228161, 0, 131072, 2228162, 0, 131072, 2228163, 0, 131072, 2228164, 0, 131072, 2228165, 0, 131072, 2228166, 0, 131072, 2228167, 0, 131072, 2228168, 0, 131072, 2228169, 0, 131072, 2228170, 0, 131072, 2228171, 0, 131072, 2228172, 0, 131072, 2228173, 0, 131072, 2228174, 0, 131072, 2228175, 0, 131072, 2228176, 0, 131072, 2228177, 0, 131072, 2228178, 0, 131072, 2228179, 0, 131072, 2228180, 0, 131072, 2228181, 0, 131072, 2228182, 0, 131072, 2228183, 0, 131072, 2228184, 0, 131072, 2228185, 0, 131072, 2228186, 0, 131072, 2228187, 0, 131072, 2228188, 0, 131072, 2228189, 0, 131072, 2228190, 0, 131072, 2228191, 0, 131072, 2228192, 0, 131072, 2228193, 0, 131072, 2228194, 0, 131072, 2228195, 0, 131072, 2228196, 0, 131072, 2228197, 0, 131072, 2228198, 0, 131072, 2228199, 0, 131072, 2228200, 0, 131072, 2228201, 0, 131072, 2228202, 0, 131072, 2228203, 0, 131072, 2228204, 0, 131072, 2228205, 0, 131072, 2228206, 0, 131072, 2228207, 0, 131072, 2228208, 0, 131072, 2228209, 0, 131072, 2228210, 0, 131072, 2228211, 0, 131072, 2228212, 0, 131072, 2228213, 0, 131072, 2228214, 0, 131072, 2228215, 0, 131072, 2228216, 0, 131072, 2228217, 0, 131072, 2228218, 0, 131072, 2228219, 0, 131072, 2228220, 0, 131072, 2228221, 0, 131072, 2228222, 0, 131072, 2228223, 0, 131072, 2162688, 0, 131072, 2162689, 0, 131072, 2162690, 0, 131072, 2162691, 0, 131072, 2162692, 0, 131072, 2162693, 0, 131072, 2162694, 0, 131072, 2162695, 0, 131072, 2162696, 0, 131072, 2162697, 0, 131072, 2162698, 0, 131072, 2162699, 0, 131072, 2162700, 0, 131072, 2162701, 0, 131072, 2162702, 0, 131072, 2162703, 0, 131072, 2162704, 0, 131072, 2162705, 0, 131072, 2162706, 0, 131072, 2162707, 0, 131072, 2162708, 0, 131072, 2162709, 0, 131072, 2162710, 0, 131072, 2162711, 0, 131072, 2162712, 0, 131072, 2162713, 0, 131072, 2162714, 0, 131072, 2162715, 0, 131072, 2162716, 0, 131072, 2162717, 0, 131072, 2162718, 0, 131072, 2162719, 0, 131072, 2162720, 0, 131072, 2162721, 0, 131072, 2162722, 0, 131072, 2162723, 0, 131072, 2162724, 0, 131072, 2162725, 0, 131072, 2162726, 0, 131072, 2162727, 0, 131072, 2162728, 0, 131072, 2162729, 0, 131072, 2162730, 0, 131072, 2162731, 0, 131072, 2162732, 0, 131072, 2162733, 0, 131072, 2162734, 0, 131072, 2162735, 0, 131072, 2162736, 0, 131072, 2162737, 0, 131072, 2162738, 0, 131072, 2162739, 0, 131072, 2162740, 0, 131072, 2162741, 0, 131072, 2162742, 0, 131072, 2162743, 0, 131072, 2162744, 0, 131072, 2162745, 0, 131072, 2162746, 0, 131072, 2162747, 0, 131072, 2162748, 0, 131072, 2162749, 0, 131072, 2162750, 0, 131072, 2162751, 0, 131072, 2162752, 0, 131072, 2162753, 0, 131072, 2162754, 0, 131072, 2162755, 0, 131072, 2162756, 0, 131072, 2162757, 0, 131072, 2162758, 0, 131072, 2162759, 0, 131072, 2162760, 0, 131072, 2162761, 0, 131072, 2162762, 0, 131072, 2162763, 0, 131072, 2162764, 0, 131072, 2162765, 0, 131072, 2162766, 0, 131072, 2162767, 0, 131072, 2162768, 0, 131072, 2162769, 0, 131072, 2162770, 0, 131072, 2162771, 0, 131072, 2162772, 0, 131072, 2162773, 0, 131072, 2162774, 0, 131072, 2162775, 0, 131072, 2162776, 0, 131072, 2162777, 0, 131072, 2162778, 0, 131072, 2162779, 0, 131072, 2162780, 0, 131072, 2162781, 0, 131072, 2162782, 0, 131072, 2162783, 0, 131072, 2162784, 0, 131072, 2162785, 0, 131072, 2162786, 0, 131072, 2162787, 0, 131072, 2162788, 0, 131072, 2162789, 0, 131072, 2162790, 0, 131072, 2162791, 0, 131072, 2162792, 0, 131072, 2162793, 0, 131072, 2162794, 0, 131072, 2162795, 0, 131072, 2162796, 0, 131072, 2162797, 0, 131072, 2162798, 0, 131072, 2162799, 0, 131072, 2162800, 0, 131072, 2162801, 0, 131072, 2162802, 0, 131072, 2162803, 0, 131072, 2162804, 0, 131072, 2162805, 0, 131072, 2162806, 0, 131072, 2162807, 0, 131072, 2162808, 0, 131072, 2162809, 0, 131072, 2162810, 0, 131072, 2162811, 0, 131072, 2162812, 0, 131072, 2162813, 0, 131072, 2162814, 0, 131072, 2162815, 0, 131072, 2162816, 0, 131072, 2162817, 0, 131072, 2162818, 0, 131072, 2162819, 0, 131072, 2162820, 0, 131072, 2162821, 0, 131072, 2162822, 0, 131072, 2162823, 0, 131072, 2162824, 0, 131072, 2162825, 0, 131072, 2162826, 0, 131072, 2162827, 0, 131072, 2162828, 0, 131072, 2162829, 0, 131072, 2162830, 0, 131072, 2162831, 0, 131072, 2162832, 0, 131072, 2162833, 0, 131072, 2162834, 0, 131072, 2162835, 0, 131072, 2162836, 0, 131072, 2162837, 0, 131072, 2162838, 0, 131072, 2162839, 0, 131072, 2162840, 0, 131072, 2162841, 0, 131072, 2162842, 0, 131072, 2162843, 0, 131072, 2162844, 0, 131072, 2162845, 0, 131072, 2162846, 0, 131072, 2162847, 0, 131072, 2162848, 0, 131072, 2162849, 0, 131072, 2162850, 0, 131072, 2162851, 0, 131072, 2162852, 0, 131072, 2162853, 0, 131072, 2162854, 0, 131072, 2162855, 0, 131072, 2162856, 0, 131072, 2162857, 0, 131072, 2162858, 0, 131072, 2162859, 0, 131072, 2162860, 0, 131072, 2162861, 0, 131072, 2162862, 0, 131072, 2162863, 0, 131072, 2162864, 0, 131072, 2162865, 0, 131072, 2162866, 0, 131072, 2162867, 0, 131072, 2162868, 0, 131072, 2162869, 0, 131072, 2162870, 0, 131072, 2162871, 0, 131072, 2162872, 0, 131072, 2162873, 0, 131072, 2162874, 0, 131072, 2162875, 0, 131072, 2162876, 0, 131072, 2162877, 0, 131072, 2162878, 0, 131072, 2162879, 0, 131072, 2162880, 0, 131072, 2162881, 0, 131072, 2162882, 0, 131072, 2162883, 0, 131072, 2162884, 0, 131072, 2162885, 0, 131072, 2162886, 0, 131072, 2162887, 0, 131072, 2162888, 0, 131072, 2162889, 0, 131072, 2162890, 0, 131072, 2162891, 0, 131072, 2162892, 0, 131072, 2162893, 0, 131072, 2162894, 0, 131072, 2162895, 0, 131072, 2162896, 0, 131072, 2162897, 0, 131072, 2293685, 0, 131072, 2293686, 0, 131072, 2293687, 0, 131072, 2293688, 0, 131072, 2293689, 0, 131072, 2293690, 0, 131072, 2293691, 0, 131072, 2293692, 0, 131072, 2293693, 0, 131072, 2293694, 0, 131072, 2293695, 0, 131072, 2293696, 0, 131072, 2293697, 0, 131072, 2293698, 0, 131072, 2293699, 0, 131072, 2293700, 0, 131072, 2293701, 0, 131072, 2293702, 0, 131072, 2293703, 0, 131072, 2293704, 0, 131072, 2293705, 0, 131072, 2293706, 0, 131072, 2293707, 0, 131072, 2293708, 0, 131072, 2293709, 0, 131072, 2293710, 0, 131072, 2293711, 0, 131072, 2293712, 0, 131072, 2293713, 0, 131072, 2293714, 0, 131072, 2293715, 0, 131072, 2293716, 0, 131072, 2293717, 0, 131072, 2293718, 0, 131072, 2293719, 0, 131072, 2293720, 0, 131072, 2293721, 0, 131072, 2293722, 0, 131072, 2293723, 0, 131072, 2293724, 0, 131072, 2293725, 0, 131072, 2293726, 0, 131072, 2293727, 0, 131072, 2293728, 0, 131072, 2293729, 0, 131072, 2293730, 0, 131072, 2293731, 0, 131072, 2293732, 0, 131072, 2293733, 0, 131072, 2293734, 0, 131072, 2293735, 0, 131072, 2293736, 0, 131072, 2293737, 0, 131072, 2293738, 0, 131072, 2293739, 0, 131072, 2293740, 0, 131072, 2293741, 0, 131072, 2293742, 0, 131072, 2293743, 0, 131072, 2293744, 0, 131072, 2293745, 0, 131072, 2293746, 0, 131072, 2293747, 0, 131072, 2293748, 0, 131072, 2293749, 0, 131072, 2293750, 0, 131072, 2293751, 0, 131072, 2293752, 0, 131072, 2293753, 0, 131072, 2293754, 0, 131072, 2293755, 0, 131072, 2293756, 0, 131072, 2293757, 0, 131072, 2293758, 0, 131072, 2293759, 0, 131072, 2228224, 0, 131072, 2228225, 0, 131072, 2228226, 0, 131072, 2228227, 0, 131072, 2228228, 0, 131072, 2228229, 0, 131072, 2228230, 0, 131072, 2228231, 0, 131072, 2228232, 0, 131072, 2228233, 0, 131072, 2228234, 0, 131072, 2228235, 0, 131072, 2228236, 0, 131072, 2228237, 0, 131072, 2228238, 0, 131072, 2228239, 0, 131072, 2228240, 0, 131072, 2228241, 0, 131072, 2228242, 0, 131072, 2228243, 0, 131072, 2228244, 0, 131072, 2228245, 0, 131072, 2228246, 0, 131072, 2228247, 0, 131072, 2228248, 0, 131072, 2228249, 0, 131072, 2228250, 0, 131072, 2228251, 0, 131072, 2228252, 0, 131072, 2228253, 0, 131072, 2228254, 0, 131072, 2228255, 0, 131072, 2228256, 0, 131072, 2228257, 0, 131072, 2228258, 0, 131072, 2228259, 0, 131072, 2228260, 0, 131072, 2228261, 0, 131072, 2228262, 0, 131072, 2228263, 0, 131072, 2228264, 0, 131072, 2228265, 0, 131072, 2228266, 0, 131072, 2228267, 0, 131072, 2228268, 0, 131072, 2228269, 0, 131072, 2228270, 0, 131072, 2228271, 0, 131072, 2228272, 0, 131072, 2228273, 0, 131072, 2228274, 0, 131072, 2228275, 0, 131072, 2228276, 0, 131072, 2228277, 0, 131072, 2228278, 0, 131072, 2228279, 0, 131072, 2228280, 0, 131072, 2228281, 0, 131072, 2228282, 0, 131072, 2228283, 0, 131072, 2228284, 0, 131072, 2228285, 0, 131072, 2228286, 0, 131072, 2228287, 0, 131072, 2228288, 0, 131072, 2228289, 0, 131072, 2228290, 0, 131072, 2228291, 0, 131072, 2228292, 0, 131072, 2228293, 0, 131072, 2228294, 0, 131072, 2228295, 0, 131072, 2228296, 0, 131072, 2228297, 0, 131072, 2228298, 0, 131072, 2228299, 0, 131072, 2228300, 0, 131072, 2228301, 0, 131072, 2228302, 0, 131072, 2228303, 0, 131072, 2228304, 0, 131072, 2228305, 0, 131072, 2228306, 0, 131072, 2228307, 0, 131072, 2228308, 0, 131072, 2228309, 0, 131072, 2228310, 0, 131072, 2228311, 0, 131072, 2228312, 0, 131072, 2228313, 0, 131072, 2228314, 0, 131072, 2228315, 0, 131072, 2228316, 0, 131072, 2228317, 0, 131072, 2228318, 0, 131072, 2228319, 0, 131072, 2228320, 0, 131072, 2228321, 0, 131072, 2228322, 0, 131072, 2228323, 0, 131072, 2228324, 0, 131072, 2228325, 0, 131072, 2228326, 0, 131072, 2228327, 0, 131072, 2228328, 0, 131072, 2228329, 0, 131072, 2228330, 0, 131072, 2228331, 0, 131072, 2228332, 0, 131072, 2228333, 0, 131072, 2228334, 0, 131072, 2228335, 0, 131072, 2228336, 0, 131072, 2228337, 0, 131072, 2228338, 0, 131072, 2228339, 0, 131072, 2228340, 0, 131072, 2228341, 0, 131072, 2228342, 0, 131072, 2228343, 0, 131072, 2228344, 0, 131072, 2228345, 0, 131072, 2228346, 0, 131072, 2228347, 0, 131072, 2228348, 0, 131072, 2228349, 0, 131072, 2228350, 0, 131072, 2228351, 0, 131072, 2228352, 0, 131072, 2228353, 0, 131072, 2228354, 0, 131072, 2228355, 0, 131072, 2228356, 0, 131072, 2228357, 0, 131072, 2228358, 0, 131072, 2228359, 0, 131072, 2228360, 0, 131072, 2228361, 0, 131072, 2228362, 0, 131072, 2228363, 0, 131072, 2228364, 0, 131072, 2228365, 0, 131072, 2228366, 0, 131072, 2228367, 0, 131072, 2228368, 0, 131072, 2228369, 0, 131072, 2228370, 0, 131072, 2228371, 0, 131072, 2228372, 0, 131072, 2228373, 0, 131072, 2228374, 0, 131072, 2228375, 0, 131072, 2228376, 0, 131072, 2228377, 0, 131072, 2228378, 0, 131072, 2228379, 0, 131072, 2228380, 0, 131072, 2228381, 0, 131072, 2228382, 0, 131072, 2228383, 0, 131072, 2228384, 0, 131072, 2228385, 0, 131072, 2228386, 0, 131072, 2228387, 0, 131072, 2228388, 0, 131072, 2228389, 0, 131072, 2228390, 0, 131072, 2228391, 0, 131072, 2228392, 0, 131072, 2228393, 0, 131072, 2228394, 0, 131072, 2228395, 0, 131072, 2228396, 0, 131072, 2228397, 0, 131072, 2228398, 0, 131072, 2228399, 0, 131072, 2228400, 0, 131072, 2228401, 0, 131072, 2228402, 0, 131072, 2228403, 0, 131072, 2228404, 0, 131072, 2228405, 0, 131072, 2228406, 0, 131072, 2228407, 0, 131072, 2228408, 0, 131072, 2228409, 0, 131072, 2228410, 0, 131072, 2228411, 0, 131072, 2228412, 0, 131072, 2228413, 0, 131072, 2228414, 0, 131072, 2228415, 0, 131072, 2228416, 0, 131072, 2228417, 0, 131072, 2228418, 0, 131072, 2228419, 0, 131072, 2228420, 0, 131072, 2228421, 0, 131072, 2228422, 0, 131072, 2228423, 0, 131072, 2228424, 0, 131072, 2228425, 0, 131072, 2228426, 0, 131072, 2228427, 0, 131072, 2228428, 0, 131072, 2228429, 0, 131072, 2228430, 0, 131072, 2228431, 0, 131072, 2228432, 0, 131072, 2228433, 0, 131072, 2228434, 0, 131072, 2359222, 0, 131072, 2359223, 0, 131072, 2359224, 0, 131072, 2359225, 0, 131072, 2359226, 0, 131072, 2359227, 0, 131072, 2359228, 0, 131072, 2359229, 0, 131072, 2359230, 0, 131072, 2359231, 0, 131072, 2359232, 0, 131072, 2359233, 0, 131072, 2359234, 0, 131072, 2359235, 0, 131072, 2359236, 0, 131072, 2359237, 0, 131072, 2359238, 0, 131072, 2359239, 0, 131072, 2359240, 0, 131072, 2359241, 0, 131072, 2359242, 0, 131072, 2359243, 0, 131072, 2359244, 0, 131072, 2359245, 0, 131072, 2359246, 0, 131072, 2359247, 0, 131072, 2359248, 0, 131072, 2359249, 0, 131072, 2359250, 0, 131072, 2359251, 0, 131072, 2359252, 0, 131072, 2359253, 0, 131072, 2359254, 0, 131072, 2359255, 0, 131072, 2359256, 0, 131072, 2359257, 0, 131072, 2359258, 0, 131072, 2359259, 0, 131072, 2359260, 0, 131072, 2359261, 0, 131072, 2359262, 0, 131072, 2359263, 0, 131072, 2359264, 0, 131072, 2359265, 0, 131072, 2359266, 0, 131072, 2359267, 0, 131072, 2359268, 0, 131072, 2359269, 0, 131072, 2359270, 0, 131072, 2359271, 0, 131072, 2359272, 0, 131072, 2359273, 0, 131072, 2359274, 0, 131072, 2359275, 0, 131072, 2359276, 0, 131072, 2359277, 0, 131072, 2359278, 0, 131072, 2359279, 0, 131072, 2359280, 0, 131072, 2359281, 0, 131072, 2359282, 0, 131072, 2359283, 0, 131072, 2359284, 0, 131072, 2359285, 0, 131072, 2359286, 0, 131072, 2359287, 0, 131072, 2359288, 0, 131072, 2359289, 0, 131072, 2359290, 0, 131072, 2359291, 0, 131072, 2359292, 0, 131072, 2359293, 0, 131072, 2359294, 0, 131072, 2359295, 0, 131072, 2293760, 0, 131072, 2293761, 0, 131072, 2293762, 0, 131072, 2293763, 0, 131072, 2293764, 0, 131072, 2293765, 0, 131072, 2293766, 0, 131072, 2293767, 0, 131072, 2293768, 0, 131072, 2293769, 0, 131072, 2293770, 0, 131072, 2293771, 0, 131072, 2293772, 0, 131072, 2293773, 0, 131072, 2293774, 0, 131072, 2293775, 0, 131072, 2293776, 0, 131072, 2293777, 0, 131072, 2293778, 0, 131072, 2293779, 0, 131072, 2293780, 0, 131072, 2293781, 0, 131072, 2293782, 0, 131072, 2293783, 0, 131072, 2293784, 0, 131072, 2293785, 0, 131072, 2293786, 0, 131072, 2293787, 0, 131072, 2293788, 0, 131072, 2293789, 0, 131072, 2293790, 0, 131072, 2293791, 0, 131072, 2293792, 0, 131072, 2293793, 0, 131072, 2293794, 0, 131072, 2293795, 0, 131072, 2293796, 0, 131072, 2293797, 0, 131072, 2293798, 0, 131072, 2293799, 0, 131072, 2293800, 0, 131072, 2293801, 0, 131072, 2293802, 0, 131072, 2293803, 0, 131072, 2293804, 0, 131072, 2293805, 0, 131072, 2293806, 0, 131072, 2293807, 0, 131072, 2293808, 0, 131072, 2293809, 0, 131072, 2293810, 0, 131072, 2293811, 0, 131072, 2293812, 0, 131072, 2293813, 0, 131072, 2293814, 0, 131072, 2293815, 0, 131072, 2293816, 0, 131072, 2293817, 0, 131072, 2293818, 0, 131072, 2293819, 0, 131072, 2293820, 0, 131072, 2293821, 0, 131072, 2293822, 0, 131072, 2293823, 0, 131072, 2293824, 0, 131072, 2293825, 0, 131072, 2293826, 0, 131072, 2293827, 0, 131072, 2293828, 0, 131072, 2293829, 0, 131072, 2293830, 0, 131072, 2293831, 0, 131072, 2293832, 0, 131072, 2293833, 0, 131072, 2293834, 0, 131072, 2293835, 0, 131072, 2293836, 0, 131072, 2293837, 0, 131072, 2293838, 0, 131072, 2293839, 0, 131072, 2293840, 0, 131072, 2293841, 0, 131072, 2293842, 0, 131072, 2293843, 0, 131072, 2293844, 0, 131072, 2293845, 0, 131072, 2293846, 0, 131072, 2293847, 0, 131072, 2293848, 0, 131072, 2293849, 0, 131072, 2293850, 0, 131072, 2293851, 0, 131072, 2293852, 0, 131072, 2293853, 0, 131072, 2293854, 0, 131072, 2293855, 0, 131072, 2293856, 0, 131072, 2293857, 0, 131072, 2293858, 0, 131072, 2293859, 0, 131072, 2293860, 0, 131072, 2293861, 0, 131072, 2293862, 0, 131072, 2293863, 0, 131072, 2293864, 0, 131072, 2293865, 0, 131072, 2293866, 0, 131072, 2293867, 0, 131072, 2293868, 0, 131072, 2293869, 0, 131072, 2293870, 0, 131072, 2293871, 0, 131072, 2293872, 0, 131072, 2293873, 0, 131072, 2293874, 0, 131072, 2293875, 0, 131072, 2293876, 0, 131072, 2293877, 0, 131072, 2293878, 0, 131072, 2293879, 0, 131072, 2293880, 0, 131072, 2293881, 0, 131072, 2293882, 0, 131072, 2293883, 0, 131072, 2293884, 0, 131072, 2293885, 0, 131072, 2293886, 0, 131072, 2293887, 0, 131072, 2293888, 0, 131072, 2293889, 0, 131072, 2293890, 0, 131072, 2293891, 0, 131072, 2293892, 0, 131072, 2293893, 0, 131072, 2293894, 0, 131072, 2293895, 0, 131072, 2293896, 0, 131072, 2293897, 0, 131072, 2293898, 0, 131072, 2293899, 0, 131072, 2293900, 0, 131072, 2293901, 0, 131072, 2293902, 0, 131072, 2293903, 0, 131072, 2293904, 0, 131072, 2293905, 0, 131072, 2293906, 0, 131072, 2293907, 0, 131072, 2293908, 0, 131072, 2293909, 0, 131072, 2293910, 0, 131072, 2293911, 0, 131072, 2293912, 0, 131072, 2293913, 0, 131072, 2293914, 0, 131072, 2293915, 0, 131072, 2293916, 0, 131072, 2293917, 0, 131072, 2293918, 0, 131072, 2293919, 0, 131072, 2293920, 0, 131072, 2293921, 0, 131072, 2293922, 0, 131072, 2293923, 0, 131072, 2293924, 0, 131072, 2293925, 0, 131072, 2293926, 0, 131072, 2293927, 0, 131072, 2293928, 0, 131072, 2293929, 0, 131072, 2293930, 0, 131072, 2293931, 0, 131072, 2293932, 0, 131072, 2293933, 0, 131072, 2293934, 0, 131072, 2293935, 0, 131072, 2293936, 0, 131072, 2293937, 0, 131072, 2293938, 0, 131072, 2293939, 0, 131072, 2293940, 0, 131072, 2293941, 0, 131072, 2293942, 0, 131072, 2293943, 0, 131072, 2293944, 0, 131072, 2293945, 0, 131072, 2293946, 0, 131072, 2293947, 0, 131072, 2293948, 0, 131072, 2293949, 0, 131072, 2293950, 0, 131072, 2293951, 0, 131072, 2293952, 0, 131072, 2293953, 0, 131072, 2293954, 0, 131072, 2293955, 0, 131072, 2293956, 0, 131072, 2293957, 0, 131072, 2293958, 0, 131072, 2293959, 0, 131072, 2293960, 0, 131072, 2293961, 0, 131072, 2293962, 0, 131072, 2293963, 0, 131072, 2293964, 0, 131072, 2293965, 0, 131072, 2293966, 0, 131072, 2293967, 0, 131072, 2293968, 0, 131072, 2293969, 0, 131072, 2293970, 0, 131072, 2424759, 0, 131072, 2424760, 0, 131072, 2424761, 0, 131072, 2424762, 0, 131072, 2424763, 0, 131072, 2424764, 0, 131072, 2424765, 0, 131072, 2424766, 0, 131072, 2424767, 0, 131072, 2424768, 0, 131072, 2424769, 0, 131072, 2424770, 0, 131072, 2424771, 0, 131072, 2424772, 0, 131072, 2424773, 0, 131072, 2424774, 0, 131072, 2424775, 0, 131072, 2424776, 0, 131072, 2424777, 0, 131072, 2424778, 0, 131072, 2424779, 0, 131072, 2424780, 0, 131072, 2424781, 0, 131072, 2424782, 0, 131072, 2424783, 0, 131072, 2424784, 0, 131072, 2424785, 0, 131072, 2424786, 0, 131072, 2424787, 0, 131072, 2424788, 0, 131072, 2424789, 0, 131072, 2424790, 0, 131072, 2424791, 0, 131072, 2424792, 0, 131072, 2424793, 0, 131072, 2424794, 0, 131072, 2424795, 0, 131072, 2424796, 0, 131072, 2424797, 0, 131072, 2424798, 0, 131072, 2424799, 0, 131072, 2424800, 0, 131072, 2424801, 0, 131072, 2424802, 0, 131072, 2424803, 0, 131072, 2424804, 0, 131072, 2424805, 0, 131072, 2424806, 0, 131072, 2424807, 0, 131072, 2424808, 0, 131072, 2424809, 0, 131072, 2424810, 0, 131072, 2424811, 0, 131072, 2424812, 0, 131072, 2424813, 0, 131072, 2424814, 0, 131072, 2424815, 0, 131072, 2424816, 0, 131072, 2424817, 0, 131072, 2424818, 0, 131072, 2424819, 0, 131072, 2424820, 0, 131072, 2424821, 0, 131072, 2424822, 0, 131072, 2424823, 0, 131072, 2424824, 0, 131072, 2424825, 0, 131072, 2424826, 0, 131072, 2424827, 0, 131072, 2424828, 0, 131072, 2424829, 0, 131072, 2424830, 0, 131072, 2424831, 0, 131072, 2359296, 0, 131072, 2359297, 0, 131072, 2359298, 0, 131072, 2359299, 0, 131072, 2359300, 0, 131072, 2359301, 0, 131072, 2359302, 0, 131072, 2359303, 0, 131072, 2359304, 0, 131072, 2359305, 0, 131072, 2359306, 0, 131072, 2359307, 0, 131072, 2359308, 0, 131072, 2359309, 0, 131072, 2359310, 0, 131072, 2359311, 0, 131072, 2359312, 0, 131072, 2359313, 0, 131072, 2359314, 0, 131072, 2359315, 0, 131072, 2359316, 0, 131072, 2359317, 0, 131072, 2359318, 0, 131072, 2359319, 0, 131072, 2359320, 0, 131072, 2359321, 0, 131072, 2359322, 0, 131072, 2359323, 0, 131072, 2359324, 0, 131072, 2359325, 0, 131072, 2359326, 0, 131072, 2359327, 0, 131072, 2359328, 0, 131072, 2359329, 0, 131072, 2359330, 0, 131072, 2359331, 0, 131072, 2359332, 0, 131072, 2359333, 0, 131072, 2359334, 0, 131072, 2359335, 0, 131072, 2359336, 0, 131072, 2359337, 0, 131072, 2359338, 0, 131072, 2359339, 0, 131072, 2359340, 0, 131072, 2359341, 0, 131072, 2359342, 0, 131072, 2359343, 0, 131072, 2359344, 0, 131072, 2359345, 0, 131072, 2359346, 0, 131072, 2359347, 0, 131072, 2359348, 0, 131072, 2359349, 0, 131072, 2359350, 0, 131072, 2359351, 0, 131072, 2359352, 0, 131072, 2359353, 0, 131072, 2359354, 0, 131072, 2359355, 0, 131072, 2359356, 0, 131072, 2359357, 0, 131072, 2359358, 0, 131072, 2359359, 0, 131072, 2359360, 0, 131072, 2359361, 0, 131072, 2359362, 0, 131072, 2359363, 0, 131072, 2359364, 0, 131072, 2359365, 0, 131072, 2359366, 0, 131072, 2359367, 0, 131072, 2359368, 0, 131072, 2359369, 0, 131072, 2359370, 0, 131072, 2359371, 0, 131072, 2359372, 0, 131072, 2359373, 0, 131072, 2359374, 0, 131072, 2359375, 0, 131072, 2359376, 0, 131072, 2359377, 0, 131072, 2359378, 0, 131072, 2359379, 0, 131072, 2359380, 0, 131072, 2359381, 0, 131072, 2359382, 0, 131072, 2359383, 0, 131072, 2359384, 0, 131072, 2359385, 0, 131072, 2359386, 0, 131072, 2359387, 0, 131072, 2359388, 0, 131072, 2359389, 0, 131072, 2359390, 0, 131072, 2359391, 0, 131072, 2359392, 0, 131072, 2359393, 0, 131072, 2359394, 0, 131072, 2359395, 0, 131072, 2359396, 0, 131072, 2359397, 0, 131072, 2359398, 0, 131072, 2359399, 0, 131072, 2359400, 0, 131072, 2359401, 0, 131072, 2359402, 0, 131072, 2359403, 0, 131072, 2359404, 0, 131072, 2359405, 0, 131072, 2359406, 0, 131072, 2359407, 0, 131072, 2359408, 0, 131072, 2359409, 0, 131072, 2359410, 0, 131072, 2359411, 0, 131072, 2359412, 0, 131072, 2359413, 0, 131072, 2359414, 0, 131072, 2359415, 0, 131072, 2359416, 0, 131072, 2359417, 0, 131072, 2359418, 0, 131072, 2359419, 0, 131072, 2359420, 0, 131072, 2359421, 0, 131072, 2359422, 0, 131072, 2359423, 0, 131072, 2359424, 0, 131072, 2359425, 0, 131072, 2359426, 0, 131072, 2359427, 0, 131072, 2359428, 0, 131072, 2359429, 0, 131072, 2359430, 0, 131072, 2359431, 0, 131072, 2359432, 0, 131072, 2359433, 0, 131072, 2359434, 0, 131072, 2359435, 0, 131072, 2359436, 0, 131072, 2359437, 0, 131072, 2359438, 0, 131072, 2359439, 0, 131072, 2359440, 0, 131072, 2359441, 0, 131072, 2359442, 0, 131072, 2359443, 0, 131072, 2359444, 0, 131072, 2359445, 0, 131072, 2359446, 0, 131072, 2359447, 0, 131072, 2359448, 0, 131072, 2359449, 0, 131072, 2359450, 0, 131072, 2359451, 0, 131072, 2359452, 0, 131072, 2359453, 0, 131072, 2359454, 0, 131072, 2359455, 0, 131072, 2359456, 0, 131072, 2359457, 0, 131072, 2359458, 0, 131072, 2359459, 0, 131072, 2359460, 0, 131072, 2359461, 0, 131072, 2359462, 0, 131072, 2359463, 0, 131072, 2359464, 0, 131072, 2359465, 0, 131072, 2359466, 0, 131072, 2359467, 0, 131072, 2359468, 0, 131072, 2359469, 0, 131072, 2359470, 0, 131072, 2359471, 0, 131072, 2359472, 0, 131072, 2359473, 0, 131072, 2359474, 0, 131072, 2359475, 0, 131072, 2359476, 0, 131072, 2359477, 0, 131072, 2359478, 0, 131072, 2359479, 0, 131072, 2359480, 0, 131072, 2359481, 0, 131072, 2359482, 0, 131072, 2359483, 0, 131072, 2359484, 0, 131072, 2359485, 0, 131072, 2359486, 0, 131072, 2359487, 0, 131072, 2359488, 0, 131072, 2359489, 0, 131072, 2359490, 0, 131072, 2359491, 0, 131072, 2359492, 0, 131072, 2359493, 0, 131072, 2359494, 0, 131072, 2359495, 0, 131072, 2359496, 0, 131072, 2359497, 0, 131072, 2359498, 0, 131072, 2359499, 0, 131072, 2359500, 0, 131072, 2359501, 0, 131072, 2359502, 0, 131072, 2359503, 0, 131072, 2359504, 0, 131072, 2359505, 0, 131072, 2359506, 0, 131072, 2490296, 0, 131072, 2490297, 0, 131072, 2490298, 0, 131072, 2490299, 0, 131072, 2490300, 0, 131072, 2490301, 0, 131072, 2490302, 0, 131072, 2490303, 0, 131072, 2490304, 0, 131072, 2490305, 0, 131072, 2490306, 0, 131072, 2490307, 0, 131072, 2490308, 0, 131072, 2490309, 0, 131072, 2490310, 0, 131072, 2490311, 0, 131072, 2490312, 0, 131072, 2490313, 0, 131072, 2490314, 0, 131072, 2490315, 0, 131072, 2490316, 0, 131072, 2490317, 0, 131072, 2490318, 0, 131072, 2490319, 0, 131072, 2490320, 0, 131072, 2490321, 0, 131072, 2490322, 0, 131072, 2490323, 0, 131072, 2490324, 0, 131072, 2490325, 0, 131072, 2490326, 0, 131072, 2490327, 0, 131072, 2490328, 0, 131072, 2490329, 0, 131072, 2490330, 0, 131072, 2490331, 0, 131072, 2490332, 0, 131072, 2490333, 0, 131072, 2490334, 0, 131072, 2490335, 0, 131072, 2490336, 0, 131072, 2490337, 0, 131072, 2490338, 0, 131072, 2490339, 0, 131072, 2490340, 0, 131072, 2490341, 0, 131072, 2490342, 0, 131072, 2490343, 0, 131072, 2490344, 0, 131072, 2490345, 0, 131072, 2490346, 0, 131072, 2490347, 0, 131072, 2490348, 0, 131072, 2490349, 0, 131072, 2490350, 0, 131072, 2490351, 0, 131072, 2490352, 0, 131072, 2490353, 0, 131072, 2490354, 0, 131072, 2490355, 0, 131072, 2490356, 0, 131072, 2490357, 0, 131072, 2490358, 0, 131072, 2490359, 0, 131072, 2490360, 0, 131072, 2490361, 0, 131072, 2490362, 0, 131072, 2490363, 0, 131072, 2490364, 0, 131072, 2490365, 0, 131072, 2490366, 0, 131072, 2490367, 0, 131072, 2424832, 0, 131072, 2424833, 0, 131072, 2424834, 0, 131072, 2424835, 0, 131072, 2424836, 0, 131072, 2424837, 0, 131072, 2424838, 0, 131072, 2424839, 0, 131072, 2424840, 0, 131072, 2424841, 0, 131072, 2424842, 0, 131072, 2424843, 0, 131072, 2424844, 0, 131072, 2424845, 0, 131072, 2424846, 0, 131072, 2424847, 0, 131072, 2424848, 0, 131072, 2424849, 0, 131072, 2424850, 0, 131072, 2424851, 0, 131072, 2424852, 0, 131072, 2424853, 0, 131072, 2424854, 0, 131072, 2424855, 0, 131072, 2424856, 0, 131072, 2424857, 0, 131072, 2424858, 0, 131072, 2424859, 0, 131072, 2424860, 0, 131072, 2424861, 0, 131072, 2424862, 0, 131072, 2424863, 0, 131072, 2424864, 0, 131072, 2424865, 0, 131072, 2424866, 0, 131072, 2424867, 0, 131072, 2424868, 0, 131072, 2424869, 0, 131072, 2424870, 0, 131072, 2424871, 0, 131072, 2424872, 0, 131072, 2424873, 0, 131072, 2424874, 0, 131072, 2424875, 0, 131072, 2424876, 0, 131072, 2424877, 0, 131072, 2424878, 0, 131072, 2424879, 0, 131072, 2424880, 0, 131072, 2424881, 0, 131072, 2424882, 0, 131072, 2424883, 0, 131072, 2424884, 0, 131072, 2424885, 0, 131072, 2424886, 0, 131072, 2424887, 0, 131072, 2424888, 0, 131072, 2424889, 0, 131072, 2424890, 0, 131072, 2424891, 0, 131072, 2424892, 0, 131072, 2424893, 0, 131072, 2424894, 0, 131072, 2424895, 0, 131072, 2424896, 0, 131072, 2424897, 0, 131072, 2424898, 0, 131072, 2424899, 0, 131072, 2424900, 0, 131072, 2424901, 0, 131072, 2424902, 0, 131072, 2424903, 0, 131072, 2424904, 0, 131072, 2424905, 0, 131072, 2424906, 0, 131072, 2424907, 0, 131072, 2424908, 0, 131072, 2424909, 0, 131072, 2424910, 0, 131072, 2424911, 0, 131072, 2424912, 0, 131072, 2424913, 0, 131072, 2424914, 0, 131072, 2424915, 0, 131072, 2424916, 0, 131072, 2424917, 0, 131072, 2424918, 0, 131072, 2424919, 0, 131072, 2424920, 0, 131072, 2424921, 0, 131072, 2424922, 0, 131072, 2424923, 0, 131072, 2424924, 0, 131072, 2424925, 0, 131072, 2424926, 0, 131072, 2424927, 0, 131072, 2424928, 0, 131072, 2424929, 0, 131072, 2424930, 0, 131072, 2424931, 0, 131072, 2424932, 0, 131072, 2424933, 0, 131072, 2424934, 0, 131072, 2424935, 0, 131072, 2424936, 0, 131072, 2424937, 0, 131072, 2424938, 0, 131072, 2424939, 0, 131072, 2424940, 0, 131072, 2424941, 0, 131072, 2424942, 0, 131072, 2424943, 0, 131072, 2424944, 0, 131072, 2424945, 0, 131072, 2424946, 0, 131072, 2424947, 0, 131072, 2424948, 0, 131072, 2424949, 0, 131072, 2424950, 0, 131072, 2424951, 0, 131072, 2424952, 0, 131072, 2424953, 0, 131072, 2424954, 0, 131072, 2424955, 0, 131072, 2424956, 0, 131072, 2424957, 0, 131072, 2424958, 0, 131072, 2424959, 0, 131072, 2424960, 0, 131072, 2424961, 0, 131072, 2424962, 0, 131072, 2424963, 0, 131072, 2424964, 0, 131072, 2424965, 0, 131072, 2424966, 0, 131072, 2424967, 0, 131072, 2424968, 0, 131072, 2424969, 0, 131072, 2424970, 0, 131072, 2424971, 0, 131072, 2424972, 0, 131072, 2424973, 0, 131072, 2424974, 0, 131072, 2424975, 0, 131072, 2424976, 0, 131072, 2424977, 0, 131072, 2424978, 0, 131072, 2424979, 0, 131072, 2424980, 0, 131072, 2424981, 0, 131072, 2424982, 0, 131072, 2424983, 0, 131072, 2424984, 0, 131072, 2424985, 0, 131072, 2424986, 0, 131072, 2424987, 0, 131072, 2424988, 0, 131072, 2424989, 0, 131072, 2424990, 0, 131072, 2424991, 0, 131072, 2424992, 0, 131072, 2424993, 0, 131072, 2424994, 0, 131072, 2424995, 0, 131072, 2424996, 0, 131072, 2424997, 0, 131072, 2424998, 0, 131072, 2424999, 0, 131072, 2425000, 0, 131072, 2425001, 0, 131072, 2425002, 0, 131072, 2425003, 0, 131072, 2425004, 0, 131072, 2425005, 0, 131072, 2425006, 0, 131072, 2425007, 0, 131072, 2425008, 0, 131072, 2425009, 0, 131072, 2425010, 0, 131072, 2425011, 0, 131072, 2425012, 0, 131072, 2425013, 0, 131072, 2425014, 0, 131072, 2425015, 0, 131072, 2425016, 0, 131072, 2425017, 0, 131072, 2425018, 0, 131072, 2425019, 0, 131072, 2425020, 0, 131072, 2425021, 0, 131072, 2425022, 0, 131072, 2425023, 0, 131072, 2425024, 0, 131072, 2425025, 0, 131072, 2425026, 0, 131072, 2425027, 0, 131072, 2425028, 0, 131072, 2425029, 0, 131072, 2425030, 0, 131072, 2425031, 0, 131072, 2425032, 0, 131072, 2425033, 0, 131072, 2425034, 0, 131072, 2425035, 0, 131072, 2425036, 0, 131072, 2425037, 0, 131072, 2425038, 0, 131072, 2425039, 0, 131072, 2425040, 0, 131072, 2425041, 0, 131072, 2425042, 0, 131072, 2555833, 0, 131072, 2555834, 0, 131072, 2555835, 0, 131072, 2555836, 0, 131072, 2555837, 0, 131072, 2555838, 0, 131072, 2555839, 0, 131072, 2555840, 0, 131072, 2555841, 0, 131072, 2555842, 0, 131072, 2555843, 0, 131072, 2555844, 0, 131072, 2555845, 0, 131072, 2555846, 0, 131072, 2555847, 0, 131072, 2555848, 0, 131072, 2555849, 0, 131072, 2555850, 0, 131072, 2555851, 0, 131072, 2555852, 0, 131072, 2555853, 0, 131072, 2555854, 0, 131072, 2555855, 0, 131072, 2555856, 0, 131072, 2555857, 0, 131072, 2555858, 0, 131072, 2555859, 0, 131072, 2555860, 0, 131072, 2555861, 0, 131072, 2555862, 0, 131072, 2555863, 0, 131072, 2555864, 0, 131072, 2555865, 0, 131072, 2555866, 0, 131072, 2555867, 0, 131072, 2555868, 0, 131072, 2555869, 0, 131072, 2555870, 0, 131072, 2555871, 0, 131072, 2555872, 0, 131072, 2555873, 0, 131072, 2555874, 0, 131072, 2555875, 0, 131072, 2555876, 0, 131072, 2555877, 0, 131072, 2555878, 0, 131072, 2555879, 0, 131072, 2555880, 0, 131072, 2555881, 0, 131072, 2555882, 0, 131072, 2555883, 0, 131072, 2555884, 0, 131072, 2555885, 0, 131072, 2555886, 0, 131072, 2555887, 0, 131072, 2555888, 0, 131072, 2555889, 0, 131072, 2555890, 0, 131072, 2555891, 0, 131072, 2555892, 0, 131072, 2555893, 0, 131072, 2555894, 0, 131072, 2555895, 0, 131072, 2555896, 0, 131072, 2555897, 0, 131072, 2555898, 0, 131072, 2555899, 0, 131072, 2555900, 0, 131072, 2555901, 0, 131072, 2555902, 0, 131072, 2555903, 0, 131072, 2490368, 0, 131072, 2490369, 0, 131072, 2490370, 0, 131072, 2490371, 0, 131072, 2490372, 0, 131072, 2490373, 0, 131072, 2490374, 0, 131072, 2490375, 0, 131072, 2490376, 0, 131072, 2490377, 0, 131072, 2490378, 0, 131072, 2490379, 0, 131072, 2490380, 0, 131072, 2490381, 0, 131072, 2490382, 0, 131072, 2490383, 0, 131072, 2490384, 0, 131072, 2490385, 0, 131072, 2490386, 0, 131072, 2490387, 0, 131072, 2490388, 0, 131072, 2490389, 0, 131072, 2490390, 0, 131072, 2490391, 0, 131072, 2490392, 0, 131072, 2490393, 0, 131072, 2490394, 0, 131072, 2490395, 0, 131072, 2490396, 0, 131072, 2490397, 0, 131072, 2490398, 0, 131072, 2490399, 0, 131072, 2490400, 0, 131072, 2490401, 0, 131072, 2490402, 0, 131072, 2490403, 0, 131072, 2490404, 0, 131072, 2490405, 0, 131072, 2490406, 0, 131072, 2490407, 0, 131072, 2490408, 0, 131072, 2490409, 0, 131072, 2490410, 0, 131072, 2490411, 0, 131072, 2490412, 0, 131072, 2490413, 0, 131072, 2490414, 0, 131072, 2490415, 0, 131072, 2490416, 0, 131072, 2490417, 0, 131072, 2490418, 0, 131072, 2490419, 0, 131072, 2490420, 0, 131072, 2490421, 0, 131072, 2490422, 0, 131072, 2490423, 0, 131072, 2490424, 0, 131072, 2490425, 0, 131072, 2490426, 0, 131072, 2490427, 0, 131072, 2490428, 0, 131072, 2490429, 0, 131072, 2490430, 0, 131072, 2490431, 0, 131072, 2490432, 0, 131072, 2490433, 0, 131072, 2490434, 0, 131072, 2490435, 0, 131072, 2490436, 0, 131072, 2490437, 0, 131072, 2490438, 0, 131072, 2490439, 0, 131072, 2490440, 0, 131072, 2490441, 0, 131072, 2490442, 0, 131072, 2490443, 0, 131072, 2490444, 0, 131072, 2490445, 0, 131072, 2490446, 0, 131072, 2490447, 0, 131072, 2490448, 0, 131072, 2490449, 0, 131072, 2490450, 0, 131072, 2490451, 0, 131072, 2490452, 0, 131072, 2490453, 0, 131072, 2490454, 0, 131072, 2490455, 0, 131072, 2490456, 0, 131072, 2490457, 0, 131072, 2490458, 0, 131072, 2490459, 0, 131072, 2490460, 0, 131072, 2490461, 0, 131072, 2490462, 0, 131072, 2490463, 0, 131072, 2490464, 0, 131072, 2490465, 0, 131072, 2490466, 0, 131072, 2490467, 0, 131072, 2490468, 0, 131072, 2490469, 0, 131072, 2490470, 0, 131072, 2490471, 0, 131072, 2490472, 0, 131072, 2490473, 0, 131072, 2490474, 0, 131072, 2490475, 0, 131072, 2490476, 0, 131072, 2490477, 0, 131072, 2490478, 0, 131072, 2490479, 0, 131072, 2490480, 0, 131072, 2490481, 0, 131072, 2490482, 0, 131072, 2490483, 0, 131072, 2490484, 0, 131072, 2490485, 0, 131072, 2490486, 0, 131072, 2490487, 0, 131072, 2490488, 0, 131072, 2490489, 0, 131072, 2490490, 0, 131072, 2490491, 0, 131072, 2490492, 0, 131072, 2490493, 0, 131072, 2490494, 0, 131072, 2490495, 0, 131072, 2490496, 0, 131072, 2490497, 0, 131072, 2490498, 0, 131072, 2490499, 0, 131072, 2490500, 0, 131072, 2490501, 0, 131072, 2490502, 0, 131072, 2490503, 0, 131072, 2490504, 0, 131072, 2490505, 0, 131072, 2490506, 0, 131072, 2490507, 0, 131072, 2490508, 0, 131072, 2490509, 0, 131072, 2490510, 0, 131072, 2490511, 0, 131072, 2490512, 0, 131072, 2490513, 0, 131072, 2490514, 0, 131072, 2490515, 0, 131072, 2490516, 0, 131072, 2490517, 0, 131072, 2490518, 0, 131072, 2490519, 0, 131072, 2490520, 0, 131072, 2490521, 0, 131072, 2490522, 0, 131072, 2490523, 0, 131072, 2490524, 0, 131072, 2490525, 0, 131072, 2490526, 0, 131072, 2490527, 0, 131072, 2490528, 0, 131072, 2490529, 0, 131072, 2490530, 0, 131072, 2490531, 0, 131072, 2490532, 0, 131072, 2490533, 0, 131072, 2490534, 0, 131072, 2490535, 0, 131072, 2490536, 0, 131072, 2490537, 0, 131072, 2490538, 0, 131072, 2490539, 0, 131072, 2490540, 0, 131072, 2490541, 0, 131072, 2490542, 0, 131072, 2490543, 0, 131072, 2490544, 0, 131072, 2490545, 0, 131072, 2490546, 0, 131072, 2490547, 0, 131072, 2490548, 0, 131072, 2490549, 0, 131072, 2490550, 0, 131072, 2490551, 0, 131072, 2490552, 0, 131072, 2490553, 0, 131072, 2490554, 0, 131072, 2490555, 0, 131072, 2490556, 0, 131072, 2490557, 0, 131072, 2490558, 0, 131072, 2490559, 0, 131072, 2490560, 0, 131072, 2490561, 0, 131072, 2490562, 0, 131072, 2490563, 0, 131072, 2490564, 0, 131072, 2490565, 0, 131072, 2490566, 0, 131072, 2490567, 0, 131072, 2490568, 0, 131072, 2490569, 0, 131072, 2490570, 0, 131072, 2490571, 0, 131072, 2490572, 0, 131072, 2490573, 0, 131072, 2490574, 0, 131072, 2490575, 0, 131072, 2490576, 0, 131072, 2490577, 0, 131072, 2490578, 0, 131072, 2490579, 0, 131072, 2621369, 0, 131072, 2621370, 0, 131072, 2621371, 0, 131072, 2621372, 0, 131072, 2621373, 0, 131072, 2621374, 0, 131072, 2621375, 0, 131072, 2621376, 0, 131072, 2621377, 0, 131072, 2621378, 0, 131072, 2621379, 0, 131072, 2621380, 0, 131072, 2621381, 0, 131072, 2621382, 0, 131072, 2621383, 0, 131072, 2621384, 0, 131072, 2621385, 0, 131072, 2621386, 0, 131072, 2621387, 0, 131072, 2621388, 0, 131072, 2621389, 0, 131072, 2621390, 0, 131072, 2621391, 0, 131072, 2621392, 0, 131072, 2621393, 0, 131072, 2621394, 0, 131072, 2621395, 0, 131072, 2621396, 0, 131072, 2621397, 0, 131072, 2621398, 0, 131072, 2621399, 0, 131072, 2621400, 0, 131072, 2621401, 0, 131072, 2621402, 0, 131072, 2621403, 0, 131072, 2621404, 0, 131072, 2621405, 0, 131072, 2621406, 0, 131072, 2621407, 0, 131072, 2621408, 0, 131072, 2621409, 0, 131072, 2621410, 0, 131072, 2621411, 0, 131072, 2621412, 0, 131072, 2621413, 0, 131072, 2621414, 0, 131072, 2621415, 0, 131072, 2621416, 0, 131072, 2621417, 0, 131072, 2621418, 0, 131072, 2621419, 0, 131072, 2621420, 0, 131072, 2621421, 0, 131072, 2621422, 0, 131072, 2621423, 0, 131072, 2621424, 0, 131072, 2621425, 0, 131072, 2621426, 0, 131072, 2621427, 0, 131072, 2621428, 0, 131072, 2621429, 0, 131072, 2621430, 0, 131072, 2621431, 0, 131072, 2621432, 0, 131072, 2621433, 0, 131072, 2621434, 0, 131072, 2621435, 0, 131072, 2621436, 0, 131072, 2621437, 0, 131072, 2621438, 0, 131072, 2621439, 0, 131072, 2555904, 0, 131072, 2555905, 0, 131072, 2555906, 0, 131072, 2555907, 0, 131072, 2555908, 0, 131072, 2555909, 0, 131072, 2555910, 0, 131072, 2555911, 0, 131072, 2555912, 0, 131072, 2555913, 0, 131072, 2555914, 0, 131072, 2555915, 0, 131072, 2555916, 0, 131072, 2555917, 0, 131072, 2555918, 0, 131072, 2555919, 0, 131072, 2555920, 0, 131072, 2555921, 0, 131072, 2555922, 0, 131072, 2555923, 0, 131072, 2555924, 0, 131072, 2555925, 0, 131072, 2555926, 0, 131072, 2555927, 0, 131072, 2555928, 0, 131072, 2555929, 0, 131072, 2555930, 0, 131072, 2555931, 0, 131072, 2555932, 0, 131072, 2555933, 0, 131072, 2555934, 0, 131072, 2555935, 0, 131072, 2555936, 0, 131072, 2555937, 0, 131072, 2555938, 0, 131072, 2555939, 0, 131072, 2555940, 0, 131072, 2555941, 0, 131072, 2555942, 0, 131072, 2555943, 0, 131072, 2555944, 0, 131072, 2555945, 0, 131072, 2555946, 0, 131072, 2555947, 0, 131072, 2555948, 0, 131072, 2555949, 0, 131072, 2555950, 0, 131072, 2555951, 0, 131072, 2555952, 0, 131072, 2555953, 0, 131072, 2555954, 0, 131072, 2555955, 0, 131072, 2555956, 0, 131072, 2555957, 0, 131072, 2555958, 0, 131072, 2555959, 0, 131072, 2555960, 0, 131072, 2555961, 0, 131072, 2555962, 0, 131072, 2555963, 0, 131072, 2555964, 0, 131072, 2555965, 0, 131072, 2555966, 0, 131072, 2555967, 0, 131072, 2555968, 0, 131072, 2555969, 0, 131072, 2555970, 0, 131072, 2555971, 0, 131072, 2555972, 0, 131072, 2555973, 0, 131072, 2555974, 0, 131072, 2555975, 0, 131072, 2555976, 0, 131072, 2555977, 0, 131072, 2555978, 0, 131072, 2555979, 0, 131072, 2555980, 0, 131072, 2555981, 0, 131072, 2555982, 0, 131072, 2555983, 0, 131072, 2555984, 0, 131072, 2555985, 0, 131072, 2555986, 0, 131072, 2555987, 0, 131072, 2555988, 0, 131072, 2555989, 0, 131072, 2555990, 0, 131072, 2555991, 0, 131072, 2555992, 0, 131072, 2555993, 0, 131072, 2555994, 0, 131072, 2555995, 0, 131072, 2555996, 0, 131072, 2555997, 0, 131072, 2555998, 0, 131072, 2555999, 0, 131072, 2556000, 0, 131072, 2556001, 0, 131072, 2556002, 0, 131072, 2556003, 0, 131072, 2556004, 0, 131072, 2556005, 0, 131072, 2556006, 0, 131072, 2556007, 0, 131072, 2556008, 0, 131072, 2556009, 0, 131072, 2556010, 0, 131072, 2556011, 0, 131072, 2556012, 0, 131072, 2556013, 0, 131072, 2556014, 0, 131072, 2556015, 0, 131072, 2556016, 0, 131072, 2556017, 0, 131072, 2556018, 0, 131072, 2556019, 0, 131072, 2556020, 0, 131072, 2556021, 0, 131072, 2556022, 0, 131072, 2556023, 0, 131072, 2556024, 0, 131072, 2556025, 0, 131072, 2556026, 0, 131072, 2556027, 0, 131072, 2556028, 0, 131072, 2556029, 0, 131072, 2556030, 0, 131072, 2556031, 0, 131072, 2556032, 0, 131072, 2556033, 0, 131072, 2556034, 0, 131072, 2556035, 0, 131072, 2556036, 0, 131072, 2556037, 0, 131072, 2556038, 0, 131072, 2556039, 0, 131072, 2556040, 0, 131072, 2556041, 0, 131072, 2556042, 0, 131072, 2556043, 0, 131072, 2556044, 0, 131072, 2556045, 0, 131072, 2556046, 0, 131072, 2556047, 0, 131072, 2556048, 0, 131072, 2556049, 0, 131072, 2556050, 0, 131072, 2556051, 0, 131072, 2556052, 0, 131072, 2556053, 0, 131072, 2556054, 0, 131072, 2556055, 0, 131072, 2556056, 0, 131072, 2556057, 0, 131072, 2556058, 0, 131072, 2556059, 0, 131072, 2556060, 0, 131072, 2556061, 0, 131072, 2556062, 0, 131072, 2556063, 0, 131072, 2556064, 0, 131072, 2556065, 0, 131072, 2556066, 0, 131072, 2556067, 0, 131072, 2556068, 0, 131072, 2556069, 0, 131072, 2556070, 0, 131072, 2556071, 0, 131072, 2556072, 0, 131072, 2556073, 0, 131072, 2556074, 0, 131072, 2556075, 0, 131072, 2556076, 0, 131072, 2556077, 0, 131072, 2556078, 0, 131072, 2556079, 0, 131072, 2556080, 0, 131072, 2556081, 0, 131072, 2556082, 0, 131072, 2556083, 0, 131072, 2556084, 0, 131072, 2556085, 0, 131072, 2556086, 0, 131072, 2556087, 0, 131072, 2556088, 0, 131072, 2556089, 0, 131072, 2556090, 0, 131072, 2556091, 0, 131072, 2556092, 0, 131072, 2556093, 0, 131072, 2556094, 0, 131072, 2556095, 0, 131072, 2556096, 0, 131072, 2556097, 0, 131072, 2556098, 0, 131072, 2556099, 0, 131072, 2556100, 0, 131072, 2556101, 0, 131072, 2556102, 0, 131072, 2556103, 0, 131072, 2556104, 0, 131072, 2556105, 0, 131072, 2556106, 0, 131072, 2556107, 0, 131072, 2556108, 0, 131072, 2556109, 0, 131072, 2556110, 0, 131072, 2556111, 0, 131072, 2556112, 0, 131072, 2556113, 0, 131072, 2556114, 0, 131072, 2556115, 0, 131072, 2686906, 0, 131072, 2686907, 0, 131072, 2686908, 0, 131072, 2686909, 0, 131072, 2686910, 0, 131072, 2686911, 0, 131072, 2686912, 0, 131072, 2686913, 0, 131072, 2686914, 0, 131072, 2686915, 0, 131072, 2686916, 0, 131072, 2686917, 0, 131072, 2686918, 0, 131072, 2686919, 0, 131072, 2686920, 0, 131072, 2686921, 0, 131072, 2686922, 0, 131072, 2686923, 0, 131072, 2686924, 0, 131072, 2686925, 0, 131072, 2686926, 0, 131072, 2686927, 0, 131072, 2686928, 0, 131072, 2686929, 0, 131072, 2686930, 0, 131072, 2686931, 0, 131072, 2686932, 0, 131072, 2686933, 0, 131072, 2686934, 0, 131072, 2686935, 0, 131072, 2686936, 0, 131072, 2686937, 0, 131072, 2686938, 0, 131072, 2686939, 0, 131072, 2686940, 0, 131072, 2686941, 0, 131072, 2686942, 0, 131072, 2686943, 0, 131072, 2686944, 0, 131072, 2686945, 0, 131072, 2686946, 0, 131072, 2686947, 0, 131072, 2686948, 0, 131072, 2686949, 0, 131072, 2686950, 0, 131072, 2686951, 0, 131072, 2686952, 0, 131072, 2686953, 0, 131072, 2686954, 0, 131072, 2686955, 0, 131072, 2686956, 0, 131072, 2686957, 0, 131072, 2686958, 0, 131072, 2686959, 0, 131072, 2686960, 0, 131072, 2686961, 0, 131072, 2686962, 0, 131072, 2686963, 0, 131072, 2686964, 0, 131072, 2686965, 0, 131072, 2686966, 0, 131072, 2686967, 0, 131072, 2686968, 0, 131072, 2686969, 0, 131072, 2686970, 0, 131072, 2686971, 0, 131072, 2686972, 0, 131072, 2686973, 0, 131072, 2686974, 0, 131072, 2686975, 0, 131072, 2621440, 0, 131072, 2621441, 0, 131072, 2621442, 0, 131072, 2621443, 0, 131072, 2621444, 0, 131072, 2621445, 0, 131072, 2621446, 0, 131072, 2621447, 0, 131072, 2621448, 0, 131072, 2621449, 0, 131072, 2621450, 0, 131072, 2621451, 0, 131072, 2621452, 0, 131072, 2621453, 0, 131072, 2621454, 0, 131072, 2621455, 0, 131072, 2621456, 0, 131072, 2621457, 0, 131072, 2621458, 0, 131072, 2621459, 0, 131072, 2621460, 0, 131072, 2621461, 0, 131072, 2621462, 0, 131072, 2621463, 0, 131072, 2621464, 0, 131072, 2621465, 0, 131072, 2621466, 0, 131072, 2621467, 0, 131072, 2621468, 0, 131072, 2621469, 0, 131072, 2621470, 0, 131072, 2621471, 0, 131072, 2621472, 0, 131072, 2621473, 0, 131072, 2621474, 0, 131072, 2621475, 0, 131072, 2621476, 0, 131072, 2621477, 0, 131072, 2621478, 0, 131072, 2621479, 0, 131072, 2621480, 0, 131072, 2621481, 0, 131072, 2621482, 0, 131072, 2621483, 0, 131072, 2621484, 0, 131072, 2621485, 0, 131072, 2621486, 0, 131072, 2621487, 0, 131072, 2621488, 0, 131072, 2621489, 0, 131072, 2621490, 0, 131072, 2621491, 0, 131072, 2621492, 0, 131072, 2621493, 0, 131072, 2621494, 0, 131072, 2621495, 0, 131072, 2621496, 0, 131072, 2621497, 0, 131072, 2621498, 0, 131072, 2621499, 0, 131072, 2621500, 0, 131072, 2621501, 0, 131072, 2621502, 0, 131072, 2621503, 0, 131072, 2621504, 0, 131072, 2621505, 0, 131072, 2621506, 0, 131072, 2621507, 0, 131072, 2621508, 0, 131072, 2621509, 0, 131072, 2621510, 0, 131072, 2621511, 0, 131072, 2621512, 0, 131072, 2621513, 0, 131072, 2621514, 0, 131072, 2621515, 0, 131072, 2621516, 0, 131072, 2621517, 0, 131072, 2621518, 0, 131072, 2621519, 0, 131072, 2621520, 0, 131072, 2621521, 0, 131072, 2621522, 0, 131072, 2621523, 0, 131072, 2621524, 0, 131072, 2621525, 0, 131072, 2621526, 0, 131072, 2621527, 0, 131072, 2621528, 0, 131072, 2621529, 0, 131072, 2621530, 0, 131072, 2621531, 0, 131072, 2621532, 0, 131072, 2621533, 0, 131072, 2621534, 0, 131072, 2621535, 0, 131072, 2621536, 0, 131072, 2621537, 0, 131072, 2621538, 0, 131072, 2621539, 0, 131072, 2621540, 0, 131072, 2621541, 0, 131072, 2621542, 0, 131072, 2621543, 0, 131072, 2621544, 0, 131072, 2621545, 0, 131072, 2621546, 0, 131072, 2621547, 0, 131072, 2621548, 0, 131072, 2621549, 0, 131072, 2621550, 0, 131072, 2621551, 0, 131072, 2621552, 0, 131072, 2621553, 0, 131072, 2621554, 0, 131072, 2621555, 0, 131072, 2621556, 0, 131072, 2621557, 0, 131072, 2621558, 0, 131072, 2621559, 0, 131072, 2621560, 0, 131072, 2621561, 0, 131072, 2621562, 0, 131072, 2621563, 0, 131072, 2621564, 0, 131072, 2621565, 0, 131072, 2621566, 0, 131072, 2621567, 0, 131072, 2621568, 0, 131072, 2621569, 0, 131072, 2621570, 0, 131072, 2621571, 0, 131072, 2621572, 0, 131072, 2621573, 0, 131072, 2621574, 0, 131072, 2621575, 0, 131072, 2621576, 0, 131072, 2621577, 0, 131072, 2621578, 0, 131072, 2621579, 0, 131072, 2621580, 0, 131072, 2621581, 0, 131072, 2621582, 0, 131072, 2621583, 0, 131072, 2621584, 0, 131072, 2621585, 0, 131072, 2621586, 0, 131072, 2621587, 0, 131072, 2621588, 0, 131072, 2621589, 0, 131072, 2621590, 0, 131072, 2621591, 0, 131072, 2621592, 0, 131072, 2621593, 0, 131072, 2621594, 0, 131072, 2621595, 0, 131072, 2621596, 0, 131072, 2621597, 0, 131072, 2621598, 0, 131072, 2621599, 0, 131072, 2621600, 0, 131072, 2621601, 0, 131072, 2621602, 0, 131072, 2621603, 0, 131072, 2621604, 0, 131072, 2621605, 0, 131072, 2621606, 0, 131072, 2621607, 0, 131072, 2621608, 0, 131072, 2621609, 0, 131072, 2621610, 0, 131072, 2621611, 0, 131072, 2621612, 0, 131072, 2621613, 0, 131072, 2621614, 0, 131072, 2621615, 0, 131072, 2621616, 0, 131072, 2621617, 0, 131072, 2621618, 0, 131072, 2621619, 0, 131072, 2621620, 0, 131072, 2621621, 0, 131072, 2621622, 0, 131072, 2621623, 0, 131072, 2621624, 0, 131072, 2621625, 0, 131072, 2621626, 0, 131072, 2621627, 0, 131072, 2621628, 0, 131072, 2621629, 0, 131072, 2621630, 0, 131072, 2621631, 0, 131072, 2621632, 0, 131072, 2621633, 0, 131072, 2621634, 0, 131072, 2621635, 0, 131072, 2621636, 0, 131072, 2621637, 0, 131072, 2621638, 0, 131072, 2621639, 0, 131072, 2621640, 0, 131072, 2621641, 0, 131072, 2621642, 0, 131072, 2621643, 0, 131072, 2621644, 0, 131072, 2621645, 0, 131072, 2621646, 0, 131072, 2621647, 0, 131072, 2621648, 0, 131072, 2621649, 0, 131072, 2621650, 0, 131072, 2621651, 0, 131072, 2752443, 0, 131072, 2752444, 0, 131072, 2752445, 0, 131072, 2752446, 0, 131072, 2752447, 0, 131072, 2752448, 0, 131072, 2752449, 0, 131072, 2752450, 0, 131072, 2752451, 0, 131072, 2752452, 0, 131072, 2752453, 0, 131072, 2752454, 0, 131072, 2752455, 0, 131072, 2752456, 0, 131072, 2752457, 0, 131072, 2752458, 0, 131072, 2752459, 0, 131072, 2752460, 0, 131072, 2752461, 0, 131072, 2752462, 0, 131072, 2752463, 0, 131072, 2752464, 0, 131072, 2752465, 0, 131072, 2752466, 0, 131072, 2752467, 0, 131072, 2752468, 0, 131072, 2752469, 0, 131072, 2752470, 0, 131072, 2752471, 0, 131072, 2752472, 0, 131072, 2752473, 0, 131072, 2752474, 0, 131072, 2752475, 0, 131072, 2752476, 0, 131072, 2752477, 0, 131072, 2752478, 0, 131072, 2752479, 0, 131072, 2752480, 0, 131072, 2752481, 0, 131072, 2752482, 0, 131072, 2752483, 0, 131072, 2752484, 0, 131072, 2752485, 0, 131072, 2752486, 0, 131072, 2752487, 0, 131072, 2752488, 0, 131072, 2752489, 0, 131072, 2752490, 0, 131072, 2752491, 0, 131072, 2752492, 0, 131072, 2752493, 0, 131072, 2752494, 0, 131072, 2752495, 0, 131072, 2752496, 0, 131072, 2752497, 0, 131072, 2752498, 0, 131072, 2752499, 0, 131072, 2752500, 0, 131072, 2752501, 0, 131072, 2752502, 0, 131072, 2752503, 0, 131072, 2752504, 0, 131072, 2752505, 0, 131072, 2752506, 0, 131072, 2752507, 0, 131072, 2752508, 0, 131072, 2752509, 0, 131072, 2752510, 0, 131072, 2752511, 0, 131072, 2686976, 0, 131072, 2686977, 0, 131072, 2686978, 0, 131072, 2686979, 0, 131072, 2686980, 0, 131072, 2686981, 0, 131072, 2686982, 0, 131072, 2686983, 0, 131072, 2686984, 0, 131072, 2686985, 0, 131072, 2686986, 0, 131072, 2686987, 0, 131072, 2686988, 0, 131072, 2686989, 0, 131072, 2686990, 0, 131072, 2686991, 0, 131072, 2686992, 0, 131072, 2686993, 0, 131072, 2686994, 0, 131072, 2686995, 0, 131072, 2686996, 0, 131072, 2686997, 0, 131072, 2686998, 0, 131072, 2686999, 0, 131072, 2687000, 0, 131072, 2687001, 0, 131072, 2687002, 0, 131072, 2687003, 0, 131072, 2687004, 0, 131072, 2687005, 0, 131072, 2687006, 0, 131072, 2687007, 0, 131072, 2687008, 0, 131072, 2687009, 0, 131072, 2687010, 0, 131072, 2687011, 0, 131072, 2687012, 0, 131072, 2687013, 0, 131072, 2687014, 0, 131072, 2687015, 0, 131072, 2687016, 0, 131072, 2687017, 0, 131072, 2687018, 0, 131072, 2687019, 0, 131072, 2687020, 0, 131072, 2687021, 0, 131072, 2687022, 0, 131072, 2687023, 0, 131072, 2687024, 0, 131072, 2687025, 0, 131072, 2687026, 0, 131072, 2687027, 0, 131072, 2687028, 0, 131072, 2687029, 0, 131072, 2687030, 0, 131072, 2687031, 0, 131072, 2687032, 0, 131072, 2687033, 0, 131072, 2687034, 0, 131072, 2687035, 0, 131072, 2687036, 0, 131072, 2687037, 0, 131072, 2687038, 0, 131072, 2687039, 0, 131072, 2687040, 0, 131072, 2687041, 0, 131072, 2687042, 0, 131072, 2687043, 0, 131072, 2687044, 0, 131072, 2687045, 0, 131072, 2687046, 0, 131072, 2687047, 0, 131072, 2687048, 0, 131072, 2687049, 0, 131072, 2687050, 0, 131072, 2687051, 0, 131072, 2687052, 0, 131072, 2687053, 0, 131072, 2687054, 0, 131072, 2687055, 0, 131072, 2687056, 0, 131072, 2687057, 0, 131072, 2687058, 0, 131072, 2687059, 0, 131072, 2687060, 0, 131072, 2687061, 0, 131072, 2687062, 0, 131072, 2687063, 0, 131072, 2687064, 0, 131072, 2687065, 0, 131072, 2687066, 0, 131072, 2687067, 0, 131072, 2687068, 0, 131072, 2687069, 0, 131072, 2687070, 0, 131072, 2687071, 0, 131072, 2687072, 0, 131072, 2687073, 0, 131072, 2687074, 0, 131072, 2687075, 0, 131072, 2687076, 0, 131072, 2687077, 0, 131072, 2687078, 0, 131072, 2687079, 0, 131072, 2687080, 0, 131072, 2687081, 0, 131072, 2687082, 0, 131072, 2687083, 0, 131072, 2687084, 0, 131072, 2687085, 0, 131072, 2687086, 0, 131072, 2687087, 0, 131072, 2687088, 0, 131072, 2687089, 0, 131072, 2687090, 0, 131072, 2687091, 0, 131072, 2687092, 0, 131072, 2687093, 0, 131072, 2687094, 0, 131072, 2687095, 0, 131072, 2687096, 0, 131072, 2687097, 0, 131072, 2687098, 0, 131072, 2687099, 0, 131072, 2687100, 0, 131072, 2687101, 0, 131072, 2687102, 0, 131072, 2687103, 0, 131072, 2687104, 0, 131072, 2687105, 0, 131072, 2687106, 0, 131072, 2687107, 0, 131072, 2687108, 0, 131072, 2687109, 0, 131072, 2687110, 0, 131072, 2687111, 0, 131072, 2687112, 0, 131072, 2687113, 0, 131072, 2687114, 0, 131072, 2687115, 0, 131072, 2687116, 0, 131072, 2687117, 0, 131072, 2687118, 0, 131072, 2687119, 0, 131072, 2687120, 0, 131072, 2687121, 0, 131072, 2687122, 0, 131072, 2687123, 0, 131072, 2687124, 0, 131072, 2687125, 0, 131072, 2687126, 0, 131072, 2687127, 0, 131072, 2687128, 0, 131072, 2687129, 0, 131072, 2687130, 0, 131072, 2687131, 0, 131072, 2687132, 0, 131072, 2687133, 0, 131072, 2687134, 0, 131072, 2687135, 0, 131072, 2687136, 0, 131072, 2687137, 0, 131072, 2687138, 0, 131072, 2687139, 0, 131072, 2687140, 0, 131072, 2687141, 0, 131072, 2687142, 0, 131072, 2687143, 0, 131072, 2687144, 0, 131072, 2687145, 0, 131072, 2687146, 0, 131072, 2687147, 0, 131072, 2687148, 0, 131072, 2687149, 0, 131072, 2687150, 0, 131072, 2687151, 0, 131072, 2687152, 0, 131072, 2687153, 0, 131072, 2687154, 0, 131072, 2687155, 0, 131072, 2687156, 0, 131072, 2687157, 0, 131072, 2687158, 0, 131072, 2687159, 0, 131072, 2687160, 0, 131072, 2687161, 0, 131072, 2687162, 0, 131072, 2687163, 0, 131072, 2687164, 0, 131072, 2687165, 0, 131072, 2687166, 0, 131072, 2687167, 0, 131072, 2687168, 0, 131072, 2687169, 0, 131072, 2687170, 0, 131072, 2687171, 0, 131072, 2687172, 0, 131072, 2687173, 0, 131072, 2687174, 0, 131072, 2687175, 0, 131072, 2687176, 0, 131072, 2687177, 0, 131072, 2687178, 0, 131072, 2687179, 0, 131072, 2687180, 0, 131072, 2687181, 0, 131072, 2687182, 0, 131072, 2687183, 0, 131072, 2687184, 0, 131072, 2687185, 0, 131072, 2687186, 0, 131072, 2687187, 0, 131072, 2817980, 0, 131072, 2817981, 0, 131072, 2817982, 0, 131072, 2817983, 0, 131072, 2817984, 0, 131072, 2817985, 0, 131072, 2817986, 0, 131072, 2817987, 0, 131072, 2817988, 0, 131072, 2817989, 0, 131072, 2817990, 0, 131072, 2817991, 0, 131072, 2817992, 0, 131072, 2817993, 0, 131072, 2817994, 0, 131072, 2817995, 0, 131072, 2817996, 0, 131072, 2817997, 0, 131072, 2817998, 0, 131072, 2817999, 0, 131072, 2818000, 0, 131072, 2818001, 0, 131072, 2818002, 0, 131072, 2818003, 0, 131072, 2818004, 0, 131072, 2818005, 0, 131072, 2818006, 0, 131072, 2818007, 0, 131072, 2818008, 0, 131072, 2818009, 0, 131072, 2818010, 0, 131072, 2818011, 0, 131072, 2818012, 0, 131072, 2818013, 0, 131072, 2818014, 0, 131072, 2818015, 0, 131072, 2818016, 0, 131072, 2818017, 0, 131072, 2818018, 0, 131072, 2818019, 0, 131072, 2818020, 0, 131072, 2818021, 0, 131072, 2818022, 0, 131072, 2818023, 0, 131072, 2818024, 0, 131072, 2818025, 0, 131072, 2818026, 0, 131072, 2818027, 0, 131072, 2818028, 0, 131072, 2818029, 0, 131072, 2818030, 0, 131072, 2818031, 0, 131072, 2818032, 0, 131072, 2818033, 0, 131072, 2818034, 0, 131072, 2818035, 0, 131072, 2818036, 0, 131072, 2818037, 0, 131072, 2818038, 0, 131072, 2818039, 0, 131072, 2818040, 0, 131072, 2818041, 0, 131072, 2818042, 0, 131072, 2818043, 0, 131072, 2818044, 0, 131072, 2818045, 0, 131072, 2818046, 0, 131072, 2818047, 0, 131072, 2752512, 0, 131072, 2752513, 0, 131072, 2752514, 0, 131072, 2752515, 0, 131072, 2752516, 0, 131072, 2752517, 0, 131072, 2752518, 0, 131072, 2752519, 0, 131072, 2752520, 0, 131072, 2752521, 0, 131072, 2752522, 0, 131072, 2752523, 0, 131072, 2752524, 0, 131072, 2752525, 0, 131072, 2752526, 0, 131072, 2752527, 0, 131072, 2752528, 0, 131072, 2752529, 0, 131072, 2752530, 0, 131072, 2752531, 0, 131072, 2752532, 0, 131072, 2752533, 0, 131072, 2752534, 0, 131072, 2752535, 0, 131072, 2752536, 0, 131072, 2752537, 0, 131072, 2752538, 0, 131072, 2752539, 0, 131072, 2752540, 0, 131072, 2752541, 0, 131072, 2752542, 0, 131072, 2752543, 0, 131072, 2752544, 0, 131072, 2752545, 0, 131072, 2752546, 0, 131072, 2752547, 0, 131072, 2752548, 0, 131072, 2752549, 0, 131072, 2752550, 0, 131072, 2752551, 0, 131072, 2752552, 0, 131072, 2752553, 0, 131072, 2752554, 0, 131072, 2752555, 0, 131072, 2752556, 0, 131072, 2752557, 0, 131072, 2752558, 0, 131072, 2752559, 0, 131072, 2752560, 0, 131072, 2752561, 0, 131072, 2752562, 0, 131072, 2752563, 0, 131072, 2752564, 0, 131072, 2752565, 0, 131072, 2752566, 0, 131072, 2752567, 0, 131072, 2752568, 0, 131072, 2752569, 0, 131072, 2752570, 0, 131072, 2752571, 0, 131072, 2752572, 0, 131072, 2752573, 0, 131072, 2752574, 0, 131072, 2752575, 0, 131072, 2752576, 0, 131072, 2752577, 0, 131072, 2752578, 0, 131072, 2752579, 0, 131072, 2752580, 0, 131072, 2752581, 0, 131072, 2752582, 0, 131072, 2752583, 0, 131072, 2752584, 0, 131072, 2752585, 0, 131072, 2752586, 0, 131072, 2752587, 0, 131072, 2752588, 0, 131072, 2752589, 0, 131072, 2752590, 0, 131072, 2752591, 0, 131072, 2752592, 0, 131072, 2752593, 0, 131072, 2752594, 0, 131072, 2752595, 0, 131072, 2752596, 0, 131072, 2752597, 0, 131072, 2752598, 0, 131072, 2752599, 0, 131072, 2752600, 0, 131072, 2752601, 0, 131072, 2752602, 0, 131072, 2752603, 0, 131072, 2752604, 0, 131072, 2752605, 0, 131072, 2752606, 0, 131072, 2752607, 0, 131072, 2752608, 0, 131072, 2752609, 0, 131072, 2752610, 0, 131072, 2752611, 0, 131072, 2752612, 0, 131072, 2752613, 0, 131072, 2752614, 0, 131072, 2752615, 0, 131072, 2752616, 0, 131072, 2752617, 0, 131072, 2752618, 0, 131072, 2752619, 0, 131072, 2752620, 0, 131072, 2752621, 0, 131072, 2752622, 0, 131072, 2752623, 0, 131072, 2752624, 0, 131072, 2752625, 0, 131072, 2752626, 0, 131072, 2752627, 0, 131072, 2752628, 0, 131072, 2752629, 0, 131072, 2752630, 0, 131072, 2752631, 0, 131072, 2752632, 0, 131072, 2752633, 0, 131072, 2752634, 0, 131072, 2752635, 0, 131072, 2752636, 0, 131072, 2752637, 0, 131072, 2752638, 0, 131072, 2752639, 0, 131072, 2752640, 0, 131072, 2752641, 0, 131072, 2752642, 0, 131072, 2752643, 0, 131072, 2752644, 0, 131072, 2752645, 0, 131072, 2752646, 0, 131072, 2752647, 0, 131072, 2752648, 0, 131072, 2752649, 0, 131072, 2752650, 0, 131072, 2752651, 0, 131072, 2752652, 0, 131072, 2752653, 0, 131072, 2752654, 0, 131072, 2752655, 0, 131072, 2752656, 0, 131072, 2752657, 0, 131072, 2752658, 0, 131072, 2752659, 0, 131072, 2752660, 0, 131072, 2752661, 0, 131072, 2752662, 0, 131072, 2752663, 0, 131072, 2752664, 0, 131072, 2752665, 0, 131072, 2752666, 0, 131072, 2752667, 0, 131072, 2752668, 0, 131072, 2752669, 0, 131072, 2752670, 0, 131072, 2752671, 0, 131072, 2752672, 0, 131072, 2752673, 0, 131072, 2752674, 0, 131072, 2752675, 0, 131072, 2752676, 0, 131072, 2752677, 0, 131072, 2752678, 0, 131072, 2752679, 0, 131072, 2752680, 0, 131072, 2752681, 0, 131072, 2752682, 0, 131072, 2752683, 0, 131072, 2752684, 0, 131072, 2752685, 0, 131072, 2752686, 0, 131072, 2752687, 0, 131072, 2752688, 0, 131072, 2752689, 0, 131072, 2752690, 0, 131072, 2752691, 0, 131072, 2752692, 0, 131072, 2752693, 0, 131072, 2752694, 0, 131072, 2752695, 0, 131072, 2752696, 0, 131072, 2752697, 0, 131072, 2752698, 0, 131072, 2752699, 0, 131072, 2752700, 0, 131072, 2752701, 0, 131072, 2752702, 0, 131072, 2752703, 0, 131072, 2752704, 0, 131072, 2752705, 0, 131072, 2752706, 0, 131072, 2752707, 0, 131072, 2752708, 0, 131072, 2752709, 0, 131072, 2752710, 0, 131072, 2752711, 0, 131072, 2752712, 0, 131072, 2752713, 0, 131072, 2752714, 0, 131072, 2752715, 0, 131072, 2752716, 0, 131072, 2752717, 0, 131072, 2752718, 0, 131072, 2752719, 0, 131072, 2752720, 0, 131072, 2752721, 0, 131072, 2752722, 0, 131072, 2752723, 0, 131072, 2883517, 0, 131072, 2883518, 0, 131072, 2883519, 0, 131072, 2883520, 0, 131072, 2883521, 0, 131072, 2883522, 0, 131072, 2883523, 0, 131072, 2883524, 0, 131072, 2883525, 0, 131072, 2883526, 0, 131072, 2883527, 0, 131072, 2883528, 0, 131072, 2883529, 0, 131072, 2883530, 0, 131072, 2883531, 0, 131072, 2883532, 0, 131072, 2883533, 0, 131072, 2883534, 0, 131072, 2883535, 0, 131072, 2883536, 0, 131072, 2883537, 0, 131072, 2883538, 0, 131072, 2883539, 0, 131072, 2883540, 0, 131072, 2883541, 0, 131072, 2883542, 0, 131072, 2883543, 0, 131072, 2883544, 0, 131072, 2883545, 0, 131072, 2883546, 0, 131072, 2883547, 0, 131072, 2883548, 0, 131072, 2883549, 0, 131072, 2883550, 0, 131072, 2883551, 0, 131072, 2883552, 0, 131072, 2883553, 0, 131072, 2883554, 0, 131072, 2883555, 0, 131072, 2883556, 0, 131072, 2883557, 0, 131072, 2883558, 0, 131072, 2883559, 0, 131072, 2883560, 0, 131072, 2883561, 0, 131072, 2883562, 0, 131072, 2883563, 0, 131072, 2883564, 0, 131072, 2883565, 0, 131072, 2883566, 0, 131072, 2883567, 0, 131072, 2883568, 0, 131072, 2883569, 0, 131072, 2883570, 0, 131072, 2883571, 0, 131072, 2883572, 0, 131072, 2883573, 0, 131072, 2883574, 0, 131072, 2883575, 0, 131072, 2883576, 0, 131072, 2883577, 0, 131072, 2883578, 0, 131072, 2883579, 0, 131072, 2883580, 0, 131072, 2883581, 0, 131072, 2883582, 0, 131072, 2883583, 0, 131072, 2818048, 0, 131072, 2818049, 0, 131072, 2818050, 0, 131072, 2818051, 0, 131072, 2818052, 0, 131072, 2818053, 0, 131072, 2818054, 0, 131072, 2818055, 0, 131072, 2818056, 0, 131072, 2818057, 0, 131072, 2818058, 0, 131072, 2818059, 0, 131072, 2818060, 0, 131072, 2818061, 0, 131072, 2818062, 0, 131072, 2818063, 0, 131072, 2818064, 0, 131072, 2818065, 0, 131072, 2818066, 0, 131072, 2818067, 0, 131072, 2818068, 0, 131072, 2818069, 0, 131072, 2818070, 0, 131072, 2818071, 0, 131072, 2818072, 0, 131072, 2818073, 0, 131072, 2818074, 0, 131072, 2818075, 0, 131072, 2818076, 0, 131072, 2818077, 0, 131072, 2818078, 0, 131072, 2818079, 0, 131072, 2818080, 0, 131072, 2818081, 0, 131072, 2818082, 0, 131072, 2818083, 0, 131072, 2818084, 0, 131072, 2818085, 0, 131072, 2818086, 0, 131072, 2818087, 0, 131072, 2818088, 0, 131072, 2818089, 0, 131072, 2818090, 0, 131072, 2818091, 0, 131072, 2818092, 0, 131072, 2818093, 0, 131072, 2818094, 0, 131072, 2818095, 0, 131072, 2818096, 0, 131072, 2818097, 0, 131072, 2818098, 0, 131072, 2818099, 0, 131072, 2818100, 0, 131072, 2818101, 0, 131072, 2818102, 0, 131072, 2818103, 0, 131072, 2818104, 0, 131072, 2818105, 0, 131072, 2818106, 0, 131072, 2818107, 0, 131072, 2818108, 0, 131072, 2818109, 0, 131072, 2818110, 0, 131072, 2818111, 0, 131072, 2818112, 0, 131072, 2818113, 0, 131072, 2818114, 0, 131072, 2818115, 0, 131072, 2818116, 0, 131072, 2818117, 0, 131072, 2818118, 0, 131072, 2818119, 0, 131072, 2818120, 0, 131072, 2818121, 0, 131072, 2818122, 0, 131072, 2818123, 0, 131072, 2818124, 0, 131072, 2818125, 0, 131072, 2818126, 0, 131072, 2818127, 0, 131072, 2818128, 0, 131072, 2818129, 0, 131072, 2818130, 0, 131072, 2818131, 0, 131072, 2818132, 0, 131072, 2818133, 0, 131072, 2818134, 0, 131072, 2818135, 0, 131072, 2818136, 0, 131072, 2818137, 0, 131072, 2818138, 0, 131072, 2818139, 0, 131072, 2818140, 0, 131072, 2818141, 0, 131072, 2818142, 0, 131072, 2818143, 0, 131072, 2818144, 0, 131072, 2818145, 0, 131072, 2818146, 0, 131072, 2818147, 0, 131072, 2818148, 0, 131072, 2818149, 0, 131072, 2818150, 0, 131072, 2818151, 0, 131072, 2818152, 0, 131072, 2818153, 0, 131072, 2818154, 0, 131072, 2818155, 0, 131072, 2818156, 0, 131072, 2818157, 0, 131072, 2818158, 0, 131072, 2818159, 0, 131072, 2818160, 0, 131072, 2818161, 0, 131072, 2818162, 0, 131072, 2818163, 0, 131072, 2818164, 0, 131072, 2818165, 0, 131072, 2818166, 0, 131072, 2818167, 0, 131072, 2818168, 0, 131072, 2818169, 0, 131072, 2818170, 0, 131072, 2818171, 0, 131072, 2818172, 0, 131072, 2818173, 0, 131072, 2818174, 0, 131072, 2818175, 0, 131072, 2818176, 0, 131072, 2818177, 0, 131072, 2818178, 0, 131072, 2818179, 0, 131072, 2818180, 0, 131072, 2818181, 0, 131072, 2818182, 0, 131072, 2818183, 0, 131072, 2818184, 0, 131072, 2818185, 0, 131072, 2818186, 0, 131072, 2818187, 0, 131072, 2818188, 0, 131072, 2818189, 0, 131072, 2818190, 0, 131072, 2818191, 0, 131072, 2818192, 0, 131072, 2818193, 0, 131072, 2818194, 0, 131072, 2818195, 0, 131072, 2818196, 0, 131072, 2818197, 0, 131072, 2818198, 0, 131072, 2818199, 0, 131072, 2818200, 0, 131072, 2818201, 0, 131072, 2818202, 0, 131072, 2818203, 0, 131072, 2818204, 0, 131072, 2818205, 0, 131072, 2818206, 0, 131072, 2818207, 0, 131072, 2818208, 0, 131072, 2818209, 0, 131072, 2818210, 0, 131072, 2818211, 0, 131072, 2818212, 0, 131072, 2818213, 0, 131072, 2818214, 0, 131072, 2818215, 0, 131072, 2818216, 0, 131072, 2818217, 0, 131072, 2818218, 0, 131072, 2818219, 0, 131072, 2818220, 0, 131072, 2818221, 0, 131072, 2818222, 0, 131072, 2818223, 0, 131072, 2818224, 0, 131072, 2818225, 0, 131072, 2818226, 0, 131072, 2818227, 0, 131072, 2818228, 0, 131072, 2818229, 0, 131072, 2818230, 0, 131072, 2818231, 0, 131072, 2818232, 0, 131072, 2818233, 0, 131072, 2818234, 0, 131072, 2818235, 0, 131072, 2818236, 0, 131072, 2818237, 0, 131072, 2818238, 0, 131072, 2818239, 0, 131072, 2818240, 0, 131072, 2818241, 0, 131072, 2818242, 0, 131072, 2818243, 0, 131072, 2818244, 0, 131072, 2818245, 0, 131072, 2818246, 0, 131072, 2818247, 0, 131072, 2818248, 0, 131072, 2818249, 0, 131072, 2818250, 0, 131072, 2818251, 0, 131072, 2818252, 0, 131072, 2818253, 0, 131072, 2818254, 0, 131072, 2818255, 0, 131072, 2818256, 0, 131072, 2818257, 0, 131072, 2818258, 0, 131072, 2818259, 0, 131072, 2949054, 0, 131072, 2949055, 0, 131072, 2949056, 0, 131072, 2949057, 0, 131072, 2949058, 0, 131072, 2949059, 0, 131072, 2949060, 0, 131072, 2949061, 0, 131072, 2949062, 0, 131072, 2949063, 0, 131072, 2949064, 0, 131072, 2949065, 0, 131072, 2949066, 0, 131072, 2949067, 0, 131072, 2949068, 0, 131072, 2949069, 0, 131072, 2949070, 0, 131072, 2949071, 0, 131072, 2949072, 0, 131072, 2949073, 0, 131072, 2949074, 0, 131072, 2949075, 0, 131072, 2949076, 0, 131072, 2949077, 0, 131072, 2949078, 0, 131072, 2949079, 0, 131072, 2949080, 0, 131072, 2949081, 0, 131072, 2949082, 0, 131072, 2949083, 0, 131072, 2949084, 0, 131072, 2949085, 0, 131072, 2949086, 0, 131072, 2949087, 0, 131072, 2949088, 0, 131072, 2949089, 0, 131072, 2949090, 0, 131072, 2949091, 0, 131072, 2949092, 0, 131072, 2949093, 0, 131072, 2949094, 0, 131072, 2949095, 0, 131072, 2949096, 0, 131072, 2949097, 0, 131072, 2949098, 0, 131072, 2949099, 0, 131072, 2949100, 0, 131072, 2949101, 0, 131072, 2949102, 0, 131072, 2949103, 0, 131072, 2949104, 0, 131072, 2949105, 0, 131072, 2949106, 0, 131072, 2949107, 0, 131072, 2949108, 0, 131072, 2949109, 0, 131072, 2949110, 0, 131072, 2949111, 0, 131072, 2949112, 0, 131072, 2949113, 0, 131072, 2949114, 0, 131072, 2949115, 0, 131072, 2949116, 0, 131072, 2949117, 0, 131072, 2949118, 0, 131072, 2949119, 0, 131072, 2883584, 0, 131072, 2883585, 0, 131072, 2883586, 0, 131072, 2883587, 0, 131072, 2883588, 0, 131072, 2883589, 0, 131072, 2883590, 0, 131072, 2883591, 0, 131072, 2883592, 0, 131072, 2883593, 0, 131072, 2883594, 0, 131072, 2883595, 0, 131072, 2883596, 0, 131072, 2883597, 0, 131072, 2883598, 0, 131072, 2883599, 0, 131072, 2883600, 0, 131072, 2883601, 0, 131072, 2883602, 0, 131072, 2883603, 0, 131072, 2883604, 0, 131072, 2883605, 0, 131072, 2883606, 0, 131072, 2883607, 0, 131072, 2883608, 0, 131072, 2883609, 0, 131072, 2883610, 0, 131072, 2883611, 0, 131072, 2883612, 0, 131072, 2883613, 0, 131072, 2883614, 0, 131072, 2883615, 0, 131072, 2883616, 0, 131072, 2883617, 0, 131072, 2883618, 0, 131072, 2883619, 0, 131072, 2883620, 0, 131072, 2883621, 0, 131072, 2883622, 0, 131072, 2883623, 0, 131072, 2883624, 0, 131072, 2883625, 0, 131072, 2883626, 0, 131072, 2883627, 0, 131072, 2883628, 0, 131072, 2883629, 0, 131072, 2883630, 0, 131072, 2883631, 0, 131072, 2883632, 0, 131072, 2883633, 0, 131072, 2883634, 0, 131072, 2883635, 0, 131072, 2883636, 0, 131072, 2883637, 0, 131072, 2883638, 0, 131072, 2883639, 0, 131072, 2883640, 0, 131072, 2883641, 0, 131072, 2883642, 0, 131072, 2883643, 0, 131072, 2883644, 0, 131072, 2883645, 0, 131072, 2883646, 0, 131072, 2883647, 0, 131072, 2883648, 0, 131072, 2883649, 0, 131072, 2883650, 0, 131072, 2883651, 0, 131072, 2883652, 0, 131072, 2883653, 0, 131072, 2883654, 0, 131072, 2883655, 0, 131072, 2883656, 0, 131072, 2883657, 0, 131072, 2883658, 0, 131072, 2883659, 0, 131072, 2883660, 0, 131072, 2883661, 0, 131072, 2883662, 0, 131072, 2883663, 0, 131072, 2883664, 0, 131072, 2883665, 0, 131072, 2883666, 0, 131072, 2883667, 0, 131072, 2883668, 0, 131072, 2883669, 0, 131072, 2883670, 0, 131072, 2883671, 0, 131072, 2883672, 0, 131072, 2883673, 0, 131072, 2883674, 0, 131072, 2883675, 0, 131072, 2883676, 0, 131072, 2883677, 0, 131072, 2883678, 0, 131072, 2883679, 0, 131072, 2883680, 0, 131072, 2883681, 0, 131072, 2883682, 0, 131072, 2883683, 0, 131072, 2883684, 0, 131072, 2883685, 0, 131072, 2883686, 0, 131072, 2883687, 0, 131072, 2883688, 0, 131072, 2883689, 0, 131072, 2883690, 0, 131072, 2883691, 0, 131072, 2883692, 0, 131072, 2883693, 0, 131072, 2883694, 0, 131072, 2883695, 0, 131072, 2883696, 0, 131072, 2883697, 0, 131072, 2883698, 0, 131072, 2883699, 0, 131072, 2883700, 0, 131072, 2883701, 0, 131072, 2883702, 0, 131072, 2883703, 0, 131072, 2883704, 0, 131072, 2883705, 0, 131072, 2883706, 0, 131072, 2883707, 0, 131072, 2883708, 0, 131072, 2883709, 0, 131072, 2883710, 0, 131072, 2883711, 0, 131072, 2883712, 0, 131072, 2883713, 0, 131072, 2883714, 0, 131072, 2883715, 0, 131072, 2883716, 0, 131072, 2883717, 0, 131072, 2883718, 0, 131072, 2883719, 0, 131072, 2883720, 0, 131072, 2883721, 0, 131072, 2883722, 0, 131072, 2883723, 0, 131072, 2883724, 0, 131072, 2883725, 0, 131072, 2883726, 0, 131072, 2883727, 0, 131072, 2883728, 0, 131072, 2883729, 0, 131072, 2883730, 0, 131072, 2883731, 0, 131072, 2883732, 0, 131072, 2883733, 0, 131072, 2883734, 0, 131072, 2883735, 0, 131072, 2883736, 0, 131072, 2883737, 0, 131072, 2883738, 0, 131072, 2883739, 0, 131072, 2883740, 0, 131072, 2883741, 0, 131072, 2883742, 0, 131072, 2883743, 0, 131072, 2883744, 0, 131072, 2883745, 0, 131072, 2883746, 0, 131072, 2883747, 0, 131072, 2883748, 0, 131072, 2883749, 0, 131072, 2883750, 0, 131072, 2883751, 0, 131072, 2883752, 0, 131072, 2883753, 0, 131072, 2883754, 0, 131072, 2883755, 0, 131072, 2883756, 0, 131072, 2883757, 0, 131072, 2883758, 0, 131072, 2883759, 0, 131072, 2883760, 0, 131072, 2883761, 0, 131072, 2883762, 0, 131072, 2883763, 0, 131072, 2883764, 0, 131072, 2883765, 0, 131072, 2883766, 0, 131072, 2883767, 0, 131072, 2883768, 0, 131072, 2883769, 0, 131072, 2883770, 0, 131072, 2883771, 0, 131072, 2883772, 0, 131072, 2883773, 0, 131072, 2883774, 0, 131072, 2883775, 0, 131072, 2883776, 0, 131072, 2883777, 0, 131072, 2883778, 0, 131072, 2883779, 0, 131072, 2883780, 0, 131072, 2883781, 0, 131072, 2883782, 0, 131072, 2883783, 0, 131072, 2883784, 0, 131072, 2883785, 0, 131072, 2883786, 0, 131072, 2883787, 0, 131072, 2883788, 0, 131072, 2883789, 0, 131072, 2883790, 0, 131072, 2883791, 0, 131072, 2883792, 0, 131072, 2883793, 0, 131072, 2883794, 0, 131072, 2883795, 0, 131072, 3014590, 0, 131072, 3014591, 0, 131072, 3014592, 0, 131072, 3014593, 0, 131072, 3014594, 0, 131072, 3014595, 0, 131072, 3014596, 0, 131072, 3014597, 0, 131072, 3014598, 0, 131072, 3014599, 0, 131072, 3014600, 0, 131072, 3014601, 0, 131072, 3014602, 0, 131072, 3014603, 0, 131072, 3014604, 0, 131072, 3014605, 0, 131072, 3014606, 0, 131072, 3014607, 0, 131072, 3014608, 0, 131072, 3014609, 0, 131072, 3014610, 0, 131072, 3014611, 0, 131072, 3014612, 0, 131072, 3014613, 0, 131072, 3014614, 0, 131072, 3014615, 0, 131072, 3014616, 0, 131072, 3014617, 0, 131072, 3014618, 0, 131072, 3014619, 0, 131072, 3014620, 0, 131072, 3014621, 0, 131072, 3014622, 0, 131072, 3014623, 0, 131072, 3014624, 0, 131072, 3014625, 0, 131072, 3014626, 0, 131072, 3014627, 0, 131072, 3014628, 0, 131072, 3014629, 0, 131072, 3014630, 0, 131072, 3014631, 0, 131072, 3014632, 0, 131072, 3014633, 0, 131072, 3014634, 0, 131072, 3014635, 0, 131072, 3014636, 0, 131072, 3014637, 0, 131072, 3014638, 0, 131072, 3014639, 0, 131072, 3014640, 0, 131072, 3014641, 0, 131072, 3014642, 0, 131072, 3014643, 0, 131072, 3014644, 0, 131072, 3014645, 0, 131072, 3014646, 0, 131072, 3014647, 0, 131072, 3014648, 0, 131072, 3014649, 0, 131072, 3014650, 0, 131072, 3014651, 0, 131072, 3014652, 0, 131072, 3014653, 0, 131072, 3014654, 0, 131072, 3014655, 0, 131072, 2949120, 0, 131072, 2949121, 0, 131072, 2949122, 0, 131072, 2949123, 0, 131072, 2949124, 0, 131072, 2949125, 0, 131072, 2949126, 0, 131072, 2949127, 0, 131072, 2949128, 0, 131072, 2949129, 0, 131072, 2949130, 0, 131072, 2949131, 0, 131072, 2949132, 0, 131072, 2949133, 0, 131072, 2949134, 0, 131072, 2949135, 0, 131072, 2949136, 0, 131072, 2949137, 0, 131072, 2949138, 0, 131072, 2949139, 0, 131072, 2949140, 0, 131072, 2949141, 0, 131072, 2949142, 0, 131072, 2949143, 0, 131072, 2949144, 0, 131072, 2949145, 0, 131072, 2949146, 0, 131072, 2949147, 0, 131072, 2949148, 0, 131072, 2949149, 0, 131072, 2949150, 0, 131072, 2949151, 0, 131072, 2949152, 0, 131072, 2949153, 0, 131072, 2949154, 0, 131072, 2949155, 0, 131072, 2949156, 0, 131072, 2949157, 0, 131072, 2949158, 0, 131072, 2949159, 0, 131072, 2949160, 0, 131072, 2949161, 0, 131072, 2949162, 0, 131072, 2949163, 0, 131072, 2949164, 0, 131072, 2949165, 0, 131072, 2949166, 0, 131072, 2949167, 0, 131072, 2949168, 0, 131072, 2949169, 0, 131072, 2949170, 0, 131072, 2949171, 0, 131072, 2949172, 0, 131072, 2949173, 0, 131072, 2949174, 0, 131072, 2949175, 0, 131072, 2949176, 0, 131072, 2949177, 0, 131072, 2949178, 0, 131072, 2949179, 0, 131072, 2949180, 0, 131072, 2949181, 0, 131072, 2949182, 0, 131072, 2949183, 0, 131072, 2949184, 0, 131072, 2949185, 0, 131072, 2949186, 0, 131072, 2949187, 0, 131072, 2949188, 0, 131072, 2949189, 0, 131072, 2949190, 0, 131072, 2949191, 0, 131072, 2949192, 0, 131072, 2949193, 0, 131072, 2949194, 0, 131072, 2949195, 0, 131072, 2949196, 0, 131072, 2949197, 0, 131072, 2949198, 0, 131072, 2949199, 0, 131072, 2949200, 0, 131072, 2949201, 0, 131072, 2949202, 0, 131072, 2949203, 0, 131072, 2949204, 0, 131072, 2949205, 0, 131072, 2949206, 0, 131072, 2949207, 0, 131072, 2949208, 0, 131072, 2949209, 0, 131072, 2949210, 0, 131072, 2949211, 0, 131072, 2949212, 0, 131072, 2949213, 0, 131072, 2949214, 0, 131072, 2949215, 0, 131072, 2949216, 0, 131072, 2949217, 0, 131072, 2949218, 0, 131072, 2949219, 0, 131072, 2949220, 0, 131072, 2949221, 0, 131072, 2949222, 0, 131072, 2949223, 0, 131072, 2949224, 0, 131072, 2949225, 0, 131072, 2949226, 0, 131072, 2949227, 0, 131072, 2949228, 0, 131072, 2949229, 0, 131072, 2949230, 0, 131072, 2949231, 0, 131072, 2949232, 0, 131072, 2949233, 0, 131072, 2949234, 0, 131072, 2949235, 0, 131072, 2949236, 0, 131072, 2949237, 0, 131072, 2949238, 0, 131072, 2949239, 0, 131072, 2949240, 0, 131072, 2949241, 0, 131072, 2949242, 0, 131072, 2949243, 0, 131072, 2949244, 0, 131072, 2949245, 0, 131072, 2949246, 0, 131072, 2949247, 0, 131072, 2949248, 0, 131072, 2949249, 0, 131072, 2949250, 0, 131072, 2949251, 0, 131072, 2949252, 0, 131072, 2949253, 0, 131072, 2949254, 0, 131072, 2949255, 0, 131072, 2949256, 0, 131072, 2949257, 0, 131072, 2949258, 0, 131072, 2949259, 0, 131072, 2949260, 0, 131072, 2949261, 0, 131072, 2949262, 0, 131072, 2949263, 0, 131072, 2949264, 0, 131072, 2949265, 0, 131072, 2949266, 0, 131072, 2949267, 0, 131072, 2949268, 0, 131072, 2949269, 0, 131072, 2949270, 0, 131072, 2949271, 0, 131072, 2949272, 0, 131072, 2949273, 0, 131072, 2949274, 0, 131072, 2949275, 0, 131072, 2949276, 0, 131072, 2949277, 0, 131072, 2949278, 0, 131072, 2949279, 0, 131072, 2949280, 0, 131072, 2949281, 0, 131072, 2949282, 0, 131072, 2949283, 0, 131072, 2949284, 0, 131072, 2949285, 0, 131072, 2949286, 0, 131072, 2949287, 0, 131072, 2949288, 0, 131072, 2949289, 0, 131072, 2949290, 0, 131072, 2949291, 0, 131072, 2949292, 0, 131072, 2949293, 0, 131072, 2949294, 0, 131072, 2949295, 0, 131072, 2949296, 0, 131072, 2949297, 0, 131072, 2949298, 0, 131072, 2949299, 0, 131072, 2949300, 0, 131072, 2949301, 0, 131072, 2949302, 0, 131072, 2949303, 0, 131072, 2949304, 0, 131072, 2949305, 0, 131072, 2949306, 0, 131072, 2949307, 0, 131072, 2949308, 0, 131072, 2949309, 0, 131072, 2949310, 0, 131072, 2949311, 0, 131072, 2949312, 0, 131072, 2949313, 0, 131072, 2949314, 0, 131072, 2949315, 0, 131072, 2949316, 0, 131072, 2949317, 0, 131072, 2949318, 0, 131072, 2949319, 0, 131072, 2949320, 0, 131072, 2949321, 0, 131072, 2949322, 0, 131072, 2949323, 0, 131072, 2949324, 0, 131072, 2949325, 0, 131072, 2949326, 0, 131072, 2949327, 0, 131072, 2949328, 0, 131072, 2949329, 0, 131072, 2949330, 0, 131072, 2949331, 0, 131072, 3080127, 0, 131072, 3080128, 0, 131072, 3080129, 0, 131072, 3080130, 0, 131072, 3080131, 0, 131072, 3080132, 0, 131072, 3080133, 0, 131072, 3080134, 0, 131072, 3080135, 0, 131072, 3080136, 0, 131072, 3080137, 0, 131072, 3080138, 0, 131072, 3080139, 0, 131072, 3080140, 0, 131072, 3080141, 0, 131072, 3080142, 0, 131072, 3080143, 0, 131072, 3080144, 0, 131072, 3080145, 0, 131072, 3080146, 0, 131072, 3080147, 0, 131072, 3080148, 0, 131072, 3080149, 0, 131072, 3080150, 0, 131072, 3080151, 0, 131072, 3080152, 0, 131072, 3080153, 0, 131072, 3080154, 0, 131072, 3080155, 0, 131072, 3080156, 0, 131072, 3080157, 0, 131072, 3080158, 0, 131072, 3080159, 0, 131072, 3080160, 0, 131072, 3080161, 0, 131072, 3080162, 0, 131072, 3080163, 0, 131072, 3080164, 0, 131072, 3080165, 0, 131072, 3080166, 0, 131072, 3080167, 0, 131072, 3080168, 0, 131072, 3080169, 0, 131072, 3080170, 0, 131072, 3080171, 0, 131072, 3080172, 0, 131072, 3080173, 0, 131072, 3080174, 0, 131072, 3080175, 0, 131072, 3080176, 0, 131072, 3080177, 0, 131072, 3080178, 0, 131072, 3080179, 0, 131072, 3080180, 0, 131072, 3080181, 0, 131072, 3080182, 0, 131072, 3080183, 0, 131072, 3080184, 0, 131072, 3080185, 0, 131072, 3080186, 0, 131072, 3080187, 0, 131072, 3080188, 0, 131072, 3080189, 0, 131072, 3080190, 0, 131072, 3080191, 0, 131072, 3014656, 0, 131072, 3014657, 0, 131072, 3014658, 0, 131072, 3014659, 0, 131072, 3014660, 0, 131072, 3014661, 0, 131072, 3014662, 0, 131072, 3014663, 0, 131072, 3014664, 0, 131072, 3014665, 0, 131072, 3014666, 0, 131072, 3014667, 0, 131072, 3014668, 0, 131072, 3014669, 0, 131072, 3014670, 0, 131072, 3014671, 0, 131072, 3014672, 0, 131072, 3014673, 0, 131072, 3014674, 0, 131072, 3014675, 0, 131072, 3014676, 0, 131072, 3014677, 0, 131072, 3014678, 0, 131072, 3014679, 0, 131072, 3014680, 0, 131072, 3014681, 0, 131072, 3014682, 0, 131072, 3014683, 0, 131072, 3014684, 0, 131072, 3014685, 0, 131072, 3014686, 0, 131072, 3014687, 0, 131072, 3014688, 0, 131072, 3014689, 0, 131072, 3014690, 0, 131072, 3014691, 0, 131072, 3014692, 0, 131072, 3014693, 0, 131072, 3014694, 0, 131072, 3014695, 0, 131072, 3014696, 0, 131072, 3014697, 0, 131072, 3014698, 0, 131072, 3014699, 0, 131072, 3014700, 0, 131072, 3014701, 0, 131072, 3014702, 0, 131072, 3014703, 0, 131072, 3014704, 0, 131072, 3014705, 0, 131072, 3014706, 0, 131072, 3014707, 0, 131072, 3014708, 0, 131072, 3014709, 0, 131072, 3014710, 0, 131072, 3014711, 0, 131072, 3014712, 0, 131072, 3014713, 0, 131072, 3014714, 0, 131072, 3014715, 0, 131072, 3014716, 0, 131072, 3014717, 0, 131072, 3014718, 0, 131072, 3014719, 0, 131072, 3014720, 0, 131072, 3014721, 0, 131072, 3014722, 0, 131072, 3014723, 0, 131072, 3014724, 0, 131072, 3014725, 0, 131072, 3014726, 0, 131072, 3014727, 0, 131072, 3014728, 0, 131072, 3014729, 0, 131072, 3014730, 0, 131072, 3014731, 0, 131072, 3014732, 0, 131072, 3014733, 0, 131072, 3014734, 0, 131072, 3014735, 0, 131072, 3014736, 0, 131072, 3014737, 0, 131072, 3014738, 0, 131072, 3014739, 0, 131072, 3014740, 0, 131072, 3014741, 0, 131072, 3014742, 0, 131072, 3014743, 0, 131072, 3014744, 0, 131072, 3014745, 0, 131072, 3014746, 0, 131072, 3014747, 0, 131072, 3014748, 0, 131072, 3014749, 0, 131072, 3014750, 0, 131072, 3014751, 0, 131072, 3014752, 0, 131072, 3014753, 0, 131072, 3014754, 0, 131072, 3014755, 0, 131072, 3014756, 0, 131072, 3014757, 0, 131072, 3014758, 0, 131072, 3014759, 0, 131072, 3014760, 0, 131072, 3014761, 0, 131072, 3014762, 0, 131072, 3014763, 0, 131072, 3014764, 0, 131072, 3014765, 0, 131072, 3014766, 0, 131072, 3014767, 0, 131072, 3014768, 0, 131072, 3014769, 0, 131072, 3014770, 0, 131072, 3014771, 0, 131072, 3014772, 0, 131072, 3014773, 0, 131072, 3014774, 0, 131072, 3014775, 0, 131072, 3014776, 0, 131072, 3014777, 0, 131072, 3014778, 0, 131072, 3014779, 0, 131072, 3014780, 0, 131072, 3014781, 0, 131072, 3014782, 0, 131072, 3014783, 0, 131072, 3014784, 0, 131072, 3014785, 0, 131072, 3014786, 0, 131072, 3014787, 0, 131072, 3014788, 0, 131072, 3014789, 0, 131072, 3014790, 0, 131072, 3014791, 0, 131072, 3014792, 0, 131072, 3014793, 0, 131072, 3014794, 0, 131072, 3014795, 0, 131072, 3014796, 0, 131072, 3014797, 0, 131072, 3014798, 0, 131072, 3014799, 0, 131072, 3014800, 0, 131072, 3014801, 0, 131072, 3014802, 0, 131072, 3014803, 0, 131072, 3014804, 0, 131072, 3014805, 0, 131072, 3014806, 0, 131072, 3014807, 0, 131072, 3014808, 0, 131072, 3014809, 0, 131072, 3014810, 0, 131072, 3014811, 0, 131072, 3014812, 0, 131072, 3014813, 0, 131072, 3014814, 0, 131072, 3014815, 0, 131072, 3014816, 0, 131072, 3014817, 0, 131072, 3014818, 0, 131072, 3014819, 0, 131072, 3014820, 0, 131072, 3014821, 0, 131072, 3014822, 0, 131072, 3014823, 0, 131072, 3014824, 0, 131072, 3014825, 0, 131072, 3014826, 0, 131072, 3014827, 0, 131072, 3014828, 0, 131072, 3014829, 0, 131072, 3014830, 0, 131072, 3014831, 0, 131072, 3014832, 0, 131072, 3014833, 0, 131072, 3014834, 0, 131072, 3014835, 0, 131072, 3014836, 0, 131072, 3014837, 0, 131072, 3014838, 0, 131072, 3014839, 0, 131072, 3014840, 0, 131072, 3014841, 0, 131072, 3014842, 0, 131072, 3014843, 0, 131072, 3014844, 0, 131072, 3014845, 0, 131072, 3014846, 0, 131072, 3014847, 0, 131072, 3014848, 0, 131072, 3014849, 0, 131072, 3014850, 0, 131072, 3014851, 0, 131072, 3014852, 0, 131072, 3014853, 0, 131072, 3014854, 0, 131072, 3014855, 0, 131072, 3014856, 0, 131072, 3014857, 0, 131072, 3014858, 0, 131072, 3014859, 0, 131072, 3014860, 0, 131072, 3014861, 0, 131072, 3014862, 0, 131072, 3014863, 0, 131072, 3014864, 0, 131072, 3014865, 0, 131072, 3014866, 0, 131072, 3014867, 0, 131072, 3145664, 0, 131072, 3145665, 0, 131072, 3145666, 0, 131072, 3145667, 0, 131072, 3145668, 0, 131072, 3145669, 0, 131072, 3145670, 0, 131072, 3145671, 0, 131072, 3145672, 0, 131072, 3145673, 0, 131072, 3145674, 0, 131072, 3145675, 0, 131072, 3145676, 0, 131072, 3145677, 0, 131072, 3145678, 0, 131072, 3145679, 0, 131072, 3145680, 0, 131072, 3145681, 0, 131072, 3145682, 0, 131072, 3145683, 0, 131072, 3145684, 0, 131072, 3145685, 0, 131072, 3145686, 0, 131072, 3145687, 0, 131072, 3145688, 0, 131072, 3145689, 0, 131072, 3145690, 0, 131072, 3145691, 0, 131072, 3145692, 0, 131072, 3145693, 0, 131072, 3145694, 0, 131072, 3145695, 0, 131072, 3145696, 0, 131072, 3145697, 0, 131072, 3145698, 0, 131072, 3145699, 0, 131072, 3145700, 0, 131072, 3145701, 0, 131072, 3145702, 0, 131072, 3145703, 0, 131072, 3145704, 0, 131072, 3145705, 0, 131072, 3145706, 0, 131072, 3145707, 0, 131072, 3145708, 0, 131072, 3145709, 0, 131072, 3145710, 0, 131072, 3145711, 0, 131072, 3145712, 0, 131072, 3145713, 0, 131072, 3145714, 0, 131072, 3145715, 0, 131072, 3145716, 0, 131072, 3145717, 0, 131072, 3145718, 0, 131072, 3145719, 0, 131072, 3145720, 0, 131072, 3145721, 0, 131072, 3145722, 0, 131072, 3145723, 0, 131072, 3145724, 0, 131072, 3145725, 0, 131072, 3145726, 0, 131072, 3145727, 0, 131072, 3080192, 0, 131072, 3080193, 0, 131072, 3080194, 0, 131072, 3080195, 0, 131072, 3080196, 0, 131072, 3080197, 0, 131072, 3080198, 0, 131072, 3080199, 0, 131072, 3080200, 0, 131072, 3080201, 0, 131072, 3080202, 0, 131072, 3080203, 0, 131072, 3080204, 0, 131072, 3080205, 0, 131072, 3080206, 0, 131072, 3080207, 0, 131072, 3080208, 0, 131072, 3080209, 0, 131072, 3080210, 0, 131072, 3080211, 0, 131072, 3080212, 0, 131072, 3080213, 0, 131072, 3080214, 0, 131072, 3080215, 0, 131072, 3080216, 0, 131072, 3080217, 0, 131072, 3080218, 0, 131072, 3080219, 0, 131072, 3080220, 0, 131072, 3080221, 0, 131072, 3080222, 0, 131072, 3080223, 0, 131072, 3080224, 0, 131072, 3080225, 0, 131072, 3080226, 0, 131072, 3080227, 0, 131072, 3080228, 0, 131072, 3080229, 0, 131072, 3080230, 0, 131072, 3080231, 0, 131072, 3080232, 0, 131072, 3080233, 0, 131072, 3080234, 0, 131072, 3080235, 0, 131072, 3080236, 0, 131072, 3080237, 0, 131072, 3080238, 0, 131072, 3080239, 0, 131072, 3080240, 0, 131072, 3080241, 0, 131072, 3080242, 0, 131072, 3080243, 0, 131072, 3080244, 0, 131072, 3080245, 0, 131072, 3080246, 0, 131072, 3080247, 0, 131072, 3080248, 0, 131072, 3080249, 0, 131072, 3080250, 0, 131072, 3080251, 0, 131072, 3080252, 0, 131072, 3080253, 0, 131072, 3080254, 0, 131072, 3080255, 0, 131072, 3080256, 0, 131072, 3080257, 0, 131072, 3080258, 0, 131072, 3080259, 0, 131072, 3080260, 0, 131072, 3080261, 0, 131072, 3080262, 0, 131072, 3080263, 0, 131072, 3080264, 0, 131072, 3080265, 0, 131072, 3080266, 0, 131072, 3080267, 0, 131072, 3080268, 0, 131072, 3080269, 0, 131072, 3080270, 0, 131072, 3080271, 0, 131072, 3080272, 0, 131072, 3080273, 0, 131072, 3080274, 0, 131072, 3080275, 0, 131072, 3080276, 0, 131072, 3080277, 0, 131072, 3080278, 0, 131072, 3080279, 0, 131072, 3080280, 0, 131072, 3080281, 0, 131072, 3080282, 0, 131072, 3080283, 0, 131072, 3080284, 0, 131072, 3080285, 0, 131072, 3080286, 0, 131072, 3080287, 0, 131072, 3080288, 0, 131072, 3080289, 0, 131072, 3080290, 0, 131072, 3080291, 0, 131072, 3080292, 0, 131072, 3080293, 0, 131072, 3080294, 0, 131072, 3080295, 0, 131072, 3080296, 0, 131072, 3080297, 0, 131072, 3080298, 0, 131072, 3080299, 0, 131072, 3080300, 0, 131072, 3080301, 0, 131072, 3080302, 0, 131072, 3080303, 0, 131072, 3080304, 0, 131072, 3080305, 0, 131072, 3080306, 0, 131072, 3080307, 0, 131072, 3080308, 0, 131072, 3080309, 0, 131072, 3080310, 0, 131072, 3080311, 0, 131072, 3080312, 0, 131072, 3080313, 0, 131072, 3080314, 0, 131072, 3080315, 0, 131072, 3080316, 0, 131072, 3080317, 0, 131072, 3080318, 0, 131072, 3080319, 0, 131072, 3080320, 0, 131072, 3080321, 0, 131072, 3080322, 0, 131072, 3080323, 0, 131072, 3080324, 0, 131072, 3080325, 0, 131072, 3080326, 0, 131072, 3080327, 0, 131072, 3080328, 0, 131072, 3080329, 0, 131072, 3080330, 0, 131072, 3080331, 0, 131072, 3080332, 0, 131072, 3080333, 0, 131072, 3080334, 0, 131072, 3080335, 0, 131072, 3080336, 0, 131072, 3080337, 0, 131072, 3080338, 0, 131072, 3080339, 0, 131072, 3080340, 0, 131072, 3080341, 0, 131072, 3080342, 0, 131072, 3080343, 0, 131072, 3080344, 0, 131072, 3080345, 0, 131072, 3080346, 0, 131072, 3080347, 0, 131072, 3080348, 0, 131072, 3080349, 0, 131072, 3080350, 0, 131072, 3080351, 0, 131072, 3080352, 0, 131072, 3080353, 0, 131072, 3080354, 0, 131072, 3080355, 0, 131072, 3080356, 0, 131072, 3080357, 0, 131072, 3080358, 0, 131072, 3080359, 0, 131072, 3080360, 0, 131072, 3080361, 0, 131072, 3080362, 0, 131072, 3080363, 0, 131072, 3080364, 0, 131072, 3080365, 0, 131072, 3080366, 0, 131072, 3080367, 0, 131072, 3080368, 0, 131072, 3080369, 0, 131072, 3080370, 0, 131072, 3080371, 0, 131072, 3080372, 0, 131072, 3080373, 0, 131072, 3080374, 0, 131072, 3080375, 0, 131072, 3080376, 0, 131072, 3080377, 0, 131072, 3080378, 0, 131072, 3080379, 0, 131072, 3080380, 0, 131072, 3080381, 0, 131072, 3080382, 0, 131072, 3080383, 0, 131072, 3080384, 0, 131072, 3080385, 0, 131072, 3080386, 0, 131072, 3080387, 0, 131072, 3080388, 0, 131072, 3080389, 0, 131072, 3080390, 0, 131072, 3080391, 0, 131072, 3080392, 0, 131072, 3080393, 0, 131072, 3080394, 0, 131072, 3080395, 0, 131072, 3080396, 0, 131072, 3080397, 0, 131072, 3080398, 0, 131072, 3080399, 0, 131072, 3080400, 0, 131072, 3080401, 0, 131072, 3080402, 0, 131072, 3211201, 0, 131072, 3211202, 0, 131072, 3211203, 0, 131072, 3211204, 0, 131072, 3211205, 0, 131072, 3211206, 0, 131072, 3211207, 0, 131072, 3211208, 0, 131072, 3211209, 0, 131072, 3211210, 0, 131072, 3211211, 0, 131072, 3211212, 0, 131072, 3211213, 0, 131072, 3211214, 0, 131072, 3211215, 0, 131072, 3211216, 0, 131072, 3211217, 0, 131072, 3211218, 0, 131072, 3211219, 0, 131072, 3211220, 0, 131072, 3211221, 0, 131072, 3211222, 0, 131072, 3211223, 0, 131072, 3211224, 0, 131072, 3211225, 0, 131072, 3211226, 0, 131072, 3211227, 0, 131072, 3211228, 0, 131072, 3211229, 0, 131072, 3211230, 0, 131072, 3211231, 0, 131072, 3211232, 0, 131072, 3211233, 0, 131072, 3211234, 0, 131072, 3211235, 0, 131072, 3211236, 0, 131072, 3211237, 0, 131072, 3211238, 0, 131072, 3211239, 0, 131072, 3211240, 0, 131072, 3211241, 0, 131072, 3211242, 0, 131072, 3211243, 0, 131072, 3211244, 0, 131072, 3211245, 0, 131072, 3211246, 0, 131072, 3211247, 0, 131072, 3211248, 0, 131072, 3211249, 0, 131072, 3211250, 0, 131072, 3211251, 0, 131072, 3211252, 0, 131072, 3211253, 0, 131072, 3211254, 0, 131072, 3211255, 0, 131072, 3211256, 0, 131072, 3211257, 0, 131072, 3211258, 0, 131072, 3211259, 0, 131072, 3211260, 0, 131072, 3211261, 0, 131072, 3211262, 0, 131072, 3211263, 0, 131072, 3145728, 0, 131072, 3145729, 0, 131072, 3145730, 0, 131072, 3145731, 0, 131072, 3145732, 0, 131072, 3145733, 0, 131072, 3145734, 0, 131072, 3145735, 0, 131072, 3145736, 0, 131072, 3145737, 0, 131072, 3145738, 0, 131072, 3145739, 0, 131072, 3145740, 0, 131072, 3145741, 0, 131072, 3145742, 0, 131072, 3145743, 0, 131072, 3145744, 0, 131072, 3145745, 0, 131072, 3145746, 0, 131072, 3145747, 0, 131072, 3145748, 0, 131072, 3145749, 0, 131072, 3145750, 0, 131072, 3145751, 0, 131072, 3145752, 0, 131072, 3145753, 0, 131072, 3145754, 0, 131072, 3145755, 0, 131072, 3145756, 0, 131072, 3145757, 0, 131072, 3145758, 0, 131072, 3145759, 0, 131072, 3145760, 0, 131072, 3145761, 0, 131072, 3145762, 0, 131072, 3145763, 0, 131072, 3145764, 0, 131072, 3145765, 0, 131072, 3145766, 0, 131072, 3145767, 0, 131072, 3145768, 0, 131072, 3145769, 0, 131072, 3145770, 0, 131072, 3145771, 0, 131072, 3145772, 0, 131072, 3145773, 0, 131072, 3145774, 0, 131072, 3145775, 0, 131072, 3145776, 0, 131072, 3145777, 0, 131072, 3145778, 0, 131072, 3145779, 0, 131072, 3145780, 0, 131072, 3145781, 0, 131072, 3145782, 0, 131072, 3145783, 0, 131072, 3145784, 0, 131072, 3145785, 0, 131072, 3145786, 0, 131072, 3145787, 0, 131072, 3145788, 0, 131072, 3145789, 0, 131072, 3145790, 0, 131072, 3145791, 0, 131072, 3145792, 0, 131072, 3145793, 0, 131072, 3145794, 0, 131072, 3145795, 0, 131072, 3145796, 0, 131072, 3145797, 0, 131072, 3145798, 0, 131072, 3145799, 0, 131072, 3145800, 0, 131072, 3145801, 0, 131072, 3145802, 0, 131072, 3145803, 0, 131072, 3145804, 0, 131072, 3145805, 0, 131072, 3145806, 0, 131072, 3145807, 0, 131072, 3145808, 0, 131072, 3145809, 0, 131072, 3145810, 0, 131072, 3145811, 0, 131072, 3145812, 0, 131072, 3145813, 0, 131072, 3145814, 0, 131072, 3145815, 0, 131072, 3145816, 0, 131072, 3145817, 0, 131072, 3145818, 0, 131072, 3145819, 0, 131072, 3145820, 0, 131072, 3145821, 0, 131072, 3145822, 0, 131072, 3145823, 0, 131072, 3145824, 0, 131072, 3145825, 0, 131072, 3145826, 0, 131072, 3145827, 0, 131072, 3145828, 0, 131072, 3145829, 0, 131072, 3145830, 0, 131072, 3145831, 0, 131072, 3145832, 0, 131072, 3145833, 0, 131072, 3145834, 0, 131072, 3145835, 0, 131072, 3145836, 0, 131072, 3145837, 0, 131072, 3145838, 0, 131072, 3145839, 0, 131072, 3145840, 0, 131072, 3145841, 0, 131072, 3145842, 0, 131072, 3145843, 0, 131072, 3145844, 0, 131072, 3145845, 0, 131072, 3145846, 0, 131072, 3145847, 0, 131072, 3145848, 0, 131072, 3145849, 0, 131072, 3145850, 0, 131072, 3145851, 0, 131072, 3145852, 0, 131072, 3145853, 0, 131072, 3145854, 0, 131072, 3145855, 0, 131072, 3145856, 0, 131072, 3145857, 0, 131072, 3145858, 0, 131072, 3145859, 0, 131072, 3145860, 0, 131072, 3145861, 0, 131072, 3145862, 0, 131072, 3145863, 0, 131072, 3145864, 0, 131072, 3145865, 0, 131072, 3145866, 0, 131072, 3145867, 0, 131072, 3145868, 0, 131072, 3145869, 0, 131072, 3145870, 0, 131072, 3145871, 0, 131072, 3145872, 0, 131072, 3145873, 0, 131072, 3145874, 0, 131072, 3145875, 0, 131072, 3145876, 0, 131072, 3145877, 0, 131072, 3145878, 0, 131072, 3145879, 0, 131072, 3145880, 0, 131072, 3145881, 0, 131072, 3145882, 0, 131072, 3145883, 0, 131072, 3145884, 0, 131072, 3145885, 0, 131072, 3145886, 0, 131072, 3145887, 0, 131072, 3145888, 0, 131072, 3145889, 0, 131072, 3145890, 0, 131072, 3145891, 0, 131072, 3145892, 0, 131072, 3145893, 0, 131072, 3145894, 0, 131072, 3145895, 0, 131072, 3145896, 0, 131072, 3145897, 0, 131072, 3145898, 0, 131072, 3145899, 0, 131072, 3145900, 0, 131072, 3145901, 0, 131072, 3145902, 0, 131072, 3145903, 0, 131072, 3145904, 0, 131072, 3145905, 0, 131072, 3145906, 0, 131072, 3145907, 0, 131072, 3145908, 0, 131072, 3145909, 0, 131072, 3145910, 0, 131072, 3145911, 0, 131072, 3145912, 0, 131072, 3145913, 0, 131072, 3145914, 0, 131072, 3145915, 0, 131072, 3145916, 0, 131072, 3145917, 0, 131072, 3145918, 0, 131072, 3145919, 0, 131072, 3145920, 0, 131072, 3145921, 0, 131072, 3145922, 0, 131072, 3145923, 0, 131072, 3145924, 0, 131072, 3145925, 0, 131072, 3145926, 0, 131072, 3145927, 0, 131072, 3145928, 0, 131072, 3145929, 0, 131072, 3145930, 0, 131072, 3145931, 0, 131072, 3145932, 0, 131072, 3145933, 0, 131072, 3145934, 0, 131072, 3145935, 0, 131072, 3145936, 0, 131072, 3145937, 0, 131072, 3145938, 0, 131072, 3276738, 0, 131072, 3276739, 0, 131072, 3276740, 0, 131072, 3276741, 0, 131072, 3276742, 0, 131072, 3276743, 0, 131072, 3276744, 0, 131072, 3276745, 0, 131072, 3276746, 0, 131072, 3276747, 0, 131072, 3276748, 0, 131072, 3276749, 0, 131072, 3276750, 0, 131072, 3276751, 0, 131072, 3276752, 0, 131072, 3276753, 0, 131072, 3276754, 0, 131072, 3276755, 0, 131072, 3276756, 0, 131072, 3276757, 0, 131072, 3276758, 0, 131072, 3276759, 0, 131072, 3276760, 0, 131072, 3276761, 0, 131072, 3276762, 0, 131072, 3276763, 0, 131072, 3276764, 0, 131072, 3276765, 0, 131072, 3276766, 0, 131072, 3276767, 0, 131072, 3276768, 0, 131072, 3276769, 0, 131072, 3276770, 0, 131072, 3276771, 0, 131072, 3276772, 0, 131072, 3276773, 0, 131072, 3276774, 0, 131072, 3276775, 0, 131072, 3276776, 0, 131072, 3276777, 0, 131072, 3276778, 0, 131072, 3276779, 0, 131072, 3276780, 0, 131072, 3276781, 0, 131072, 3276782, 0, 131072, 3276783, 0, 131072, 3276784, 0, 131072, 3276785, 0, 131072, 3276786, 0, 131072, 3276787, 0, 131072, 3276788, 0, 131072, 3276789, 0, 131072, 3276790, 0, 131072, 3276791, 0, 131072, 3276792, 0, 131072, 3276793, 0, 131072, 3276794, 0, 131072, 3276795, 0, 131072, 3276796, 0, 131072, 3276797, 0, 131072, 3276798, 0, 131072, 3276799, 0, 131072, 3211264, 0, 131072, 3211265, 0, 131072, 3211266, 0, 131072, 3211267, 0, 131072, 3211268, 0, 131072, 3211269, 0, 131072, 3211270, 0, 131072, 3211271, 0, 131072, 3211272, 0, 131072, 3211273, 0, 131072, 3211274, 0, 131072, 3211275, 0, 131072, 3211276, 0, 131072, 3211277, 0, 131072, 3211278, 0, 131072, 3211279, 0, 131072, 3211280, 0, 131072, 3211281, 0, 131072, 3211282, 0, 131072, 3211283, 0, 131072, 3211284, 0, 131072, 3211285, 0, 131072, 3211286, 0, 131072, 3211287, 0, 131072, 3211288, 0, 131072, 3211289, 0, 131072, 3211290, 0, 131072, 3211291, 0, 131072, 3211292, 0, 131072, 3211293, 0, 131072, 3211294, 0, 131072, 3211295, 0, 131072, 3211296, 0, 131072, 3211297, 0, 131072, 3211298, 0, 131072, 3211299, 0, 131072, 3211300, 0, 131072, 3211301, 0, 131072, 3211302, 0, 131072, 3211303, 0, 131072, 3211304, 0, 131072, 3211305, 0, 131072, 3211306, 0, 131072, 3211307, 0, 131072, 3211308, 0, 131072, 3211309, 0, 131072, 3211310, 0, 131072, 3211311, 0, 131072, 3211312, 0, 131072, 3211313, 0, 131072, 3211314, 0, 131072, 3211315, 0, 131072, 3211316, 0, 131072, 3211317, 0, 131072, 3211318, 0, 131072, 3211319, 0, 131072, 3211320, 0, 131072, 3211321, 0, 131072, 3211322, 0, 131072, 3211323, 0, 131072, 3211324, 0, 131072, 3211325, 0, 131072, 3211326, 0, 131072, 3211327, 0, 131072, 3211328, 0, 131072, 3211329, 0, 131072, 3211330, 0, 131072, 3211331, 0, 131072, 3211332, 0, 131072, 3211333, 0, 131072, 3211334, 0, 131072, 3211335, 0, 131072, 3211336, 0, 131072, 3211337, 0, 131072, 3211338, 0, 131072, 3211339, 0, 131072, 3211340, 0, 131072, 3211341, 0, 131072, 3211342, 0, 131072, 3211343, 0, 131072, 3211344, 0, 131072, 3211345, 0, 131072, 3211346, 0, 131072, 3211347, 0, 131072, 3211348, 0, 131072, 3211349, 0, 131072, 3211350, 0, 131072, 3211351, 0, 131072, 3211352, 0, 131072, 3211353, 0, 131072, 3211354, 0, 131072, 3211355, 0, 131072, 3211356, 0, 131072, 3211357, 0, 131072, 3211358, 0, 131072, 3211359, 0, 131072, 3211360, 0, 131072, 3211361, 0, 131072, 3211362, 0, 131072, 3211363, 0, 131072, 3211364, 0, 131072, 3211365, 0, 131072, 3211366, 0, 131072, 3211367, 0, 131072, 3211368, 0, 131072, 3211369, 0, 131072, 3211370, 0, 131072, 3211371, 0, 131072, 3211372, 0, 131072, 3211373, 0, 131072, 3211374, 0, 131072, 3211375, 0, 131072, 3211376, 0, 131072, 3211377, 0, 131072, 3211378, 0, 131072, 3211379, 0, 131072, 3211380, 0, 131072, 3211381, 0, 131072, 3211382, 0, 131072, 3211383, 0, 131072, 3211384, 0, 131072, 3211385, 0, 131072, 3211386, 0, 131072, 3211387, 0, 131072, 3211388, 0, 131072, 3211389, 0, 131072, 3211390, 0, 131072, 3211391, 0, 131072, 3211392, 0, 131072, 3211393, 0, 131072, 3211394, 0, 131072, 3211395, 0, 131072, 3211396, 0, 131072, 3211397, 0, 131072, 3211398, 0, 131072, 3211399, 0, 131072, 3211400, 0, 131072, 3211401, 0, 131072, 3211402, 0, 131072, 3211403, 0, 131072, 3211404, 0, 131072, 3211405, 0, 131072, 3211406, 0, 131072, 3211407, 0, 131072, 3211408, 0, 131072, 3211409, 0, 131072, 3211410, 0, 131072, 3211411, 0, 131072, 3211412, 0, 131072, 3211413, 0, 131072, 3211414, 0, 131072, 3211415, 0, 131072, 3211416, 0, 131072, 3211417, 0, 131072, 3211418, 0, 131072, 3211419, 0, 131072, 3211420, 0, 131072, 3211421, 0, 131072, 3211422, 0, 131072, 3211423, 0, 131072, 3211424, 0, 131072, 3211425, 0, 131072, 3211426, 0, 131072, 3211427, 0, 131072, 3211428, 0, 131072, 3211429, 0, 131072, 3211430, 0, 131072, 3211431, 0, 131072, 3211432, 0, 131072, 3211433, 0, 131072, 3211434, 0, 131072, 3211435, 0, 131072, 3211436, 0, 131072, 3211437, 0, 131072, 3211438, 0, 131072, 3211439, 0, 131072, 3211440, 0, 131072, 3211441, 0, 131072, 3211442, 0, 131072, 3211443, 0, 131072, 3211444, 0, 131072, 3211445, 0, 131072, 3211446, 0, 131072, 3211447, 0, 131072, 3211448, 0, 131072, 3211449, 0, 131072, 3211450, 0, 131072, 3211451, 0, 131072, 3211452, 0, 131072, 3211453, 0, 131072, 3211454, 0, 131072, 3211455, 0, 131072, 3211456, 0, 131072, 3211457, 0, 131072, 3211458, 0, 131072, 3211459, 0, 131072, 3211460, 0, 131072, 3211461, 0, 131072, 3211462, 0, 131072, 3211463, 0, 131072, 3211464, 0, 131072, 3211465, 0, 131072, 3211466, 0, 131072, 3211467, 0, 131072, 3211468, 0, 131072, 3211469, 0, 131072, 3211470, 0, 131072, 3211471, 0, 131072, 3211472, 0, 131072, 3211473, 0, 131072, 3211474, 0, 131072, 3342275, 0, 131072, 3342276, 0, 131072, 3342277, 0, 131072, 3342278, 0, 131072, 3342279, 0, 131072, 3342280, 0, 131072, 3342281, 0, 131072, 3342282, 0, 131072, 3342283, 0, 131072, 3342284, 0, 131072, 3342285, 0, 131072, 3342286, 0, 131072, 3342287, 0, 131072, 3342288, 0, 131072, 3342289, 0, 131072, 3342290, 0, 131072, 3342291, 0, 131072, 3342292, 0, 131072, 3342293, 0, 131072, 3342294, 0, 131072, 3342295, 0, 131072, 3342296, 0, 131072, 3342297, 0, 131072, 3342298, 0, 131072, 3342299, 0, 131072, 3342300, 0, 131072, 3342301, 0, 131072, 3342302, 0, 131072, 3342303, 0, 131072, 3342304, 0, 131072, 3342305, 0, 131072, 3342306, 0, 131072, 3342307, 0, 131072, 3342308, 0, 131072, 3342309, 0, 131072, 3342310, 0, 131072, 3342311, 0, 131072, 3342312, 0, 131072, 3342313, 0, 131072, 3342314, 0, 131072, 3342315, 0, 131072, 3342316, 0, 131072, 3342317, 0, 131072, 3342318, 0, 131072, 3342319, 0, 131072, 3342320, 0, 131072, 3342321, 0, 131072, 3342322, 0, 131072, 3342323, 0, 131072, 3342324, 0, 131072, 3342325, 0, 131072, 3342326, 0, 131072, 3342327, 0, 131072, 3342328, 0, 131072, 3342329, 0, 131072, 3342330, 0, 131072, 3342331, 0, 131072, 3342332, 0, 131072, 3342333, 0, 131072, 3342334, 0, 131072, 3342335, 0, 131072, 3276800, 0, 131072, 3276801, 0, 131072, 3276802, 0, 131072, 3276803, 0, 131072, 3276804, 0, 131072, 3276805, 0, 131072, 3276806, 0, 131072, 3276807, 0, 131072, 3276808, 0, 131072, 3276809, 0, 131072, 3276810, 0, 131072, 3276811, 0, 131072, 3276812, 0, 131072, 3276813, 0, 131072, 3276814, 0, 131072, 3276815, 0, 131072, 3276816, 0, 131072, 3276817, 0, 131072, 3276818, 0, 131072, 3276819, 0, 131072, 3276820, 0, 131072, 3276821, 0, 131072, 3276822, 0, 131072, 3276823, 0, 131072, 3276824, 0, 131072, 3276825, 0, 131072, 3276826, 0, 131072, 3276827, 0, 131072, 3276828, 0, 131072, 3276829, 0, 131072, 3276830, 0, 131072, 3276831, 0, 131072, 3276832, 0, 131072, 3276833, 0, 131072, 3276834, 0, 131072, 3276835, 0, 131072, 3276836, 0, 131072, 3276837, 0, 131072, 3276838, 0, 131072, 3276839, 0, 131072, 3276840, 0, 131072, 3276841, 0, 131072, 3276842, 0, 131072, 3276843, 0, 131072, 3276844, 0, 131072, 3276845, 0, 131072, 3276846, 0, 131072, 3276847, 0, 131072, 3276848, 0, 131072, 3276849, 0, 131072, 3276850, 0, 131072, 3276851, 0, 131072, 3276852, 0, 131072, 3276853, 0, 131072, 3276854, 0, 131072, 3276855, 0, 131072, 3276856, 0, 131072, 3276857, 0, 131072, 3276858, 0, 131072, 3276859, 0, 131072, 3276860, 0, 131072, 3276861, 0, 131072, 3276862, 0, 131072, 3276863, 0, 131072, 3276864, 0, 131072, 3276865, 0, 131072, 3276866, 0, 131072, 3276867, 0, 131072, 3276868, 0, 131072, 3276869, 0, 131072, 3276870, 0, 131072, 3276871, 0, 131072, 3276872, 0, 131072, 3276873, 0, 131072, 3276874, 0, 131072, 3276875, 0, 131072, 3276876, 0, 131072, 3276877, 0, 131072, 3276878, 0, 131072, 3276879, 0, 131072, 3276880, 0, 131072, 3276881, 0, 131072, 3276882, 0, 131072, 3276883, 0, 131072, 3276884, 0, 131072, 3276885, 0, 131072, 3276886, 0, 131072, 3276887, 0, 131072, 3276888, 0, 131072, 3276889, 0, 131072, 3276890, 0, 131072, 3276891, 0, 131072, 3276892, 0, 131072, 3276893, 0, 131072, 3276894, 0, 131072, 3276895, 0, 131072, 3276896, 0, 131072, 3276897, 0, 131072, 3276898, 0, 131072, 3276899, 0, 131072, 3276900, 0, 131072, 3276901, 0, 131072, 3276902, 0, 131072, 3276903, 0, 131072, 3276904, 0, 131072, 3276905, 0, 131072, 3276906, 0, 131072, 3276907, 0, 131072, 3276908, 0, 131072, 3276909, 0, 131072, 3276910, 0, 131072, 3276911, 0, 131072, 3276912, 0, 131072, 3276913, 0, 131072, 3276914, 0, 131072, 3276915, 0, 131072, 3276916, 0, 131072, 3276917, 0, 131072, 3276918, 0, 131072, 3276919, 0, 131072, 3276920, 0, 131072, 3276921, 0, 131072, 3276922, 0, 131072, 3276923, 0, 131072, 3276924, 0, 131072, 3276925, 0, 131072, 3276926, 0, 131072, 3276927, 0, 131072, 3276928, 0, 131072, 3276929, 0, 131072, 3276930, 0, 131072, 3276931, 0, 131072, 3276932, 0, 131072, 3276933, 0, 131072, 3276934, 0, 131072, 3276935, 0, 131072, 3276936, 0, 131072, 3276937, 0, 131072, 3276938, 0, 131072, 3276939, 0, 131072, 3276940, 0, 131072, 3276941, 0, 131072, 3276942, 0, 131072, 3276943, 0, 131072, 3276944, 0, 131072, 3276945, 0, 131072, 3276946, 0, 131072, 3276947, 0, 131072, 3276948, 0, 131072, 3276949, 0, 131072, 3276950, 0, 131072, 3276951, 0, 131072, 3276952, 0, 131072, 3276953, 0, 131072, 3276954, 0, 131072, 3276955, 0, 131072, 3276956, 0, 131072, 3276957, 0, 131072, 3276958, 0, 131072, 3276959, 0, 131072, 3276960, 0, 131072, 3276961, 0, 131072, 3276962, 0, 131072, 3276963, 0, 131072, 3276964, 0, 131072, 3276965, 0, 131072, 3276966, 0, 131072, 3276967, 0, 131072, 3276968, 0, 131072, 3276969, 0, 131072, 3276970, 0, 131072, 3276971, 0, 131072, 3276972, 0, 131072, 3276973, 0, 131072, 3276974, 0, 131072, 3276975, 0, 131072, 3276976, 0, 131072, 3276977, 0, 131072, 3276978, 0, 131072, 3276979, 0, 131072, 3276980, 0, 131072, 3276981, 0, 131072, 3276982, 0, 131072, 3276983, 0, 131072, 3276984, 0, 131072, 3276985, 0, 131072, 3276986, 0, 131072, 3276987, 0, 131072, 3276988, 0, 131072, 3276989, 0, 131072, 3276990, 0, 131072, 3276991, 0, 131072, 3276992, 0, 131072, 3276993, 0, 131072, 3276994, 0, 131072, 3276995, 0, 131072, 3276996, 0, 131072, 3276997, 0, 131072, 3276998, 0, 131072, 3276999, 0, 131072, 3277000, 0, 131072, 3277001, 0, 131072, 3277002, 0, 131072, 3277003, 0, 131072, 3277004, 0, 131072, 3277005, 0, 131072, 3277006, 0, 131072, 3277007, 0, 131072, 3277008, 0, 131072, 3277009, 0, 131072, 3277010, 0, 131072, 3407812, 0, 131072, 3407813, 0, 131072, 3407814, 0, 131072, 3407815, 0, 131072, 3407816, 0, 131072, 3407817, 0, 131072, 3407818, 0, 131072, 3407819, 0, 131072, 3407820, 0, 131072, 3407821, 0, 131072, 3407822, 0, 131072, 3407823, 0, 131072, 3407824, 0, 131072, 3407825, 0, 131072, 3407826, 0, 131072, 3407827, 0, 131072, 3407828, 0, 131072, 3407829, 0, 131072, 3407830, 0, 131072, 3407831, 0, 131072, 3407832, 0, 131072, 3407833, 0, 131072, 3407834, 0, 131072, 3407835, 0, 131072, 3407836, 0, 131072, 3407837, 0, 131072, 3407838, 0, 131072, 3407839, 0, 131072, 3407840, 0, 131072, 3407841, 0, 131072, 3407842, 0, 131072, 3407843, 0, 131072, 3407844, 0, 131072, 3407845, 0, 131072, 3407846, 0, 131072, 3407847, 0, 131072, 3407848, 0, 131072, 3407849, 0, 131072, 3407850, 0, 131072, 3407851, 0, 131072, 3407852, 0, 131072, 3407853, 0, 131072, 3407854, 0, 131072, 3407855, 0, 131072, 3407856, 0, 131072, 3407857, 0, 131072, 3407858, 0, 131072, 3407859, 0, 131072, 3407860, 0, 131072, 3407861, 0, 131072, 3407862, 0, 131072, 3407863, 0, 131072, 3407864, 0, 131072, 3407865, 0, 131072, 3407866, 0, 131072, 3407867, 0, 131072, 3407868, 0, 131072, 3407869, 0, 131072, 3407870, 0, 131072, 3407871, 0, 131072, 3342336, 0, 131072, 3342337, 0, 131072, 3342338, 0, 131072, 3342339, 0, 131072, 3342340, 0, 131072, 3342341, 0, 131072, 3342342, 0, 131072, 3342343, 0, 131072, 3342344, 0, 131072, 3342345, 0, 131072, 3342346, 0, 131072, 3342347, 0, 131072, 3342348, 0, 131072, 3342349, 0, 131072, 3342350, 0, 131072, 3342351, 0, 131072, 3342352, 0, 131072, 3342353, 0, 131072, 3342354, 0, 131072, 3342355, 0, 131072, 3342356, 0, 131072, 3342357, 0, 131072, 3342358, 0, 131072, 3342359, 0, 131072, 3342360, 0, 131072, 3342361, 0, 131072, 3342362, 0, 131072, 3342363, 0, 131072, 3342364, 0, 131072, 3342365, 0, 131072, 3342366, 0, 131072, 3342367, 0, 131072, 3342368, 0, 131072, 3342369, 0, 131072, 3342370, 0, 131072, 3342371, 0, 131072, 3342372, 0, 131072, 3342373, 0, 131072, 3342374, 0, 131072, 3342375, 0, 131072, 3342376, 0, 131072, 3342377, 0, 131072, 3342378, 0, 131072, 3342379, 0, 131072, 3342380, 0, 131072, 3342381, 0, 131072, 3342382, 0, 131072, 3342383, 0, 131072, 3342384, 0, 131072, 3342385, 0, 131072, 3342386, 0, 131072, 3342387, 0, 131072, 3342388, 0, 131072, 3342389, 0, 131072, 3342390, 0, 131072, 3342391, 0, 131072, 3342392, 0, 131072, 3342393, 0, 131072, 3342394, 0, 131072, 3342395, 0, 131072, 3342396, 0, 131072, 3342397, 0, 131072, 3342398, 0, 131072, 3342399, 0, 131072, 3342400, 0, 131072, 3342401, 0, 131072, 3342402, 0, 131072, 3342403, 0, 131072, 3342404, 0, 131072, 3342405, 0, 131072, 3342406, 0, 131072, 3342407, 0, 131072, 3342408, 0, 131072, 3342409, 0, 131072, 3342410, 0, 131072, 3342411, 0, 131072, 3342412, 0, 131072, 3342413, 0, 131072, 3342414, 0, 131072, 3342415, 0, 131072, 3342416, 0, 131072, 3342417, 0, 131072, 3342418, 0, 131072, 3342419, 0, 131072, 3342420, 0, 131072, 3342421, 0, 131072, 3342422, 0, 131072, 3342423, 0, 131072, 3342424, 0, 131072, 3342425, 0, 131072, 3342426, 0, 131072, 3342427, 0, 131072, 3342428, 0, 131072, 3342429, 0, 131072, 3342430, 0, 131072, 3342431, 0, 131072, 3342432, 0, 131072, 3342433, 0, 131072, 3342434, 0, 131072, 3342435, 0, 131072, 3342436, 0, 131072, 3342437, 0, 131072, 3342438, 0, 131072, 3342439, 0, 131072, 3342440, 0, 131072, 3342441, 0, 131072, 3342442, 0, 131072, 3342443, 0, 131072, 3342444, 0, 131072, 3342445, 0, 131072, 3342446, 0, 131072, 3342447, 0, 131072, 3342448, 0, 131072, 3342449, 0, 131072, 3342450, 0, 131072, 3342451, 0, 131072, 3342452, 0, 131072, 3342453, 0, 131072, 3342454, 0, 131072, 3342455, 0, 131072, 3342456, 0, 131072, 3342457, 0, 131072, 3342458, 0, 131072, 3342459, 0, 131072, 3342460, 0, 131072, 3342461, 0, 131072, 3342462, 0, 131072, 3342463, 0, 131072, 3342464, 0, 131072, 3342465, 0, 131072, 3342466, 0, 131072, 3342467, 0, 131072, 3342468, 0, 131072, 3342469, 0, 131072, 3342470, 0, 131072, 3342471, 0, 131072, 3342472, 0, 131072, 3342473, 0, 131072, 3342474, 0, 131072, 3342475, 0, 131072, 3342476, 0, 131072, 3342477, 0, 131072, 3342478, 0, 131072, 3342479, 0, 131072, 3342480, 0, 131072, 3342481, 0, 131072, 3342482, 0, 131072, 3342483, 0, 131072, 3342484, 0, 131072, 3342485, 0, 131072, 3342486, 0, 131072, 3342487, 0, 131072, 3342488, 0, 131072, 3342489, 0, 131072, 3342490, 0, 131072, 3342491, 0, 131072, 3342492, 0, 131072, 3342493, 0, 131072, 3342494, 0, 131072, 3342495, 0, 131072, 3342496, 0, 131072, 3342497, 0, 131072, 3342498, 0, 131072, 3342499, 0, 131072, 3342500, 0, 131072, 3342501, 0, 131072, 3342502, 0, 131072, 3342503, 0, 131072, 3342504, 0, 131072, 3342505, 0, 131072, 3342506, 0, 131072, 3342507, 0, 131072, 3342508, 0, 131072, 3342509, 0, 131072, 3342510, 0, 131072, 3342511, 0, 131072, 3342512, 0, 131072, 3342513, 0, 131072, 3342514, 0, 131072, 3342515, 0, 131072, 3342516, 0, 131072, 3342517, 0, 131072, 3342518, 0, 131072, 3342519, 0, 131072, 3342520, 0, 131072, 3342521, 0, 131072, 3342522, 0, 131072, 3342523, 0, 131072, 3342524, 0, 131072, 3342525, 0, 131072, 3342526, 0, 131072, 3342527, 0, 131072, 3342528, 0, 131072, 3342529, 0, 131072, 3342530, 0, 131072, 3342531, 0, 131072, 3342532, 0, 131072, 3342533, 0, 131072, 3342534, 0, 131072, 3342535, 0, 131072, 3342536, 0, 131072, 3342537, 0, 131072, 3342538, 0, 131072, 3342539, 0, 131072, 3342540, 0, 131072, 3342541, 0, 131072, 3342542, 0, 131072, 3342543, 0, 131072, 3342544, 0, 131072, 3342545, 0, 131072, 3342546, 0, 131072, 3473349, 0, 131072, 3473350, 0, 131072, 3473351, 0, 131072, 3473352, 0, 131072, 3473353, 0, 131072, 3473354, 0, 131072, 3473355, 0, 131072, 3473356, 0, 131072, 3473357, 0, 131072, 3473358, 0, 131072, 3473359, 0, 131072, 3473360, 0, 131072, 3473361, 0, 131072, 3473362, 0, 131072, 3473363, 0, 131072, 3473364, 0, 131072, 3473365, 0, 131072, 3473366, 0, 131072, 3473367, 0, 131072, 3473368, 0, 131072, 3473369, 0, 131072, 3473370, 0, 131072, 3473371, 0, 131072, 3473372, 0, 131072, 3473373, 0, 131072, 3473374, 0, 131072, 3473375, 0, 131072, 3473376, 0, 131072, 3473377, 0, 131072, 3473378, 0, 131072, 3473379, 0, 131072, 3473380, 0, 131072, 3473381, 0, 131072, 3473382, 0, 131072, 3473383, 0, 131072, 3473384, 0, 131072, 3473385, 0, 131072, 3473386, 0, 131072, 3473387, 0, 131072, 3473388, 0, 131072, 3473389, 0, 131072, 3473390, 0, 131072, 3473391, 0, 131072, 3473392, 0, 131072, 3473393, 0, 131072, 3473394, 0, 131072, 3473395, 0, 131072, 3473396, 0, 131072, 3473397, 0, 131072, 3473398, 0, 131072, 3473399, 0, 131072, 3473400, 0, 131072, 3473401, 0, 131072, 3473402, 0, 131072, 3473403, 0, 131072, 3473404, 0, 131072, 3473405, 0, 131072, 3473406, 0, 131072, 3473407, 0, 131072, 3407872, 0, 131072, 3407873, 0, 131072, 3407874, 0, 131072, 3407875, 0, 131072, 3407876, 0, 131072, 3407877, 0, 131072, 3407878, 0, 131072, 3407879, 0, 131072, 3407880, 0, 131072, 3407881, 0, 131072, 3407882, 0, 131072, 3407883, 0, 131072, 3407884, 0, 131072, 3407885, 0, 131072, 3407886, 0, 131072, 3407887, 0, 131072, 3407888, 0, 131072, 3407889, 0, 131072, 3407890, 0, 131072, 3407891, 0, 131072, 3407892, 0, 131072, 3407893, 0, 131072, 3407894, 0, 131072, 3407895, 0, 131072, 3407896, 0, 131072, 3407897, 0, 131072, 3407898, 0, 131072, 3407899, 0, 131072, 3407900, 0, 131072, 3407901, 0, 131072, 3407902, 0, 131072, 3407903, 0, 131072, 3407904, 0, 131072, 3407905, 0, 131072, 3407906, 0, 131072, 3407907, 0, 131072, 3407908, 0, 131072, 3407909, 0, 131072, 3407910, 0, 131072, 3407911, 0, 131072, 3407912, 0, 131072, 3407913, 0, 131072, 3407914, 0, 131072, 3407915, 0, 131072, 3407916, 0, 131072, 3407917, 0, 131072, 3407918, 0, 131072, 3407919, 0, 131072, 3407920, 0, 131072, 3407921, 0, 131072, 3407922, 0, 131072, 3407923, 0, 131072, 3407924, 0, 131072, 3407925, 0, 131072, 3407926, 0, 131072, 3407927, 0, 131072, 3407928, 0, 131072, 3407929, 0, 131072, 3407930, 0, 131072, 3407931, 0, 131072, 3407932, 0, 131072, 3407933, 0, 131072, 3407934, 0, 131072, 3407935, 0, 131072, 3407936, 0, 131072, 3407937, 0, 131072, 3407938, 0, 131072, 3407939, 0, 131072, 3407940, 0, 131072, 3407941, 0, 131072, 3407942, 0, 131072, 3407943, 0, 131072, 3407944, 0, 131072, 3407945, 0, 131072, 3407946, 0, 131072, 3407947, 0, 131072, 3407948, 0, 131072, 3407949, 0, 131072, 3407950, 0, 131072, 3407951, 0, 131072, 3407952, 0, 131072, 3407953, 0, 131072, 3407954, 0, 131072, 3407955, 0, 131072, 3407956, 0, 131072, 3407957, 0, 131072, 3407958, 0, 131072, 3407959, 0, 131072, 3407960, 0, 131072, 3407961, 0, 131072, 3407962, 0, 131072, 3407963, 0, 131072, 3407964, 0, 131072, 3407965, 0, 131072, 3407966, 0, 131072, 3407967, 0, 131072, 3407968, 0, 131072, 3407969, 0, 131072, 3407970, 0, 131072, 3407971, 0, 131072, 3407972, 0, 131072, 3407973, 0, 131072, 3407974, 0, 131072, 3407975, 0, 131072, 3407976, 0, 131072, 3407977, 0, 131072, 3407978, 0, 131072, 3407979, 0, 131072, 3407980, 0, 131072, 3407981, 0, 131072, 3407982, 0, 131072, 3407983, 0, 131072, 3407984, 0, 131072, 3407985, 0, 131072, 3407986, 0, 131072, 3407987, 0, 131072, 3407988, 0, 131072, 3407989, 0, 131072, 3407990, 0, 131072, 3407991, 0, 131072, 3407992, 0, 131072, 3407993, 0, 131072, 3407994, 0, 131072, 3407995, 0, 131072, 3407996, 0, 131072, 3407997, 0, 131072, 3407998, 0, 131072, 3407999, 0, 131072, 3408000, 0, 131072, 3408001, 0, 131072, 3408002, 0, 131072, 3408003, 0, 131072, 3408004, 0, 131072, 3408005, 0, 131072, 3408006, 0, 131072, 3408007, 0, 131072, 3408008, 0, 131072, 3408009, 0, 131072, 3408010, 0, 131072, 3408011, 0, 131072, 3408012, 0, 131072, 3408013, 0, 131072, 3408014, 0, 131072, 3408015, 0, 131072, 3408016, 0, 131072, 3408017, 0, 131072, 3408018, 0, 131072, 3408019, 0, 131072, 3408020, 0, 131072, 3408021, 0, 131072, 3408022, 0, 131072, 3408023, 0, 131072, 3408024, 0, 131072, 3408025, 0, 131072, 3408026, 0, 131072, 3408027, 0, 131072, 3408028, 0, 131072, 3408029, 0, 131072, 3408030, 0, 131072, 3408031, 0, 131072, 3408032, 0, 131072, 3408033, 0, 131072, 3408034, 0, 131072, 3408035, 0, 131072, 3408036, 0, 131072, 3408037, 0, 131072, 3408038, 0, 131072, 3408039, 0, 131072, 3408040, 0, 131072, 3408041, 0, 131072, 3408042, 0, 131072, 3408043, 0, 131072, 3408044, 0, 131072, 3408045, 0, 131072, 3408046, 0, 131072, 3408047, 0, 131072, 3408048, 0, 131072, 3408049, 0, 131072, 3408050, 0, 131072, 3408051, 0, 131072, 3408052, 0, 131072, 3408053, 0, 131072, 3408054, 0, 131072, 3408055, 0, 131072, 3408056, 0, 131072, 3408057, 0, 131072, 3408058, 0, 131072, 3408059, 0, 131072, 3408060, 0, 131072, 3408061, 0, 131072, 3408062, 0, 131072, 3408063, 0, 131072, 3408064, 0, 131072, 3408065, 0, 131072, 3408066, 0, 131072, 3408067, 0, 131072, 3408068, 0, 131072, 3408069, 0, 131072, 3408070, 0, 131072, 3408071, 0, 131072, 3408072, 0, 131072, 3408073, 0, 131072, 3408074, 0, 131072, 3408075, 0, 131072, 3408076, 0, 131072, 3408077, 0, 131072, 3408078, 0, 131072, 3408079, 0, 131072, 3408080, 0, 131072, 3408081, 0, 131072, 3408082, 0, 131072, 3538885, 0, 131072, 3538886, 0, 131072, 3538887, 0, 131072, 3538888, 0, 131072, 3538889, 0, 131072, 3538890, 0, 131072, 3538891, 0, 131072, 3538892, 0, 131072, 3538893, 0, 131072, 3538894, 0, 131072, 3538895, 0, 131072, 3538896, 0, 131072, 3538897, 0, 131072, 3538898, 0, 131072, 3538899, 0, 131072, 3538900, 0, 131072, 3538901, 0, 131072, 3538902, 0, 131072, 3538903, 0, 131072, 3538904, 0, 131072, 3538905, 0, 131072, 3538906, 0, 131072, 3538907, 0, 131072, 3538908, 0, 131072, 3538909, 0, 131072, 3538910, 0, 131072, 3538911, 0, 131072, 3538912, 0, 131072, 3538913, 0, 131072, 3538914, 0, 131072, 3538915, 0, 131072, 3538916, 0, 131072, 3538917, 0, 131072, 3538918, 0, 131072, 3538919, 0, 131072, 3538920, 0, 131072, 3538921, 0, 131072, 3538922, 0, 131072, 3538923, 0, 131072, 3538924, 0, 131072, 3538925, 0, 131072, 3538926, 0, 131072, 3538927, 0, 131072, 3538928, 0, 131072, 3538929, 0, 131072, 3538930, 0, 131072, 3538931, 0, 131072, 3538932, 0, 131072, 3538933, 0, 131072, 3538934, 0, 131072, 3538935, 0, 131072, 3538936, 0, 131072, 3538937, 0, 131072, 3538938, 0, 131072, 3538939, 0, 131072, 3538940, 0, 131072, 3538941, 0, 131072, 3538942, 0, 131072, 3538943, 0, 131072, 3473408, 0, 131072, 3473409, 0, 131072, 3473410, 0, 131072, 3473411, 0, 131072, 3473412, 0, 131072, 3473413, 0, 131072, 3473414, 0, 131072, 3473415, 0, 131072, 3473416, 0, 131072, 3473417, 0, 131072, 3473418, 0, 131072, 3473419, 0, 131072, 3473420, 0, 131072, 3473421, 0, 131072, 3473422, 0, 131072, 3473423, 0, 131072, 3473424, 0, 131072, 3473425, 0, 131072, 3473426, 0, 131072, 3473427, 0, 131072, 3473428, 0, 131072, 3473429, 0, 131072, 3473430, 0, 131072, 3473431, 0, 131072, 3473432, 0, 131072, 3473433, 0, 131072, 3473434, 0, 131072, 3473435, 0, 131072, 3473436, 0, 131072, 3473437, 0, 131072, 3473438, 0, 131072, 3473439, 0, 131072, 3473440, 0, 131072, 3473441, 0, 131072, 3473442, 0, 131072, 3473443, 0, 131072, 3473444, 0, 131072, 3473445, 0, 131072, 3473446, 0, 131072, 3473447, 0, 131072, 3473448, 0, 131072, 3473449, 0, 131072, 3473450, 0, 131072, 3473451, 0, 131072, 3473452, 0, 131072, 3473453, 0, 131072, 3473454, 0, 131072, 3473455, 0, 131072, 3473456, 0, 131072, 3473457, 0, 131072, 3473458, 0, 131072, 3473459, 0, 131072, 3473460, 0, 131072, 3473461, 0, 131072, 3473462, 0, 131072, 3473463, 0, 131072, 3473464, 0, 131072, 3473465, 0, 131072, 3473466, 0, 131072, 3473467, 0, 131072, 3473468, 0, 131072, 3473469, 0, 131072, 3473470, 0, 131072, 3473471, 0, 131072, 3473472, 0, 131072, 3473473, 0, 131072, 3473474, 0, 131072, 3473475, 0, 131072, 3473476, 0, 131072, 3473477, 0, 131072, 3473478, 0, 131072, 3473479, 0, 131072, 3473480, 0, 131072, 3473481, 0, 131072, 3473482, 0, 131072, 3473483, 0, 131072, 3473484, 0, 131072, 3473485, 0, 131072, 3473486, 0, 131072, 3473487, 0, 131072, 3473488, 0, 131072, 3473489, 0, 131072, 3473490, 0, 131072, 3473491, 0, 131072, 3473492, 0, 131072, 3473493, 0, 131072, 3473494, 0, 131072, 3473495, 0, 131072, 3473496, 0, 131072, 3473497, 0, 131072, 3473498, 0, 131072, 3473499, 0, 131072, 3473500, 0, 131072, 3473501, 0, 131072, 3473502, 0, 131072, 3473503, 0, 131072, 3473504, 0, 131072, 3473505, 0, 131072, 3473506, 0, 131072, 3473507, 0, 131072, 3473508, 0, 131072, 3473509, 0, 131072, 3473510, 0, 131072, 3473511, 0, 131072, 3473512, 0, 131072, 3473513, 0, 131072, 3473514, 0, 131072, 3473515, 0, 131072, 3473516, 0, 131072, 3473517, 0, 131072, 3473518, 0, 131072, 3473519, 0, 131072, 3473520, 0, 131072, 3473521, 0, 131072, 3473522, 0, 131072, 3473523, 0, 131072, 3473524, 0, 131072, 3473525, 0, 131072, 3473526, 0, 131072, 3473527, 0, 131072, 3473528, 0, 131072, 3473529, 0, 131072, 3473530, 0, 131072, 3473531, 0, 131072, 3473532, 0, 131072, 3473533, 0, 131072, 3473534, 0, 131072, 3473535, 0, 131072, 3473536, 0, 131072, 3473537, 0, 131072, 3473538, 0, 131072, 3473539, 0, 131072, 3473540, 0, 131072, 3473541, 0, 131072, 3473542, 0, 131072, 3473543, 0, 131072, 3473544, 0, 131072, 3473545, 0, 131072, 3473546, 0, 131072, 3473547, 0, 131072, 3473548, 0, 131072, 3473549, 0, 131072, 3473550, 0, 131072, 3473551, 0, 131072, 3473552, 0, 131072, 3473553, 0, 131072, 3473554, 0, 131072, 3473555, 0, 131072, 3473556, 0, 131072, 3473557, 0, 131072, 3473558, 0, 131072, 3473559, 0, 131072, 3473560, 0, 131072, 3473561, 0, 131072, 3473562, 0, 131072, 3473563, 0, 131072, 3473564, 0, 131072, 3473565, 0, 131072, 3473566, 0, 131072, 3473567, 0, 131072, 3473568, 0, 131072, 3473569, 0, 131072, 3473570, 0, 131072, 3473571, 0, 131072, 3473572, 0, 131072, 3473573, 0, 131072, 3473574, 0, 131072, 3473575, 0, 131072, 3473576, 0, 131072, 3473577, 0, 131072, 3473578, 0, 131072, 3473579, 0, 131072, 3473580, 0, 131072, 3473581, 0, 131072, 3473582, 0, 131072, 3473583, 0, 131072, 3473584, 0, 131072, 3473585, 0, 131072, 3473586, 0, 131072, 3473587, 0, 131072, 3473588, 0, 131072, 3473589, 0, 131072, 3473590, 0, 131072, 3473591, 0, 131072, 3473592, 0, 131072, 3473593, 0, 131072, 3473594, 0, 131072, 3473595, 0, 131072, 3473596, 0, 131072, 3473597, 0, 131072, 3473598, 0, 131072, 3473599, 0, 131072, 3473600, 0, 131072, 3473601, 0, 131072, 3473602, 0, 131072, 3473603, 0, 131072, 3473604, 0, 131072, 3473605, 0, 131072, 3473606, 0, 131072, 3473607, 0, 131072, 3473608, 0, 131072, 3473609, 0, 131072, 3473610, 0, 131072, 3473611, 0, 131072, 3473612, 0, 131072, 3473613, 0, 131072, 3473614, 0, 131072, 3473615, 0, 131072, 3473616, 0, 131072, 3473617, 0, 131072, 3473618, 0, 131072, 3604422, 0, 131072, 3604423, 0, 131072, 3604424, 0, 131072, 3604425, 0, 131072, 3604426, 0, 131072, 3604427, 0, 131072, 3604428, 0, 131072, 3604429, 0, 131072, 3604430, 0, 131072, 3604431, 0, 131072, 3604432, 0, 131072, 3604433, 0, 131072, 3604434, 0, 131072, 3604435, 0, 131072, 3604436, 0, 131072, 3604437, 0, 131072, 3604438, 0, 131072, 3604439, 0, 131072, 3604440, 0, 131072, 3604441, 0, 131072, 3604442, 0, 131072, 3604443, 0, 131072, 3604444, 0, 131072, 3604445, 0, 131072, 3604446, 0, 131072, 3604447, 0, 131072, 3604448, 0, 131072, 3604449, 0, 131072, 3604450, 0, 131072, 3604451, 0, 131072, 3604452, 0, 131072, 3604453, 0, 131072, 3604454, 0, 131072, 3604455, 0, 131072, 3604456, 0, 131072, 3604457, 0, 131072, 3604458, 0, 131072, 3604459, 0, 131072, 3604460, 0, 131072, 3604461, 0, 131072, 3604462, 0, 131072, 3604463, 0, 131072, 3604464, 0, 131072, 3604465, 0, 131072, 3604466, 0, 131072, 3604467, 0, 131072, 3604468, 0, 131072, 3604469, 0, 131072, 3604470, 0, 131072, 3604471, 0, 131072, 3604472, 0, 131072, 3604473, 0, 131072, 3604474, 0, 131072, 3604475, 0, 131072, 3604476, 0, 131072, 3604477, 0, 131072, 3604478, 0, 131072, 3604479, 0, 131072, 3538944, 0, 131072, 3538945, 0, 131072, 3538946, 0, 131072, 3538947, 0, 131072, 3538948, 0, 131072, 3538949, 0, 131072, 3538950, 0, 131072, 3538951, 0, 131072, 3538952, 0, 131072, 3538953, 0, 131072, 3538954, 0, 131072, 3538955, 0, 131072, 3538956, 0, 131072, 3538957, 0, 131072, 3538958, 0, 131072, 3538959, 0, 131072, 3538960, 0, 131072, 3538961, 0, 131072, 3538962, 0, 131072, 3538963, 0, 131072, 3538964, 0, 131072, 3538965, 0, 131072, 3538966, 0, 131072, 3538967, 0, 131072, 3538968, 0, 131072, 3538969, 0, 131072, 3538970, 0, 131072, 3538971, 0, 131072, 3538972, 0, 131072, 3538973, 0, 131072, 3538974, 0, 131072, 3538975, 0, 131072, 3538976, 0, 131072, 3538977, 0, 131072, 3538978, 0, 131072, 3538979, 0, 131072, 3538980, 0, 131072, 3538981, 0, 131072, 3538982, 0, 131072, 3538983, 0, 131072, 3538984, 0, 131072, 3538985, 0, 131072, 3538986, 0, 131072, 3538987, 0, 131072, 3538988, 0, 131072, 3538989, 0, 131072, 3538990, 0, 131072, 3538991, 0, 131072, 3538992, 0, 131072, 3538993, 0, 131072, 3538994, 0, 131072, 3538995, 0, 131072, 3538996, 0, 131072, 3538997, 0, 131072, 3538998, 0, 131072, 3538999, 0, 131072, 3539000, 0, 131072, 3539001, 0, 131072, 3539002, 0, 131072, 3539003, 0, 131072, 3539004, 0, 131072, 3539005, 0, 131072, 3539006, 0, 131072, 3539007, 0, 131072, 3539008, 0, 131072, 3539009, 0, 131072, 3539010, 0, 131072, 3539011, 0, 131072, 3539012, 0, 131072, 3539013, 0, 131072, 3539014, 0, 131072, 3539015, 0, 131072, 3539016, 0, 131072, 3539017, 0, 131072, 3539018, 0, 131072, 3539019, 0, 131072, 3539020, 0, 131072, 3539021, 0, 131072, 3539022, 0, 131072, 3539023, 0, 131072, 3539024, 0, 131072, 3539025, 0, 131072, 3539026, 0, 131072, 3539027, 0, 131072, 3539028, 0, 131072, 3539029, 0, 131072, 3539030, 0, 131072, 3539031, 0, 131072, 3539032, 0, 131072, 3539033, 0, 131072, 3539034, 0, 131072, 3539035, 0, 131072, 3539036, 0, 131072, 3539037, 0, 131072, 3539038, 0, 131072, 3539039, 0, 131072, 3539040, 0, 131072, 3539041, 0, 131072, 3539042, 0, 131072, 3539043, 0, 131072, 3539044, 0, 131072, 3539045, 0, 131072, 3539046, 0, 131072, 3539047, 0, 131072, 3539048, 0, 131072, 3539049, 0, 131072, 3539050, 0, 131072, 3539051, 0, 131072, 3539052, 0, 131072, 3539053, 0, 131072, 3539054, 0, 131072, 3539055, 0, 131072, 3539056, 0, 131072, 3539057, 0, 131072, 3539058, 0, 131072, 3539059, 0, 131072, 3539060, 0, 131072, 3539061, 0, 131072, 3539062, 0, 131072, 3539063, 0, 131072, 3539064, 0, 131072, 3539065, 0, 131072, 3539066, 0, 131072, 3539067, 0, 131072, 3539068, 0, 131072, 3539069, 0, 131072, 3539070, 0, 131072, 3539071, 0, 131072, 3539072, 0, 131072, 3539073, 0, 131072, 3539074, 0, 131072, 3539075, 0, 131072, 3539076, 0, 131072, 3539077, 0, 131072, 3539078, 0, 131072, 3539079, 0, 131072, 3539080, 0, 131072, 3539081, 0, 131072, 3539082, 0, 131072, 3539083, 0, 131072, 3539084, 0, 131072, 3539085, 0, 131072, 3539086, 0, 131072, 3539087, 0, 131072, 3539088, 0, 131072, 3539089, 0, 131072, 3539090, 0, 131072, 3539091, 0, 131072, 3539092, 0, 131072, 3539093, 0, 131072, 3539094, 0, 131072, 3539095, 0, 131072, 3539096, 0, 131072, 3539097, 0, 131072, 3539098, 0, 131072, 3539099, 0, 131072, 3539100, 0, 131072, 3539101, 0, 131072, 3539102, 0, 131072, 3539103, 0, 131072, 3539104, 0, 131072, 3539105, 0, 131072, 3539106, 0, 131072, 3539107, 0, 131072, 3539108, 0, 131072, 3539109, 0, 131072, 3539110, 0, 131072, 3539111, 0, 131072, 3539112, 0, 131072, 3539113, 0, 131072, 3539114, 0, 131072, 3539115, 0, 131072, 3539116, 0, 131072, 3539117, 0, 131072, 3539118, 0, 131072, 3539119, 0, 131072, 3539120, 0, 131072, 3539121, 0, 131072, 3539122, 0, 131072, 3539123, 0, 131072, 3539124, 0, 131072, 3539125, 0, 131072, 3539126, 0, 131072, 3539127, 0, 131072, 3539128, 0, 131072, 3539129, 0, 131072, 3539130, 0, 131072, 3539131, 0, 131072, 3539132, 0, 131072, 3539133, 0, 131072, 3539134, 0, 131072, 3539135, 0, 131072, 3539136, 0, 131072, 3539137, 0, 131072, 3539138, 0, 131072, 3539139, 0, 131072, 3539140, 0, 131072, 3539141, 0, 131072, 3539142, 0, 131072, 3539143, 0, 131072, 3539144, 0, 131072, 3539145, 0, 131072, 3539146, 0, 131072, 3539147, 0, 131072, 3539148, 0, 131072, 3539149, 0, 131072, 3539150, 0, 131072, 3539151, 0, 131072, 3539152, 0, 131072, 3539153, 0, 131072, 3539154, 0, 131072, 3669959, 0, 131072, 3669960, 0, 131072, 3669961, 0, 131072, 3669962, 0, 131072, 3669963, 0, 131072, 3669964, 0, 131072, 3669965, 0, 131072, 3669966, 0, 131072, 3669967, 0, 131072, 3669968, 0, 131072, 3669969, 0, 131072, 3669970, 0, 131072, 3669971, 0, 131072, 3669972, 0, 131072, 3669973, 0, 131072, 3669974, 0, 131072, 3669975, 0, 131072, 3669976, 0, 131072, 3669977, 0, 131072, 3669978, 0, 131072, 3669979, 0, 131072, 3669980, 0, 131072, 3669981, 0, 131072, 3669982, 0, 131072, 3669983, 0, 131072, 3669984, 0, 131072, 3669985, 0, 131072, 3669986, 0, 131072, 3669987, 0, 131072, 3669988, 0, 131072, 3669989, 0, 131072, 3669990, 0, 131072, 3669991, 0, 131072, 3669992, 0, 131072, 3669993, 0, 131072, 3669994, 0, 131072, 3669995, 0, 131072, 3669996, 0, 131072, 3669997, 0, 131072, 3669998, 0, 131072, 3669999, 0, 131072, 3670000, 0, 131072, 3670001, 0, 131072, 3670002, 0, 131072, 3670003, 0, 131072, 3670004, 0, 131072, 3670005, 0, 131072, 3670006, 0, 131072, 3670007, 0, 131072, 3670008, 0, 131072, 3670009, 0, 131072, 3670010, 0, 131072, 3670011, 0, 131072, 3670012, 0, 131072, 3670013, 0, 131072, 3670014, 0, 131072, 3670015, 0, 131072, 3604480, 0, 131072, 3604481, 0, 131072, 3604482, 0, 131072, 3604483, 0, 131072, 3604484, 0, 131072, 3604485, 0, 131072, 3604486, 0, 131072, 3604487, 0, 131072, 3604488, 0, 131072, 3604489, 0, 131072, 3604490, 0, 131072, 3604491, 0, 131072, 3604492, 0, 131072, 3604493, 0, 131072, 3604494, 0, 131072, 3604495, 0, 131072, 3604496, 0, 131072, 3604497, 0, 131072, 3604498, 0, 131072, 3604499, 0, 131072, 3604500, 0, 131072, 3604501, 0, 131072, 3604502, 0, 131072, 3604503, 0, 131072, 3604504, 0, 131072, 3604505, 0, 131072, 3604506, 0, 131072, 3604507, 0, 131072, 3604508, 0, 131072, 3604509, 0, 131072, 3604510, 0, 131072, 3604511, 0, 131072, 3604512, 0, 131072, 3604513, 0, 131072, 3604514, 0, 131072, 3604515, 0, 131072, 3604516, 0, 131072, 3604517, 0, 131072, 3604518, 0, 131072, 3604519, 0, 131072, 3604520, 0, 131072, 3604521, 0, 131072, 3604522, 0, 131072, 3604523, 0, 131072, 3604524, 0, 131072, 3604525, 0, 131072, 3604526, 0, 131072, 3604527, 0, 131072, 3604528, 0, 131072, 3604529, 0, 131072, 3604530, 0, 131072, 3604531, 0, 131072, 3604532, 0, 131072, 3604533, 0, 131072, 3604534, 0, 131072, 3604535, 0, 131072, 3604536, 0, 131072, 3604537, 0, 131072, 3604538, 0, 131072, 3604539, 0, 131072, 3604540, 0, 131072, 3604541, 0, 131072, 3604542, 0, 131072, 3604543, 0, 131072, 3604544, 0, 131072, 3604545, 0, 131072, 3604546, 0, 131072, 3604547, 0, 131072, 3604548, 0, 131072, 3604549, 0, 131072, 3604550, 0, 131072, 3604551, 0, 131072, 3604552, 0, 131072, 3604553, 0, 131072, 3604554, 0, 131072, 3604555, 0, 131072, 3604556, 0, 131072, 3604557, 0, 131072, 3604558, 0, 131072, 3604559, 0, 131072, 3604560, 0, 131072, 3604561, 0, 131072, 3604562, 0, 131072, 3604563, 0, 131072, 3604564, 0, 131072, 3604565, 0, 131072, 3604566, 0, 131072, 3604567, 0, 131072, 3604568, 0, 131072, 3604569, 0, 131072, 3604570, 0, 131072, 3604571, 0, 131072, 3604572, 0, 131072, 3604573, 0, 131072, 3604574, 0, 131072, 3604575, 0, 131072, 3604576, 0, 131072, 3604577, 0, 131072, 3604578, 0, 131072, 3604579, 0, 131072, 3604580, 0, 131072, 3604581, 0, 131072, 3604582, 0, 131072, 3604583, 0, 131072, 3604584, 0, 131072, 3604585, 0, 131072, 3604586, 0, 131072, 3604587, 0, 131072, 3604588, 0, 131072, 3604589, 0, 131072, 3604590, 0, 131072, 3604591, 0, 131072, 3604592, 0, 131072, 3604593, 0, 131072, 3604594, 0, 131072, 3604595, 0, 131072, 3604596, 0, 131072, 3604597, 0, 131072, 3604598, 0, 131072, 3604599, 0, 131072, 3604600, 0, 131072, 3604601, 0, 131072, 3604602, 0, 131072, 3604603, 0, 131072, 3604604, 0, 131072, 3604605, 0, 131072, 3604606, 0, 131072, 3604607, 0, 131072, 3604608, 0, 131072, 3604609, 0, 131072, 3604610, 0, 131072, 3604611, 0, 131072, 3604612, 0, 131072, 3604613, 0, 131072, 3604614, 0, 131072, 3604615, 0, 131072, 3604616, 0, 131072, 3604617, 0, 131072, 3604618, 0, 131072, 3604619, 0, 131072, 3604620, 0, 131072, 3604621, 0, 131072, 3604622, 0, 131072, 3604623, 0, 131072, 3604624, 0, 131072, 3604625, 0, 131072, 3604626, 0, 131072, 3604627, 0, 131072, 3604628, 0, 131072, 3604629, 0, 131072, 3604630, 0, 131072, 3604631, 0, 131072, 3604632, 0, 131072, 3604633, 0, 131072, 3604634, 0, 131072, 3604635, 0, 131072, 3604636, 0, 131072, 3604637, 0, 131072, 3604638, 0, 131072, 3604639, 0, 131072, 3604640, 0, 131072, 3604641, 0, 131072, 3604642, 0, 131072, 3604643, 0, 131072, 3604644, 0, 131072, 3604645, 0, 131072, 3604646, 0, 131072, 3604647, 0, 131072, 3604648, 0, 131072, 3604649, 0, 131072, 3604650, 0, 131072, 3604651, 0, 131072, 3604652, 0, 131072, 3604653, 0, 131072, 3604654, 0, 131072, 3604655, 0, 131072, 3604656, 0, 131072, 3604657, 0, 131072, 3604658, 0, 131072, 3604659, 0, 131072, 3604660, 0, 131072, 3604661, 0, 131072, 3604662, 0, 131072, 3604663, 0, 131072, 3604664, 0, 131072, 3604665, 0, 131072, 3604666, 0, 131072, 3604667, 0, 131072, 3604668, 0, 131072, 3604669, 0, 131072, 3604670, 0, 131072, 3604671, 0, 131072, 3604672, 0, 131072, 3604673, 0, 131072, 3604674, 0, 131072, 3604675, 0, 131072, 3604676, 0, 131072, 3604677, 0, 131072, 3604678, 0, 131072, 3604679, 0, 131072, 3604680, 0, 131072, 3604681, 0, 131072, 3604682, 0, 131072, 3604683, 0, 131072, 3604684, 0, 131072, 3604685, 0, 131072, 3604686, 0, 131072, 3604687, 0, 131072, 3604688, 0, 131072, 3604689, 0, 131072, 3604690, 0, 131072, 3735496, 0, 131072, 3735497, 0, 131072, 3735498, 0, 131072, 3735499, 0, 131072, 3735500, 0, 131072, 3735501, 0, 131072, 3735502, 0, 131072, 3735503, 0, 131072, 3735504, 0, 131072, 3735505, 0, 131072, 3735506, 0, 131072, 3735507, 0, 131072, 3735508, 0, 131072, 3735509, 0, 131072, 3735510, 0, 131072, 3735511, 0, 131072, 3735512, 0, 131072, 3735513, 0, 131072, 3735514, 0, 131072, 3735515, 0, 131072, 3735516, 0, 131072, 3735517, 0, 131072, 3735518, 0, 131072, 3735519, 0, 131072, 3735520, 0, 131072, 3735521, 0, 131072, 3735522, 0, 131072, 3735523, 0, 131072, 3735524, 0, 131072, 3735525, 0, 131072, 3735526, 0, 131072, 3735527, 0, 131072, 3735528, 0, 131072, 3735529, 0, 131072, 3735530, 0, 131072, 3735531, 0, 131072, 3735532, 0, 131072, 3735533, 0, 131072, 3735534, 0, 131072, 3735535, 0, 131072, 3735536, 0, 131072, 3735537, 0, 131072, 3735538, 0, 131072, 3735539, 0, 131072, 3735540, 0, 131072, 3735541, 0, 131072, 3735542, 0, 131072, 3735543, 0, 131072, 3735544, 0, 131072, 3735545, 0, 131072, 3735546, 0, 131072, 3735547, 0, 131072, 3735548, 0, 131072, 3735549, 0, 131072, 3735550, 0, 131072, 3735551, 0, 131072, 3670016, 0, 131072, 3670017, 0, 131072, 3670018, 0, 131072, 3670019, 0, 131072, 3670020, 0, 131072, 3670021, 0, 131072, 3670022, 0, 131072, 3670023, 0, 131072, 3670024, 0, 131072, 3670025, 0, 131072, 3670026, 0, 131072, 3670027, 0, 131072, 3670028, 0, 131072, 3670029, 0, 131072, 3670030, 0, 131072, 3670031, 0, 131072, 3670032, 0, 131072, 3670033, 0, 131072, 3670034, 0, 131072, 3670035, 0, 131072, 3670036, 0, 131072, 3670037, 0, 131072, 3670038, 0, 131072, 3670039, 0, 131072, 3670040, 0, 131072, 3670041, 0, 131072, 3670042, 0, 131072, 3670043, 0, 131072, 3670044, 0, 131072, 3670045, 0, 131072, 3670046, 0, 131072, 3670047, 0, 131072, 3670048, 0, 131072, 3670049, 0, 131072, 3670050, 0, 131072, 3670051, 0, 131072, 3670052, 0, 131072, 3670053, 0, 131072, 3670054, 0, 131072, 3670055, 0, 131072, 3670056, 0, 131072, 3670057, 0, 131072, 3670058, 0, 131072, 3670059, 0, 131072, 3670060, 0, 131072, 3670061, 0, 131072, 3670062, 0, 131072, 3670063, 0, 131072, 3670064, 0, 131072, 3670065, 0, 131072, 3670066, 0, 131072, 3670067, 0, 131072, 3670068, 0, 131072, 3670069, 0, 131072, 3670070, 0, 131072, 3670071, 0, 131072, 3670072, 0, 131072, 3670073, 0, 131072, 3670074, 0, 131072, 3670075, 0, 131072, 3670076, 0, 131072, 3670077, 0, 131072, 3670078, 0, 131072, 3670079, 0, 131072, 3670080, 0, 131072, 3670081, 0, 131072, 3670082, 0, 131072, 3670083, 0, 131072, 3670084, 0, 131072, 3670085, 0, 131072, 3670086, 0, 131072, 3670087, 0, 131072, 3670088, 0, 131072, 3670089, 0, 131072, 3670090, 0, 131072, 3670091, 0, 131072, 3670092, 0, 131072, 3670093, 0, 131072, 3670094, 0, 131072, 3670095, 0, 131072, 3670096, 0, 131072, 3670097, 0, 131072, 3670098, 0, 131072, 3670099, 0, 131072, 3670100, 0, 131072, 3670101, 0, 131072, 3670102, 0, 131072, 3670103, 0, 131072, 3670104, 0, 131072, 3670105, 0, 131072, 3670106, 0, 131072, 3670107, 0, 131072, 3670108, 0, 131072, 3670109, 0, 131072, 3670110, 0, 131072, 3670111, 0, 131072, 3670112, 0, 131072, 3670113, 0, 131072, 3670114, 0, 131072, 3670115, 0, 131072, 3670116, 0, 131072, 3670117, 0, 131072, 3670118, 0, 131072, 3670119, 0, 131072, 3670120, 0, 131072, 3670121, 0, 131072, 3670122, 0, 131072, 3670123, 0, 131072, 3670124, 0, 131072, 3670125, 0, 131072, 3670126, 0, 131072, 3670127, 0, 131072, 3670128, 0, 131072, 3670129, 0, 131072, 3670130, 0, 131072, 3670131, 0, 131072, 3670132, 0, 131072, 3670133, 0, 131072, 3670134, 0, 131072, 3670135, 0, 131072, 3670136, 0, 131072, 3670137, 0, 131072, 3670138, 0, 131072, 3670139, 0, 131072, 3670140, 0, 131072, 3670141, 0, 131072, 3670142, 0, 131072, 3670143, 0, 131072, 3670144, 0, 131072, 3670145, 0, 131072, 3670146, 0, 131072, 3670147, 0, 131072, 3670148, 0, 131072, 3670149, 0, 131072, 3670150, 0, 131072, 3670151, 0, 131072, 3670152, 0, 131072, 3670153, 0, 131072, 3670154, 0, 131072, 3670155, 0, 131072, 3670156, 0, 131072, 3670157, 0, 131072, 3670158, 0, 131072, 3670159, 0, 131072, 3670160, 0, 131072, 3670161, 0, 131072, 3670162, 0, 131072, 3670163, 0, 131072, 3670164, 0, 131072, 3670165, 0, 131072, 3670166, 0, 131072, 3670167, 0, 131072, 3670168, 0, 131072, 3670169, 0, 131072, 3670170, 0, 131072, 3670171, 0, 131072, 3670172, 0, 131072, 3670173, 0, 131072, 3670174, 0, 131072, 3670175, 0, 131072, 3670176, 0, 131072, 3670177, 0, 131072, 3670178, 0, 131072, 3670179, 0, 131072, 3670180, 0, 131072, 3670181, 0, 131072, 3670182, 0, 131072, 3670183, 0, 131072, 3670184, 0, 131072, 3670185, 0, 131072, 3670186, 0, 131072, 3670187, 0, 131072, 3670188, 0, 131072, 3670189, 0, 131072, 3670190, 0, 131072, 3670191, 0, 131072, 3670192, 0, 131072, 3670193, 0, 131072, 3670194, 0, 131072, 3670195, 0, 131072, 3670196, 0, 131072, 3670197, 0, 131072, 3670198, 0, 131072, 3670199, 0, 131072, 3670200, 0, 131072, 3670201, 0, 131072, 3670202, 0, 131072, 3670203, 0, 131072, 3670204, 0, 131072, 3670205, 0, 131072, 3670206, 0, 131072, 3670207, 0, 131072, 3670208, 0, 131072, 3670209, 0, 131072, 3670210, 0, 131072, 3670211, 0, 131072, 3670212, 0, 131072, 3670213, 0, 131072, 3670214, 0, 131072, 3670215, 0, 131072, 3670216, 0, 131072, 3670217, 0, 131072, 3670218, 0, 131072, 3670219, 0, 131072, 3670220, 0, 131072, 3670221, 0, 131072, 3670222, 0, 131072, 3670223, 0, 131072, 3670224, 0, 131072, 3670225, 0, 131072, 3801033, 0, 131072, 3801034, 0, 131072, 3801035, 0, 131072, 3801036, 0, 131072, 3801037, 0, 131072, 3801038, 0, 131072, 3801039, 0, 131072, 3801040, 0, 131072, 3801041, 0, 131072, 3801042, 0, 131072, 3801043, 0, 131072, 3801044, 0, 131072, 3801045, 0, 131072, 3801046, 0, 131072, 3801047, 0, 131072, 3801048, 0, 131072, 3801049, 0, 131072, 3801050, 0, 131072, 3801051, 0, 131072, 3801052, 0, 131072, 3801053, 0, 131072, 3801054, 0, 131072, 3801055, 0, 131072, 3801056, 0, 131072, 3801057, 0, 131072, 3801058, 0, 131072, 3801059, 0, 131072, 3801060, 0, 131072, 3801061, 0, 131072, 3801062, 0, 131072, 3801063, 0, 131072, 3801064, 0, 131072, 3801065, 0, 131072, 3801066, 0, 131072, 3801067, 0, 131072, 3801068, 0, 131072, 3801069, 0, 131072, 3801070, 0, 131072, 3801071, 0, 131072, 3801072, 0, 131072, 3801073, 0, 131072, 3801074, 0, 131072, 3801075, 0, 131072, 3801076, 0, 131072, 3801077, 0, 131072, 3801078, 0, 131072, 3801079, 0, 131072, 3801080, 0, 131072, 3801081, 0, 131072, 3801082, 0, 131072, 3801083, 0, 131072, 3801084, 0, 131072, 3801085, 0, 131072, 3801086, 0, 131072, 3801087, 0, 131072, 3735552, 0, 131072, 3735553, 0, 131072, 3735554, 0, 131072, 3735555, 0, 131072, 3735556, 0, 131072, 3735557, 0, 131072, 3735558, 0, 131072, 3735559, 0, 131072, 3735560, 0, 131072, 3735561, 0, 131072, 3735562, 0, 131072, 3735563, 0, 131072, 3735564, 0, 131072, 3735565, 0, 131072, 3735566, 0, 131072, 3735567, 0, 131072, 3735568, 0, 131072, 3735569, 0, 131072, 3735570, 0, 131072, 3735571, 0, 131072, 3735572, 0, 131072, 3735573, 0, 131072, 3735574, 0, 131072, 3735575, 0, 131072, 3735576, 0, 131072, 3735577, 0, 131072, 3735578, 0, 131072, 3735579, 0, 131072, 3735580, 0, 131072, 3735581, 0, 131072, 3735582, 0, 131072, 3735583, 0, 131072, 3735584, 0, 131072, 3735585, 0, 131072, 3735586, 0, 131072, 3735587, 0, 131072, 3735588, 0, 131072, 3735589, 0, 131072, 3735590, 0, 131072, 3735591, 0, 131072, 3735592, 0, 131072, 3735593, 0, 131072, 3735594, 0, 131072, 3735595, 0, 131072, 3735596, 0, 131072, 3735597, 0, 131072, 3735598, 0, 131072, 3735599, 0, 131072, 3735600, 0, 131072, 3735601, 0, 131072, 3735602, 0, 131072, 3735603, 0, 131072, 3735604, 0, 131072, 3735605, 0, 131072, 3735606, 0, 131072, 3735607, 0, 131072, 3735608, 0, 131072, 3735609, 0, 131072, 3735610, 0, 131072, 3735611, 0, 131072, 3735612, 0, 131072, 3735613, 0, 131072, 3735614, 0, 131072, 3735615, 0, 131072, 3735616, 0, 131072, 3735617, 0, 131072, 3735618, 0, 131072, 3735619, 0, 131072, 3735620, 0, 131072, 3735621, 0, 131072, 3735622, 0, 131072, 3735623, 0, 131072, 3735624, 0, 131072, 3735625, 0, 131072, 3735626, 0, 131072, 3735627, 0, 131072, 3735628, 0, 131072, 3735629, 0, 131072, 3735630, 0, 131072, 3735631, 0, 131072, 3735632, 0, 131072, 3735633, 0, 131072, 3735634, 0, 131072, 3735635, 0, 131072, 3735636, 0, 131072, 3735637, 0, 131072, 3735638, 0, 131072, 3735639, 0, 131072, 3735640, 0, 131072, 3735641, 0, 131072, 3735642, 0, 131072, 3735643, 0, 131072, 3735644, 0, 131072, 3735645, 0, 131072, 3735646, 0, 131072, 3735647, 0, 131072, 3735648, 0, 131072, 3735649, 0, 131072, 3735650, 0, 131072, 3735651, 0, 131072, 3735652, 0, 131072, 3735653, 0, 131072, 3735654, 0, 131072, 3735655, 0, 131072, 3735656, 0, 131072, 3735657, 0, 131072, 3735658, 0, 131072, 3735659, 0, 131072, 3735660, 0, 131072, 3735661, 0, 131072, 3735662, 0, 131072, 3735663, 0, 131072, 3735664, 0, 131072, 3735665, 0, 131072, 3735666, 0, 131072, 3735667, 0, 131072, 3735668, 0, 131072, 3735669, 0, 131072, 3735670, 0, 131072, 3735671, 0, 131072, 3735672, 0, 131072, 3735673, 0, 131072, 3735674, 0, 131072, 3735675, 0, 131072, 3735676, 0, 131072, 3735677, 0, 131072, 3735678, 0, 131072, 3735679, 0, 131072, 3735680, 0, 131072, 3735681, 0, 131072, 3735682, 0, 131072, 3735683, 0, 131072, 3735684, 0, 131072, 3735685, 0, 131072, 3735686, 0, 131072, 3735687, 0, 131072, 3735688, 0, 131072, 3735689, 0, 131072, 3735690, 0, 131072, 3735691, 0, 131072, 3735692, 0, 131072, 3735693, 0, 131072, 3735694, 0, 131072, 3735695, 0, 131072, 3735696, 0, 131072, 3735697, 0, 131072, 3735698, 0, 131072, 3735699, 0, 131072, 3735700, 0, 131072, 3735701, 0, 131072, 3735702, 0, 131072, 3735703, 0, 131072, 3735704, 0, 131072, 3735705, 0, 131072, 3735706, 0, 131072, 3735707, 0, 131072, 3735708, 0, 131072, 3735709, 0, 131072, 3735710, 0, 131072, 3735711, 0, 131072, 3735712, 0, 131072, 3735713, 0, 131072, 3735714, 0, 131072, 3735715, 0, 131072, 3735716, 0, 131072, 3735717, 0, 131072, 3735718, 0, 131072, 3735719, 0, 131072, 3735720, 0, 131072, 3735721, 0, 131072, 3735722, 0, 131072, 3735723, 0, 131072, 3735724, 0, 131072, 3735725, 0, 131072, 3735726, 0, 131072, 3735727, 0, 131072, 3735728, 0, 131072, 3735729, 0, 131072, 3735730, 0, 131072, 3735731, 0, 131072, 3735732, 0, 131072, 3735733, 0, 131072, 3735734, 0, 131072, 3735735, 0, 131072, 3735736, 0, 131072, 3735737, 0, 131072, 3735738, 0, 131072, 3735739, 0, 131072, 3735740, 0, 131072, 3735741, 0, 131072, 3735742, 0, 131072, 3735743, 0, 131072, 3735744, 0, 131072, 3735745, 0, 131072, 3735746, 0, 131072, 3735747, 0, 131072, 3735748, 0, 131072, 3735749, 0, 131072, 3735750, 0, 131072, 3735751, 0, 131072, 3735752, 0, 131072, 3735753, 0, 131072, 3735754, 0, 131072, 3735755, 0, 131072, 3735756, 0, 131072, 3735757, 0, 131072, 3735758, 0, 131072, 3735759, 0, 131072, 3735760, 0, 131072, 3735761, 0, 131072, 3866570, 0, 131072, 3866571, 0, 131072, 3866572, 0, 131072, 3866573, 0, 131072, 3866574, 0, 131072, 3866575, 0, 131072, 3866576, 0, 131072, 3866577, 0, 131072, 3866578, 0, 131072, 3866579, 0, 131072, 3866580, 0, 131072, 3866581, 0, 131072, 3866582, 0, 131072, 3866583, 0, 131072, 3866584, 0, 131072, 3866585, 0, 131072, 3866586, 0, 131072, 3866587, 0, 131072, 3866588, 0, 131072, 3866589, 0, 131072, 3866590, 0, 131072, 3866591, 0, 131072, 3866592, 0, 131072, 3866593, 0, 131072, 3866594, 0, 131072, 3866595, 0, 131072, 3866596, 0, 131072, 3866597, 0, 131072, 3866598, 0, 131072, 3866599, 0, 131072, 3866600, 0, 131072, 3866601, 0, 131072, 3866602, 0, 131072, 3866603, 0, 131072, 3866604, 0, 131072, 3866605, 0, 131072, 3866606, 0, 131072, 3866607, 0, 131072, 3866608, 0, 131072, 3866609, 0, 131072, 3866610, 0, 131072, 3866611, 0, 131072, 3866612, 0, 131072, 3866613, 0, 131072, 3866614, 0, 131072, 3866615, 0, 131072, 3866616, 0, 131072, 3866617, 0, 131072, 3866618, 0, 131072, 3866619, 0, 131072, 3866620, 0, 131072, 3866621, 0, 131072, 3866622, 0, 131072, 3866623, 0, 131072, 3801088, 0, 131072, 3801089, 0, 131072, 3801090, 0, 131072, 3801091, 0, 131072, 3801092, 0, 131072, 3801093, 0, 131072, 3801094, 0, 131072, 3801095, 0, 131072, 3801096, 0, 131072, 3801097, 0, 131072, 3801098, 0, 131072, 3801099, 0, 131072, 3801100, 0, 131072, 3801101, 0, 131072, 3801102, 0, 131072, 3801103, 0, 131072, 3801104, 0, 131072, 3801105, 0, 131072, 3801106, 0, 131072, 3801107, 0, 131072, 3801108, 0, 131072, 3801109, 0, 131072, 3801110, 0, 131072, 3801111, 0, 131072, 3801112, 0, 131072, 3801113, 0, 131072, 3801114, 0, 131072, 3801115, 0, 131072, 3801116, 0, 131072, 3801117, 0, 131072, 3801118, 0, 131072, 3801119, 0, 131072, 3801120, 0, 131072, 3801121, 0, 131072, 3801122, 0, 131072, 3801123, 0, 131072, 3801124, 0, 131072, 3801125, 0, 131072, 3801126, 0, 131072, 3801127, 0, 131072, 3801128, 0, 131072, 3801129, 0, 131072, 3801130, 0, 131072, 3801131, 0, 131072, 3801132, 0, 131072, 3801133, 0, 131072, 3801134, 0, 131072, 3801135, 0, 131072, 3801136, 0, 131072, 3801137, 0, 131072, 3801138, 0, 131072, 3801139, 0, 131072, 3801140, 0, 131072, 3801141, 0, 131072, 3801142, 0, 131072, 3801143, 0, 131072, 3801144, 0, 131072, 3801145, 0, 131072, 3801146, 0, 131072, 3801147, 0, 131072, 3801148, 0, 131072, 3801149, 0, 131072, 3801150, 0, 131072, 3801151, 0, 131072, 3801152, 0, 131072, 3801153, 0, 131072, 3801154, 0, 131072, 3801155, 0, 131072, 3801156, 0, 131072, 3801157, 0, 131072, 3801158, 0, 131072, 3801159, 0, 131072, 3801160, 0, 131072, 3801161, 0, 131072, 3801162, 0, 131072, 3801163, 0, 131072, 3801164, 0, 131072, 3801165, 0, 131072, 3801166, 0, 131072, 3801167, 0, 131072, 3801168, 0, 131072, 3801169, 0, 131072, 3801170, 0, 131072, 3801171, 0, 131072, 3801172, 0, 131072, 3801173, 0, 131072, 3801174, 0, 131072, 3801175, 0, 131072, 3801176, 0, 131072, 3801177, 0, 131072, 3801178, 0, 131072, 3801179, 0, 131072, 3801180, 0, 131072, 3801181, 0, 131072, 3801182, 0, 131072, 3801183, 0, 131072, 3801184, 0, 131072, 3801185, 0, 131072, 3801186, 0, 131072, 3801187, 0, 131072, 3801188, 0, 131072, 3801189, 0, 131072, 3801190, 0, 131072, 3801191, 0, 131072, 3801192, 0, 131072, 3801193, 0, 131072, 3801194, 0, 131072, 3801195, 0, 131072, 3801196, 0, 131072, 3801197, 0, 131072, 3801198, 0, 131072, 3801199, 0, 131072, 3801200, 0, 131072, 3801201, 0, 131072, 3801202, 0, 131072, 3801203, 0, 131072, 3801204, 0, 131072, 3801205, 0, 131072, 3801206, 0, 131072, 3801207, 0, 131072, 3801208, 0, 131072, 3801209, 0, 131072, 3801210, 0, 131072, 3801211, 0, 131072, 3801212, 0, 131072, 3801213, 0, 131072, 3801214, 0, 131072, 3801215, 0, 131072, 3801216, 0, 131072, 3801217, 0, 131072, 3801218, 0, 131072, 3801219, 0, 131072, 3801220, 0, 131072, 3801221, 0, 131072, 3801222, 0, 131072, 3801223, 0, 131072, 3801224, 0, 131072, 3801225, 0, 131072, 3801226, 0, 131072, 3801227, 0, 131072, 3801228, 0, 131072, 3801229, 0, 131072, 3801230, 0, 131072, 3801231, 0, 131072, 3801232, 0, 131072, 3801233, 0, 131072, 3801234, 0, 131072, 3801235, 0, 131072, 3801236, 0, 131072, 3801237, 0, 131072, 3801238, 0, 131072, 3801239, 0, 131072, 3801240, 0, 131072, 3801241, 0, 131072, 3801242, 0, 131072, 3801243, 0, 131072, 3801244, 0, 131072, 3801245, 0, 131072, 3801246, 0, 131072, 3801247, 0, 131072, 3801248, 0, 131072, 3801249, 0, 131072, 3801250, 0, 131072, 3801251, 0, 131072, 3801252, 0, 131072, 3801253, 0, 131072, 3801254, 0, 131072, 3801255, 0, 131072, 3801256, 0, 131072, 3801257, 0, 131072, 3801258, 0, 131072, 3801259, 0, 131072, 3801260, 0, 131072, 3801261, 0, 131072, 3801262, 0, 131072, 3801263, 0, 131072, 3801264, 0, 131072, 3801265, 0, 131072, 3801266, 0, 131072, 3801267, 0, 131072, 3801268, 0, 131072, 3801269, 0, 131072, 3801270, 0, 131072, 3801271, 0, 131072, 3801272, 0, 131072, 3801273, 0, 131072, 3801274, 0, 131072, 3801275, 0, 131072, 3801276, 0, 131072, 3801277, 0, 131072, 3801278, 0, 131072, 3801279, 0, 131072, 3801280, 0, 131072, 3801281, 0, 131072, 3801282, 0, 131072, 3801283, 0, 131072, 3801284, 0, 131072, 3801285, 0, 131072, 3801286, 0, 131072, 3801287, 0, 131072, 3801288, 0, 131072, 3801289, 0, 131072, 3801290, 0, 131072, 3801291, 0, 131072, 3801292, 0, 131072, 3801293, 0, 131072, 3801294, 0, 131072, 3801295, 0, 131072, 3801296, 0, 131072, 3801297, 0, 131072, 3932107, 0, 131072, 3932108, 0, 131072, 3932109, 0, 131072, 3932110, 0, 131072, 3932111, 0, 131072, 3932112, 0, 131072, 3932113, 0, 131072, 3932114, 0, 131072, 3932115, 0, 131072, 3932116, 0, 131072, 3932117, 0, 131072, 3932118, 0, 131072, 3932119, 0, 131072, 3932120, 0, 131072, 3932121, 0, 131072, 3932122, 0, 131072, 3932123, 0, 131072, 3932124, 0, 131072, 3932125, 0, 131072, 3932126, 0, 131072, 3932127, 0, 131072, 3932128, 0, 131072, 3932129, 0, 131072, 3932130, 0, 131072, 3932131, 0, 131072, 3932132, 0, 131072, 3932133, 0, 131072, 3932134, 0, 131072, 3932135, 0, 131072, 3932136, 0, 131072, 3932137, 0, 131072, 3932138, 0, 131072, 3932139, 0, 131072, 3932140, 0, 131072, 3932141, 0, 131072, 3932142, 0, 131072, 3932143, 0, 131072, 3932144, 0, 131072, 3932145, 0, 131072, 3932146, 0, 131072, 3932147, 0, 131072, 3932148, 0, 131072, 3932149, 0, 131072, 3932150, 0, 131072, 3932151, 0, 131072, 3932152, 0, 131072, 3932153, 0, 131072, 3932154, 0, 131072, 3932155, 0, 131072, 3932156, 0, 131072, 3932157, 0, 131072, 3932158, 0, 131072, 3932159, 0, 131072, 3866624, 0, 131072, 3866625, 0, 131072, 3866626, 0, 131072, 3866627, 0, 131072, 3866628, 0, 131072, 3866629, 0, 131072, 3866630, 0, 131072, 3866631, 0, 131072, 3866632, 0, 131072, 3866633, 0, 131072, 3866634, 0, 131072, 3866635, 0, 131072, 3866636, 0, 131072, 3866637, 0, 131072, 3866638, 0, 131072, 3866639, 0, 131072, 3866640, 0, 131072, 3866641, 0, 131072, 3866642, 0, 131072, 3866643, 0, 131072, 3866644, 0, 131072, 3866645, 0, 131072, 3866646, 0, 131072, 3866647, 0, 131072, 3866648, 0, 131072, 3866649, 0, 131072, 3866650, 0, 131072, 3866651, 0, 131072, 3866652, 0, 131072, 3866653, 0, 131072, 3866654, 0, 131072, 3866655, 0, 131072, 3866656, 0, 131072, 3866657, 0, 131072, 3866658, 0, 131072, 3866659, 0, 131072, 3866660, 0, 131072, 3866661, 0, 131072, 3866662, 0, 131072, 3866663, 0, 131072, 3866664, 0, 131072, 3866665, 0, 131072, 3866666, 0, 131072, 3866667, 0, 131072, 3866668, 0, 131072, 3866669, 0, 131072, 3866670, 0, 131072, 3866671, 0, 131072, 3866672, 0, 131072, 3866673, 0, 131072, 3866674, 0, 131072, 3866675, 0, 131072, 3866676, 0, 131072, 3866677, 0, 131072, 3866678, 0, 131072, 3866679, 0, 131072, 3866680, 0, 131072, 3866681, 0, 131072, 3866682, 0, 131072, 3866683, 0, 131072, 3866684, 0, 131072, 3866685, 0, 131072, 3866686, 0, 131072, 3866687, 0, 131072, 3866688, 0, 131072, 3866689, 0, 131072, 3866690, 0, 131072, 3866691, 0, 131072, 3866692, 0, 131072, 3866693, 0, 131072, 3866694, 0, 131072, 3866695, 0, 131072, 3866696, 0, 131072, 3866697, 0, 131072, 3866698, 0, 131072, 3866699, 0, 131072, 3866700, 0, 131072, 3866701, 0, 131072, 3866702, 0, 131072, 3866703, 0, 131072, 3866704, 0, 131072, 3866705, 0, 131072, 3866706, 0, 131072, 3866707, 0, 131072, 3866708, 0, 131072, 3866709, 0, 131072, 3866710, 0, 131072, 3866711, 0, 131072, 3866712, 0, 131072, 3866713, 0, 131072, 3866714, 0, 131072, 3866715, 0, 131072, 3866716, 0, 131072, 3866717, 0, 131072, 3866718, 0, 131072, 3866719, 0, 131072, 3866720, 0, 131072, 3866721, 0, 131072, 3866722, 0, 131072, 3866723, 0, 131072, 3866724, 0, 131072, 3866725, 0, 131072, 3866726, 0, 131072, 3866727, 0, 131072, 3866728, 0, 131072, 3866729, 0, 131072, 3866730, 0, 131072, 3866731, 0, 131072, 3866732, 0, 131072, 3866733, 0, 131072, 3866734, 0, 131072, 3866735, 0, 131072, 3866736, 0, 131072, 3866737, 0, 131072, 3866738, 0, 131072, 3866739, 0, 131072, 3866740, 0, 131072, 3866741, 0, 131072, 3866742, 0, 131072, 3866743, 0, 131072, 3866744, 0, 131072, 3866745, 0, 131072, 3866746, 0, 131072, 3866747, 0, 131072, 3866748, 0, 131072, 3866749, 0, 131072, 3866750, 0, 131072, 3866751, 0, 131072, 3866752, 0, 131072, 3866753, 0, 131072, 3866754, 0, 131072, 3866755, 0, 131072, 3866756, 0, 131072, 3866757, 0, 131072, 3866758, 0, 131072, 3866759, 0, 131072, 3866760, 0, 131072, 3866761, 0, 131072, 3866762, 0, 131072, 3866763, 0, 131072, 3866764, 0, 131072, 3866765, 0, 131072, 3866766, 0, 131072, 3866767, 0, 131072, 3866768, 0, 131072, 3866769, 0, 131072, 3866770, 0, 131072, 3866771, 0, 131072, 3866772, 0, 131072, 3866773, 0, 131072, 3866774, 0, 131072, 3866775, 0, 131072, 3866776, 0, 131072, 3866777, 0, 131072, 3866778, 0, 131072, 3866779, 0, 131072, 3866780, 0, 131072, 3866781, 0, 131072, 3866782, 0, 131072, 3866783, 0, 131072, 3866784, 0, 131072, 3866785, 0, 131072, 3866786, 0, 131072, 3866787, 0, 131072, 3866788, 0, 131072, 3866789, 0, 131072, 3866790, 0, 131072, 3866791, 0, 131072, 3866792, 0, 131072, 3866793, 0, 131072, 3866794, 0, 131072, 3866795, 0, 131072, 3866796, 0, 131072, 3866797, 0, 131072, 3866798, 0, 131072, 3866799, 0, 131072, 3866800, 0, 131072, 3866801, 0, 131072, 3866802, 0, 131072, 3866803, 0, 131072, 3866804, 0, 131072, 3866805, 0, 131072, 3866806, 0, 131072, 3866807, 0, 131072, 3866808, 0, 131072, 3866809, 0, 131072, 3866810, 0, 131072, 3866811, 0, 131072, 3866812, 0, 131072, 3866813, 0, 131072, 3866814, 0, 131072, 3866815, 0, 131072, 3866816, 0, 131072, 3866817, 0, 131072, 3866818, 0, 131072, 3866819, 0, 131072, 3866820, 0, 131072, 3866821, 0, 131072, 3866822, 0, 131072, 3866823, 0, 131072, 3866824, 0, 131072, 3866825, 0, 131072, 3866826, 0, 131072, 3866827, 0, 131072, 3866828, 0, 131072, 3866829, 0, 131072, 3866830, 0, 131072, 3866831, 0, 131072, 3866832, 0, 131072, 3997644, 0, 131072, 3997645, 0, 131072, 3997646, 0, 131072, 3997647, 0, 131072, 3997648, 0, 131072, 3997649, 0, 131072, 3997650, 0, 131072, 3997651, 0, 131072, 3997652, 0, 131072, 3997653, 0, 131072, 3997654, 0, 131072, 3997655, 0, 131072, 3997656, 0, 131072, 3997657, 0, 131072, 3997658, 0, 131072, 3997659, 0, 131072, 3997660, 0, 131072, 3997661, 0, 131072, 3997662, 0, 131072, 3997663, 0, 131072, 3997664, 0, 131072, 3997665, 0, 131072, 3997666, 0, 131072, 3997667, 0, 131072, 3997668, 0, 131072, 3997669, 0, 131072, 3997670, 0, 131072, 3997671, 0, 131072, 3997672, 0, 131072, 3997673, 0, 131072, 3997674, 0, 131072, 3997675, 0, 131072, 3997676, 0, 131072, 3997677, 0, 131072, 3997678, 0, 131072, 3997679, 0, 131072, 3997680, 0, 131072, 3997681, 0, 131072, 3997682, 0, 131072, 3997683, 0, 131072, 3997684, 0, 131072, 3997685, 0, 131072, 3997686, 0, 131072, 3997687, 0, 131072, 3997688, 0, 131072, 3997689, 0, 131072, 3997690, 0, 131072, 3997691, 0, 131072, 3997692, 0, 131072, 3997693, 0, 131072, 3997694, 0, 131072, 3997695, 0, 131072, 3932160, 0, 131072, 3932161, 0, 131072, 3932162, 0, 131072, 3932163, 0, 131072, 3932164, 0, 131072, 3932165, 0, 131072, 3932166, 0, 131072, 3932167, 0, 131072, 3932168, 0, 131072, 3932169, 0, 131072, 3932170, 0, 131072, 3932171, 0, 131072, 3932172, 0, 131072, 3932173, 0, 131072, 3932174, 0, 131072, 3932175, 0, 131072, 3932176, 0, 131072, 3932177, 0, 131072, 3932178, 0, 131072, 3932179, 0, 131072, 3932180, 0, 131072, 3932181, 0, 131072, 3932182, 0, 131072, 3932183, 0, 131072, 3932184, 0, 131072, 3932185, 0, 131072, 3932186, 0, 131072, 3932187, 0, 131072, 3932188, 0, 131072, 3932189, 0, 131072, 3932190, 0, 131072, 3932191, 0, 131072, 3932192, 0, 131072, 3932193, 0, 131072, 3932194, 0, 131072, 3932195, 0, 131072, 3932196, 0, 131072, 3932197, 0, 131072, 3932198, 0, 131072, 3932199, 0, 131072, 3932200, 0, 131072, 3932201, 0, 131072, 3932202, 0, 131072, 3932203, 0, 131072, 3932204, 0, 131072, 3932205, 0, 131072, 3932206, 0, 131072, 3932207, 0, 131072, 3932208, 0, 131072, 3932209, 0, 131072, 3932210, 0, 131072, 3932211, 0, 131072, 3932212, 0, 131072, 3932213, 0, 131072, 3932214, 0, 131072, 3932215, 0, 131072, 3932216, 0, 131072, 3932217, 0, 131072, 3932218, 0, 131072, 3932219, 0, 131072, 3932220, 0, 131072, 3932221, 0, 131072, 3932222, 0, 131072, 3932223, 0, 131072, 3932224, 0, 131072, 3932225, 0, 131072, 3932226, 0, 131072, 3932227, 0, 131072, 3932228, 0, 131072, 3932229, 0, 131072, 3932230, 0, 131072, 3932231, 0, 131072, 3932232, 0, 131072, 3932233, 0, 131072, 3932234, 0, 131072, 3932235, 0, 131072, 3932236, 0, 131072, 3932237, 0, 131072, 3932238, 0, 131072, 3932239, 0, 131072, 3932240, 0, 131072, 3932241, 0, 131072, 3932242, 0, 131072, 3932243, 0, 131072, 3932244, 0, 131072, 3932245, 0, 131072, 3932246, 0, 131072, 3932247, 0, 131072, 3932248, 0, 131072, 3932249, 0, 131072, 3932250, 0, 131072, 3932251, 0, 131072, 3932252, 0, 131072, 3932253, 0, 131072, 3932254, 0, 131072, 3932255, 0, 131072, 3932256, 0, 131072, 3932257, 0, 131072, 3932258, 0, 131072, 3932259, 0, 131072, 3932260, 0, 131072, 3932261, 0, 131072, 3932262, 0, 131072, 3932263, 0, 131072, 3932264, 0, 131072, 3932265, 0, 131072, 3932266, 0, 131072, 3932267, 0, 131072, 3932268, 0, 131072, 3932269, 0, 131072, 3932270, 0, 131072, 3932271, 0, 131072, 3932272, 0, 131072, 3932273, 0, 131072, 3932274, 0, 131072, 3932275, 0, 131072, 3932276, 0, 131072, 3932277, 0, 131072, 3932278, 0, 131072, 3932279, 0, 131072, 3932280, 0, 131072, 3932281, 0, 131072, 3932282, 0, 131072, 3932283, 0, 131072, 3932284, 0, 131072, 3932285, 0, 131072, 3932286, 0, 131072, 3932287, 0, 131072, 3932288, 0, 131072, 3932289, 0, 131072, 3932290, 0, 131072, 3932291, 0, 131072, 3932292, 0, 131072, 3932293, 0, 131072, 3932294, 0, 131072, 3932295, 0, 131072, 3932296, 0, 131072, 3932297, 0, 131072, 3932298, 0, 131072, 3932299, 0, 131072, 3932300, 0, 131072, 3932301, 0, 131072, 3932302, 0, 131072, 3932303, 0, 131072, 3932304, 0, 131072, 3932305, 0, 131072, 3932306, 0, 131072, 3932307, 0, 131072, 3932308, 0, 131072, 3932309, 0, 131072, 3932310, 0, 131072, 3932311, 0, 131072, 3932312, 0, 131072, 3932313, 0, 131072, 3932314, 0, 131072, 3932315, 0, 131072, 3932316, 0, 131072, 3932317, 0, 131072, 3932318, 0, 131072, 3932319, 0, 131072, 3932320, 0, 131072, 3932321, 0, 131072, 3932322, 0, 131072, 3932323, 0, 131072, 3932324, 0, 131072, 3932325, 0, 131072, 3932326, 0, 131072, 3932327, 0, 131072, 3932328, 0, 131072, 3932329, 0, 131072, 3932330, 0, 131072, 3932331, 0, 131072, 3932332, 0, 131072, 3932333, 0, 131072, 3932334, 0, 131072, 3932335, 0, 131072, 3932336, 0, 131072, 3932337, 0, 131072, 3932338, 0, 131072, 3932339, 0, 131072, 3932340, 0, 131072, 3932341, 0, 131072, 3932342, 0, 131072, 3932343, 0, 131072, 3932344, 0, 131072, 3932345, 0, 131072, 3932346, 0, 131072, 3932347, 0, 131072, 3932348, 0, 131072, 3932349, 0, 131072, 3932350, 0, 131072, 3932351, 0, 131072, 3932352, 0, 131072, 3932353, 0, 131072, 3932354, 0, 131072, 3932355, 0, 131072, 3932356, 0, 131072, 3932357, 0, 131072, 3932358, 0, 131072, 3932359, 0, 131072, 3932360, 0, 131072, 3932361, 0, 131072, 3932362, 0, 131072, 3932363, 0, 131072, 3932364, 0, 131072, 3932365, 0, 131072, 3932366, 0, 131072, 3932367, 0, 131072, 3932368, 0, 131072, 4063181, 0, 131072, 4063182, 0, 131072, 4063183, 0, 131072, 4063184, 0, 131072, 4063185, 0, 131072, 4063186, 0, 131072, 4063187, 0, 131072, 4063188, 0, 131072, 4063189, 0, 131072, 4063190, 0, 131072, 4063191, 0, 131072, 4063192, 0, 131072, 4063193, 0, 131072, 4063194, 0, 131072, 4063195, 0, 131072, 4063196, 0, 131072, 4063197, 0, 131072, 4063198, 0, 131072, 4063199, 0, 131072, 4063200, 0, 131072, 4063201, 0, 131072, 4063202, 0, 131072, 4063203, 0, 131072, 4063204, 0, 131072, 4063205, 0, 131072, 4063206, 0, 131072, 4063207, 0, 131072, 4063208, 0, 131072, 4063209, 0, 131072, 4063210, 0, 131072, 4063211, 0, 131072, 4063212, 0, 131072, 4063213, 0, 131072, 4063214, 0, 131072, 4063215, 0, 131072, 4063216, 0, 131072, 4063217, 0, 131072, 4063218, 0, 131072, 4063219, 0, 131072, 4063220, 0, 131072, 4063221, 0, 131072, 4063222, 0, 131072, 4063223, 0, 131072, 4063224, 0, 131072, 4063225, 0, 131072, 4063226, 0, 131072, 4063227, 0, 131072, 4063228, 0, 131072, 4063229, 0, 131072, 4063230, 0, 131072, 4063231, 0, 131072, 3997696, 0, 131072, 3997697, 0, 131072, 3997698, 0, 131072, 3997699, 0, 131072, 3997700, 0, 131072, 3997701, 0, 131072, 3997702, 0, 131072, 3997703, 0, 131072, 3997704, 0, 131072, 3997705, 0, 131072, 3997706, 0, 131072, 3997707, 0, 131072, 3997708, 0, 131072, 3997709, 0, 131072, 3997710, 0, 131072, 3997711, 0, 131072, 3997712, 0, 131072, 3997713, 0, 131072, 3997714, 0, 131072, 3997715, 0, 131072, 3997716, 0, 131072, 3997717, 0, 131072, 3997718, 0, 131072, 3997719, 0, 131072, 3997720, 0, 131072, 3997721, 0, 131072, 3997722, 0, 131072, 3997723, 0, 131072, 3997724, 0, 131072, 3997725, 0, 131072, 3997726, 0, 131072, 3997727, 0, 131072, 3997728, 0, 131072, 3997729, 0, 131072, 3997730, 0, 131072, 3997731, 0, 131072, 3997732, 0, 131072, 3997733, 0, 131072, 3997734, 0, 131072, 3997735, 0, 131072, 3997736, 0, 131072, 3997737, 0, 131072, 3997738, 0, 131072, 3997739, 0, 131072, 3997740, 0, 131072, 3997741, 0, 131072, 3997742, 0, 131072, 3997743, 0, 131072, 3997744, 0, 131072, 3997745, 0, 131072, 3997746, 0, 131072, 3997747, 0, 131072, 3997748, 0, 131072, 3997749, 0, 131072, 3997750, 0, 131072, 3997751, 0, 131072, 3997752, 0, 131072, 3997753, 0, 131072, 3997754, 0, 131072, 3997755, 0, 131072, 3997756, 0, 131072, 3997757, 0, 131072, 3997758, 0, 131072, 3997759, 0, 131072, 3997760, 0, 131072, 3997761, 0, 131072, 3997762, 0, 131072, 3997763, 0, 131072, 3997764, 0, 131072, 3997765, 0, 131072, 3997766, 0, 131072, 3997767, 0, 131072, 3997768, 0, 131072, 3997769, 0, 131072, 3997770, 0, 131072, 3997771, 0, 131072, 3997772, 0, 131072, 3997773, 0, 131072, 3997774, 0, 131072, 3997775, 0, 131072, 3997776, 0, 131072, 3997777, 0, 131072, 3997778, 0, 131072, 3997779, 0, 131072, 3997780, 0, 131072, 3997781, 0, 131072, 3997782, 0, 131072, 3997783, 0, 131072, 3997784, 0, 131072, 3997785, 0, 131072, 3997786, 0, 131072, 3997787, 0, 131072, 3997788, 0, 131072, 3997789, 0, 131072, 3997790, 0, 131072, 3997791, 0, 131072, 3997792, 0, 131072, 3997793, 0, 131072, 3997794, 0, 131072, 3997795, 0, 131072, 3997796, 0, 131072, 3997797, 0, 131072, 3997798, 0, 131072, 3997799, 0, 131072, 3997800, 0, 131072, 3997801, 0, 131072, 3997802, 0, 131072, 3997803, 0, 131072, 3997804, 0, 131072, 3997805, 0, 131072, 3997806, 0, 131072, 3997807, 0, 131072, 3997808, 0, 131072, 3997809, 0, 131072, 3997810, 0, 131072, 3997811, 0, 131072, 3997812, 0, 131072, 3997813, 0, 131072, 3997814, 0, 131072, 3997815, 0, 131072, 3997816, 0, 131072, 3997817, 0, 131072, 3997818, 0, 131072, 3997819, 0, 131072, 3997820, 0, 131072, 3997821, 0, 131072, 3997822, 0, 131072, 3997823, 0, 131072, 3997824, 0, 131072, 3997825, 0, 131072, 3997826, 0, 131072, 3997827, 0, 131072, 3997828, 0, 131072, 3997829, 0, 131072, 3997830, 0, 131072, 3997831, 0, 131072, 3997832, 0, 131072, 3997833, 0, 131072, 3997834, 0, 131072, 3997835, 0, 131072, 3997836, 0, 131072, 3997837, 0, 131072, 3997838, 0, 131072, 3997839, 0, 131072, 3997840, 0, 131072, 3997841, 0, 131072, 3997842, 0, 131072, 3997843, 0, 131072, 3997844, 0, 131072, 3997845, 0, 131072, 3997846, 0, 131072, 3997847, 0, 131072, 3997848, 0, 131072, 3997849, 0, 131072, 3997850, 0, 131072, 3997851, 0, 131072, 3997852, 0, 131072, 3997853, 0, 131072, 3997854, 0, 131072, 3997855, 0, 131072, 3997856, 0, 131072, 3997857, 0, 131072, 3997858, 0, 131072, 3997859, 0, 131072, 3997860, 0, 131072, 3997861, 0, 131072, 3997862, 0, 131072, 3997863, 0, 131072, 3997864, 0, 131072, 3997865, 0, 131072, 3997866, 0, 131072, 3997867, 0, 131072, 3997868, 0, 131072, 3997869, 0, 131072, 3997870, 0, 131072, 3997871, 0, 131072, 3997872, 0, 131072, 3997873, 0, 131072, 3997874, 0, 131072, 3997875, 0, 131072, 3997876, 0, 131072, 3997877, 0, 131072, 3997878, 0, 131072, 3997879, 0, 131072, 3997880, 0, 131072, 3997881, 0, 131072, 3997882, 0, 131072, 3997883, 0, 131072, 3997884, 0, 131072, 3997885, 0, 131072, 3997886, 0, 131072, 3997887, 0, 131072, 3997888, 0, 131072, 3997889, 0, 131072, 3997890, 0, 131072, 3997891, 0, 131072, 3997892, 0, 131072, 3997893, 0, 131072, 3997894, 0, 131072, 3997895, 0, 131072, 3997896, 0, 131072, 3997897, 0, 131072, 3997898, 0, 131072, 3997899, 0, 131072, 3997900, 0, 131072, 3997901, 0, 131072, 3997902, 0, 131072, 3997903, 0, 131072, 3997904, 0, 131072, 4128718, 0, 131072, 4128719, 0, 131072, 4128720, 0, 131072, 4128721, 0, 131072, 4128722, 0, 131072, 4128723, 0, 131072, 4128724, 0, 131072, 4128725, 0, 131072, 4128726, 0, 131072, 4128727, 0, 131072, 4128728, 0, 131072, 4128729, 0, 131072, 4128730, 0, 131072, 4128731, 0, 131072, 4128732, 0, 131072, 4128733, 0, 131072, 4128734, 0, 131072, 4128735, 0, 131072, 4128736, 0, 131072, 4128737, 0, 131072, 4128738, 0, 131072, 4128739, 0, 131072, 4128740, 0, 131072, 4128741, 0, 131072, 4128742, 0, 131072, 4128743, 0, 131072, 4128744, 0, 131072, 4128745, 0, 131072, 4128746, 0, 131072, 4128747, 0, 131072, 4128748, 0, 131072, 4128749, 0, 131072, 4128750, 0, 131072, 4128751, 0, 131072, 4128752, 0, 131072, 4128753, 0, 131072, 4128754, 0, 131072, 4128755, 0, 131072, 4128756, 0, 131072, 4128757, 0, 131072, 4128758, 0, 131072, 4128759, 0, 131072, 4128760, 0, 131072, 4128761, 0, 131072, 4128762, 0, 131072, 4128763, 0, 131072, 4128764, 0, 131072, 4128765, 0, 131072, 4128766, 0, 131072, 4128767, 0, 131072, 4063232, 0, 131072, 4063233, 0, 131072, 4063234, 0, 131072, 4063235, 0, 131072, 4063236, 0, 131072, 4063237, 0, 131072, 4063238, 0, 131072, 4063239, 0, 131072, 4063240, 0, 131072, 4063241, 0, 131072, 4063242, 0, 131072, 4063243, 0, 131072, 4063244, 0, 131072, 4063245, 0, 131072, 4063246, 0, 131072, 4063247, 0, 131072, 4063248, 0, 131072, 4063249, 0, 131072, 4063250, 0, 131072, 4063251, 0, 131072, 4063252, 0, 131072, 4063253, 0, 131072, 4063254, 0, 131072, 4063255, 0, 131072, 4063256, 0, 131072, 4063257, 0, 131072, 4063258, 0, 131072, 4063259, 0, 131072, 4063260, 0, 131072, 4063261, 0, 131072, 4063262, 0, 131072, 4063263, 0, 131072, 4063264, 0, 131072, 4063265, 0, 131072, 4063266, 0, 131072, 4063267, 0, 131072, 4063268, 0, 131072, 4063269, 0, 131072, 4063270, 0, 131072, 4063271, 0, 131072, 4063272, 0, 131072, 4063273, 0, 131072, 4063274, 0, 131072, 4063275, 0, 131072, 4063276, 0, 131072, 4063277, 0, 131072, 4063278, 0, 131072, 4063279, 0, 131072, 4063280, 0, 131072, 4063281, 0, 131072, 4063282, 0, 131072, 4063283, 0, 131072, 4063284, 0, 131072, 4063285, 0, 131072, 4063286, 0, 131072, 4063287, 0, 131072, 4063288, 0, 131072, 4063289, 0, 131072, 4063290, 0, 131072, 4063291, 0, 131072, 4063292, 0, 131072, 4063293, 0, 131072, 4063294, 0, 131072, 4063295, 0, 131072, 4063296, 0, 131072, 4063297, 0, 131072, 4063298, 0, 131072, 4063299, 0, 131072, 4063300, 0, 131072, 4063301, 0, 131072, 4063302, 0, 131072, 4063303, 0, 131072, 4063304, 0, 131072, 4063305, 0, 131072, 4063306, 0, 131072, 4063307, 0, 131072, 4063308, 0, 131072, 4063309, 0, 131072, 4063310, 0, 131072, 4063311, 0, 131072, 4063312, 0, 131072, 4063313, 0, 131072, 4063314, 0, 131072, 4063315, 0, 131072, 4063316, 0, 131072, 4063317, 0, 131072, 4063318, 0, 131072, 4063319, 0, 131072, 4063320, 0, 131072, 4063321, 0, 131072, 4063322, 0, 131072, 4063323, 0, 131072, 4063324, 0, 131072, 4063325, 0, 131072, 4063326, 0, 131072, 4063327, 0, 131072, 4063328, 0, 131072, 4063329, 0, 131072, 4063330, 0, 131072, 4063331, 0, 131072, 4063332, 0, 131072, 4063333, 0, 131072, 4063334, 0, 131072, 4063335, 0, 131072, 4063336, 0, 131072, 4063337, 0, 131072, 4063338, 0, 131072, 4063339, 0, 131072, 4063340, 0, 131072, 4063341, 0, 131072, 4063342, 0, 131072, 4063343, 0, 131072, 4063344, 0, 131072, 4063345, 0, 131072, 4063346, 0, 131072, 4063347, 0, 131072, 4063348, 0, 131072, 4063349, 0, 131072, 4063350, 0, 131072, 4063351, 0, 131072, 4063352, 0, 131072, 4063353, 0, 131072, 4063354, 0, 131072, 4063355, 0, 131072, 4063356, 0, 131072, 4063357, 0, 131072, 4063358, 0, 131072, 4063359, 0, 131072, 4063360, 0, 131072, 4063361, 0, 131072, 4063362, 0, 131072, 4063363, 0, 131072, 4063364, 0, 131072, 4063365, 0, 131072, 4063366, 0, 131072, 4063367, 0, 131072, 4063368, 0, 131072, 4063369, 0, 131072, 4063370, 0, 131072, 4063371, 0, 131072, 4063372, 0, 131072, 4063373, 0, 131072, 4063374, 0, 131072, 4063375, 0, 131072, 4063376, 0, 131072, 4063377, 0, 131072, 4063378, 0, 131072, 4063379, 0, 131072, 4063380, 0, 131072, 4063381, 0, 131072, 4063382, 0, 131072, 4063383, 0, 131072, 4063384, 0, 131072, 4063385, 0, 131072, 4063386, 0, 131072, 4063387, 0, 131072, 4063388, 0, 131072, 4063389, 0, 131072, 4063390, 0, 131072, 4063391, 0, 131072, 4063392, 0, 131072, 4063393, 0, 131072, 4063394, 0, 131072, 4063395, 0, 131072, 4063396, 0, 131072, 4063397, 0, 131072, 4063398, 0, 131072, 4063399, 0, 131072, 4063400, 0, 131072, 4063401, 0, 131072, 4063402, 0, 131072, 4063403, 0, 131072, 4063404, 0, 131072, 4063405, 0, 131072, 4063406, 0, 131072, 4063407, 0, 131072, 4063408, 0, 131072, 4063409, 0, 131072, 4063410, 0, 131072, 4063411, 0, 131072, 4063412, 0, 131072, 4063413, 0, 131072, 4063414, 0, 131072, 4063415, 0, 131072, 4063416, 0, 131072, 4063417, 0, 131072, 4063418, 0, 131072, 4063419, 0, 131072, 4063420, 0, 131072, 4063421, 0, 131072, 4063422, 0, 131072, 4063423, 0, 131072, 4063424, 0, 131072, 4063425, 0, 131072, 4063426, 0, 131072, 4063427, 0, 131072, 4063428, 0, 131072, 4063429, 0, 131072, 4063430, 0, 131072, 4063431, 0, 131072, 4063432, 0, 131072, 4063433, 0, 131072, 4063434, 0, 131072, 4063435, 0, 131072, 4063436, 0, 131072, 4063437, 0, 131072, 4063438, 0, 131072, 4063439, 0, 131072, 4194255, 0, 131072, 4194256, 0, 131072, 4194257, 0, 131072, 4194258, 0, 131072, 4194259, 0, 131072, 4194260, 0, 131072, 4194261, 0, 131072, 4194262, 0, 131072, 4194263, 0, 131072, 4194264, 0, 131072, 4194265, 0, 131072, 4194266, 0, 131072, 4194267, 0, 131072, 4194268, 0, 131072, 4194269, 0, 131072, 4194270, 0, 131072, 4194271, 0, 131072, 4194272, 0, 131072, 4194273, 0, 131072, 4194274, 0, 131072, 4194275, 0, 131072, 4194276, 0, 131072, 4194277, 0, 131072, 4194278, 0, 131072, 4194279, 0, 131072, 4194280, 0, 131072, 4194281, 0, 131072, 4194282, 0, 131072, 4194283, 0, 131072, 4194284, 0, 131072, 4194285, 0, 131072, 4194286, 0, 131072, 4194287, 0, 131072, 4194288, 0, 131072, 4194289, 0, 131072, 4194290, 0, 131072, 4194291, 0, 131072, 4194292, 0, 131072, 4194293, 0, 131072, 4194294, 0, 131072, 4194295, 0, 131072, 4194296, 0, 131072, 4194297, 0, 131072, 4194298, 0, 131072, 4194299, 0, 131072, 4194300, 0, 131072, 4194301, 0, 131072, 4194302, 0, 131072, 4194303, 0, 131072, 4128768, 0, 131072, 4128769, 0, 131072, 4128770, 0, 131072, 4128771, 0, 131072, 4128772, 0, 131072, 4128773, 0, 131072, 4128774, 0, 131072, 4128775, 0, 131072, 4128776, 0, 131072, 4128777, 0, 131072, 4128778, 0, 131072, 4128779, 0, 131072, 4128780, 0, 131072, 4128781, 0, 131072, 4128782, 0, 131072, 4128783, 0, 131072, 4128784, 0, 131072, 4128785, 0, 131072, 4128786, 0, 131072, 4128787, 0, 131072, 4128788, 0, 131072, 4128789, 0, 131072, 4128790, 0, 131072, 4128791, 0, 131072, 4128792, 0, 131072, 4128793, 0, 131072, 4128794, 0, 131072, 4128795, 0, 131072, 4128796, 0, 131072, 4128797, 0, 131072, 4128798, 0, 131072, 4128799, 0, 131072, 4128800, 0, 131072, 4128801, 0, 131072, 4128802, 0, 131072, 4128803, 0, 131072, 4128804, 0, 131072, 4128805, 0, 131072, 4128806, 0, 131072, 4128807, 0, 131072, 4128808, 0, 131072, 4128809, 0, 131072, 4128810, 0, 131072, 4128811, 0, 131072, 4128812, 0, 131072, 4128813, 0, 131072, 4128814, 0, 131072, 4128815, 0, 131072, 4128816, 0, 131072, 4128817, 0, 131072, 4128818, 0, 131072, 4128819, 0, 131072, 4128820, 0, 131072, 4128821, 0, 131072, 4128822, 0, 131072, 4128823, 0, 131072, 4128824, 0, 131072, 4128825, 0, 131072, 4128826, 0, 131072, 4128827, 0, 131072, 4128828, 0, 131072, 4128829, 0, 131072, 4128830, 0, 131072, 4128831, 0, 131072, 4128832, 0, 131072, 4128833, 0, 131072, 4128834, 0, 131072, 4128835, 0, 131072, 4128836, 0, 131072, 4128837, 0, 131072, 4128838, 0, 131072, 4128839, 0, 131072, 4128840, 0, 131072, 4128841, 0, 131072, 4128842, 0, 131072, 4128843, 0, 131072, 4128844, 0, 131072, 4128845, 0, 131072, 4128846, 0, 131072, 4128847, 0, 131072, 4128848, 0, 131072, 4128849, 0, 131072, 4128850, 0, 131072, 4128851, 0, 131072, 4128852, 0, 131072, 4128853, 0, 131072, 4128854, 0, 131072, 4128855, 0, 131072, 4128856, 0, 131072, 4128857, 0, 131072, 4128858, 0, 131072, 4128859, 0, 131072, 4128860, 0, 131072, 4128861, 0, 131072, 4128862, 0, 131072, 4128863, 0, 131072, 4128864, 0, 131072, 4128865, 0, 131072, 4128866, 0, 131072, 4128867, 0, 131072, 4128868, 0, 131072, 4128869, 0, 131072, 4128870, 0, 131072, 4128871, 0, 131072, 4128872, 0, 131072, 4128873, 0, 131072, 4128874, 0, 131072, 4128875, 0, 131072, 4128876, 0, 131072, 4128877, 0, 131072, 4128878, 0, 131072, 4128879, 0, 131072, 4128880, 0, 131072, 4128881, 0, 131072, 4128882, 0, 131072, 4128883, 0, 131072, 4128884, 0, 131072, 4128885, 0, 131072, 4128886, 0, 131072, 4128887, 0, 131072, 4128888, 0, 131072, 4128889, 0, 131072, 4128890, 0, 131072, 4128891, 0, 131072, 4128892, 0, 131072, 4128893, 0, 131072, 4128894, 0, 131072, 4128895, 0, 131072, 4128896, 0, 131072, 4128897, 0, 131072, 4128898, 0, 131072, 4128899, 0, 131072, 4128900, 0, 131072, 4128901, 0, 131072, 4128902, 0, 131072, 4128903, 0, 131072, 4128904, 0, 131072, 4128905, 0, 131072, 4128906, 0, 131072, 4128907, 0, 131072, 4128908, 0, 131072, 4128909, 0, 131072, 4128910, 0, 131072, 4128911, 0, 131072, 4128912, 0, 131072, 4128913, 0, 131072, 4128914, 0, 131072, 4128915, 0, 131072, 4128916, 0, 131072, 4128917, 0, 131072, 4128918, 0, 131072, 4128919, 0, 131072, 4128920, 0, 131072, 4128921, 0, 131072, 4128922, 0, 131072, 4128923, 0, 131072, 4128924, 0, 131072, 4128925, 0, 131072, 4128926, 0, 131072, 4128927, 0, 131072, 4128928, 0, 131072, 4128929, 0, 131072, 4128930, 0, 131072, 4128931, 0, 131072, 4128932, 0, 131072, 4128933, 0, 131072, 4128934, 0, 131072, 4128935, 0, 131072, 4128936, 0, 131072, 4128937, 0, 131072, 4128938, 0, 131072, 4128939, 0, 131072, 4128940, 0, 131072, 4128941, 0, 131072, 4128942, 0, 131072, 4128943, 0, 131072, 4128944, 0, 131072, 4128945, 0, 131072, 4128946, 0, 131072, 4128947, 0, 131072, 4128948, 0, 131072, 4128949, 0, 131072, 4128950, 0, 131072, 4128951, 0, 131072, 4128952, 0, 131072, 4128953, 0, 131072, 4128954, 0, 131072, 4128955, 0, 131072, 4128956, 0, 131072, 4128957, 0, 131072, 4128958, 0, 131072, 4128959, 0, 131072, 4128960, 0, 131072, 4128961, 0, 131072, 4128962, 0, 131072, 4128963, 0, 131072, 4128964, 0, 131072, 4128965, 0, 131072, 4128966, 0, 131072, 4128967, 0, 131072, 4128968, 0, 131072, 4128969, 0, 131072, 4128970, 0, 131072, 4128971, 0, 131072, 4128972, 0, 131072, 4128973, 0, 131072, 4128974, 0, 131072, 4128975, 0, 131072, 4259793, 0, 131072, 4259794, 0, 131072, 4259795, 0, 131072, 4259796, 0, 131072, 4259797, 0, 131072, 4259798, 0, 131072, 4259799, 0, 131072, 4259800, 0, 131072, 4259801, 0, 131072, 4259802, 0, 131072, 4259803, 0, 131072, 4259804, 0, 131072, 4259805, 0, 131072, 4259806, 0, 131072, 4259807, 0, 131072, 4259808, 0, 131072, 4259809, 0, 131072, 4259810, 0, 131072, 4259811, 0, 131072, 4259812, 0, 131072, 4259813, 0, 131072, 4259814, 0, 131072, 4259815, 0, 131072, 4259816, 0, 131072, 4259817, 0, 131072, 4259818, 0, 131072, 4259819, 0, 131072, 4259820, 0, 131072, 4259821, 0, 131072, 4259822, 0, 131072, 4259823, 0, 131072, 4259824, 0, 131072, 4259825, 0, 131072, 4259826, 0, 131072, 4259827, 0, 131072, 4259828, 0, 131072, 4259829, 0, 131072, 4259830, 0, 131072, 4259831, 0, 131072, 4259832, 0, 131072, 4259833, 0, 131072, 4259834, 0, 131072, 4259835, 0, 131072, 4259836, 0, 131072, 4259837, 0, 131072, 4259838, 0, 131072, 4259839, 0, 131072, 4194304, 0, 131072, 4194305, 0, 131072, 4194306, 0, 131072, 4194307, 0, 131072, 4194308, 0, 131072, 4194309, 0, 131072, 4194310, 0, 131072, 4194311, 0, 131072, 4194312, 0, 131072, 4194313, 0, 131072, 4194314, 0, 131072, 4194315, 0, 131072, 4194316, 0, 131072, 4194317, 0, 131072, 4194318, 0, 131072, 4194319, 0, 131072, 4194320, 0, 131072, 4194321, 0, 131072, 4194322, 0, 131072, 4194323, 0, 131072, 4194324, 0, 131072, 4194325, 0, 131072, 4194326, 0, 131072, 4194327, 0, 131072, 4194328, 0, 131072, 4194329, 0, 131072, 4194330, 0, 131072, 4194331, 0, 131072, 4194332, 0, 131072, 4194333, 0, 131072, 4194334, 0, 131072, 4194335, 0, 131072, 4194336, 0, 131072, 4194337, 0, 131072, 4194338, 0, 131072, 4194339, 0, 131072, 4194340, 0, 131072, 4194341, 0, 131072, 4194342, 0, 131072, 4194343, 0, 131072, 4194344, 0, 131072, 4194345, 0, 131072, 4194346, 0, 131072, 4194347, 0, 131072, 4194348, 0, 131072, 4194349, 0, 131072, 4194350, 0, 131072, 4194351, 0, 131072, 4194352, 0, 131072, 4194353, 0, 131072, 4194354, 0, 131072, 4194355, 0, 131072, 4194356, 0, 131072, 4194357, 0, 131072, 4194358, 0, 131072, 4194359, 0, 131072, 4194360, 0, 131072, 4194361, 0, 131072, 4194362, 0, 131072, 4194363, 0, 131072, 4194364, 0, 131072, 4194365, 0, 131072, 4194366, 0, 131072, 4194367, 0, 131072, 4194368, 0, 131072, 4194369, 0, 131072, 4194370, 0, 131072, 4194371, 0, 131072, 4194372, 0, 131072, 4194373, 0, 131072, 4194374, 0, 131072, 4194375, 0, 131072, 4194376, 0, 131072, 4194377, 0, 131072, 4194378, 0, 131072, 4194379, 0, 131072, 4194380, 0, 131072, 4194381, 0, 131072, 4194382, 0, 131072, 4194383, 0, 131072, 4194384, 0, 131072, 4194385, 0, 131072, 4194386, 0, 131072, 4194387, 0, 131072, 4194388, 0, 131072, 4194389, 0, 131072, 4194390, 0, 131072, 4194391, 0, 131072, 4194392, 0, 131072, 4194393, 0, 131072, 4194394, 0, 131072, 4194395, 0, 131072, 4194396, 0, 131072, 4194397, 0, 131072, 4194398, 0, 131072, 4194399, 0, 131072, 4194400, 0, 131072, 4194401, 0, 131072, 4194402, 0, 131072, 4194403, 0, 131072, 4194404, 0, 131072, 4194405, 0, 131072, 4194406, 0, 131072, 4194407, 0, 131072, 4194408, 0, 131072, 4194409, 0, 131072, 4194410, 0, 131072, 4194411, 0, 131072, 4194412, 0, 131072, 4194413, 0, 131072, 4194414, 0, 131072, 4194415, 0, 131072, 4194416, 0, 131072, 4194417, 0, 131072, 4194418, 0, 131072, 4194419, 0, 131072, 4194420, 0, 131072, 4194421, 0, 131072, 4194422, 0, 131072, 4194423, 0, 131072, 4194424, 0, 131072, 4194425, 0, 131072, 4194426, 0, 131072, 4194427, 0, 131072, 4194428, 0, 131072, 4194429, 0, 131072, 4194430, 0, 131072, 4194431, 0, 131072, 4194432, 0, 131072, 4194433, 0, 131072, 4194434, 0, 131072, 4194435, 0, 131072, 4194436, 0, 131072, 4194437, 0, 131072, 4194438, 0, 131072, 4194439, 0, 131072, 4194440, 0, 131072, 4194441, 0, 131072, 4194442, 0, 131072, 4194443, 0, 131072, 4194444, 0, 131072, 4194445, 0, 131072, 4194446, 0, 131072, 4194447, 0, 131072, 4194448, 0, 131072, 4194449, 0, 131072, 4194450, 0, 131072, 4194451, 0, 131072, 4194452, 0, 131072, 4194453, 0, 131072, 4194454, 0, 131072, 4194455, 0, 131072, 4194456, 0, 131072, 4194457, 0, 131072, 4194458, 0, 131072, 4194459, 0, 131072, 4194460, 0, 131072, 4194461, 0, 131072, 4194462, 0, 131072, 4194463, 0, 131072, 4194464, 0, 131072, 4194465, 0, 131072, 4194466, 0, 131072, 4194467, 0, 131072, 4194468, 0, 131072, 4194469, 0, 131072, 4194470, 0, 131072, 4194471, 0, 131072, 4194472, 0, 131072, 4194473, 0, 131072, 4194474, 0, 131072, 4194475, 0, 131072, 4194476, 0, 131072, 4194477, 0, 131072, 4194478, 0, 131072, 4194479, 0, 131072, 4194480, 0, 131072, 4194481, 0, 131072, 4194482, 0, 131072, 4194483, 0, 131072, 4194484, 0, 131072, 4194485, 0, 131072, 4194486, 0, 131072, 4194487, 0, 131072, 4194488, 0, 131072, 4194489, 0, 131072, 4194490, 0, 131072, 4194491, 0, 131072, 4194492, 0, 131072, 4194493, 0, 131072, 4194494, 0, 131072, 4194495, 0, 131072, 4194496, 0, 131072, 4194497, 0, 131072, 4194498, 0, 131072, 4194499, 0, 131072, 4194500, 0, 131072, 4194501, 0, 131072, 4194502, 0, 131072, 4194503, 0, 131072, 4194504, 0, 131072, 4194505, 0, 131072, 4194506, 0, 131072, 4194507, 0, 131072, 4194508, 0, 131072, 4194509, 0, 131072, 4194510, 0, 131072, 4194511, 0, 131072, 4325330, 0, 131072, 4325331, 0, 131072, 4325332, 0, 131072, 4325333, 0, 131072, 4325334, 0, 131072, 4325335, 0, 131072, 4325336, 0, 131072, 4325337, 0, 131072, 4325338, 0, 131072, 4325339, 0, 131072, 4325340, 0, 131072, 4325341, 0, 131072, 4325342, 0, 131072, 4325343, 0, 131072, 4325344, 0, 131072, 4325345, 0, 131072, 4325346, 0, 131072, 4325347, 0, 131072, 4325348, 0, 131072, 4325349, 0, 131072, 4325350, 0, 131072, 4325351, 0, 131072, 4325352, 0, 131072, 4325353, 0, 131072, 4325354, 0, 131072, 4325355, 0, 131072, 4325356, 0, 131072, 4325357, 0, 131072, 4325358, 0, 131072, 4325359, 0, 131072, 4325360, 0, 131072, 4325361, 0, 131072, 4325362, 0, 131072, 4325363, 0, 131072, 4325364, 0, 131072, 4325365, 0, 131072, 4325366, 0, 131072, 4325367, 0, 131072, 4325368, 0, 131072, 4325369, 0, 131072, 4325370, 0, 131072, 4325371, 0, 131072, 4325372, 0, 131072, 4325373, 0, 131072, 4325374, 0, 131072, 4325375, 0, 131072, 4259840, 0, 131072, 4259841, 0, 131072, 4259842, 0, 131072, 4259843, 0, 131072, 4259844, 0, 131072, 4259845, 0, 131072, 4259846, 0, 131072, 4259847, 0, 131072, 4259848, 0, 131072, 4259849, 0, 131072, 4259850, 0, 131072, 4259851, 0, 131072, 4259852, 0, 131072, 4259853, 0, 131072, 4259854, 0, 131072, 4259855, 0, 131072, 4259856, 0, 131072, 4259857, 0, 131072, 4259858, 0, 131072, 4259859, 0, 131072, 4259860, 0, 131072, 4259861, 0, 131072, 4259862, 0, 131072, 4259863, 0, 131072, 4259864, 0, 131072, 4259865, 0, 131072, 4259866, 0, 131072, 4259867, 0, 131072, 4259868, 0, 131072, 4259869, 0, 131072, 4259870, 0, 131072, 4259871, 0, 131072, 4259872, 0, 131072, 4259873, 0, 131072, 4259874, 0, 131072, 4259875, 0, 131072, 4259876, 0, 131072, 4259877, 0, 131072, 4259878, 0, 131072, 4259879, 0, 131072, 4259880, 0, 131072, 4259881, 0, 131072, 4259882, 0, 131072, 4259883, 0, 131072, 4259884, 0, 131072, 4259885, 0, 131072, 4259886, 0, 131072, 4259887, 0, 131072, 4259888, 0, 131072, 4259889, 0, 131072, 4259890, 0, 131072, 4259891, 0, 131072, 4259892, 0, 131072, 4259893, 0, 131072, 4259894, 0, 131072, 4259895, 0, 131072, 4259896, 0, 131072, 4259897, 0, 131072, 4259898, 0, 131072, 4259899, 0, 131072, 4259900, 0, 131072, 4259901, 0, 131072, 4259902, 0, 131072, 4259903, 0, 131072, 4259904, 0, 131072, 4259905, 0, 131072, 4259906, 0, 131072, 4259907, 0, 131072, 4259908, 0, 131072, 4259909, 0, 131072, 4259910, 0, 131072, 4259911, 0, 131072, 4259912, 0, 131072, 4259913, 0, 131072, 4259914, 0, 131072, 4259915, 0, 131072, 4259916, 0, 131072, 4259917, 0, 131072, 4259918, 0, 131072, 4259919, 0, 131072, 4259920, 0, 131072, 4259921, 0, 131072, 4259922, 0, 131072, 4259923, 0, 131072, 4259924, 0, 131072, 4259925, 0, 131072, 4259926, 0, 131072, 4259927, 0, 131072, 4259928, 0, 131072, 4259929, 0, 131072, 4259930, 0, 131072, 4259931, 0, 131072, 4259932, 0, 131072, 4259933, 0, 131072, 4259934, 0, 131072, 4259935, 0, 131072, 4259936, 0, 131072, 4259937, 0, 131072, 4259938, 0, 131072, 4259939, 0, 131072, 4259940, 0, 131072, 4259941, 0, 131072, 4259942, 0, 131072, 4259943, 0, 131072, 4259944, 0, 131072, 4259945, 0, 131072, 4259946, 0, 131072, 4259947, 0, 131072, 4259948, 0, 131072, 4259949, 0, 131072, 4259950, 0, 131072, 4259951, 0, 131072, 4259952, 0, 131072, 4259953, 0, 131072, 4259954, 0, 131072, 4259955, 0, 131072, 4259956, 0, 131072, 4259957, 0, 131072, 4259958, 0, 131072, 4259959, 0, 131072, 4259960, 0, 131072, 4259961, 0, 131072, 4259962, 0, 131072, 4259963, 0, 131072, 4259964, 0, 131072, 4259965, 0, 131072, 4259966, 0, 131072, 4259967, 0, 131072, 4259968, 0, 131072, 4259969, 0, 131072, 4259970, 0, 131072, 4259971, 0, 131072, 4259972, 0, 131072, 4259973, 0, 131072, 4259974, 0, 131072, 4259975, 0, 131072, 4259976, 0, 131072, 4259977, 0, 131072, 4259978, 0, 131072, 4259979, 0, 131072, 4259980, 0, 131072, 4259981, 0, 131072, 4259982, 0, 131072, 4259983, 0, 131072, 4259984, 0, 131072, 4259985, 0, 131072, 4259986, 0, 131072, 4259987, 0, 131072, 4259988, 0, 131072, 4259989, 0, 131072, 4259990, 0, 131072, 4259991, 0, 131072, 4259992, 0, 131072, 4259993, 0, 131072, 4259994, 0, 131072, 4259995, 0, 131072, 4259996, 0, 131072, 4259997, 0, 131072, 4259998, 0, 131072, 4259999, 0, 131072, 4260000, 0, 131072, 4260001, 0, 131072, 4260002, 0, 131072, 4260003, 0, 131072, 4260004, 0, 131072, 4260005, 0, 131072, 4260006, 0, 131072, 4260007, 0, 131072, 4260008, 0, 131072, 4260009, 0, 131072, 4260010, 0, 131072, 4260011, 0, 131072, 4260012, 0, 131072, 4260013, 0, 131072, 4260014, 0, 131072, 4260015, 0, 131072, 4260016, 0, 131072, 4260017, 0, 131072, 4260018, 0, 131072, 4260019, 0, 131072, 4260020, 0, 131072, 4260021, 0, 131072, 4260022, 0, 131072, 4260023, 0, 131072, 4260024, 0, 131072, 4260025, 0, 131072, 4260026, 0, 131072, 4260027, 0, 131072, 4260028, 0, 131072, 4260029, 0, 131072, 4260030, 0, 131072, 4260031, 0, 131072, 4260032, 0, 131072, 4260033, 0, 131072, 4260034, 0, 131072, 4260035, 0, 131072, 4260036, 0, 131072, 4260037, 0, 131072, 4260038, 0, 131072, 4260039, 0, 131072, 4260040, 0, 131072, 4260041, 0, 131072, 4260042, 0, 131072, 4260043, 0, 131072, 4260044, 0, 131072, 4260045, 0, 131072, 4260046, 0, 131072, 4260047, 0, 131072, 4390867, 0, 131072, 4390868, 0, 131072, 4390869, 0, 131072, 4390870, 0, 131072, 4390871, 0, 131072, 4390872, 0, 131072, 4390873, 0, 131072, 4390874, 0, 131072, 4390875, 0, 131072, 4390876, 0, 131072, 4390877, 0, 131072, 4390878, 0, 131072, 4390879, 0, 131072, 4390880, 0, 131072, 4390881, 0, 131072, 4390882, 0, 131072, 4390883, 0, 131072, 4390884, 0, 131072, 4390885, 0, 131072, 4390886, 0, 131072, 4390887, 0, 131072, 4390888, 0, 131072, 4390889, 0, 131072, 4390890, 0, 131072, 4390891, 0, 131072, 4390892, 0, 131072, 4390893, 0, 131072, 4390894, 0, 131072, 4390895, 0, 131072, 4390896, 0, 131072, 4390897, 0, 131072, 4390898, 0, 131072, 4390899, 0, 131072, 4390900, 0, 131072, 4390901, 0, 131072, 4390902, 0, 131072, 4390903, 0, 131072, 4390904, 0, 131072, 4390905, 0, 131072, 4390906, 0, 131072, 4390907, 0, 131072, 4390908, 0, 131072, 4390909, 0, 131072, 4390910, 0, 131072, 4390911, 0, 131072, 4325376, 0, 131072, 4325377, 0, 131072, 4325378, 0, 131072, 4325379, 0, 131072, 4325380, 0, 131072, 4325381, 0, 131072, 4325382, 0, 131072, 4325383, 0, 131072, 4325384, 0, 131072, 4325385, 0, 131072, 4325386, 0, 131072, 4325387, 0, 131072, 4325388, 0, 131072, 4325389, 0, 131072, 4325390, 0, 131072, 4325391, 0, 131072, 4325392, 0, 131072, 4325393, 0, 131072, 4325394, 0, 131072, 4325395, 0, 131072, 4325396, 0, 131072, 4325397, 0, 131072, 4325398, 0, 131072, 4325399, 0, 131072, 4325400, 0, 131072, 4325401, 0, 131072, 4325402, 0, 131072, 4325403, 0, 131072, 4325404, 0, 131072, 4325405, 0, 131072, 4325406, 0, 131072, 4325407, 0, 131072, 4325408, 0, 131072, 4325409, 0, 131072, 4325410, 0, 131072, 4325411, 0, 131072, 4325412, 0, 131072, 4325413, 0, 131072, 4325414, 0, 131072, 4325415, 0, 131072, 4325416, 0, 131072, 4325417, 0, 131072, 4325418, 0, 131072, 4325419, 0, 131072, 4325420, 0, 131072, 4325421, 0, 131072, 4325422, 0, 131072, 4325423, 0, 131072, 4325424, 0, 131072, 4325425, 0, 131072, 4325426, 0, 131072, 4325427, 0, 131072, 4325428, 0, 131072, 4325429, 0, 131072, 4325430, 0, 131072, 4325431, 0, 131072, 4325432, 0, 131072, 4325433, 0, 131072, 4325434, 0, 131072, 4325435, 0, 131072, 4325436, 0, 131072, 4325437, 0, 131072, 4325438, 0, 131072, 4325439, 0, 131072, 4325440, 0, 131072, 4325441, 0, 131072, 4325442, 0, 131072, 4325443, 0, 131072, 4325444, 0, 131072, 4325445, 0, 131072, 4325446, 0, 131072, 4325447, 0, 131072, 4325448, 0, 131072, 4325449, 0, 131072, 4325450, 0, 131072, 4325451, 0, 131072, 4325452, 0, 131072, 4325453, 0, 131072, 4325454, 0, 131072, 4325455, 0, 131072, 4325456, 0, 131072, 4325457, 0, 131072, 4325458, 0, 131072, 4325459, 0, 131072, 4325460, 0, 131072, 4325461, 0, 131072, 4325462, 0, 131072, 4325463, 0, 131072, 4325464, 0, 131072, 4325465, 0, 131072, 4325466, 0, 131072, 4325467, 0, 131072, 4325468, 0, 131072, 4325469, 0, 131072, 4325470, 0, 131072, 4325471, 0, 131072, 4325472, 0, 131072, 4325473, 0, 131072, 4325474, 0, 131072, 4325475, 0, 131072, 4325476, 0, 131072, 4325477, 0, 131072, 4325478, 0, 131072, 4325479, 0, 131072, 4325480, 0, 131072, 4325481, 0, 131072, 4325482, 0, 131072, 4325483, 0, 131072, 4325484, 0, 131072, 4325485, 0, 131072, 4325486, 0, 131072, 4325487, 0, 131072, 4325488, 0, 131072, 4325489, 0, 131072, 4325490, 0, 131072, 4325491, 0, 131072, 4325492, 0, 131072, 4325493, 0, 131072, 4325494, 0, 131072, 4325495, 0, 131072, 4325496, 0, 131072, 4325497, 0, 131072, 4325498, 0, 131072, 4325499, 0, 131072, 4325500, 0, 131072, 4325501, 0, 131072, 4325502, 0, 131072, 4325503, 0, 131072, 4325504, 0, 131072, 4325505, 0, 131072, 4325506, 0, 131072, 4325507, 0, 131072, 4325508, 0, 131072, 4325509, 0, 131072, 4325510, 0, 131072, 4325511, 0, 131072, 4325512, 0, 131072, 4325513, 0, 131072, 4325514, 0, 131072, 4325515, 0, 131072, 4325516, 0, 131072, 4325517, 0, 131072, 4325518, 0, 131072, 4325519, 0, 131072, 4325520, 0, 131072, 4325521, 0, 131072, 4325522, 0, 131072, 4325523, 0, 131072, 4325524, 0, 131072, 4325525, 0, 131072, 4325526, 0, 131072, 4325527, 0, 131072, 4325528, 0, 131072, 4325529, 0, 131072, 4325530, 0, 131072, 4325531, 0, 131072, 4325532, 0, 131072, 4325533, 0, 131072, 4325534, 0, 131072, 4325535, 0, 131072, 4325536, 0, 131072, 4325537, 0, 131072, 4325538, 0, 131072, 4325539, 0, 131072, 4325540, 0, 131072, 4325541, 0, 131072, 4325542, 0, 131072, 4325543, 0, 131072, 4325544, 0, 131072, 4325545, 0, 131072, 4325546, 0, 131072, 4325547, 0, 131072, 4325548, 0, 131072, 4325549, 0, 131072, 4325550, 0, 131072, 4325551, 0, 131072, 4325552, 0, 131072, 4325553, 0, 131072, 4325554, 0, 131072, 4325555, 0, 131072, 4325556, 0, 131072, 4325557, 0, 131072, 4325558, 0, 131072, 4325559, 0, 131072, 4325560, 0, 131072, 4325561, 0, 131072, 4325562, 0, 131072, 4325563, 0, 131072, 4325564, 0, 131072, 4325565, 0, 131072, 4325566, 0, 131072, 4325567, 0, 131072, 4325568, 0, 131072, 4325569, 0, 131072, 4325570, 0, 131072, 4325571, 0, 131072, 4325572, 0, 131072, 4325573, 0, 131072, 4325574, 0, 131072, 4325575, 0, 131072, 4325576, 0, 131072, 4325577, 0, 131072, 4325578, 0, 131072, 4325579, 0, 131072, 4325580, 0, 131072, 4325581, 0, 131072, 4325582, 0, 131072, 4456404, 0, 131072, 4456405, 0, 131072, 4456406, 0, 131072, 4456407, 0, 131072, 4456408, 0, 131072, 4456409, 0, 131072, 4456410, 0, 131072, 4456411, 0, 131072, 4456412, 0, 131072, 4456413, 0, 131072, 4456414, 0, 131072, 4456415, 0, 131072, 4456416, 0, 131072, 4456417, 0, 131072, 4456418, 0, 131072, 4456419, 0, 131072, 4456420, 0, 131072, 4456421, 0, 131072, 4456422, 0, 131072, 4456423, 0, 131072, 4456424, 0, 131072, 4456425, 0, 131072, 4456426, 0, 131072, 4456427, 0, 131072, 4456428, 0, 131072, 4456429, 0, 131072, 4456430, 0, 131072, 4456431, 0, 131072, 4456432, 0, 131072, 4456433, 0, 131072, 4456434, 0, 131072, 4456435, 0, 131072, 4456436, 0, 131072, 4456437, 0, 131072, 4456438, 0, 131072, 4456439, 0, 131072, 4456440, 0, 131072, 4456441, 0, 131072, 4456442, 0, 131072, 4456443, 0, 131072, 4456444, 0, 131072, 4456445, 0, 131072, 4456446, 0, 131072, 4456447, 0, 131072, 4390912, 0, 131072, 4390913, 0, 131072, 4390914, 0, 131072, 4390915, 0, 131072, 4390916, 0, 131072, 4390917, 0, 131072, 4390918, 0, 131072, 4390919, 0, 131072, 4390920, 0, 131072, 4390921, 0, 131072, 4390922, 0, 131072, 4390923, 0, 131072, 4390924, 0, 131072, 4390925, 0, 131072, 4390926, 0, 131072, 4390927, 0, 131072, 4390928, 0, 131072, 4390929, 0, 131072, 4390930, 0, 131072, 4390931, 0, 131072, 4390932, 0, 131072, 4390933, 0, 131072, 4390934, 0, 131072, 4390935, 0, 131072, 4390936, 0, 131072, 4390937, 0, 131072, 4390938, 0, 131072, 4390939, 0, 131072, 4390940, 0, 131072, 4390941, 0, 131072, 4390942, 0, 131072, 4390943, 0, 131072, 4390944, 0, 131072, 4390945, 0, 131072, 4390946, 0, 131072, 4390947, 0, 131072, 4390948, 0, 131072, 4390949, 0, 131072, 4390950, 0, 131072, 4390951, 0, 131072, 4390952, 0, 131072, 4390953, 0, 131072, 4390954, 0, 131072, 4390955, 0, 131072, 4390956, 0, 131072, 4390957, 0, 131072, 4390958, 0, 131072, 4390959, 0, 131072, 4390960, 0, 131072, 4390961, 0, 131072, 4390962, 0, 131072, 4390963, 0, 131072, 4390964, 0, 131072, 4390965, 0, 131072, 4390966, 0, 131072, 4390967, 0, 131072, 4390968, 0, 131072, 4390969, 0, 131072, 4390970, 0, 131072, 4390971, 0, 131072, 4390972, 0, 131072, 4390973, 0, 131072, 4390974, 0, 131072, 4390975, 0, 131072, 4390976, 0, 131072, 4390977, 0, 131072, 4390978, 0, 131072, 4390979, 0, 131072, 4390980, 0, 131072, 4390981, 0, 131072, 4390982, 0, 131072, 4390983, 0, 131072, 4390984, 0, 131072, 4390985, 0, 131072, 4390986, 0, 131072, 4390987, 0, 131072, 4390988, 0, 131072, 4390989, 0, 131072, 4390990, 0, 131072, 4390991, 0, 131072, 4390992, 0, 131072, 4390993, 0, 131072, 4390994, 0, 131072, 4390995, 0, 131072, 4390996, 0, 131072, 4390997, 0, 131072, 4390998, 0, 131072, 4390999, 0, 131072, 4391000, 0, 131072, 4391001, 0, 131072, 4391002, 0, 131072, 4391003, 0, 131072, 4391004, 0, 131072, 4391005, 0, 131072, 4391006, 0, 131072, 4391007, 0, 131072, 4391008, 0, 131072, 4391009, 0, 131072, 4391010, 0, 131072, 4391011, 0, 131072, 4391012, 0, 131072, 4391013, 0, 131072, 4391014, 0, 131072, 4391015, 0, 131072, 4391016, 0, 131072, 4391017, 0, 131072, 4391018, 0, 131072, 4391019, 0, 131072, 4391020, 0, 131072, 4391021, 0, 131072, 4391022, 0, 131072, 4391023, 0, 131072, 4391024, 0, 131072, 4391025, 0, 131072, 4391026, 0, 131072, 4391027, 0, 131072, 4391028, 0, 131072, 4391029, 0, 131072, 4391030, 0, 131072, 4391031, 0, 131072, 4391032, 0, 131072, 4391033, 0, 131072, 4391034, 0, 131072, 4391035, 0, 131072, 4391036, 0, 131072, 4391037, 0, 131072, 4391038, 0, 131072, 4391039, 0, 131072, 4391040, 0, 131072, 4391041, 0, 131072, 4391042, 0, 131072, 4391043, 0, 131072, 4391044, 0, 131072, 4391045, 0, 131072, 4391046, 0, 131072, 4391047, 0, 131072, 4391048, 0, 131072, 4391049, 0, 131072, 4391050, 0, 131072, 4391051, 0, 131072, 4391052, 0, 131072, 4391053, 0, 131072, 4391054, 0, 131072, 4391055, 0, 131072, 4391056, 0, 131072, 4391057, 0, 131072, 4391058, 0, 131072, 4391059, 0, 131072, 4391060, 0, 131072, 4391061, 0, 131072, 4391062, 0, 131072, 4391063, 0, 131072, 4391064, 0, 131072, 4391065, 0, 131072, 4391066, 0, 131072, 4391067, 0, 131072, 4391068, 0, 131072, 4391069, 0, 131072, 4391070, 0, 131072, 4391071, 0, 131072, 4391072, 0, 131072, 4391073, 0, 131072, 4391074, 0, 131072, 4391075, 0, 131072, 4391076, 0, 131072, 4391077, 0, 131072, 4391078, 0, 131072, 4391079, 0, 131072, 4391080, 0, 131072, 4391081, 0, 131072, 4391082, 0, 131072, 4391083, 0, 131072, 4391084, 0, 131072, 4391085, 0, 131072, 4391086, 0, 131072, 4391087, 0, 131072, 4391088, 0, 131072, 4391089, 0, 131072, 4391090, 0, 131072, 4391091, 0, 131072, 4391092, 0, 131072, 4391093, 0, 131072, 4391094, 0, 131072, 4391095, 0, 131072, 4391096, 0, 131072, 4391097, 0, 131072, 4391098, 0, 131072, 4391099, 0, 131072, 4391100, 0, 131072, 4391101, 0, 131072, 4391102, 0, 131072, 4391103, 0, 131072, 4391104, 0, 131072, 4391105, 0, 131072, 4391106, 0, 131072, 4391107, 0, 131072, 4391108, 0, 131072, 4391109, 0, 131072, 4391110, 0, 131072, 4391111, 0, 131072, 4391112, 0, 131072, 4391113, 0, 131072, 4391114, 0, 131072, 4391115, 0, 131072, 4391116, 0, 131072, 4391117, 0, 131072, 4391118, 0, 131072, 4521941, 0, 131072, 4521942, 0, 131072, 4521943, 0, 131072, 4521944, 0, 131072, 4521945, 0, 131072, 4521946, 0, 131072, 4521947, 0, 131072, 4521948, 0, 131072, 4521949, 0, 131072, 4521950, 0, 131072, 4521951, 0, 131072, 4521952, 0, 131072, 4521953, 0, 131072, 4521954, 0, 131072, 4521955, 0, 131072, 4521956, 0, 131072, 4521957, 0, 131072, 4521958, 0, 131072, 4521959, 0, 131072, 4521960, 0, 131072, 4521961, 0, 131072, 4521962, 0, 131072, 4521963, 0, 131072, 4521964, 0, 131072, 4521965, 0, 131072, 4521966, 0, 131072, 4521967, 0, 131072, 4521968, 0, 131072, 4521969, 0, 131072, 4521970, 0, 131072, 4521971, 0, 131072, 4521972, 0, 131072, 4521973, 0, 131072, 4521974, 0, 131072, 4521975, 0, 131072, 4521976, 0, 131072, 4521977, 0, 131072, 4521978, 0, 131072, 4521979, 0, 131072, 4521980, 0, 131072, 4521981, 0, 131072, 4521982, 0, 131072, 4521983, 0, 131072, 4456448, 0, 131072, 4456449, 0, 131072, 4456450, 0, 131072, 4456451, 0, 131072, 4456452, 0, 131072, 4456453, 0, 131072, 4456454, 0, 131072, 4456455, 0, 131072, 4456456, 0, 131072, 4456457, 0, 131072, 4456458, 0, 131072, 4456459, 0, 131072, 4456460, 0, 131072, 4456461, 0, 131072, 4456462, 0, 131072, 4456463, 0, 131072, 4456464, 0, 131072, 4456465, 0, 131072, 4456466, 0, 131072, 4456467, 0, 131072, 4456468, 0, 131072, 4456469, 0, 131072, 4456470, 0, 131072, 4456471, 0, 131072, 4456472, 0, 131072, 4456473, 0, 131072, 4456474, 0, 131072, 4456475, 0, 131072, 4456476, 0, 131072, 4456477, 0, 131072, 4456478, 0, 131072, 4456479, 0, 131072, 4456480, 0, 131072, 4456481, 0, 131072, 4456482, 0, 131072, 4456483, 0, 131072, 4456484, 0, 131072, 4456485, 0, 131072, 4456486, 0, 131072, 4456487, 0, 131072, 4456488, 0, 131072, 4456489, 0, 131072, 4456490, 0, 131072, 4456491, 0, 131072, 4456492, 0, 131072, 4456493, 0, 131072, 4456494, 0, 131072, 4456495, 0, 131072, 4456496, 0, 131072, 4456497, 0, 131072, 4456498, 0, 131072, 4456499, 0, 131072, 4456500, 0, 131072, 4456501, 0, 131072, 4456502, 0, 131072, 4456503, 0, 131072, 4456504, 0, 131072, 4456505, 0, 131072, 4456506, 0, 131072, 4456507, 0, 131072, 4456508, 0, 131072, 4456509, 0, 131072, 4456510, 0, 131072, 4456511, 0, 131072, 4456512, 0, 131072, 4456513, 0, 131072, 4456514, 0, 131072, 4456515, 0, 131072, 4456516, 0, 131072, 4456517, 0, 131072, 4456518, 0, 131072, 4456519, 0, 131072, 4456520, 0, 131072, 4456521, 0, 131072, 4456522, 0, 131072, 4456523, 0, 131072, 4456524, 0, 131072, 4456525, 0, 131072, 4456526, 0, 131072, 4456527, 0, 131072, 4456528, 0, 131072, 4456529, 0, 131072, 4456530, 0, 131072, 4456531, 0, 131072, 4456532, 0, 131072, 4456533, 0, 131072, 4456534, 0, 131072, 4456535, 0, 131072, 4456536, 0, 131072, 4456537, 0, 131072, 4456538, 0, 131072, 4456539, 0, 131072, 4456540, 0, 131072, 4456541, 0, 131072, 4456542, 0, 131072, 4456543, 0, 131072, 4456544, 0, 131072, 4456545, 0, 131072, 4456546, 0, 131072, 4456547, 0, 131072, 4456548, 0, 131072, 4456549, 0, 131072, 4456550, 0, 131072, 4456551, 0, 131072, 4456552, 0, 131072, 4456553, 0, 131072, 4456554, 0, 131072, 4456555, 0, 131072, 4456556, 0, 131072, 4456557, 0, 131072, 4456558, 0, 131072, 4456559, 0, 131072, 4456560, 0, 131072, 4456561, 0, 131072, 4456562, 0, 131072, 4456563, 0, 131072, 4456564, 0, 131072, 4456565, 0, 131072, 4456566, 0, 131072, 4456567, 0, 131072, 4456568, 0, 131072, 4456569, 0, 131072, 4456570, 0, 131072, 4456571, 0, 131072, 4456572, 0, 131072, 4456573, 0, 131072, 4456574, 0, 131072, 4456575, 0, 131072, 4456576, 0, 131072, 4456577, 0, 131072, 4456578, 0, 131072, 4456579, 0, 131072, 4456580, 0, 131072, 4456581, 0, 131072, 4456582, 0, 131072, 4456583, 0, 131072, 4456584, 0, 131072, 4456585, 0, 131072, 4456586, 0, 131072, 4456587, 0, 131072, 4456588, 0, 131072, 4456589, 0, 131072, 4456590, 0, 131072, 4456591, 0, 131072, 4456592, 0, 131072, 4456593, 0, 131072, 4456594, 0, 131072, 4456595, 0, 131072, 4456596, 0, 131072, 4456597, 0, 131072, 4456598, 0, 131072, 4456599, 0, 131072, 4456600, 0, 131072, 4456601, 0, 131072, 4456602, 0, 131072, 4456603, 0, 131072, 4456604, 0, 131072, 4456605, 0, 131072, 4456606, 0, 131072, 4456607, 0, 131072, 4456608, 0, 131072, 4456609, 0, 131072, 4456610, 0, 131072, 4456611, 0, 131072, 4456612, 0, 131072, 4456613, 0, 131072, 4456614, 0, 131072, 4456615, 0, 131072, 4456616, 0, 131072, 4456617, 0, 131072, 4456618, 0, 131072, 4456619, 0, 131072, 4456620, 0, 131072, 4456621, 0, 131072, 4456622, 0, 131072, 4456623, 0, 131072, 4456624, 0, 131072, 4456625, 0, 131072, 4456626, 0, 131072, 4456627, 0, 131072, 4456628, 0, 131072, 4456629, 0, 131072, 4456630, 0, 131072, 4456631, 0, 131072, 4456632, 0, 131072, 4456633, 0, 131072, 4456634, 0, 131072, 4456635, 0, 131072, 4456636, 0, 131072, 4456637, 0, 131072, 4456638, 0, 131072, 4456639, 0, 131072, 4456640, 0, 131072, 4456641, 0, 131072, 4456642, 0, 131072, 4456643, 0, 131072, 4456644, 0, 131072, 4456645, 0, 131072, 4456646, 0, 131072, 4456647, 0, 131072, 4456648, 0, 131072, 4456649, 0, 131072, 4456650, 0, 131072, 4456651, 0, 131072, 4456652, 0, 131072, 4456653, 0, 131072, 4456654, 0, 131072, 4587478, 0, 131072, 4587479, 0, 131072, 4587480, 0, 131072, 4587481, 0, 131072, 4587482, 0, 131072, 4587483, 0, 131072, 4587484, 0, 131072, 4587485, 0, 131072, 4587486, 0, 131072, 4587487, 0, 131072, 4587488, 0, 131072, 4587489, 0, 131072, 4587490, 0, 131072, 4587491, 0, 131072, 4587492, 0, 131072, 4587493, 0, 131072, 4587494, 0, 131072, 4587495, 0, 131072, 4587496, 0, 131072, 4587497, 0, 131072, 4587498, 0, 131072, 4587499, 0, 131072, 4587500, 0, 131072, 4587501, 0, 131072, 4587502, 0, 131072, 4587503, 0, 131072, 4587504, 0, 131072, 4587505, 0, 131072, 4587506, 0, 131072, 4587507, 0, 131072, 4587508, 0, 131072, 4587509, 0, 131072, 4587510, 0, 131072, 4587511, 0, 131072, 4587512, 0, 131072, 4587513, 0, 131072, 4587514, 0, 131072, 4587515, 0, 131072, 4587516, 0, 131072, 4587517, 0, 131072, 4587518, 0, 131072, 4587519, 0, 131072, 4521984, 0, 131072, 4521985, 0, 131072, 4521986, 0, 131072, 4521987, 0, 131072, 4521988, 0, 131072, 4521989, 0, 131072, 4521990, 0, 131072, 4521991, 0, 131072, 4521992, 0, 131072, 4521993, 0, 131072, 4521994, 0, 131072, 4521995, 0, 131072, 4521996, 0, 131072, 4521997, 0, 131072, 4521998, 0, 131072, 4521999, 0, 131072, 4522000, 0, 131072, 4522001, 0, 131072, 4522002, 0, 131072, 4522003, 0, 131072, 4522004, 0, 131072, 4522005, 0, 131072, 4522006, 0, 131072, 4522007, 0, 131072, 4522008, 0, 131072, 4522009, 0, 131072, 4522010, 0, 131072, 4522011, 0, 131072, 4522012, 0, 131072, 4522013, 0, 131072, 4522014, 0, 131072, 4522015, 0, 131072, 4522016, 0, 131072, 4522017, 0, 131072, 4522018, 0, 131072, 4522019, 0, 131072, 4522020, 0, 131072, 4522021, 0, 131072, 4522022, 0, 131072, 4522023, 0, 131072, 4522024, 0, 131072, 4522025, 0, 131072, 4522026, 0, 131072, 4522027, 0, 131072, 4522028, 0, 131072, 4522029, 0, 131072, 4522030, 0, 131072, 4522031, 0, 131072, 4522032, 0, 131072, 4522033, 0, 131072, 4522034, 0, 131072, 4522035, 0, 131072, 4522036, 0, 131072, 4522037, 0, 131072, 4522038, 0, 131072, 4522039, 0, 131072, 4522040, 0, 131072, 4522041, 0, 131072, 4522042, 0, 131072, 4522043, 0, 131072, 4522044, 0, 131072, 4522045, 0, 131072, 4522046, 0, 131072, 4522047, 0, 131072, 4522048, 0, 131072, 4522049, 0, 131072, 4522050, 0, 131072, 4522051, 0, 131072, 4522052, 0, 131072, 4522053, 0, 131072, 4522054, 0, 131072, 4522055, 0, 131072, 4522056, 0, 131072, 4522057, 0, 131072, 4522058, 0, 131072, 4522059, 0, 131072, 4522060, 0, 131072, 4522061, 0, 131072, 4522062, 0, 131072, 4522063, 0, 131072, 4522064, 0, 131072, 4522065, 0, 131072, 4522066, 0, 131072, 4522067, 0, 131072, 4522068, 0, 131072, 4522069, 0, 131072, 4522070, 0, 131072, 4522071, 0, 131072, 4522072, 0, 131072, 4522073, 0, 131072, 4522074, 0, 131072, 4522075, 0, 131072, 4522076, 0, 131072, 4522077, 0, 131072, 4522078, 0, 131072, 4522079, 0, 131072, 4522080, 0, 131072, 4522081, 0, 131072, 4522082, 0, 131072, 4522083, 0, 131072, 4522084, 0, 131072, 4522085, 0, 131072, 4522086, 0, 131072, 4522087, 0, 131072, 4522088, 0, 131072, 4522089, 0, 131072, 4522090, 0, 131072, 4522091, 0, 131072, 4522092, 0, 131072, 4522093, 0, 131072, 4522094, 0, 131072, 4522095, 0, 131072, 4522096, 0, 131072, 4522097, 0, 131072, 4522098, 0, 131072, 4522099, 0, 131072, 4522100, 0, 131072, 4522101, 0, 131072, 4522102, 0, 131072, 4522103, 0, 131072, 4522104, 0, 131072, 4522105, 0, 131072, 4522106, 0, 131072, 4522107, 0, 131072, 4522108, 0, 131072, 4522109, 0, 131072, 4522110, 0, 131072, 4522111, 0, 131072, 4522112, 0, 131072, 4522113, 0, 131072, 4522114, 0, 131072, 4522115, 0, 131072, 4522116, 0, 131072, 4522117, 0, 131072, 4522118, 0, 131072, 4522119, 0, 131072, 4522120, 0, 131072, 4522121, 0, 131072, 4522122, 0, 131072, 4522123, 0, 131072, 4522124, 0, 131072, 4522125, 0, 131072, 4522126, 0, 131072, 4522127, 0, 131072, 4522128, 0, 131072, 4522129, 0, 131072, 4522130, 0, 131072, 4522131, 0, 131072, 4522132, 0, 131072, 4522133, 0, 131072, 4522134, 0, 131072, 4522135, 0, 131072, 4522136, 0, 131072, 4522137, 0, 131072, 4522138, 0, 131072, 4522139, 0, 131072, 4522140, 0, 131072, 4522141, 0, 131072, 4522142, 0, 131072, 4522143, 0, 131072, 4522144, 0, 131072, 4522145, 0, 131072, 4522146, 0, 131072, 4522147, 0, 131072, 4522148, 0, 131072, 4522149, 0, 131072, 4522150, 0, 131072, 4522151, 0, 131072, 4522152, 0, 131072, 4522153, 0, 131072, 4522154, 0, 131072, 4522155, 0, 131072, 4522156, 0, 131072, 4522157, 0, 131072, 4522158, 0, 131072, 4522159, 0, 131072, 4522160, 0, 131072, 4522161, 0, 131072, 4522162, 0, 131072, 4522163, 0, 131072, 4522164, 0, 131072, 4522165, 0, 131072, 4522166, 0, 131072, 4522167, 0, 131072, 4522168, 0, 131072, 4522169, 0, 131072, 4522170, 0, 131072, 4522171, 0, 131072, 4522172, 0, 131072, 4522173, 0, 131072, 4522174, 0, 131072, 4522175, 0, 131072, 4522176, 0, 131072, 4522177, 0, 131072, 4522178, 0, 131072, 4522179, 0, 131072, 4522180, 0, 131072, 4522181, 0, 131072, 4522182, 0, 131072, 4522183, 0, 131072, 4522184, 0, 131072, 4522185, 0, 131072, 4522186, 0, 131072, 4522187, 0, 131072, 4522188, 0, 131072, 4522189, 0, 131072, 4653015, 0, 131072, 4653016, 0, 131072, 4653017, 0, 131072, 4653018, 0, 131072, 4653019, 0, 131072, 4653020, 0, 131072, 4653021, 0, 131072, 4653022, 0, 131072, 4653023, 0, 131072, 4653024, 0, 131072, 4653025, 0, 131072, 4653026, 0, 131072, 4653027, 0, 131072, 4653028, 0, 131072, 4653029, 0, 131072, 4653030, 0, 131072, 4653031, 0, 131072, 4653032, 0, 131072, 4653033, 0, 131072, 4653034, 0, 131072, 4653035, 0, 131072, 4653036, 0, 131072, 4653037, 0, 131072, 4653038, 0, 131072, 4653039, 0, 131072, 4653040, 0, 131072, 4653041, 0, 131072, 4653042, 0, 131072, 4653043, 0, 131072, 4653044, 0, 131072, 4653045, 0, 131072, 4653046, 0, 131072, 4653047, 0, 131072, 4653048, 0, 131072, 4653049, 0, 131072, 4653050, 0, 131072, 4653051, 0, 131072, 4653052, 0, 131072, 4653053, 0, 131072, 4653054, 0, 131072, 4653055, 0, 131072, 4587520, 0, 131072, 4587521, 0, 131072, 4587522, 0, 131072, 4587523, 0, 131072, 4587524, 0, 131072, 4587525, 0, 131072, 4587526, 0, 131072, 4587527, 0, 131072, 4587528, 0, 131072, 4587529, 0, 131072, 4587530, 0, 131072, 4587531, 0, 131072, 4587532, 0, 131072, 4587533, 0, 131072, 4587534, 0, 131072, 4587535, 0, 131072, 4587536, 0, 131072, 4587537, 0, 131072, 4587538, 0, 131072, 4587539, 0, 131072, 4587540, 0, 131072, 4587541, 0, 131072, 4587542, 0, 131072, 4587543, 0, 131072, 4587544, 0, 131072, 4587545, 0, 131072, 4587546, 0, 131072, 4587547, 0, 131072, 4587548, 0, 131072, 4587549, 0, 131072, 4587550, 0, 131072, 4587551, 0, 131072, 4587552, 0, 131072, 4587553, 0, 131072, 4587554, 0, 131072, 4587555, 0, 131072, 4587556, 0, 131072, 4587557, 0, 131072, 4587558, 0, 131072, 4587559, 0, 131072, 4587560, 0, 131072, 4587561, 0, 131072, 4587562, 0, 131072, 4587563, 0, 131072, 4587564, 0, 131072, 4587565, 0, 131072, 4587566, 0, 131072, 4587567, 0, 131072, 4587568, 0, 131072, 4587569, 0, 131072, 4587570, 0, 131072, 4587571, 0, 131072, 4587572, 0, 131072, 4587573, 0, 131072, 4587574, 0, 131072, 4587575, 0, 131072, 4587576, 0, 131072, 4587577, 0, 131072, 4587578, 0, 131072, 4587579, 0, 131072, 4587580, 0, 131072, 4587581, 0, 131072, 4587582, 0, 131072, 4587583, 0, 131072, 4587584, 0, 131072, 4587585, 0, 131072, 4587586, 0, 131072, 4587587, 0, 131072, 4587588, 0, 131072, 4587589, 0, 131072, 4587590, 0, 131072, 4587591, 0, 131072, 4587592, 0, 131072, 4587593, 0, 131072, 4587594, 0, 131072, 4587595, 0, 131072, 4587596, 0, 131072, 4587597, 0, 131072, 4587598, 0, 131072, 4587599, 0, 131072, 4587600, 0, 131072, 4587601, 0, 131072, 4587602, 0, 131072, 4587603, 0, 131072, 4587604, 0, 131072, 4587605, 0, 131072, 4587606, 0, 131072, 4587607, 0, 131072, 4587608, 0, 131072, 4587609, 0, 131072, 4587610, 0, 131072, 4587611, 0, 131072, 4587612, 0, 131072, 4587613, 0, 131072, 4587614, 0, 131072, 4587615, 0, 131072, 4587616, 0, 131072, 4587617, 0, 131072, 4587618, 0, 131072, 4587619, 0, 131072, 4587620, 0, 131072, 4587621, 0, 131072, 4587622, 0, 131072, 4587623, 0, 131072, 4587624, 0, 131072, 4587625, 0, 131072, 4587626, 0, 131072, 4587627, 0, 131072, 4587628, 0, 131072, 4587629, 0, 131072, 4587630, 0, 131072, 4587631, 0, 131072, 4587632, 0, 131072, 4587633, 0, 131072, 4587634, 0, 131072, 4587635, 0, 131072, 4587636, 0, 131072, 4587637, 0, 131072, 4587638, 0, 131072, 4587639, 0, 131072, 4587640, 0, 131072, 4587641, 0, 131072, 4587642, 0, 131072, 4587643, 0, 131072, 4587644, 0, 131072, 4587645, 0, 131072, 4587646, 0, 131072, 4587647, 0, 131072, 4587648, 0, 131072, 4587649, 0, 131072, 4587650, 0, 131072, 4587651, 0, 131072, 4587652, 0, 131072, 4587653, 0, 131072, 4587654, 0, 131072, 4587655, 0, 131072, 4587656, 0, 131072, 4587657, 0, 131072, 4587658, 0, 131072, 4587659, 0, 131072, 4587660, 0, 131072, 4587661, 0, 131072, 4587662, 0, 131072, 4587663, 0, 131072, 4587664, 0, 131072, 4587665, 0, 131072, 4587666, 0, 131072, 4587667, 0, 131072, 4587668, 0, 131072, 4587669, 0, 131072, 4587670, 0, 131072, 4587671, 0, 131072, 4587672, 0, 131072, 4587673, 0, 131072, 4587674, 0, 131072, 4587675, 0, 131072, 4587676, 0, 131072, 4587677, 0, 131072, 4587678, 0, 131072, 4587679, 0, 131072, 4587680, 0, 131072, 4587681, 0, 131072, 4587682, 0, 131072, 4587683, 0, 131072, 4587684, 0, 131072, 4587685, 0, 131072, 4587686, 0, 131072, 4587687, 0, 131072, 4587688, 0, 131072, 4587689, 0, 131072, 4587690, 0, 131072, 4587691, 0, 131072, 4587692, 0, 131072, 4587693, 0, 131072, 4587694, 0, 131072, 4587695, 0, 131072, 4587696, 0, 131072, 4587697, 0, 131072, 4587698, 0, 131072, 4587699, 0, 131072, 4587700, 0, 131072, 4587701, 0, 131072, 4587702, 0, 131072, 4587703, 0, 131072, 4587704, 0, 131072, 4587705, 0, 131072, 4587706, 0, 131072, 4587707, 0, 131072, 4587708, 0, 131072, 4587709, 0, 131072, 4587710, 0, 131072, 4587711, 0, 131072, 4587712, 0, 131072, 4587713, 0, 131072, 4587714, 0, 131072, 4587715, 0, 131072, 4587716, 0, 131072, 4587717, 0, 131072, 4587718, 0, 131072, 4587719, 0, 131072, 4587720, 0, 131072, 4587721, 0, 131072, 4587722, 0, 131072, 4587723, 0, 131072, 4587724, 0, 131072, 4587725, 0, 131072, 4718552, 0, 131072, 4718553, 0, 131072, 4718554, 0, 131072, 4718555, 0, 131072, 4718556, 0, 131072, 4718557, 0, 131072, 4718558, 0, 131072, 4718559, 0, 131072, 4718560, 0, 131072, 4718561, 0, 131072, 4718562, 0, 131072, 4718563, 0, 131072, 4718564, 0, 131072, 4718565, 0, 131072, 4718566, 0, 131072, 4718567, 0, 131072, 4718568, 0, 131072, 4718569, 0, 131072, 4718570, 0, 131072, 4718571, 0, 131072, 4718572, 0, 131072, 4718573, 0, 131072, 4718574, 0, 131072, 4718575, 0, 131072, 4718576, 0, 131072, 4718577, 0, 131072, 4718578, 0, 131072, 4718579, 0, 131072, 4718580, 0, 131072, 4718581, 0, 131072, 4718582, 0, 131072, 4718583, 0, 131072, 4718584, 0, 131072, 4718585, 0, 131072, 4718586, 0, 131072, 4718587, 0, 131072, 4718588, 0, 131072, 4718589, 0, 131072, 4718590, 0, 131072, 4718591, 0, 131072, 4653056, 0, 131072, 4653057, 0, 131072, 4653058, 0, 131072, 4653059, 0, 131072, 4653060, 0, 131072, 4653061, 0, 131072, 4653062, 0, 131072, 4653063, 0, 131072, 4653064, 0, 131072, 4653065, 0, 131072, 4653066, 0, 131072, 4653067, 0, 131072, 4653068, 0, 131072, 4653069, 0, 131072, 4653070, 0, 131072, 4653071, 0, 131072, 4653072, 0, 131072, 4653073, 0, 131072, 4653074, 0, 131072, 4653075, 0, 131072, 4653076, 0, 131072, 4653077, 0, 131072, 4653078, 0, 131072, 4653079, 0, 131072, 4653080, 0, 131072, 4653081, 0, 131072, 4653082, 0, 131072, 4653083, 0, 131072, 4653084, 0, 131072, 4653085, 0, 131072, 4653086, 0, 131072, 4653087, 0, 131072, 4653088, 0, 131072, 4653089, 0, 131072, 4653090, 0, 131072, 4653091, 0, 131072, 4653092, 0, 131072, 4653093, 0, 131072, 4653094, 0, 131072, 4653095, 0, 131072, 4653096, 0, 131072, 4653097, 0, 131072, 4653098, 0, 131072, 4653099, 0, 131072, 4653100, 0, 131072, 4653101, 0, 131072, 4653102, 0, 131072, 4653103, 0, 131072, 4653104, 0, 131072, 4653105, 0, 131072, 4653106, 0, 131072, 4653107, 0, 131072, 4653108, 0, 131072, 4653109, 0, 131072, 4653110, 0, 131072, 4653111, 0, 131072, 4653112, 0, 131072, 4653113, 0, 131072, 4653114, 0, 131072, 4653115, 0, 131072, 4653116, 0, 131072, 4653117, 0, 131072, 4653118, 0, 131072, 4653119, 0, 131072, 4653120, 0, 131072, 4653121, 0, 131072, 4653122, 0, 131072, 4653123, 0, 131072, 4653124, 0, 131072, 4653125, 0, 131072, 4653126, 0, 131072, 4653127, 0, 131072, 4653128, 0, 131072, 4653129, 0, 131072, 4653130, 0, 131072, 4653131, 0, 131072, 4653132, 0, 131072, 4653133, 0, 131072, 4653134, 0, 131072, 4653135, 0, 131072, 4653136, 0, 131072, 4653137, 0, 131072, 4653138, 0, 131072, 4653139, 0, 131072, 4653140, 0, 131072, 4653141, 0, 131072, 4653142, 0, 131072, 4653143, 0, 131072, 4653144, 0, 131072, 4653145, 0, 131072, 4653146, 0, 131072, 4653147, 0, 131072, 4653148, 0, 131072, 4653149, 0, 131072, 4653150, 0, 131072, 4653151, 0, 131072, 4653152, 0, 131072, 4653153, 0, 131072, 4653154, 0, 131072, 4653155, 0, 131072, 4653156, 0, 131072, 4653157, 0, 131072, 4653158, 0, 131072, 4653159, 0, 131072, 4653160, 0, 131072, 4653161, 0, 131072, 4653162, 0, 131072, 4653163, 0, 131072, 4653164, 0, 131072, 4653165, 0, 131072, 4653166, 0, 131072, 4653167, 0, 131072, 4653168, 0, 131072, 4653169, 0, 131072, 4653170, 0, 131072, 4653171, 0, 131072, 4653172, 0, 131072, 4653173, 0, 131072, 4653174, 0, 131072, 4653175, 0, 131072, 4653176, 0, 131072, 4653177, 0, 131072, 4653178, 0, 131072, 4653179, 0, 131072, 4653180, 0, 131072, 4653181, 0, 131072, 4653182, 0, 131072, 4653183, 0, 131072, 4653184, 0, 131072, 4653185, 0, 131072, 4653186, 0, 131072, 4653187, 0, 131072, 4653188, 0, 131072, 4653189, 0, 131072, 4653190, 0, 131072, 4653191, 0, 131072, 4653192, 0, 131072, 4653193, 0, 131072, 4653194, 0, 131072, 4653195, 0, 131072, 4653196, 0, 131072, 4653197, 0, 131072, 4653198, 0, 131072, 4653199, 0, 131072, 4653200, 0, 131072, 4653201, 0, 131072, 4653202, 0, 131072, 4653203, 0, 131072, 4653204, 0, 131072, 4653205, 0, 131072, 4653206, 0, 131072, 4653207, 0, 131072, 4653208, 0, 131072, 4653209, 0, 131072, 4653210, 0, 131072, 4653211, 0, 131072, 4653212, 0, 131072, 4653213, 0, 131072, 4653214, 0, 131072, 4653215, 0, 131072, 4653216, 0, 131072, 4653217, 0, 131072, 4653218, 0, 131072, 4653219, 0, 131072, 4653220, 0, 131072, 4653221, 0, 131072, 4653222, 0, 131072, 4653223, 0, 131072, 4653224, 0, 131072, 4653225, 0, 131072, 4653226, 0, 131072, 4653227, 0, 131072, 4653228, 0, 131072, 4653229, 0, 131072, 4653230, 0, 131072, 4653231, 0, 131072, 4653232, 0, 131072, 4653233, 0, 131072, 4653234, 0, 131072, 4653235, 0, 131072, 4653236, 0, 131072, 4653237, 0, 131072, 4653238, 0, 131072, 4653239, 0, 131072, 4653240, 0, 131072, 4653241, 0, 131072, 4653242, 0, 131072, 4653243, 0, 131072, 4653244, 0, 131072, 4653245, 0, 131072, 4653246, 0, 131072, 4653247, 0, 131072, 4653248, 0, 131072, 4653249, 0, 131072, 4653250, 0, 131072, 4653251, 0, 131072, 4653252, 0, 131072, 4653253, 0, 131072, 4653254, 0, 131072, 4653255, 0, 131072, 4653256, 0, 131072, 4653257, 0, 131072, 4653258, 0, 131072, 4653259, 0, 131072, 4653260, 0, 131072, 4784090, 0, 131072, 4784091, 0, 131072, 4784092, 0, 131072, 4784093, 0, 131072, 4784094, 0, 131072, 4784095, 0, 131072, 4784096, 0, 131072, 4784097, 0, 131072, 4784098, 0, 131072, 4784099, 0, 131072, 4784100, 0, 131072, 4784101, 0, 131072, 4784102, 0, 131072, 4784103, 0, 131072, 4784104, 0, 131072, 4784105, 0, 131072, 4784106, 0, 131072, 4784107, 0, 131072, 4784108, 0, 131072, 4784109, 0, 131072, 4784110, 0, 131072, 4784111, 0, 131072, 4784112, 0, 131072, 4784113, 0, 131072, 4784114, 0, 131072, 4784115, 0, 131072, 4784116, 0, 131072, 4784117, 0, 131072, 4784118, 0, 131072, 4784119, 0, 131072, 4784120, 0, 131072, 4784121, 0, 131072, 4784122, 0, 131072, 4784123, 0, 131072, 4784124, 0, 131072, 4784125, 0, 131072, 4784126, 0, 131072, 4784127, 0, 131072, 4718592, 0, 131072, 4718593, 0, 131072, 4718594, 0, 131072, 4718595, 0, 131072, 4718596, 0, 131072, 4718597, 0, 131072, 4718598, 0, 131072, 4718599, 0, 131072, 4718600, 0, 131072, 4718601, 0, 131072, 4718602, 0, 131072, 4718603, 0, 131072, 4718604, 0, 131072, 4718605, 0, 131072, 4718606, 0, 131072, 4718607, 0, 131072, 4718608, 0, 131072, 4718609, 0, 131072, 4718610, 0, 131072, 4718611, 0, 131072, 4718612, 0, 131072, 4718613, 0, 131072, 4718614, 0, 131072, 4718615, 0, 131072, 4718616, 0, 131072, 4718617, 0, 131072, 4718618, 0, 131072, 4718619, 0, 131072, 4718620, 0, 131072, 4718621, 0, 131072, 4718622, 0, 131072, 4718623, 0, 131072, 4718624, 0, 131072, 4718625, 0, 131072, 4718626, 0, 131072, 4718627, 0, 131072, 4718628, 0, 131072, 4718629, 0, 131072, 4718630, 0, 131072, 4718631, 0, 131072, 4718632, 0, 131072, 4718633, 0, 131072, 4718634, 0, 131072, 4718635, 0, 131072, 4718636, 0, 131072, 4718637, 0, 131072, 4718638, 0, 131072, 4718639, 0, 131072, 4718640, 0, 131072, 4718641, 0, 131072, 4718642, 0, 131072, 4718643, 0, 131072, 4718644, 0, 131072, 4718645, 0, 131072, 4718646, 0, 131072, 4718647, 0, 131072, 4718648, 0, 131072, 4718649, 0, 131072, 4718650, 0, 131072, 4718651, 0, 131072, 4718652, 0, 131072, 4718653, 0, 131072, 4718654, 0, 131072, 4718655, 0, 131072, 4718656, 0, 131072, 4718657, 0, 131072, 4718658, 0, 131072, 4718659, 0, 131072, 4718660, 0, 131072, 4718661, 0, 131072, 4718662, 0, 131072, 4718663, 0, 131072, 4718664, 0, 131072, 4718665, 0, 131072, 4718666, 0, 131072, 4718667, 0, 131072, 4718668, 0, 131072, 4718669, 0, 131072, 4718670, 0, 131072, 4718671, 0, 131072, 4718672, 0, 131072, 4718673, 0, 131072, 4718674, 0, 131072, 4718675, 0, 131072, 4718676, 0, 131072, 4718677, 0, 131072, 4718678, 0, 131072, 4718679, 0, 131072, 4718680, 0, 131072, 4718681, 0, 131072, 4718682, 0, 131072, 4718683, 0, 131072, 4718684, 0, 131072, 4718685, 0, 131072, 4718686, 0, 131072, 4718687, 0, 131072, 4718688, 0, 131072, 4718689, 0, 131072, 4718690, 0, 131072, 4718691, 0, 131072, 4718692, 0, 131072, 4718693, 0, 131072, 4718694, 0, 131072, 4718695, 0, 131072, 4718696, 0, 131072, 4718697, 0, 131072, 4718698, 0, 131072, 4718699, 0, 131072, 4718700, 0, 131072, 4718701, 0, 131072, 4718702, 0, 131072, 4718703, 0, 131072, 4718704, 0, 131072, 4718705, 0, 131072, 4718706, 0, 131072, 4718707, 0, 131072, 4718708, 0, 131072, 4718709, 0, 131072, 4718710, 0, 131072, 4718711, 0, 131072, 4718712, 0, 131072, 4718713, 0, 131072, 4718714, 0, 131072, 4718715, 0, 131072, 4718716, 0, 131072, 4718717, 0, 131072, 4718718, 0, 131072, 4718719, 0, 131072, 4718720, 0, 131072, 4718721, 0, 131072, 4718722, 0, 131072, 4718723, 0, 131072, 4718724, 0, 131072, 4718725, 0, 131072, 4718726, 0, 131072, 4718727, 0, 131072, 4718728, 0, 131072, 4718729, 0, 131072, 4718730, 0, 131072, 4718731, 0, 131072, 4718732, 0, 131072, 4718733, 0, 131072, 4718734, 0, 131072, 4718735, 0, 131072, 4718736, 0, 131072, 4718737, 0, 131072, 4718738, 0, 131072, 4718739, 0, 131072, 4718740, 0, 131072, 4718741, 0, 131072, 4718742, 0, 131072, 4718743, 0, 131072, 4718744, 0, 131072, 4718745, 0, 131072, 4718746, 0, 131072, 4718747, 0, 131072, 4718748, 0, 131072, 4718749, 0, 131072, 4718750, 0, 131072, 4718751, 0, 131072, 4718752, 0, 131072, 4718753, 0, 131072, 4718754, 0, 131072, 4718755, 0, 131072, 4718756, 0, 131072, 4718757, 0, 131072, 4718758, 0, 131072, 4718759, 0, 131072, 4718760, 0, 131072, 4718761, 0, 131072, 4718762, 0, 131072, 4718763, 0, 131072, 4718764, 0, 131072, 4718765, 0, 131072, 4718766, 0, 131072, 4718767, 0, 131072, 4718768, 0, 131072, 4718769, 0, 131072, 4718770, 0, 131072, 4718771, 0, 131072, 4718772, 0, 131072, 4718773, 0, 131072, 4718774, 0, 131072, 4718775, 0, 131072, 4718776, 0, 131072, 4718777, 0, 131072, 4718778, 0, 131072, 4718779, 0, 131072, 4718780, 0, 131072, 4718781, 0, 131072, 4718782, 0, 131072, 4718783, 0, 131072, 4718784, 0, 131072, 4718785, 0, 131072, 4718786, 0, 131072, 4718787, 0, 131072, 4718788, 0, 131072, 4718789, 0, 131072, 4718790, 0, 131072, 4718791, 0, 131072, 4718792, 0, 131072, 4718793, 0, 131072, 4718794, 0, 131072, 4718795, 0, 131072, 4849627, 0, 131072, 4849628, 0, 131072, 4849629, 0, 131072, 4849630, 0, 131072, 4849631, 0, 131072, 4849632, 0, 131072, 4849633, 0, 131072, 4849634, 0, 131072, 4849635, 0, 131072, 4849636, 0, 131072, 4849637, 0, 131072, 4849638, 0, 131072, 4849639, 0, 131072, 4849640, 0, 131072, 4849641, 0, 131072, 4849642, 0, 131072, 4849643, 0, 131072, 4849644, 0, 131072, 4849645, 0, 131072, 4849646, 0, 131072, 4849647, 0, 131072, 4849648, 0, 131072, 4849649, 0, 131072, 4849650, 0, 131072, 4849651, 0, 131072, 4849652, 0, 131072, 4849653, 0, 131072, 4849654, 0, 131072, 4849655, 0, 131072, 4849656, 0, 131072, 4849657, 0, 131072, 4849658, 0, 131072, 4849659, 0, 131072, 4849660, 0, 131072, 4849661, 0, 131072, 4849662, 0, 131072, 4849663, 0, 131072, 4784128, 0, 131072, 4784129, 0, 131072, 4784130, 0, 131072, 4784131, 0, 131072, 4784132, 0, 131072, 4784133, 0, 131072, 4784134, 0, 131072, 4784135, 0, 131072, 4784136, 0, 131072, 4784137, 0, 131072, 4784138, 0, 131072, 4784139, 0, 131072, 4784140, 0, 131072, 4784141, 0, 131072, 4784142, 0, 131072, 4784143, 0, 131072, 4784144, 0, 131072, 4784145, 0, 131072, 4784146, 0, 131072, 4784147, 0, 131072, 4784148, 0, 131072, 4784149, 0, 131072, 4784150, 0, 131072, 4784151, 0, 131072, 4784152, 0, 131072, 4784153, 0, 131072, 4784154, 0, 131072, 4784155, 0, 131072, 4784156, 0, 131072, 4784157, 0, 131072, 4784158, 0, 131072, 4784159, 0, 131072, 4784160, 0, 131072, 4784161, 0, 131072, 4784162, 0, 131072, 4784163, 0, 131072, 4784164, 0, 131072, 4784165, 0, 131072, 4784166, 0, 131072, 4784167, 0, 131072, 4784168, 0, 131072, 4784169, 0, 131072, 4784170, 0, 131072, 4784171, 0, 131072, 4784172, 0, 131072, 4784173, 0, 131072, 4784174, 0, 131072, 4784175, 0, 131072, 4784176, 0, 131072, 4784177, 0, 131072, 4784178, 0, 131072, 4784179, 0, 131072, 4784180, 0, 131072, 4784181, 0, 131072, 4784182, 0, 131072, 4784183, 0, 131072, 4784184, 0, 131072, 4784185, 0, 131072, 4784186, 0, 131072, 4784187, 0, 131072, 4784188, 0, 131072, 4784189, 0, 131072, 4784190, 0, 131072, 4784191, 0, 131072, 4784192, 0, 131072, 4784193, 0, 131072, 4784194, 0, 131072, 4784195, 0, 131072, 4784196, 0, 131072, 4784197, 0, 131072, 4784198, 0, 131072, 4784199, 0, 131072, 4784200, 0, 131072, 4784201, 0, 131072, 4784202, 0, 131072, 4784203, 0, 131072, 4784204, 0, 131072, 4784205, 0, 131072, 4784206, 0, 131072, 4784207, 0, 131072, 4784208, 0, 131072, 4784209, 0, 131072, 4784210, 0, 131072, 4784211, 0, 131072, 4784212, 0, 131072, 4784213, 0, 131072, 4784214, 0, 131072, 4784215, 0, 131072, 4784216, 0, 131072, 4784217, 0, 131072, 4784218, 0, 131072, 4784219, 0, 131072, 4784220, 0, 131072, 4784221, 0, 131072, 4784222, 0, 131072, 4784223, 0, 131072, 4784224, 0, 131072, 4784225, 0, 131072, 4784226, 0, 131072, 4784227, 0, 131072, 4784228, 0, 131072, 4784229, 0, 131072, 4784230, 0, 131072, 4784231, 0, 131072, 4784232, 0, 131072, 4784233, 0, 131072, 4784234, 0, 131072, 4784235, 0, 131072, 4784236, 0, 131072, 4784237, 0, 131072, 4784238, 0, 131072, 4784239, 0, 131072, 4784240, 0, 131072, 4784241, 0, 131072, 4784242, 0, 131072, 4784243, 0, 131072, 4784244, 0, 131072, 4784245, 0, 131072, 4784246, 0, 131072, 4784247, 0, 131072, 4784248, 0, 131072, 4784249, 0, 131072, 4784250, 0, 131072, 4784251, 0, 131072, 4784252, 0, 131072, 4784253, 0, 131072, 4784254, 0, 131072, 4784255, 0, 131072, 4784256, 0, 131072, 4784257, 0, 131072, 4784258, 0, 131072, 4784259, 0, 131072, 4784260, 0, 131072, 4784261, 0, 131072, 4784262, 0, 131072, 4784263, 0, 131072, 4784264, 0, 131072, 4784265, 0, 131072, 4784266, 0, 131072, 4784267, 0, 131072, 4784268, 0, 131072, 4784269, 0, 131072, 4784270, 0, 131072, 4784271, 0, 131072, 4784272, 0, 131072, 4784273, 0, 131072, 4784274, 0, 131072, 4784275, 0, 131072, 4784276, 0, 131072, 4784277, 0, 131072, 4784278, 0, 131072, 4784279, 0, 131072, 4784280, 0, 131072, 4784281, 0, 131072, 4784282, 0, 131072, 4784283, 0, 131072, 4784284, 0, 131072, 4784285, 0, 131072, 4784286, 0, 131072, 4784287, 0, 131072, 4784288, 0, 131072, 4784289, 0, 131072, 4784290, 0, 131072, 4784291, 0, 131072, 4784292, 0, 131072, 4784293, 0, 131072, 4784294, 0, 131072, 4784295, 0, 131072, 4784296, 0, 131072, 4784297, 0, 131072, 4784298, 0, 131072, 4784299, 0, 131072, 4784300, 0, 131072, 4784301, 0, 131072, 4784302, 0, 131072, 4784303, 0, 131072, 4784304, 0, 131072, 4784305, 0, 131072, 4784306, 0, 131072, 4784307, 0, 131072, 4784308, 0, 131072, 4784309, 0, 131072, 4784310, 0, 131072, 4784311, 0, 131072, 4784312, 0, 131072, 4784313, 0, 131072, 4784314, 0, 131072, 4784315, 0, 131072, 4784316, 0, 131072, 4784317, 0, 131072, 4784318, 0, 131072, 4784319, 0, 131072, 4784320, 0, 131072, 4784321, 0, 131072, 4784322, 0, 131072, 4784323, 0, 131072, 4784324, 0, 131072, 4784325, 0, 131072, 4784326, 0, 131072, 4784327, 0, 131072, 4784328, 0, 131072, 4784329, 0, 131072, 4784330, 0, 131072, 4915164, 0, 131072, 4915165, 0, 131072, 4915166, 0, 131072, 4915167, 0, 131072, 4915168, 0, 131072, 4915169, 0, 131072, 4915170, 0, 131072, 4915171, 0, 131072, 4915172, 0, 131072, 4915173, 0, 131072, 4915174, 0, 131072, 4915175, 0, 131072, 4915176, 0, 131072, 4915177, 0, 131072, 4915178, 0, 131072, 4915179, 0, 131072, 4915180, 0, 131072, 4915181, 0, 131072, 4915182, 0, 131072, 4915183, 0, 131072, 4915184, 0, 131072, 4915185, 0, 131072, 4915186, 0, 131072, 4915187, 0, 131072, 4915188, 0, 131072, 4915189, 0, 131072, 4915190, 0, 131072, 4915191, 0, 131072, 4915192, 0, 131072, 4915193, 0, 131072, 4915194, 0, 131072, 4915195, 0, 131072, 4915196, 0, 131072, 4915197, 0, 131072, 4915198, 0, 131072, 4915199, 0, 131072, 4849664, 0, 131072, 4849665, 0, 131072, 4849666, 0, 131072, 4849667, 0, 131072, 4849668, 0, 131072, 4849669, 0, 131072, 4849670, 0, 131072, 4849671, 0, 131072, 4849672, 0, 131072, 4849673, 0, 131072, 4849674, 0, 131072, 4849675, 0, 131072, 4849676, 0, 131072, 4849677, 0, 131072, 4849678, 0, 131072, 4849679, 0, 131072, 4849680, 0, 131072, 4849681, 0, 131072, 4849682, 0, 131072, 4849683, 0, 131072, 4849684, 0, 131072, 4849685, 0, 131072, 4849686, 0, 131072, 4849687, 0, 131072, 4849688, 0, 131072, 4849689, 0, 131072, 4849690, 0, 131072, 4849691, 0, 131072, 4849692, 0, 131072, 4849693, 0, 131072, 4849694, 0, 131072, 4849695, 0, 131072, 4849696, 0, 131072, 4849697, 0, 131072, 4849698, 0, 131072, 4849699, 0, 131072, 4849700, 0, 131072, 4849701, 0, 131072, 4849702, 0, 131072, 4849703, 0, 131072, 4849704, 0, 131072, 4849705, 0, 131072, 4849706, 0, 131072, 4849707, 0, 131072, 4849708, 0, 131072, 4849709, 0, 131072, 4849710, 0, 131072, 4849711, 0, 131072, 4849712, 0, 131072, 4849713, 0, 131072, 4849714, 0, 131072, 4849715, 0, 131072, 4849716, 0, 131072, 4849717, 0, 131072, 4849718, 0, 131072, 4849719, 0, 131072, 4849720, 0, 131072, 4849721, 0, 131072, 4849722, 0, 131072, 4849723, 0, 131072, 4849724, 0, 131072, 4849725, 0, 131072, 4849726, 0, 131072, 4849727, 0, 131072, 4849728, 0, 131072, 4849729, 0, 131072, 4849730, 0, 131072, 4849731, 0, 131072, 4849732, 0, 131072, 4849733, 0, 131072, 4849734, 0, 131072, 4849735, 0, 131072, 4849736, 0, 131072, 4849737, 0, 131072, 4849738, 0, 131072, 4849739, 0, 131072, 4849740, 0, 131072, 4849741, 0, 131072, 4849742, 0, 131072, 4849743, 0, 131072, 4849744, 0, 131072, 4849745, 0, 131072, 4849746, 0, 131072, 4849747, 0, 131072, 4849748, 0, 131072, 4849749, 0, 131072, 4849750, 0, 131072, 4849751, 0, 131072, 4849752, 0, 131072, 4849753, 0, 131072, 4849754, 0, 131072, 4849755, 0, 131072, 4849756, 0, 131072, 4849757, 0, 131072, 4849758, 0, 131072, 4849759, 0, 131072, 4849760, 0, 131072, 4849761, 0, 131072, 4849762, 0, 131072, 4849763, 0, 131072, 4849764, 0, 131072, 4849765, 0, 131072, 4849766, 0, 131072, 4849767, 0, 131072, 4849768, 0, 131072, 4849769, 0, 131072, 4849770, 0, 131072, 4849771, 0, 131072, 4849772, 0, 131072, 4849773, 0, 131072, 4849774, 0, 131072, 4849775, 0, 131072, 4849776, 0, 131072, 4849777, 0, 131072, 4849778, 0, 131072, 4849779, 0, 131072, 4849780, 0, 131072, 4849781, 0, 131072, 4849782, 0, 131072, 4849783, 0, 131072, 4849784, 0, 131072, 4849785, 0, 131072, 4849786, 0, 131072, 4849787, 0, 131072, 4849788, 0, 131072, 4849789, 0, 131072, 4849790, 0, 131072, 4849791, 0, 131072, 4849792, 0, 131072, 4849793, 0, 131072, 4849794, 0, 131072, 4849795, 0, 131072, 4849796, 0, 131072, 4849797, 0, 131072, 4849798, 0, 131072, 4849799, 0, 131072, 4849800, 0, 131072, 4849801, 0, 131072, 4849802, 0, 131072, 4849803, 0, 131072, 4849804, 0, 131072, 4849805, 0, 131072, 4849806, 0, 131072, 4849807, 0, 131072, 4849808, 0, 131072, 4849809, 0, 131072, 4849810, 0, 131072, 4849811, 0, 131072, 4849812, 0, 131072, 4849813, 0, 131072, 4849814, 0, 131072, 4849815, 0, 131072, 4849816, 0, 131072, 4849817, 0, 131072, 4849818, 0, 131072, 4849819, 0, 131072, 4849820, 0, 131072, 4849821, 0, 131072, 4849822, 0, 131072, 4849823, 0, 131072, 4849824, 0, 131072, 4849825, 0, 131072, 4849826, 0, 131072, 4849827, 0, 131072, 4849828, 0, 131072, 4849829, 0, 131072, 4849830, 0, 131072, 4849831, 0, 131072, 4849832, 0, 131072, 4849833, 0, 131072, 4849834, 0, 131072, 4849835, 0, 131072, 4849836, 0, 131072, 4849837, 0, 131072, 4849838, 0, 131072, 4849839, 0, 131072, 4849840, 0, 131072, 4849841, 0, 131072, 4849842, 0, 131072, 4849843, 0, 131072, 4849844, 0, 131072, 4849845, 0, 131072, 4849846, 0, 131072, 4849847, 0, 131072, 4849848, 0, 131072, 4849849, 0, 131072, 4849850, 0, 131072, 4849851, 0, 131072, 4849852, 0, 131072, 4849853, 0, 131072, 4849854, 0, 131072, 4849855, 0, 131072, 4849856, 0, 131072, 4849857, 0, 131072, 4849858, 0, 131072, 4849859, 0, 131072, 4849860, 0, 131072, 4849861, 0, 131072, 4849862, 0, 131072, 4849863, 0, 131072, 4849864, 0, 131072, 4849865, 0, 131072, 4980702, 0, 131072, 4980703, 0, 131072, 4980704, 0, 131072, 4980705, 0, 131072, 4980706, 0, 131072, 4980707, 0, 131072, 4980708, 0, 131072, 4980709, 0, 131072, 4980710, 0, 131072, 4980711, 0, 131072, 4980712, 0, 131072, 4980713, 0, 131072, 4980714, 0, 131072, 4980715, 0, 131072, 4980716, 0, 131072, 4980717, 0, 131072, 4980718, 0, 131072, 4980719, 0, 131072, 4980720, 0, 131072, 4980721, 0, 131072, 4980722, 0, 131072, 4980723, 0, 131072, 4980724, 0, 131072, 4980725, 0, 131072, 4980726, 0, 131072, 4980727, 0, 131072, 4980728, 0, 131072, 4980729, 0, 131072, 4980730, 0, 131072, 4980731, 0, 131072, 4980732, 0, 131072, 4980733, 0, 131072, 4980734, 0, 131072, 4980735, 0, 131072, 4915200, 0, 131072, 4915201, 0, 131072, 4915202, 0, 131072, 4915203, 0, 131072, 4915204, 0, 131072, 4915205, 0, 131072, 4915206, 0, 131072, 4915207, 0, 131072, 4915208, 0, 131072, 4915209, 0, 131072, 4915210, 0, 131072, 4915211, 0, 131072, 4915212, 0, 131072, 4915213, 0, 131072, 4915214, 0, 131072, 4915215, 0, 131072, 4915216, 0, 131072, 4915217, 0, 131072, 4915218, 0, 131072, 4915219, 0, 131072, 4915220, 0, 131072, 4915221, 0, 131072, 4915222, 0, 131072, 4915223, 0, 131072, 4915224, 0, 131072, 4915225, 0, 131072, 4915226, 0, 131072, 4915227, 0, 131072, 4915228, 0, 131072, 4915229, 0, 131072, 4915230, 0, 131072, 4915231, 0, 131072, 4915232, 0, 131072, 4915233, 0, 131072, 4915234, 0, 131072, 4915235, 0, 131072, 4915236, 0, 131072, 4915237, 0, 131072, 4915238, 0, 131072, 4915239, 0, 131072, 4915240, 0, 131072, 4915241, 0, 131072, 4915242, 0, 131072, 4915243, 0, 131072, 4915244, 0, 131072, 4915245, 0, 131072, 4915246, 0, 131072, 4915247, 0, 131072, 4915248, 0, 131072, 4915249, 0, 131072, 4915250, 0, 131072, 4915251, 0, 131072, 4915252, 0, 131072, 4915253, 0, 131072, 4915254, 0, 131072, 4915255, 0, 131072, 4915256, 0, 131072, 4915257, 0, 131072, 4915258, 0, 131072, 4915259, 0, 131072, 4915260, 0, 131072, 4915261, 0, 131072, 4915262, 0, 131072, 4915263, 0, 131072, 4915264, 0, 131072, 4915265, 0, 131072, 4915266, 0, 131072, 4915267, 0, 131072, 4915268, 0, 131072, 4915269, 0, 131072, 4915270, 0, 131072, 4915271, 0, 131072, 4915272, 0, 131072, 4915273, 0, 131072, 4915274, 0, 131072, 4915275, 0, 131072, 4915276, 0, 131072, 4915277, 0, 131072, 4915278, 0, 131072, 4915279, 0, 131072, 4915280, 0, 131072, 4915281, 0, 131072, 4915282, 0, 131072, 4915283, 0, 131072, 4915284, 0, 131072, 4915285, 0, 131072, 4915286, 0, 131072, 4915287, 0, 131072, 4915288, 0, 131072, 4915289, 0, 131072, 4915290, 0, 131072, 4915291, 0, 131072, 4915292, 0, 131072, 4915293, 0, 131072, 4915294, 0, 131072, 4915295, 0, 131072, 4915296, 0, 131072, 4915297, 0, 131072, 4915298, 0, 131072, 4915299, 0, 131072, 4915300, 0, 131072, 4915301, 0, 131072, 4915302, 0, 131072, 4915303, 0, 131072, 4915304, 0, 131072, 4915305, 0, 131072, 4915306, 0, 131072, 4915307, 0, 131072, 4915308, 0, 131072, 4915309, 0, 131072, 4915310, 0, 131072, 4915311, 0, 131072, 4915312, 0, 131072, 4915313, 0, 131072, 4915314, 0, 131072, 4915315, 0, 131072, 4915316, 0, 131072, 4915317, 0, 131072, 4915318, 0, 131072, 4915319, 0, 131072, 4915320, 0, 131072, 4915321, 0, 131072, 4915322, 0, 131072, 4915323, 0, 131072, 4915324, 0, 131072, 4915325, 0, 131072, 4915326, 0, 131072, 4915327, 0, 131072, 4915328, 0, 131072, 4915329, 0, 131072, 4915330, 0, 131072, 4915331, 0, 131072, 4915332, 0, 131072, 4915333, 0, 131072, 4915334, 0, 131072, 4915335, 0, 131072, 4915336, 0, 131072, 4915337, 0, 131072, 4915338, 0, 131072, 4915339, 0, 131072, 4915340, 0, 131072, 4915341, 0, 131072, 4915342, 0, 131072, 4915343, 0, 131072, 4915344, 0, 131072, 4915345, 0, 131072, 4915346, 0, 131072, 4915347, 0, 131072, 4915348, 0, 131072, 4915349, 0, 131072, 4915350, 0, 131072, 4915351, 0, 131072, 4915352, 0, 131072, 4915353, 0, 131072, 4915354, 0, 131072, 4915355, 0, 131072, 4915356, 0, 131072, 4915357, 0, 131072, 4915358, 0, 131072, 4915359, 0, 131072, 4915360, 0, 131072, 4915361, 0, 131072, 4915362, 0, 131072, 4915363, 0, 131072, 4915364, 0, 131072, 4915365, 0, 131072, 4915366, 0, 131072, 4915367, 0, 131072, 4915368, 0, 131072, 4915369, 0, 131072, 4915370, 0, 131072, 4915371, 0, 131072, 4915372, 0, 131072, 4915373, 0, 131072, 4915374, 0, 131072, 4915375, 0, 131072, 4915376, 0, 131072, 4915377, 0, 131072, 4915378, 0, 131072, 4915379, 0, 131072, 4915380, 0, 131072, 4915381, 0, 131072, 4915382, 0, 131072, 4915383, 0, 131072, 4915384, 0, 131072, 4915385, 0, 131072, 4915386, 0, 131072, 4915387, 0, 131072, 4915388, 0, 131072, 4915389, 0, 131072, 4915390, 0, 131072, 4915391, 0, 131072, 4915392, 0, 131072, 4915393, 0, 131072, 4915394, 0, 131072, 4915395, 0, 131072, 4915396, 0, 131072, 4915397, 0, 131072, 4915398, 0, 131072, 4915399, 0, 131072, 4915400, 0, 131072, 5046239, 0, 131072, 5046240, 0, 131072, 5046241, 0, 131072, 5046242, 0, 131072, 5046243, 0, 131072, 5046244, 0, 131072, 5046245, 0, 131072, 5046246, 0, 131072, 5046247, 0, 131072, 5046248, 0, 131072, 5046249, 0, 131072, 5046250, 0, 131072, 5046251, 0, 131072, 5046252, 0, 131072, 5046253, 0, 131072, 5046254, 0, 131072, 5046255, 0, 131072, 5046256, 0, 131072, 5046257, 0, 131072, 5046258, 0, 131072, 5046259, 0, 131072, 5046260, 0, 131072, 5046261, 0, 131072, 5046262, 0, 131072, 5046263, 0, 131072, 5046264, 0, 131072, 5046265, 0, 131072, 5046266, 0, 131072, 5046267, 0, 131072, 5046268, 0, 131072, 5046269, 0, 131072, 5046270, 0, 131072, 5046271, 0, 131072, 4980736, 0, 131072, 4980737, 0, 131072, 4980738, 0, 131072, 4980739, 0, 131072, 4980740, 0, 131072, 4980741, 0, 131072, 4980742, 0, 131072, 4980743, 0, 131072, 4980744, 0, 131072, 4980745, 0, 131072, 4980746, 0, 131072, 4980747, 0, 131072, 4980748, 0, 131072, 4980749, 0, 131072, 4980750, 0, 131072, 4980751, 0, 131072, 4980752, 0, 131072, 4980753, 0, 131072, 4980754, 0, 131072, 4980755, 0, 131072, 4980756, 0, 131072, 4980757, 0, 131072, 4980758, 0, 131072, 4980759, 0, 131072, 4980760, 0, 131072, 4980761, 0, 131072, 4980762, 0, 131072, 4980763, 0, 131072, 4980764, 0, 131072, 4980765, 0, 131072, 4980766, 0, 131072, 4980767, 0, 131072, 4980768, 0, 131072, 4980769, 0, 131072, 4980770, 0, 131072, 4980771, 0, 131072, 4980772, 0, 131072, 4980773, 0, 131072, 4980774, 0, 131072, 4980775, 0, 131072, 4980776, 0, 131072, 4980777, 0, 131072, 4980778, 0, 131072, 4980779, 0, 131072, 4980780, 0, 131072, 4980781, 0, 131072, 4980782, 0, 131072, 4980783, 0, 131072, 4980784, 0, 131072, 4980785, 0, 131072, 4980786, 0, 131072, 4980787, 0, 131072, 4980788, 0, 131072, 4980789, 0, 131072, 4980790, 0, 131072, 4980791, 0, 131072, 4980792, 0, 131072, 4980793, 0, 131072, 4980794, 0, 131072, 4980795, 0, 131072, 4980796, 0, 131072, 4980797, 0, 131072, 4980798, 0, 131072, 4980799, 0, 131072, 4980800, 0, 131072, 4980801, 0, 131072, 4980802, 0, 131072, 4980803, 0, 131072, 4980804, 0, 131072, 4980805, 0, 131072, 4980806, 0, 131072, 4980807, 0, 131072, 4980808, 0, 131072, 4980809, 0, 131072, 4980810, 0, 131072, 4980811, 0, 131072, 4980812, 0, 131072, 4980813, 0, 131072, 4980814, 0, 131072, 4980815, 0, 131072, 4980816, 0, 131072, 4980817, 0, 131072, 4980818, 0, 131072, 4980819, 0, 131072, 4980820, 0, 131072, 4980821, 0, 131072, 4980822, 0, 131072, 4980823, 0, 131072, 4980824, 0, 131072, 4980825, 0, 131072, 4980826, 0, 131072, 4980827, 0, 131072, 4980828, 0, 131072, 4980829, 0, 131072, 4980830, 0, 131072, 4980831, 0, 131072, 4980832, 0, 131072, 4980833, 0, 131072, 4980834, 0, 131072, 4980835, 0, 131072, 4980836, 0, 131072, 4980837, 0, 131072, 4980838, 0, 131072, 4980839, 0, 131072, 4980840, 0, 131072, 4980841, 0, 131072, 4980842, 0, 131072, 4980843, 0, 131072, 4980844, 0, 131072, 4980845, 0, 131072, 4980846, 0, 131072, 4980847, 0, 131072, 4980848, 0, 131072, 4980849, 0, 131072, 4980850, 0, 131072, 4980851, 0, 131072, 4980852, 0, 131072, 4980853, 0, 131072, 4980854, 0, 131072, 4980855, 0, 131072, 4980856, 0, 131072, 4980857, 0, 131072, 4980858, 0, 131072, 4980859, 0, 131072, 4980860, 0, 131072, 4980861, 0, 131072, 4980862, 0, 131072, 4980863, 0, 131072, 4980864, 0, 131072, 4980865, 0, 131072, 4980866, 0, 131072, 4980867, 0, 131072, 4980868, 0, 131072, 4980869, 0, 131072, 4980870, 0, 131072, 4980871, 0, 131072, 4980872, 0, 131072, 4980873, 0, 131072, 4980874, 0, 131072, 4980875, 0, 131072, 4980876, 0, 131072, 4980877, 0, 131072, 4980878, 0, 131072, 4980879, 0, 131072, 4980880, 0, 131072, 4980881, 0, 131072, 4980882, 0, 131072, 4980883, 0, 131072, 4980884, 0, 131072, 4980885, 0, 131072, 4980886, 0, 131072, 4980887, 0, 131072, 4980888, 0, 131072, 4980889, 0, 131072, 4980890, 0, 131072, 4980891, 0, 131072, 4980892, 0, 131072, 4980893, 0, 131072, 4980894, 0, 131072, 4980895, 0, 131072, 4980896, 0, 131072, 4980897, 0, 131072, 4980898, 0, 131072, 4980899, 0, 131072, 4980900, 0, 131072, 4980901, 0, 131072, 4980902, 0, 131072, 4980903, 0, 131072, 4980904, 0, 131072, 4980905, 0, 131072, 4980906, 0, 131072, 4980907, 0, 131072, 4980908, 0, 131072, 4980909, 0, 131072, 4980910, 0, 131072, 4980911, 0, 131072, 4980912, 0, 131072, 4980913, 0, 131072, 4980914, 0, 131072, 4980915, 0, 131072, 4980916, 0, 131072, 4980917, 0, 131072, 4980918, 0, 131072, 4980919, 0, 131072, 4980920, 0, 131072, 4980921, 0, 131072, 4980922, 0, 131072, 4980923, 0, 131072, 4980924, 0, 131072, 4980925, 0, 131072, 4980926, 0, 131072, 4980927, 0, 131072, 4980928, 0, 131072, 4980929, 0, 131072, 4980930, 0, 131072, 4980931, 0, 131072, 4980932, 0, 131072, 4980933, 0, 131072, 4980934, 0, 131072, 4980935, 0, 131072, 4980936, 0, 131072, 5111776, 0, 131072, 5111777, 0, 131072, 5111778, 0, 131072, 5111779, 0, 131072, 5111780, 0, 131072, 5111781, 0, 131072, 5111782, 0, 131072, 5111783, 0, 131072, 5111784, 0, 131072, 5111785, 0, 131072, 5111786, 0, 131072, 5111787, 0, 131072, 5111788, 0, 131072, 5111789, 0, 131072, 5111790, 0, 131072, 5111791, 0, 131072, 5111792, 0, 131072, 5111793, 0, 131072, 5111794, 0, 131072, 5111795, 0, 131072, 5111796, 0, 131072, 5111797, 0, 131072, 5111798, 0, 131072, 5111799, 0, 131072, 5111800, 0, 131072, 5111801, 0, 131072, 5111802, 0, 131072, 5111803, 0, 131072, 5111804, 0, 131072, 5111805, 0, 131072, 5111806, 0, 131072, 5111807, 0, 131072, 5046272, 0, 131072, 5046273, 0, 131072, 5046274, 0, 131072, 5046275, 0, 131072, 5046276, 0, 131072, 5046277, 0, 131072, 5046278, 0, 131072, 5046279, 0, 131072, 5046280, 0, 131072, 5046281, 0, 131072, 5046282, 0, 131072, 5046283, 0, 131072, 5046284, 0, 131072, 5046285, 0, 131072, 5046286, 0, 131072, 5046287, 0, 131072, 5046288, 0, 131072, 5046289, 0, 131072, 5046290, 0, 131072, 5046291, 0, 131072, 5046292, 0, 131072, 5046293, 0, 131072, 5046294, 0, 131072, 5046295, 0, 131072, 5046296, 0, 131072, 5046297, 0, 131072, 5046298, 0, 131072, 5046299, 0, 131072, 5046300, 0, 131072, 5046301, 0, 131072, 5046302, 0, 131072, 5046303, 0, 131072, 5046304, 0, 131072, 5046305, 0, 131072, 5046306, 0, 131072, 5046307, 0, 131072, 5046308, 0, 131072, 5046309, 0, 131072, 5046310, 0, 131072, 5046311, 0, 131072, 5046312, 0, 131072, 5046313, 0, 131072, 5046314, 0, 131072, 5046315, 0, 131072, 5046316, 0, 131072, 5046317, 0, 131072, 5046318, 0, 131072, 5046319, 0, 131072, 5046320, 0, 131072, 5046321, 0, 131072, 5046322, 0, 131072, 5046323, 0, 131072, 5046324, 0, 131072, 5046325, 0, 131072, 5046326, 0, 131072, 5046327, 0, 131072, 5046328, 0, 131072, 5046329, 0, 131072, 5046330, 0, 131072, 5046331, 0, 131072, 5046332, 0, 131072, 5046333, 0, 131072, 5046334, 0, 131072, 5046335, 0, 131072, 5046336, 0, 131072, 5046337, 0, 131072, 5046338, 0, 131072, 5046339, 0, 131072, 5046340, 0, 131072, 5046341, 0, 131072, 5046342, 0, 131072, 5046343, 0, 131072, 5046344, 0, 131072, 5046345, 0, 131072, 5046346, 0, 131072, 5046347, 0, 131072, 5046348, 0, 131072, 5046349, 0, 131072, 5046350, 0, 131072, 5046351, 0, 131072, 5046352, 0, 131072, 5046353, 0, 131072, 5046354, 0, 131072, 5046355, 0, 131072, 5046356, 0, 131072, 5046357, 0, 131072, 5046358, 0, 131072, 5046359, 0, 131072, 5046360, 0, 131072, 5046361, 0, 131072, 5046362, 0, 131072, 5046363, 0, 131072, 5046364, 0, 131072, 5046365, 0, 131072, 5046366, 0, 131072, 5046367, 0, 131072, 5046368, 0, 131072, 5046369, 0, 131072, 5046370, 0, 131072, 5046371, 0, 131072, 5046372, 0, 131072, 5046373, 0, 131072, 5046374, 0, 131072, 5046375, 0, 131072, 5046376, 0, 131072, 5046377, 0, 131072, 5046378, 0, 131072, 5046379, 0, 131072, 5046380, 0, 131072, 5046381, 0, 131072, 5046382, 0, 131072, 5046383, 0, 131072, 5046384, 0, 131072, 5046385, 0, 131072, 5046386, 0, 131072, 5046387, 0, 131072, 5046388, 0, 131072, 5046389, 0, 131072, 5046390, 0, 131072, 5046391, 0, 131072, 5046392, 0, 131072, 5046393, 0, 131072, 5046394, 0, 131072, 5046395, 0, 131072, 5046396, 0, 131072, 5046397, 0, 131072, 5046398, 0, 131072, 5046399, 0, 131072, 5046400, 0, 131072, 5046401, 0, 131072, 5046402, 0, 131072, 5046403, 0, 131072, 5046404, 0, 131072, 5046405, 0, 131072, 5046406, 0, 131072, 5046407, 0, 131072, 5046408, 0, 131072, 5046409, 0, 131072, 5046410, 0, 131072, 5046411, 0, 131072, 5046412, 0, 131072, 5046413, 0, 131072, 5046414, 0, 131072, 5046415, 0, 131072, 5046416, 0, 131072, 5046417, 0, 131072, 5046418, 0, 131072, 5046419, 0, 131072, 5046420, 0, 131072, 5046421, 0, 131072, 5046422, 0, 131072, 5046423, 0, 131072, 5046424, 0, 131072, 5046425, 0, 131072, 5046426, 0, 131072, 5046427, 0, 131072, 5046428, 0, 131072, 5046429, 0, 131072, 5046430, 0, 131072, 5046431, 0, 131072, 5046432, 0, 131072, 5046433, 0, 131072, 5046434, 0, 131072, 5046435, 0, 131072, 5046436, 0, 131072, 5046437, 0, 131072, 5046438, 0, 131072, 5046439, 0, 131072, 5046440, 0, 131072, 5046441, 0, 131072, 5046442, 0, 131072, 5046443, 0, 131072, 5046444, 0, 131072, 5046445, 0, 131072, 5046446, 0, 131072, 5046447, 0, 131072, 5046448, 0, 131072, 5046449, 0, 131072, 5046450, 0, 131072, 5046451, 0, 131072, 5046452, 0, 131072, 5046453, 0, 131072, 5046454, 0, 131072, 5046455, 0, 131072, 5046456, 0, 131072, 5046457, 0, 131072, 5046458, 0, 131072, 5046459, 0, 131072, 5046460, 0, 131072, 5046461, 0, 131072, 5046462, 0, 131072, 5046463, 0, 131072, 5046464, 0, 131072, 5046465, 0, 131072, 5046466, 0, 131072, 5046467, 0, 131072, 5046468, 0, 131072, 5046469, 0, 131072, 5046470, 0, 131072, 5046471, 0, 131072, 5177314, 0, 131072, 5177315, 0, 131072, 5177316, 0, 131072, 5177317, 0, 131072, 5177318, 0, 131072, 5177319, 0, 131072, 5177320, 0, 131072, 5177321, 0, 131072, 5177322, 0, 131072, 5177323, 0, 131072, 5177324, 0, 131072, 5177325, 0, 131072, 5177326, 0, 131072, 5177327, 0, 131072, 5177328, 0, 131072, 5177329, 0, 131072, 5177330, 0, 131072, 5177331, 0, 131072, 5177332, 0, 131072, 5177333, 0, 131072, 5177334, 0, 131072, 5177335, 0, 131072, 5177336, 0, 131072, 5177337, 0, 131072, 5177338, 0, 131072, 5177339, 0, 131072, 5177340, 0, 131072, 5177341, 0, 131072, 5177342, 0, 131072, 5177343, 0, 131072, 5111808, 0, 131072, 5111809, 0, 131072, 5111810, 0, 131072, 5111811, 0, 131072, 5111812, 0, 131072, 5111813, 0, 131072, 5111814, 0, 131072, 5111815, 0, 131072, 5111816, 0, 131072, 5111817, 0, 131072, 5111818, 0, 131072, 5111819, 0, 131072, 5111820, 0, 131072, 5111821, 0, 131072, 5111822, 0, 131072, 5111823, 0, 131072, 5111824, 0, 131072, 5111825, 0, 131072, 5111826, 0, 131072, 5111827, 0, 131072, 5111828, 0, 131072, 5111829, 0, 131072, 5111830, 0, 131072, 5111831, 0, 131072, 5111832, 0, 131072, 5111833, 0, 131072, 5111834, 0, 131072, 5111835, 0, 131072, 5111836, 0, 131072, 5111837, 0, 131072, 5111838, 0, 131072, 5111839, 0, 131072, 5111840, 0, 131072, 5111841, 0, 131072, 5111842, 0, 131072, 5111843, 0, 131072, 5111844, 0, 131072, 5111845, 0, 131072, 5111846, 0, 131072, 5111847, 0, 131072, 5111848, 0, 131072, 5111849, 0, 131072, 5111850, 0, 131072, 5111851, 0, 131072, 5111852, 0, 131072, 5111853, 0, 131072, 5111854, 0, 131072, 5111855, 0, 131072, 5111856, 0, 131072, 5111857, 0, 131072, 5111858, 0, 131072, 5111859, 0, 131072, 5111860, 0, 131072, 5111861, 0, 131072, 5111862, 0, 131072, 5111863, 0, 131072, 5111864, 0, 131072, 5111865, 0, 131072, 5111866, 0, 131072, 5111867, 0, 131072, 5111868, 0, 131072, 5111869, 0, 131072, 5111870, 0, 131072, 5111871, 0, 131072, 5111872, 0, 131072, 5111873, 0, 131072, 5111874, 0, 131072, 5111875, 0, 131072, 5111876, 0, 131072, 5111877, 0, 131072, 5111878, 0, 131072, 5111879, 0, 131072, 5111880, 0, 131072, 5111881, 0, 131072, 5111882, 0, 131072, 5111883, 0, 131072, 5111884, 0, 131072, 5111885, 0, 131072, 5111886, 0, 131072, 5111887, 0, 131072, 5111888, 0, 131072, 5111889, 0, 131072, 5111890, 0, 131072, 5111891, 0, 131072, 5111892, 0, 131072, 5111893, 0, 131072, 5111894, 0, 131072, 5111895, 0, 131072, 5111896, 0, 131072, 5111897, 0, 131072, 5111898, 0, 131072, 5111899, 0, 131072, 5111900, 0, 131072, 5111901, 0, 131072, 5111902, 0, 131072, 5111903, 0, 131072, 5111904, 0, 131072, 5111905, 0, 131072, 5111906, 0, 131072, 5111907, 0, 131072, 5111908, 0, 131072, 5111909, 0, 131072, 5111910, 0, 131072, 5111911, 0, 131072, 5111912, 0, 131072, 5111913, 0, 131072, 5111914, 0, 131072, 5111915, 0, 131072, 5111916, 0, 131072, 5111917, 0, 131072, 5111918, 0, 131072, 5111919, 0, 131072, 5111920, 0, 131072, 5111921, 0, 131072, 5111922, 0, 131072, 5111923, 0, 131072, 5111924, 0, 131072, 5111925, 0, 131072, 5111926, 0, 131072, 5111927, 0, 131072, 5111928, 0, 131072, 5111929, 0, 131072, 5111930, 0, 131072, 5111931, 0, 131072, 5111932, 0, 131072, 5111933, 0, 131072, 5111934, 0, 131072, 5111935, 0, 131072, 5111936, 0, 131072, 5111937, 0, 131072, 5111938, 0, 131072, 5111939, 0, 131072, 5111940, 0, 131072, 5111941, 0, 131072, 5111942, 0, 131072, 5111943, 0, 131072, 5111944, 0, 131072, 5111945, 0, 131072, 5111946, 0, 131072, 5111947, 0, 131072, 5111948, 0, 131072, 5111949, 0, 131072, 5111950, 0, 131072, 5111951, 0, 131072, 5111952, 0, 131072, 5111953, 0, 131072, 5111954, 0, 131072, 5111955, 0, 131072, 5111956, 0, 131072, 5111957, 0, 131072, 5111958, 0, 131072, 5111959, 0, 131072, 5111960, 0, 131072, 5111961, 0, 131072, 5111962, 0, 131072, 5111963, 0, 131072, 5111964, 0, 131072, 5111965, 0, 131072, 5111966, 0, 131072, 5111967, 0, 131072, 5111968, 0, 131072, 5111969, 0, 131072, 5111970, 0, 131072, 5111971, 0, 131072, 5111972, 0, 131072, 5111973, 0, 131072, 5111974, 0, 131072, 5111975, 0, 131072, 5111976, 0, 131072, 5111977, 0, 131072, 5111978, 0, 131072, 5111979, 0, 131072, 5111980, 0, 131072, 5111981, 0, 131072, 5111982, 0, 131072, 5111983, 0, 131072, 5111984, 0, 131072, 5111985, 0, 131072, 5111986, 0, 131072, 5111987, 0, 131072, 5111988, 0, 131072, 5111989, 0, 131072, 5111990, 0, 131072, 5111991, 0, 131072, 5111992, 0, 131072, 5111993, 0, 131072, 5111994, 0, 131072, 5111995, 0, 131072, 5111996, 0, 131072, 5111997, 0, 131072, 5111998, 0, 131072, 5111999, 0, 131072, 5112000, 0, 131072, 5112001, 0, 131072, 5112002, 0, 131072, 5112003, 0, 131072, 5112004, 0, 131072, 5112005, 0, 131072, 5112006, 0, 131072, 5242851, 0, 131072, 5242852, 0, 131072, 5242853, 0, 131072, 5242854, 0, 131072, 5242855, 0, 131072, 5242856, 0, 131072, 5242857, 0, 131072, 5242858, 0, 131072, 5242859, 0, 131072, 5242860, 0, 131072, 5242861, 0, 131072, 5242862, 0, 131072, 5242863, 0, 131072, 5242864, 0, 131072, 5242865, 0, 131072, 5242866, 0, 131072, 5242867, 0, 131072, 5242868, 0, 131072, 5242869, 0, 131072, 5242870, 0, 131072, 5242871, 0, 131072, 5242872, 0, 131072, 5242873, 0, 131072, 5242874, 0, 131072, 5242875, 0, 131072, 5242876, 0, 131072, 5242877, 0, 131072, 5242878, 0, 131072, 5242879, 0, 131072, 5177344, 0, 131072, 5177345, 0, 131072, 5177346, 0, 131072, 5177347, 0, 131072, 5177348, 0, 131072, 5177349, 0, 131072, 5177350, 0, 131072, 5177351, 0, 131072, 5177352, 0, 131072, 5177353, 0, 131072, 5177354, 0, 131072, 5177355, 0, 131072, 5177356, 0, 131072, 5177357, 0, 131072, 5177358, 0, 131072, 5177359, 0, 131072, 5177360, 0, 131072, 5177361, 0, 131072, 5177362, 0, 131072, 5177363, 0, 131072, 5177364, 0, 131072, 5177365, 0, 131072, 5177366, 0, 131072, 5177367, 0, 131072, 5177368, 0, 131072, 5177369, 0, 131072, 5177370, 0, 131072, 5177371, 0, 131072, 5177372, 0, 131072, 5177373, 0, 131072, 5177374, 0, 131072, 5177375, 0, 131072, 5177376, 0, 131072, 5177377, 0, 131072, 5177378, 0, 131072, 5177379, 0, 131072, 5177380, 0, 131072, 5177381, 0, 131072, 5177382, 0, 131072, 5177383, 0, 131072, 5177384, 0, 131072, 5177385, 0, 131072, 5177386, 0, 131072, 5177387, 0, 131072, 5177388, 0, 131072, 5177389, 0, 131072, 5177390, 0, 131072, 5177391, 0, 131072, 5177392, 0, 131072, 5177393, 0, 131072, 5177394, 0, 131072, 5177395, 0, 131072, 5177396, 0, 131072, 5177397, 0, 131072, 5177398, 0, 131072, 5177399, 0, 131072, 5177400, 0, 131072, 5177401, 0, 131072, 5177402, 0, 131072, 5177403, 0, 131072, 5177404, 0, 131072, 5177405, 0, 131072, 5177406, 0, 131072, 5177407, 0, 131072, 5177408, 0, 131072, 5177409, 0, 131072, 5177410, 0, 131072, 5177411, 0, 131072, 5177412, 0, 131072, 5177413, 0, 131072, 5177414, 0, 131072, 5177415, 0, 131072, 5177416, 0, 131072, 5177417, 0, 131072, 5177418, 0, 131072, 5177419, 0, 131072, 5177420, 0, 131072, 5177421, 0, 131072, 5177422, 0, 131072, 5177423, 0, 131072, 5177424, 0, 131072, 5177425, 0, 131072, 5177426, 0, 131072, 5177427, 0, 131072, 5177428, 0, 131072, 5177429, 0, 131072, 5177430, 0, 131072, 5177431, 0, 131072, 5177432, 0, 131072, 5177433, 0, 131072, 5177434, 0, 131072, 5177435, 0, 131072, 5177436, 0, 131072, 5177437, 0, 131072, 5177438, 0, 131072, 5177439, 0, 131072, 5177440, 0, 131072, 5177441, 0, 131072, 5177442, 0, 131072, 5177443, 0, 131072, 5177444, 0, 131072, 5177445, 0, 131072, 5177446, 0, 131072, 5177447, 0, 131072, 5177448, 0, 131072, 5177449, 0, 131072, 5177450, 0, 131072, 5177451, 0, 131072, 5177452, 0, 131072, 5177453, 0, 131072, 5177454, 0, 131072, 5177455, 0, 131072, 5177456, 0, 131072, 5177457, 0, 131072, 5177458, 0, 131072, 5177459, 0, 131072, 5177460, 0, 131072, 5177461, 0, 131072, 5177462, 0, 131072, 5177463, 0, 131072, 5177464, 0, 131072, 5177465, 0, 131072, 5177466, 0, 131072, 5177467, 0, 131072, 5177468, 0, 131072, 5177469, 0, 131072, 5177470, 0, 131072, 5177471, 0, 131072, 5177472, 0, 131072, 5177473, 0, 131072, 5177474, 0, 131072, 5177475, 0, 131072, 5177476, 0, 131072, 5177477, 0, 131072, 5177478, 0, 131072, 5177479, 0, 131072, 5177480, 0, 131072, 5177481, 0, 131072, 5177482, 0, 131072, 5177483, 0, 131072, 5177484, 0, 131072, 5177485, 0, 131072, 5177486, 0, 131072, 5177487, 0, 131072, 5177488, 0, 131072, 5177489, 0, 131072, 5177490, 0, 131072, 5177491, 0, 131072, 5177492, 0, 131072, 5177493, 0, 131072, 5177494, 0, 131072, 5177495, 0, 131072, 5177496, 0, 131072, 5177497, 0, 131072, 5177498, 0, 131072, 5177499, 0, 131072, 5177500, 0, 131072, 5177501, 0, 131072, 5177502, 0, 131072, 5177503, 0, 131072, 5177504, 0, 131072, 5177505, 0, 131072, 5177506, 0, 131072, 5177507, 0, 131072, 5177508, 0, 131072, 5177509, 0, 131072, 5177510, 0, 131072, 5177511, 0, 131072, 5177512, 0, 131072, 5177513, 0, 131072, 5177514, 0, 131072, 5177515, 0, 131072, 5177516, 0, 131072, 5177517, 0, 131072, 5177518, 0, 131072, 5177519, 0, 131072, 5177520, 0, 131072, 5177521, 0, 131072, 5177522, 0, 131072, 5177523, 0, 131072, 5177524, 0, 131072, 5177525, 0, 131072, 5177526, 0, 131072, 5177527, 0, 131072, 5177528, 0, 131072, 5177529, 0, 131072, 5177530, 0, 131072, 5177531, 0, 131072, 5177532, 0, 131072, 5177533, 0, 131072, 5177534, 0, 131072, 5177535, 0, 131072, 5177536, 0, 131072, 5177537, 0, 131072, 5177538, 0, 131072, 5177539, 0, 131072, 5177540, 0, 131072, 5177541, 0, 131072, 5308388, 0, 131072, 5308389, 0, 131072, 5308390, 0, 131072, 5308391, 0, 131072, 5308392, 0, 131072, 5308393, 0, 131072, 5308394, 0, 131072, 5308395, 0, 131072, 5308396, 0, 131072, 5308397, 0, 131072, 5308398, 0, 131072, 5308399, 0, 131072, 5308400, 0, 131072, 5308401, 0, 131072, 5308402, 0, 131072, 5308403, 0, 131072, 5308404, 0, 131072, 5308405, 0, 131072, 5308406, 0, 131072, 5308407, 0, 131072, 5308408, 0, 131072, 5308409, 0, 131072, 5308410, 0, 131072, 5308411, 0, 131072, 5308412, 0, 131072, 5308413, 0, 131072, 5308414, 0, 131072, 5308415, 0, 131072, 5242880, 0, 131072, 5242881, 0, 131072, 5242882, 0, 131072, 5242883, 0, 131072, 5242884, 0, 131072, 5242885, 0, 131072, 5242886, 0, 131072, 5242887, 0, 131072, 5242888, 0, 131072, 5242889, 0, 131072, 5242890, 0, 131072, 5242891, 0, 131072, 5242892, 0, 131072, 5242893, 0, 131072, 5242894, 0, 131072, 5242895, 0, 131072, 5242896, 0, 131072, 5242897, 0, 131072, 5242898, 0, 131072, 5242899, 0, 131072, 5242900, 0, 131072, 5242901, 0, 131072, 5242902, 0, 131072, 5242903, 0, 131072, 5242904, 0, 131072, 5242905, 0, 131072, 5242906, 0, 131072, 5242907, 0, 131072, 5242908, 0, 131072, 5242909, 0, 131072, 5242910, 0, 131072, 5242911, 0, 131072, 5242912, 0, 131072, 5242913, 0, 131072, 5242914, 0, 131072, 5242915, 0, 131072, 5242916, 0, 131072, 5242917, 0, 131072, 5242918, 0, 131072, 5242919, 0, 131072, 5242920, 0, 131072, 5242921, 0, 131072, 5242922, 0, 131072, 5242923, 0, 131072, 5242924, 0, 131072, 5242925, 0, 131072, 5242926, 0, 131072, 5242927, 0, 131072, 5242928, 0, 131072, 5242929, 0, 131072, 5242930, 0, 131072, 5242931, 0, 131072, 5242932, 0, 131072, 5242933, 0, 131072, 5242934, 0, 131072, 5242935, 0, 131072, 5242936, 0, 131072, 5242937, 0, 131072, 5242938, 0, 131072, 5242939, 0, 131072, 5242940, 0, 131072, 5242941, 0, 131072, 5242942, 0, 131072, 5242943, 0, 131072, 5242944, 0, 131072, 5242945, 0, 131072, 5242946, 0, 131072, 5242947, 0, 131072, 5242948, 0, 131072, 5242949, 0, 131072, 5242950, 0, 131072, 5242951, 0, 131072, 5242952, 0, 131072, 5242953, 0, 131072, 5242954, 0, 131072, 5242955, 0, 131072, 5242956, 0, 131072, 5242957, 0, 131072, 5242958, 0, 131072, 5242959, 0, 131072, 5242960, 0, 131072, 5242961, 0, 131072, 5242962, 0, 131072, 5242963, 0, 131072, 5242964, 0, 131072, 5242965, 0, 131072, 5242966, 0, 131072, 5242967, 0, 131072, 5242968, 0, 131072, 5242969, 0, 131072, 5242970, 0, 131072, 5242971, 0, 131072, 5242972, 0, 131072, 5242973, 0, 131072, 5242974, 0, 131072, 5242975, 0, 131072, 5242976, 0, 131072, 5242977, 0, 131072, 5242978, 0, 131072, 5242979, 0, 131072, 5242980, 0, 131072, 5242981, 0, 131072, 5242982, 0, 131072, 5242983, 0, 131072, 5242984, 0, 131072, 5242985, 0, 131072, 5242986, 0, 131072, 5242987, 0, 131072, 5242988, 0, 131072, 5242989, 0, 131072, 5242990, 0, 131072, 5242991, 0, 131072, 5242992, 0, 131072, 5242993, 0, 131072, 5242994, 0, 131072, 5242995, 0, 131072, 5242996, 0, 131072, 5242997, 0, 131072, 5242998, 0, 131072, 5242999, 0, 131072, 5243000, 0, 131072, 5243001, 0, 131072, 5243002, 0, 131072, 5243003, 0, 131072, 5243004, 0, 131072, 5243005, 0, 131072, 5243006, 0, 131072, 5243007, 0, 131072, 5243008, 0, 131072, 5243009, 0, 131072, 5243010, 0, 131072, 5243011, 0, 131072, 5243012, 0, 131072, 5243013, 0, 131072, 5243014, 0, 131072, 5243015, 0, 131072, 5243016, 0, 131072, 5243017, 0, 131072, 5243018, 0, 131072, 5243019, 0, 131072, 5243020, 0, 131072, 5243021, 0, 131072, 5243022, 0, 131072, 5243023, 0, 131072, 5243024, 0, 131072, 5243025, 0, 131072, 5243026, 0, 131072, 5243027, 0, 131072, 5243028, 0, 131072, 5243029, 0, 131072, 5243030, 0, 131072, 5243031, 0, 131072, 5243032, 0, 131072, 5243033, 0, 131072, 5243034, 0, 131072, 5243035, 0, 131072, 5243036, 0, 131072, 5243037, 0, 131072, 5243038, 0, 131072, 5243039, 0, 131072, 5243040, 0, 131072, 5243041, 0, 131072, 5243042, 0, 131072, 5243043, 0, 131072, 5243044, 0, 131072, 5243045, 0, 131072, 5243046, 0, 131072, 5243047, 0, 131072, 5243048, 0, 131072, 5243049, 0, 131072, 5243050, 0, 131072, 5243051, 0, 131072, 5243052, 0, 131072, 5243053, 0, 131072, 5243054, 0, 131072, 5243055, 0, 131072, 5243056, 0, 131072, 5243057, 0, 131072, 5243058, 0, 131072, 5243059, 0, 131072, 5243060, 0, 131072, 5243061, 0, 131072, 5243062, 0, 131072, 5243063, 0, 131072, 5243064, 0, 131072, 5243065, 0, 131072, 5243066, 0, 131072, 5243067, 0, 131072, 5243068, 0, 131072, 5243069, 0, 131072, 5243070, 0, 131072, 5243071, 0, 131072, 5243072, 0, 131072, 5243073, 0, 131072, 5243074, 0, 131072, 5243075, 0, 131072, 5243076, 0, 131072, 5373926, 0, 131072, 5373927, 0, 131072, 5373928, 0, 131072, 5373929, 0, 131072, 5373930, 0, 131072, 5373931, 0, 131072, 5373932, 0, 131072, 5373933, 0, 131072, 5373934, 0, 131072, 5373935, 0, 131072, 5373936, 0, 131072, 5373937, 0, 131072, 5373938, 0, 131072, 5373939, 0, 131072, 5373940, 0, 131072, 5373941, 0, 131072, 5373942, 0, 131072, 5373943, 0, 131072, 5373944, 0, 131072, 5373945, 0, 131072, 5373946, 0, 131072, 5373947, 0, 131072, 5373948, 0, 131072, 5373949, 0, 131072, 5373950, 0, 131072, 5373951, 0, 131072, 5308416, 0, 131072, 5308417, 0, 131072, 5308418, 0, 131072, 5308419, 0, 131072, 5308420, 0, 131072, 5308421, 0, 131072, 5308422, 0, 131072, 5308423, 0, 131072, 5308424, 0, 131072, 5308425, 0, 131072, 5308426, 0, 131072, 5308427, 0, 131072, 5308428, 0, 131072, 5308429, 0, 131072, 5308430, 0, 131072, 5308431, 0, 131072, 5308432, 0, 131072, 5308433, 0, 131072, 5308434, 0, 131072, 5308435, 0, 131072, 5308436, 0, 131072, 5308437, 0, 131072, 5308438, 0, 131072, 5308439, 0, 131072, 5308440, 0, 131072, 5308441, 0, 131072, 5308442, 0, 131072, 5308443, 0, 131072, 5308444, 0, 131072, 5308445, 0, 131072, 5308446, 0, 131072, 5308447, 0, 131072, 5308448, 0, 131072, 5308449, 0, 131072, 5308450, 0, 131072, 5308451, 0, 131072, 5308452, 0, 131072, 5308453, 0, 131072, 5308454, 0, 131072, 5308455, 0, 131072, 5308456, 0, 131072, 5308457, 0, 131072, 5308458, 0, 131072, 5308459, 0, 131072, 5308460, 0, 131072, 5308461, 0, 131072, 5308462, 0, 131072, 5308463, 0, 131072, 5308464, 0, 131072, 5308465, 0, 131072, 5308466, 0, 131072, 5308467, 0, 131072, 5308468, 0, 131072, 5308469, 0, 131072, 5308470, 0, 131072, 5308471, 0, 131072, 5308472, 0, 131072, 5308473, 0, 131072, 5308474, 0, 131072, 5308475, 0, 131072, 5308476, 0, 131072, 5308477, 0, 131072, 5308478, 0, 131072, 5308479, 0, 131072, 5308480, 0, 131072, 5308481, 0, 131072, 5308482, 0, 131072, 5308483, 0, 131072, 5308484, 0, 131072, 5308485, 0, 131072, 5308486, 0, 131072, 5308487, 0, 131072, 5308488, 0, 131072, 5308489, 0, 131072, 5308490, 0, 131072, 5308491, 0, 131072, 5308492, 0, 131072, 5308493, 0, 131072, 5308494, 0, 131072, 5308495, 0, 131072, 5308496, 0, 131072, 5308497, 0, 131072, 5308498, 0, 131072, 5308499, 0, 131072, 5308500, 0, 131072, 5308501, 0, 131072, 5308502, 0, 131072, 5308503, 0, 131072, 5308504, 0, 131072, 5308505, 0, 131072, 5308506, 0, 131072, 5308507, 0, 131072, 5308508, 0, 131072, 5308509, 0, 131072, 5308510, 0, 131072, 5308511, 0, 131072, 5308512, 0, 131072, 5308513, 0, 131072, 5308514, 0, 131072, 5308515, 0, 131072, 5308516, 0, 131072, 5308517, 0, 131072, 5308518, 0, 131072, 5308519, 0, 131072, 5308520, 0, 131072, 5308521, 0, 131072, 5308522, 0, 131072, 5308523, 0, 131072, 5308524, 0, 131072, 5308525, 0, 131072, 5308526, 0, 131072, 5308527, 0, 131072, 5308528, 0, 131072, 5308529, 0, 131072, 5308530, 0, 131072, 5308531, 0, 131072, 5308532, 0, 131072, 5308533, 0, 131072, 5308534, 0, 131072, 5308535, 0, 131072, 5308536, 0, 131072, 5308537, 0, 131072, 5308538, 0, 131072, 5308539, 0, 131072, 5308540, 0, 131072, 5308541, 0, 131072, 5308542, 0, 131072, 5308543, 0, 131072, 5308544, 0, 131072, 5308545, 0, 131072, 5308546, 0, 131072, 5308547, 0, 131072, 5308548, 0, 131072, 5308549, 0, 131072, 5308550, 0, 131072, 5308551, 0, 131072, 5308552, 0, 131072, 5308553, 0, 131072, 5308554, 0, 131072, 5308555, 0, 131072, 5308556, 0, 131072, 5308557, 0, 131072, 5308558, 0, 131072, 5308559, 0, 131072, 5308560, 0, 131072, 5308561, 0, 131072, 5308562, 0, 131072, 5308563, 0, 131072, 5308564, 0, 131072, 5308565, 0, 131072, 5308566, 0, 131072, 5308567, 0, 131072, 5308568, 0, 131072, 5308569, 0, 131072, 5308570, 0, 131072, 5308571, 0, 131072, 5308572, 0, 131072, 5308573, 0, 131072, 5308574, 0, 131072, 5308575, 0, 131072, 5308576, 0, 131072, 5308577, 0, 131072, 5308578, 0, 131072, 5308579, 0, 131072, 5308580, 0, 131072, 5308581, 0, 131072, 5308582, 0, 131072, 5308583, 0, 131072, 5308584, 0, 131072, 5308585, 0, 131072, 5308586, 0, 131072, 5308587, 0, 131072, 5308588, 0, 131072, 5308589, 0, 131072, 5308590, 0, 131072, 5308591, 0, 131072, 5308592, 0, 131072, 5308593, 0, 131072, 5308594, 0, 131072, 5308595, 0, 131072, 5308596, 0, 131072, 5308597, 0, 131072, 5308598, 0, 131072, 5308599, 0, 131072, 5308600, 0, 131072, 5308601, 0, 131072, 5308602, 0, 131072, 5308603, 0, 131072, 5308604, 0, 131072, 5308605, 0, 131072, 5308606, 0, 131072, 5308607, 0, 131072, 5308608, 0, 131072, 5308609, 0, 131072, 5308610, 0, 131072, 5308611, 0, 131072, 5439463, 0, 131072, 5439464, 0, 131072, 5439465, 0, 131072, 5439466, 0, 131072, 5439467, 0, 131072, 5439468, 0, 131072, 5439469, 0, 131072, 5439470, 0, 131072, 5439471, 0, 131072, 5439472, 0, 131072, 5439473, 0, 131072, 5439474, 0, 131072, 5439475, 0, 131072, 5439476, 0, 131072, 5439477, 0, 131072, 5439478, 0, 131072, 5439479, 0, 131072, 5439480, 0, 131072, 5439481, 0, 131072, 5439482, 0, 131072, 5439483, 0, 131072, 5439484, 0, 131072, 5439485, 0, 131072, 5439486, 0, 131072, 5439487, 0, 131072, 5373952, 0, 131072, 5373953, 0, 131072, 5373954, 0, 131072, 5373955, 0, 131072, 5373956, 0, 131072, 5373957, 0, 131072, 5373958, 0, 131072, 5373959, 0, 131072, 5373960, 0, 131072, 5373961, 0, 131072, 5373962, 0, 131072, 5373963, 0, 131072, 5373964, 0, 131072, 5373965, 0, 131072, 5373966, 0, 131072, 5373967, 0, 131072, 5373968, 0, 131072, 5373969, 0, 131072, 5373970, 0, 131072, 5373971, 0, 131072, 5373972, 0, 131072, 5373973, 0, 131072, 5373974, 0, 131072, 5373975, 0, 131072, 5373976, 0, 131072, 5373977, 0, 131072, 5373978, 0, 131072, 5373979, 0, 131072, 5373980, 0, 131072, 5373981, 0, 131072, 5373982, 0, 131072, 5373983, 0, 131072, 5373984, 0, 131072, 5373985, 0, 131072, 5373986, 0, 131072, 5373987, 0, 131072, 5373988, 0, 131072, 5373989, 0, 131072, 5373990, 0, 131072, 5373991, 0, 131072, 5373992, 0, 131072, 5373993, 0, 131072, 5373994, 0, 131072, 5373995, 0, 131072, 5373996, 0, 131072, 5373997, 0, 131072, 5373998, 0, 131072, 5373999, 0, 131072, 5374000, 0, 131072, 5374001, 0, 131072, 5374002, 0, 131072, 5374003, 0, 131072, 5374004, 0, 131072, 5374005, 0, 131072, 5374006, 0, 131072, 5374007, 0, 131072, 5374008, 0, 131072, 5374009, 0, 131072, 5374010, 0, 131072, 5374011, 0, 131072, 5374012, 0, 131072, 5374013, 0, 131072, 5374014, 0, 131072, 5374015, 0, 131072, 5374016, 0, 131072, 5374017, 0, 131072, 5374018, 0, 131072, 5374019, 0, 131072, 5374020, 0, 131072, 5374021, 0, 131072, 5374022, 0, 131072, 5374023, 0, 131072, 5374024, 0, 131072, 5374025, 0, 131072, 5374026, 0, 131072, 5374027, 0, 131072, 5374028, 0, 131072, 5374029, 0, 131072, 5374030, 0, 131072, 5374031, 0, 131072, 5374032, 0, 131072, 5374033, 0, 131072, 5374034, 0, 131072, 5374035, 0, 131072, 5374036, 0, 131072, 5374037, 0, 131072, 5374038, 0, 131072, 5374039, 0, 131072, 5374040, 0, 131072, 5374041, 0, 131072, 5374042, 0, 131072, 5374043, 0, 131072, 5374044, 0, 131072, 5374045, 0, 131072, 5374046, 0, 131072, 5374047, 0, 131072, 5374048, 0, 131072, 5374049, 0, 131072, 5374050, 0, 131072, 5374051, 0, 131072, 5374052, 0, 131072, 5374053, 0, 131072, 5374054, 0, 131072, 5374055, 0, 131072, 5374056, 0, 131072, 5374057, 0, 131072, 5374058, 0, 131072, 5374059, 0, 131072, 5374060, 0, 131072, 5374061, 0, 131072, 5374062, 0, 131072, 5374063, 0, 131072, 5374064, 0, 131072, 5374065, 0, 131072, 5374066, 0, 131072, 5374067, 0, 131072, 5374068, 0, 131072, 5374069, 0, 131072, 5374070, 0, 131072, 5374071, 0, 131072, 5374072, 0, 131072, 5374073, 0, 131072, 5374074, 0, 131072, 5374075, 0, 131072, 5374076, 0, 131072, 5374077, 0, 131072, 5374078, 0, 131072, 5374079, 0, 131072, 5374080, 0, 131072, 5374081, 0, 131072, 5374082, 0, 131072, 5374083, 0, 131072, 5374084, 0, 131072, 5374085, 0, 131072, 5374086, 0, 131072, 5374087, 0, 131072, 5374088, 0, 131072, 5374089, 0, 131072, 5374090, 0, 131072, 5374091, 0, 131072, 5374092, 0, 131072, 5374093, 0, 131072, 5374094, 0, 131072, 5374095, 0, 131072, 5374096, 0, 131072, 5374097, 0, 131072, 5374098, 0, 131072, 5374099, 0, 131072, 5374100, 0, 131072, 5374101, 0, 131072, 5374102, 0, 131072, 5374103, 0, 131072, 5374104, 0, 131072, 5374105, 0, 131072, 5374106, 0, 131072, 5374107, 0, 131072, 5374108, 0, 131072, 5374109, 0, 131072, 5374110, 0, 131072, 5374111, 0, 131072, 5374112, 0, 131072, 5374113, 0, 131072, 5374114, 0, 131072, 5374115, 0, 131072, 5374116, 0, 131072, 5374117, 0, 131072, 5374118, 0, 131072, 5374119, 0, 131072, 5374120, 0, 131072, 5374121, 0, 131072, 5374122, 0, 131072, 5374123, 0, 131072, 5374124, 0, 131072, 5374125, 0, 131072, 5374126, 0, 131072, 5374127, 0, 131072, 5374128, 0, 131072, 5374129, 0, 131072, 5374130, 0, 131072, 5374131, 0, 131072, 5374132, 0, 131072, 5374133, 0, 131072, 5374134, 0, 131072, 5374135, 0, 131072, 5374136, 0, 131072, 5374137, 0, 131072, 5374138, 0, 131072, 5374139, 0, 131072, 5374140, 0, 131072, 5374141, 0, 131072, 5374142, 0, 131072, 5374143, 0, 131072, 5374144, 0, 131072, 5374145, 0, 131072, 5374146, 0, 131072, 5505000, 0, 131072, 5505001, 0, 131072, 5505002, 0, 131072, 5505003, 0, 131072, 5505004, 0, 131072, 5505005, 0, 131072, 5505006, 0, 131072, 5505007, 0, 131072, 5505008, 0, 131072, 5505009, 0, 131072, 5505010, 0, 131072, 5505011, 0, 131072, 5505012, 0, 131072, 5505013, 0, 131072, 5505014, 0, 131072, 5505015, 0, 131072, 5505016, 0, 131072, 5505017, 0, 131072, 5505018, 0, 131072, 5505019, 0, 131072, 5505020, 0, 131072, 5505021, 0, 131072, 5505022, 0, 131072, 5505023, 0, 131072, 5439488, 0, 131072, 5439489, 0, 131072, 5439490, 0, 131072, 5439491, 0, 131072, 5439492, 0, 131072, 5439493, 0, 131072, 5439494, 0, 131072, 5439495, 0, 131072, 5439496, 0, 131072, 5439497, 0, 131072, 5439498, 0, 131072, 5439499, 0, 131072, 5439500, 0, 131072, 5439501, 0, 131072, 5439502, 0, 131072, 5439503, 0, 131072, 5439504, 0, 131072, 5439505, 0, 131072, 5439506, 0, 131072, 5439507, 0, 131072, 5439508, 0, 131072, 5439509, 0, 131072, 5439510, 0, 131072, 5439511, 0, 131072, 5439512, 0, 131072, 5439513, 0, 131072, 5439514, 0, 131072, 5439515, 0, 131072, 5439516, 0, 131072, 5439517, 0, 131072, 5439518, 0, 131072, 5439519, 0, 131072, 5439520, 0, 131072, 5439521, 0, 131072, 5439522, 0, 131072, 5439523, 0, 131072, 5439524, 0, 131072, 5439525, 0, 131072, 5439526, 0, 131072, 5439527, 0, 131072, 5439528, 0, 131072, 5439529, 0, 131072, 5439530, 0, 131072, 5439531, 0, 131072, 5439532, 0, 131072, 5439533, 0, 131072, 5439534, 0, 131072, 5439535, 0, 131072, 5439536, 0, 131072, 5439537, 0, 131072, 5439538, 0, 131072, 5439539, 0, 131072, 5439540, 0, 131072, 5439541, 0, 131072, 5439542, 0, 131072, 5439543, 0, 131072, 5439544, 0, 131072, 5439545, 0, 131072, 5439546, 0, 131072, 5439547, 0, 131072, 5439548, 0, 131072, 5439549, 0, 131072, 5439550, 0, 131072, 5439551, 0, 131072, 5439552, 0, 131072, 5439553, 0, 131072, 5439554, 0, 131072, 5439555, 0, 131072, 5439556, 0, 131072, 5439557, 0, 131072, 5439558, 0, 131072, 5439559, 0, 131072, 5439560, 0, 131072, 5439561, 0, 131072, 5439562, 0, 131072, 5439563, 0, 131072, 5439564, 0, 131072, 5439565, 0, 131072, 5439566, 0, 131072, 5439567, 0, 131072, 5439568, 0, 131072, 5439569, 0, 131072, 5439570, 0, 131072, 5439571, 0, 131072, 5439572, 0, 131072, 5439573, 0, 131072, 5439574, 0, 131072, 5439575, 0, 131072, 5439576, 0, 131072, 5439577, 0, 131072, 5439578, 0, 131072, 5439579, 0, 131072, 5439580, 0, 131072, 5439581, 0, 131072, 5439582, 0, 131072, 5439583, 0, 131072, 5439584, 0, 131072, 5439585, 0, 131072, 5439586, 0, 131072, 5439587, 0, 131072, 5439588, 0, 131072, 5439589, 0, 131072, 5439590, 0, 131072, 5439591, 0, 131072, 5439592, 0, 131072, 5439593, 0, 131072, 5439594, 0, 131072, 5439595, 0, 131072, 5439596, 0, 131072, 5439597, 0, 131072, 5439598, 0, 131072, 5439599, 0, 131072, 5439600, 0, 131072, 5439601, 0, 131072, 5439602, 0, 131072, 5439603, 0, 131072, 5439604, 0, 131072, 5439605, 0, 131072, 5439606, 0, 131072, 5439607, 0, 131072, 5439608, 0, 131072, 5439609, 0, 131072, 5439610, 0, 131072, 5439611, 0, 131072, 5439612, 0, 131072, 5439613, 0, 131072, 5439614, 0, 131072, 5439615, 0, 131072, 5439616, 0, 131072, 5439617, 0, 131072, 5439618, 0, 131072, 5439619, 0, 131072, 5439620, 0, 131072, 5439621, 0, 131072, 5439622, 0, 131072, 5439623, 0, 131072, 5439624, 0, 131072, 5439625, 0, 131072, 5439626, 0, 131072, 5439627, 0, 131072, 5439628, 0, 131072, 5439629, 0, 131072, 5439630, 0, 131072, 5439631, 0, 131072, 5439632, 0, 131072, 5439633, 0, 131072, 5439634, 0, 131072, 5439635, 0, 131072, 5439636, 0, 131072, 5439637, 0, 131072, 5439638, 0, 131072, 5439639, 0, 131072, 5439640, 0, 131072, 5439641, 0, 131072, 5439642, 0, 131072, 5439643, 0, 131072, 5439644, 0, 131072, 5439645, 0, 131072, 5439646, 0, 131072, 5439647, 0, 131072, 5439648, 0, 131072, 5439649, 0, 131072, 5439650, 0, 131072, 5439651, 0, 131072, 5439652, 0, 131072, 5439653, 0, 131072, 5439654, 0, 131072, 5439655, 0, 131072, 5439656, 0, 131072, 5439657, 0, 131072, 5439658, 0, 131072, 5439659, 0, 131072, 5439660, 0, 131072, 5439661, 0, 131072, 5439662, 0, 131072, 5439663, 0, 131072, 5439664, 0, 131072, 5439665, 0, 131072, 5439666, 0, 131072, 5439667, 0, 131072, 5439668, 0, 131072, 5439669, 0, 131072, 5439670, 0, 131072, 5439671, 0, 131072, 5439672, 0, 131072, 5439673, 0, 131072, 5439674, 0, 131072, 5439675, 0, 131072, 5439676, 0, 131072, 5439677, 0, 131072, 5439678, 0, 131072, 5439679, 0, 131072, 5439680, 0, 131072, 5570538, 0, 131072, 5570539, 0, 131072, 5570540, 0, 131072, 5570541, 0, 131072, 5570542, 0, 131072, 5570543, 0, 131072, 5570544, 0, 131072, 5570545, 0, 131072, 5570546, 0, 131072, 5570547, 0, 131072, 5570548, 0, 131072, 5570549, 0, 131072, 5570550, 0, 131072, 5570551, 0, 131072, 5570552, 0, 131072, 5570553, 0, 131072, 5570554, 0, 131072, 5570555, 0, 131072, 5570556, 0, 131072, 5570557, 0, 131072, 5570558, 0, 131072, 5570559, 0, 131072, 5505024, 0, 131072, 5505025, 0, 131072, 5505026, 0, 131072, 5505027, 0, 131072, 5505028, 0, 131072, 5505029, 0, 131072, 5505030, 0, 131072, 5505031, 0, 131072, 5505032, 0, 131072, 5505033, 0, 131072, 5505034, 0, 131072, 5505035, 0, 131072, 5505036, 0, 131072, 5505037, 0, 131072, 5505038, 0, 131072, 5505039, 0, 131072, 5505040, 0, 131072, 5505041, 0, 131072, 5505042, 0, 131072, 5505043, 0, 131072, 5505044, 0, 131072, 5505045, 0, 131072, 5505046, 0, 131072, 5505047, 0, 131072, 5505048, 0, 131072, 5505049, 0, 131072, 5505050, 0, 131072, 5505051, 0, 131072, 5505052, 0, 131072, 5505053, 0, 131072, 5505054, 0, 131072, 5505055, 0, 131072, 5505056, 0, 131072, 5505057, 0, 131072, 5505058, 0, 131072, 5505059, 0, 131072, 5505060, 0, 131072, 5505061, 0, 131072, 5505062, 0, 131072, 5505063, 0, 131072, 5505064, 0, 131072, 5505065, 0, 131072, 5505066, 0, 131072, 5505067, 0, 131072, 5505068, 0, 131072, 5505069, 0, 131072, 5505070, 0, 131072, 5505071, 0, 131072, 5505072, 0, 131072, 5505073, 0, 131072, 5505074, 0, 131072, 5505075, 0, 131072, 5505076, 0, 131072, 5505077, 0, 131072, 5505078, 0, 131072, 5505079, 0, 131072, 5505080, 0, 131072, 5505081, 0, 131072, 5505082, 0, 131072, 5505083, 0, 131072, 5505084, 0, 131072, 5505085, 0, 131072, 5505086, 0, 131072, 5505087, 0, 131072, 5505088, 0, 131072, 5505089, 0, 131072, 5505090, 0, 131072, 5505091, 0, 131072, 5505092, 0, 131072, 5505093, 0, 131072, 5505094, 0, 131072, 5505095, 0, 131072, 5505096, 0, 131072, 5505097, 0, 131072, 5505098, 0, 131072, 5505099, 0, 131072, 5505100, 0, 131072, 5505101, 0, 131072, 5505102, 0, 131072, 5505103, 0, 131072, 5505104, 0, 131072, 5505105, 0, 131072, 5505106, 0, 131072, 5505107, 0, 131072, 5505108, 0, 131072, 5505109, 0, 131072, 5505110, 0, 131072, 5505111, 0, 131072, 5505112, 0, 131072, 5505113, 0, 131072, 5505114, 0, 131072, 5505115, 0, 131072, 5505116, 0, 131072, 5505117, 0, 131072, 5505118, 0, 131072, 5505119, 0, 131072, 5505120, 0, 131072, 5505121, 0, 131072, 5505122, 0, 131072, 5505123, 0, 131072, 5505124, 0, 131072, 5505125, 0, 131072, 5505126, 0, 131072, 5505127, 0, 131072, 5505128, 0, 131072, 5505129, 0, 131072, 5505130, 0, 131072, 5505131, 0, 131072, 5505132, 0, 131072, 5505133, 0, 131072, 5505134, 0, 131072, 5505135, 0, 131072, 5505136, 0, 131072, 5505137, 0, 131072, 5505138, 0, 131072, 5505139, 0, 131072, 5505140, 0, 131072, 5505141, 0, 131072, 5505142, 0, 131072, 5505143, 0, 131072, 5505144, 0, 131072, 5505145, 0, 131072, 5505146, 0, 131072, 5505147, 0, 131072, 5505148, 0, 131072, 5505149, 0, 131072, 5505150, 0, 131072, 5505151, 0, 131072, 5505152, 0, 131072, 5505153, 0, 131072, 5505154, 0, 131072, 5505155, 0, 131072, 5505156, 0, 131072, 5505157, 0, 131072, 5505158, 0, 131072, 5505159, 0, 131072, 5505160, 0, 131072, 5505161, 0, 131072, 5505162, 0, 131072, 5505163, 0, 131072, 5505164, 0, 131072, 5505165, 0, 131072, 5505166, 0, 131072, 5505167, 0, 131072, 5505168, 0, 131072, 5505169, 0, 131072, 5505170, 0, 131072, 5505171, 0, 131072, 5505172, 0, 131072, 5505173, 0, 131072, 5505174, 0, 131072, 5505175, 0, 131072, 5505176, 0, 131072, 5505177, 0, 131072, 5505178, 0, 131072, 5505179, 0, 131072, 5505180, 0, 131072, 5505181, 0, 131072, 5505182, 0, 131072, 5505183, 0, 131072, 5505184, 0, 131072, 5505185, 0, 131072, 5505186, 0, 131072, 5505187, 0, 131072, 5505188, 0, 131072, 5505189, 0, 131072, 5505190, 0, 131072, 5505191, 0, 131072, 5505192, 0, 131072, 5505193, 0, 131072, 5505194, 0, 131072, 5505195, 0, 131072, 5505196, 0, 131072, 5505197, 0, 131072, 5505198, 0, 131072, 5505199, 0, 131072, 5505200, 0, 131072, 5505201, 0, 131072, 5505202, 0, 131072, 5505203, 0, 131072, 5505204, 0, 131072, 5505205, 0, 131072, 5505206, 0, 131072, 5505207, 0, 131072, 5505208, 0, 131072, 5505209, 0, 131072, 5505210, 0, 131072, 5505211, 0, 131072, 5505212, 0, 131072, 5505213, 0, 131072, 5505214, 0, 131072, 5636075, 0, 131072, 5636076, 0, 131072, 5636077, 0, 131072, 5636078, 0, 131072, 5636079, 0, 131072, 5636080, 0, 131072, 5636081, 0, 131072, 5636082, 0, 131072, 5636083, 0, 131072, 5636084, 0, 131072, 5636085, 0, 131072, 5636086, 0, 131072, 5636087, 0, 131072, 5636088, 0, 131072, 5636089, 0, 131072, 5636090, 0, 131072, 5636091, 0, 131072, 5636092, 0, 131072, 5636093, 0, 131072, 5636094, 0, 131072, 5636095, 0, 131072, 5570560, 0, 131072, 5570561, 0, 131072, 5570562, 0, 131072, 5570563, 0, 131072, 5570564, 0, 131072, 5570565, 0, 131072, 5570566, 0, 131072, 5570567, 0, 131072, 5570568, 0, 131072, 5570569, 0, 131072, 5570570, 0, 131072, 5570571, 0, 131072, 5570572, 0, 131072, 5570573, 0, 131072, 5570574, 0, 131072, 5570575, 0, 131072, 5570576, 0, 131072, 5570577, 0, 131072, 5570578, 0, 131072, 5570579, 0, 131072, 5570580, 0, 131072, 5570581, 0, 131072, 5570582, 0, 131072, 5570583, 0, 131072, 5570584, 0, 131072, 5570585, 0, 131072, 5570586, 0, 131072, 5570587, 0, 131072, 5570588, 0, 131072, 5570589, 0, 131072, 5570590, 0, 131072, 5570591, 0, 131072, 5570592, 0, 131072, 5570593, 0, 131072, 5570594, 0, 131072, 5570595, 0, 131072, 5570596, 0, 131072, 5570597, 0, 131072, 5570598, 0, 131072, 5570599, 0, 131072, 5570600, 0, 131072, 5570601, 0, 131072, 5570602, 0, 131072, 5570603, 0, 131072, 5570604, 0, 131072, 5570605, 0, 131072, 5570606, 0, 131072, 5570607, 0, 131072, 5570608, 0, 131072, 5570609, 0, 131072, 5570610, 0, 131072, 5570611, 0, 131072, 5570612, 0, 131072, 5570613, 0, 131072, 5570614, 0, 131072, 5570615, 0, 131072, 5570616, 0, 131072, 5570617, 0, 131072, 5570618, 0, 131072, 5570619, 0, 131072, 5570620, 0, 131072, 5570621, 0, 131072, 5570622, 0, 131072, 5570623, 0, 131072, 5570624, 0, 131072, 5570625, 0, 131072, 5570626, 0, 131072, 5570627, 0, 131072, 5570628, 0, 131072, 5570629, 0, 131072, 5570630, 0, 131072, 5570631, 0, 131072, 5570632, 0, 131072, 5570633, 0, 131072, 5570634, 0, 131072, 5570635, 0, 131072, 5570636, 0, 131072, 5570637, 0, 131072, 5570638, 0, 131072, 5570639, 0, 131072, 5570640, 0, 131072, 5570641, 0, 131072, 5570642, 0, 131072, 5570643, 0, 131072, 5570644, 0, 131072, 5570645, 0, 131072, 5570646, 0, 131072, 5570647, 0, 131072, 5570648, 0, 131072, 5570649, 0, 131072, 5570650, 0, 131072, 5570651, 0, 131072, 5570652, 0, 131072, 5570653, 0, 131072, 5570654, 0, 131072, 5570655, 0, 131072, 5570656, 0, 131072, 5570657, 0, 131072, 5570658, 0, 131072, 5570659, 0, 131072, 5570660, 0, 131072, 5570661, 0, 131072, 5570662, 0, 131072, 5570663, 0, 131072, 5570664, 0, 131072, 5570665, 0, 131072, 5570666, 0, 131072, 5570667, 0, 131072, 5570668, 0, 131072, 5570669, 0, 131072, 5570670, 0, 131072, 5570671, 0, 131072, 5570672, 0, 131072, 5570673, 0, 131072, 5570674, 0, 131072, 5570675, 0, 131072, 5570676, 0, 131072, 5570677, 0, 131072, 5570678, 0, 131072, 5570679, 0, 131072, 5570680, 0, 131072, 5570681, 0, 131072, 5570682, 0, 131072, 5570683, 0, 131072, 5570684, 0, 131072, 5570685, 0, 131072, 5570686, 0, 131072, 5570687, 0, 131072, 5570688, 0, 131072, 5570689, 0, 131072, 5570690, 0, 131072, 5570691, 0, 131072, 5570692, 0, 131072, 5570693, 0, 131072, 5570694, 0, 131072, 5570695, 0, 131072, 5570696, 0, 131072, 5570697, 0, 131072, 5570698, 0, 131072, 5570699, 0, 131072, 5570700, 0, 131072, 5570701, 0, 131072, 5570702, 0, 131072, 5570703, 0, 131072, 5570704, 0, 131072, 5570705, 0, 131072, 5570706, 0, 131072, 5570707, 0, 131072, 5570708, 0, 131072, 5570709, 0, 131072, 5570710, 0, 131072, 5570711, 0, 131072, 5570712, 0, 131072, 5570713, 0, 131072, 5570714, 0, 131072, 5570715, 0, 131072, 5570716, 0, 131072, 5570717, 0, 131072, 5570718, 0, 131072, 5570719, 0, 131072, 5570720, 0, 131072, 5570721, 0, 131072, 5570722, 0, 131072, 5570723, 0, 131072, 5570724, 0, 131072, 5570725, 0, 131072, 5570726, 0, 131072, 5570727, 0, 131072, 5570728, 0, 131072, 5570729, 0, 131072, 5570730, 0, 131072, 5570731, 0, 131072, 5570732, 0, 131072, 5570733, 0, 131072, 5570734, 0, 131072, 5570735, 0, 131072, 5570736, 0, 131072, 5570737, 0, 131072, 5570738, 0, 131072, 5570739, 0, 131072, 5570740, 0, 131072, 5570741, 0, 131072, 5570742, 0, 131072, 5570743, 0, 131072, 5570744, 0, 131072, 5570745, 0, 131072, 5570746, 0, 131072, 5570747, 0, 131072, 5570748, 0, 131072, 5701613, 0, 131072, 5701614, 0, 131072, 5701615, 0, 131072, 5701616, 0, 131072, 5701617, 0, 131072, 5701618, 0, 131072, 5701619, 0, 131072, 5701620, 0, 131072, 5701621, 0, 131072, 5701622, 0, 131072, 5701623, 0, 131072, 5701624, 0, 131072, 5701625, 0, 131072, 5701626, 0, 131072, 5701627, 0, 131072, 5701628, 0, 131072, 5701629, 0, 131072, 5701630, 0, 131072, 5701631, 0, 131072, 5636096, 0, 131072, 5636097, 0, 131072, 5636098, 0, 131072, 5636099, 0, 131072, 5636100, 0, 131072, 5636101, 0, 131072, 5636102, 0, 131072, 5636103, 0, 131072, 5636104, 0, 131072, 5636105, 0, 131072, 5636106, 0, 131072, 5636107, 0, 131072, 5636108, 0, 131072, 5636109, 0, 131072, 5636110, 0, 131072, 5636111, 0, 131072, 5636112, 0, 131072, 5636113, 0, 131072, 5636114, 0, 131072, 5636115, 0, 131072, 5636116, 0, 131072, 5636117, 0, 131072, 5636118, 0, 131072, 5636119, 0, 131072, 5636120, 0, 131072, 5636121, 0, 131072, 5636122, 0, 131072, 5636123, 0, 131072, 5636124, 0, 131072, 5636125, 0, 131072, 5636126, 0, 131072, 5636127, 0, 131072, 5636128, 0, 131072, 5636129, 0, 131072, 5636130, 0, 131072, 5636131, 0, 131072, 5636132, 0, 131072, 5636133, 0, 131072, 5636134, 0, 131072, 5636135, 0, 131072, 5636136, 0, 131072, 5636137, 0, 131072, 5636138, 0, 131072, 5636139, 0, 131072, 5636140, 0, 131072, 5636141, 0, 131072, 5636142, 0, 131072, 5636143, 0, 131072, 5636144, 0, 131072, 5636145, 0, 131072, 5636146, 0, 131072, 5636147, 0, 131072, 5636148, 0, 131072, 5636149, 0, 131072, 5636150, 0, 131072, 5636151, 0, 131072, 5636152, 0, 131072, 5636153, 0, 131072, 5636154, 0, 131072, 5636155, 0, 131072, 5636156, 0, 131072, 5636157, 0, 131072, 5636158, 0, 131072, 5636159, 0, 131072, 5636160, 0, 131072, 5636161, 0, 131072, 5636162, 0, 131072, 5636163, 0, 131072, 5636164, 0, 131072, 5636165, 0, 131072, 5636166, 0, 131072, 5636167, 0, 131072, 5636168, 0, 131072, 5636169, 0, 131072, 5636170, 0, 131072, 5636171, 0, 131072, 5636172, 0, 131072, 5636173, 0, 131072, 5636174, 0, 131072, 5636175, 0, 131072, 5636176, 0, 131072, 5636177, 0, 131072, 5636178, 0, 131072, 5636179, 0, 131072, 5636180, 0, 131072, 5636181, 0, 131072, 5636182, 0, 131072, 5636183, 0, 131072, 5636184, 0, 131072, 5636185, 0, 131072, 5636186, 0, 131072, 5636187, 0, 131072, 5636188, 0, 131072, 5636189, 0, 131072, 5636190, 0, 131072, 5636191, 0, 131072, 5636192, 0, 131072, 5636193, 0, 131072, 5636194, 0, 131072, 5636195, 0, 131072, 5636196, 0, 131072, 5636197, 0, 131072, 5636198, 0, 131072, 5636199, 0, 131072, 5636200, 0, 131072, 5636201, 0, 131072, 5636202, 0, 131072, 5636203, 0, 131072, 5636204, 0, 131072, 5636205, 0, 131072, 5636206, 0, 131072, 5636207, 0, 131072, 5636208, 0, 131072, 5636209, 0, 131072, 5636210, 0, 131072, 5636211, 0, 131072, 5636212, 0, 131072, 5636213, 0, 131072, 5636214, 0, 131072, 5636215, 0, 131072, 5636216, 0, 131072, 5636217, 0, 131072, 5636218, 0, 131072, 5636219, 0, 131072, 5636220, 0, 131072, 5636221, 0, 131072, 5636222, 0, 131072, 5636223, 0, 131072, 5636224, 0, 131072, 5636225, 0, 131072, 5636226, 0, 131072, 5636227, 0, 131072, 5636228, 0, 131072, 5636229, 0, 131072, 5636230, 0, 131072, 5636231, 0, 131072, 5636232, 0, 131072, 5636233, 0, 131072, 5636234, 0, 131072, 5636235, 0, 131072, 5636236, 0, 131072, 5636237, 0, 131072, 5636238, 0, 131072, 5636239, 0, 131072, 5636240, 0, 131072, 5636241, 0, 131072, 5636242, 0, 131072, 5636243, 0, 131072, 5636244, 0, 131072, 5636245, 0, 131072, 5636246, 0, 131072, 5636247, 0, 131072, 5636248, 0, 131072, 5636249, 0, 131072, 5636250, 0, 131072, 5636251, 0, 131072, 5636252, 0, 131072, 5636253, 0, 131072, 5636254, 0, 131072, 5636255, 0, 131072, 5636256, 0, 131072, 5636257, 0, 131072, 5636258, 0, 131072, 5636259, 0, 131072, 5636260, 0, 131072, 5636261, 0, 131072, 5636262, 0, 131072, 5636263, 0, 131072, 5636264, 0, 131072, 5636265, 0, 131072, 5636266, 0, 131072, 5636267, 0, 131072, 5636268, 0, 131072, 5636269, 0, 131072, 5636270, 0, 131072, 5636271, 0, 131072, 5636272, 0, 131072, 5636273, 0, 131072, 5636274, 0, 131072, 5636275, 0, 131072, 5636276, 0, 131072, 5636277, 0, 131072, 5636278, 0, 131072, 5636279, 0, 131072, 5636280, 0, 131072, 5636281, 0, 131072, 5636282, 0, 131072, 5767150, 0, 131072, 5767151, 0, 131072, 5767152, 0, 131072, 5767153, 0, 131072, 5767154, 0, 131072, 5767155, 0, 131072, 5767156, 0, 131072, 5767157, 0, 131072, 5767158, 0, 131072, 5767159, 0, 131072, 5767160, 0, 131072, 5767161, 0, 131072, 5767162, 0, 131072, 5767163, 0, 131072, 5767164, 0, 131072, 5767165, 0, 131072, 5767166, 0, 131072, 5767167, 0, 131072, 5701632, 0, 131072, 5701633, 0, 131072, 5701634, 0, 131072, 5701635, 0, 131072, 5701636, 0, 131072, 5701637, 0, 131072, 5701638, 0, 131072, 5701639, 0, 131072, 5701640, 0, 131072, 5701641, 0, 131072, 5701642, 0, 131072, 5701643, 0, 131072, 5701644, 0, 131072, 5701645, 0, 131072, 5701646, 0, 131072, 5701647, 0, 131072, 5701648, 0, 131072, 5701649, 0, 131072, 5701650, 0, 131072, 5701651, 0, 131072, 5701652, 0, 131072, 5701653, 0, 131072, 5701654, 0, 131072, 5701655, 0, 131072, 5701656, 0, 131072, 5701657, 0, 131072, 5701658, 0, 131072, 5701659, 0, 131072, 5701660, 0, 131072, 5701661, 0, 131072, 5701662, 0, 131072, 5701663, 0, 131072, 5701664, 0, 131072, 5701665, 0, 131072, 5701666, 0, 131072, 5701667, 0, 131072, 5701668, 0, 131072, 5701669, 0, 131072, 5701670, 0, 131072, 5701671, 0, 131072, 5701672, 0, 131072, 5701673, 0, 131072, 5701674, 0, 131072, 5701675, 0, 131072, 5701676, 0, 131072, 5701677, 0, 131072, 5701678, 0, 131072, 5701679, 0, 131072, 5701680, 0, 131072, 5701681, 0, 131072, 5701682, 0, 131072, 5701683, 0, 131072, 5701684, 0, 131072, 5701685, 0, 131072, 5701686, 0, 131072, 5701687, 0, 131072, 5701688, 0, 131072, 5701689, 0, 131072, 5701690, 0, 131072, 5701691, 0, 131072, 5701692, 0, 131072, 5701693, 0, 131072, 5701694, 0, 131072, 5701695, 0, 131072, 5701696, 0, 131072, 5701697, 0, 131072, 5701698, 0, 131072, 5701699, 0, 131072, 5701700, 0, 131072, 5701701, 0, 131072, 5701702, 0, 131072, 5701703, 0, 131072, 5701704, 0, 131072, 5701705, 0, 131072, 5701706, 0, 131072, 5701707, 0, 131072, 5701708, 0, 131072, 5701709, 0, 131072, 5701710, 0, 131072, 5701711, 0, 131072, 5701712, 0, 131072, 5701713, 0, 131072, 5701714, 0, 131072, 5701715, 0, 131072, 5701716, 0, 131072, 5701717, 0, 131072, 5701718, 0, 131072, 5701719, 0, 131072, 5701720, 0, 131072, 5701721, 0, 131072, 5701722, 0, 131072, 5701723, 0, 131072, 5701724, 0, 131072, 5701725, 0, 131072, 5701726, 0, 131072, 5701727, 0, 131072, 5701728, 0, 131072, 5701729, 0, 131072, 5701730, 0, 131072, 5701731, 0, 131072, 5701732, 0, 131072, 5701733, 0, 131072, 5701734, 0, 131072, 5701735, 0, 131072, 5701736, 0, 131072, 5701737, 0, 131072, 5701738, 0, 131072, 5701739, 0, 131072, 5701740, 0, 131072, 5701741, 0, 131072, 5701742, 0, 131072, 5701743, 0, 131072, 5701744, 0, 131072, 5701745, 0, 131072, 5701746, 0, 131072, 5701747, 0, 131072, 5701748, 0, 131072, 5701749, 0, 131072, 5701750, 0, 131072, 5701751, 0, 131072, 5701752, 0, 131072, 5701753, 0, 131072, 5701754, 0, 131072, 5701755, 0, 131072, 5701756, 0, 131072, 5701757, 0, 131072, 5701758, 0, 131072, 5701759, 0, 131072, 5701760, 0, 131072, 5701761, 0, 131072, 5701762, 0, 131072, 5701763, 0, 131072, 5701764, 0, 131072, 5701765, 0, 131072, 5701766, 0, 131072, 5701767, 0, 131072, 5701768, 0, 131072, 5701769, 0, 131072, 5701770, 0, 131072, 5701771, 0, 131072, 5701772, 0, 131072, 5701773, 0, 131072, 5701774, 0, 131072, 5701775, 0, 131072, 5701776, 0, 131072, 5701777, 0, 131072, 5701778, 0, 131072, 5701779, 0, 131072, 5701780, 0, 131072, 5701781, 0, 131072, 5701782, 0, 131072, 5701783, 0, 131072, 5701784, 0, 131072, 5701785, 0, 131072, 5701786, 0, 131072, 5701787, 0, 131072, 5701788, 0, 131072, 5701789, 0, 131072, 5701790, 0, 131072, 5701791, 0, 131072, 5701792, 0, 131072, 5701793, 0, 131072, 5701794, 0, 131072, 5701795, 0, 131072, 5701796, 0, 131072, 5701797, 0, 131072, 5701798, 0, 131072, 5701799, 0, 131072, 5701800, 0, 131072, 5701801, 0, 131072, 5701802, 0, 131072, 5701803, 0, 131072, 5701804, 0, 131072, 5701805, 0, 131072, 5701806, 0, 131072, 5701807, 0, 131072, 5701808, 0, 131072, 5701809, 0, 131072, 5701810, 0, 131072, 5701811, 0, 131072, 5701812, 0, 131072, 5701813, 0, 131072, 5701814, 0, 131072, 5701815, 0, 131072, 5701816, 0, 131072, 5832688, 0, 131072, 5832689, 0, 131072, 5832690, 0, 131072, 5832691, 0, 131072, 5832692, 0, 131072, 5832693, 0, 131072, 5832694, 0, 131072, 5832695, 0, 131072, 5832696, 0, 131072, 5832697, 0, 131072, 5832698, 0, 131072, 5832699, 0, 131072, 5832700, 0, 131072, 5832701, 0, 131072, 5832702, 0, 131072, 5832703, 0, 131072, 5767168, 0, 131072, 5767169, 0, 131072, 5767170, 0, 131072, 5767171, 0, 131072, 5767172, 0, 131072, 5767173, 0, 131072, 5767174, 0, 131072, 5767175, 0, 131072, 5767176, 0, 131072, 5767177, 0, 131072, 5767178, 0, 131072, 5767179, 0, 131072, 5767180, 0, 131072, 5767181, 0, 131072, 5767182, 0, 131072, 5767183, 0, 131072, 5767184, 0, 131072, 5767185, 0, 131072, 5767186, 0, 131072, 5767187, 0, 131072, 5767188, 0, 131072, 5767189, 0, 131072, 5767190, 0, 131072, 5767191, 0, 131072, 5767192, 0, 131072, 5767193, 0, 131072, 5767194, 0, 131072, 5767195, 0, 131072, 5767196, 0, 131072, 5767197, 0, 131072, 5767198, 0, 131072, 5767199, 0, 131072, 5767200, 0, 131072, 5767201, 0, 131072, 5767202, 0, 131072, 5767203, 0, 131072, 5767204, 0, 131072, 5767205, 0, 131072, 5767206, 0, 131072, 5767207, 0, 131072, 5767208, 0, 131072, 5767209, 0, 131072, 5767210, 0, 131072, 5767211, 0, 131072, 5767212, 0, 131072, 5767213, 0, 131072, 5767214, 0, 131072, 5767215, 0, 131072, 5767216, 0, 131072, 5767217, 0, 131072, 5767218, 0, 131072, 5767219, 0, 131072, 5767220, 0, 131072, 5767221, 0, 131072, 5767222, 0, 131072, 5767223, 0, 131072, 5767224, 0, 131072, 5767225, 0, 131072, 5767226, 0, 131072, 5767227, 0, 131072, 5767228, 0, 131072, 5767229, 0, 131072, 5767230, 0, 131072, 5767231, 0, 131072, 5767232, 0, 131072, 5767233, 0, 131072, 5767234, 0, 131072, 5767235, 0, 131072, 5767236, 0, 131072, 5767237, 0, 131072, 5767238, 0, 131072, 5767239, 0, 131072, 5767240, 0, 131072, 5767241, 0, 131072, 5767242, 0, 131072, 5767243, 0, 131072, 5767244, 0, 131072, 5767245, 0, 131072, 5767246, 0, 131072, 5767247, 0, 131072, 5767248, 0, 131072, 5767249, 0, 131072, 5767250, 0, 131072, 5767251, 0, 131072, 5767252, 0, 131072, 5767253, 0, 131072, 5767254, 0, 131072, 5767255, 0, 131072, 5767256, 0, 131072, 5767257, 0, 131072, 5767258, 0, 131072, 5767259, 0, 131072, 5767260, 0, 131072, 5767261, 0, 131072, 5767262, 0, 131072, 5767263, 0, 131072, 5767264, 0, 131072, 5767265, 0, 131072, 5767266, 0, 131072, 5767267, 0, 131072, 5767268, 0, 131072, 5767269, 0, 131072, 5767270, 0, 131072, 5767271, 0, 131072, 5767272, 0, 131072, 5767273, 0, 131072, 5767274, 0, 131072, 5767275, 0, 131072, 5767276, 0, 131072, 5767277, 0, 131072, 5767278, 0, 131072, 5767279, 0, 131072, 5767280, 0, 131072, 5767281, 0, 131072, 5767282, 0, 131072, 5767283, 0, 131072, 5767284, 0, 131072, 5767285, 0, 131072, 5767286, 0, 131072, 5767287, 0, 131072, 5767288, 0, 131072, 5767289, 0, 131072, 5767290, 0, 131072, 5767291, 0, 131072, 5767292, 0, 131072, 5767293, 0, 131072, 5767294, 0, 131072, 5767295, 0, 131072, 5767296, 0, 131072, 5767297, 0, 131072, 5767298, 0, 131072, 5767299, 0, 131072, 5767300, 0, 131072, 5767301, 0, 131072, 5767302, 0, 131072, 5767303, 0, 131072, 5767304, 0, 131072, 5767305, 0, 131072, 5767306, 0, 131072, 5767307, 0, 131072, 5767308, 0, 131072, 5767309, 0, 131072, 5767310, 0, 131072, 5767311, 0, 131072, 5767312, 0, 131072, 5767313, 0, 131072, 5767314, 0, 131072, 5767315, 0, 131072, 5767316, 0, 131072, 5767317, 0, 131072, 5767318, 0, 131072, 5767319, 0, 131072, 5767320, 0, 131072, 5767321, 0, 131072, 5767322, 0, 131072, 5767323, 0, 131072, 5767324, 0, 131072, 5767325, 0, 131072, 5767326, 0, 131072, 5767327, 0, 131072, 5767328, 0, 131072, 5767329, 0, 131072, 5767330, 0, 131072, 5767331, 0, 131072, 5767332, 0, 131072, 5767333, 0, 131072, 5767334, 0, 131072, 5767335, 0, 131072, 5767336, 0, 131072, 5767337, 0, 131072, 5767338, 0, 131072, 5767339, 0, 131072, 5767340, 0, 131072, 5767341, 0, 131072, 5767342, 0, 131072, 5767343, 0, 131072, 5767344, 0, 131072, 5767345, 0, 131072, 5767346, 0, 131072, 5767347, 0, 131072, 5767348, 0, 131072, 5767349, 0, 131072, 5767350, 0, 131072, 5898225, 0, 131072, 5898226, 0, 131072, 5898227, 0, 131072, 5898228, 0, 131072, 5898229, 0, 131072, 5898230, 0, 131072, 5898231, 0, 131072, 5898232, 0, 131072, 5898233, 0, 131072, 5898234, 0, 131072, 5898235, 0, 131072, 5898236, 0, 131072, 5898237, 0, 131072, 5898238, 0, 131072, 5898239, 0, 131072, 5832704, 0, 131072, 5832705, 0, 131072, 5832706, 0, 131072, 5832707, 0, 131072, 5832708, 0, 131072, 5832709, 0, 131072, 5832710, 0, 131072, 5832711, 0, 131072, 5832712, 0, 131072, 5832713, 0, 131072, 5832714, 0, 131072, 5832715, 0, 131072, 5832716, 0, 131072, 5832717, 0, 131072, 5832718, 0, 131072, 5832719, 0, 131072, 5832720, 0, 131072, 5832721, 0, 131072, 5832722, 0, 131072, 5832723, 0, 131072, 5832724, 0, 131072, 5832725, 0, 131072, 5832726, 0, 131072, 5832727, 0, 131072, 5832728, 0, 131072, 5832729, 0, 131072, 5832730, 0, 131072, 5832731, 0, 131072, 5832732, 0, 131072, 5832733, 0, 131072, 5832734, 0, 131072, 5832735, 0, 131072, 5832736, 0, 131072, 5832737, 0, 131072, 5832738, 0, 131072, 5832739, 0, 131072, 5832740, 0, 131072, 5832741, 0, 131072, 5832742, 0, 131072, 5832743, 0, 131072, 5832744, 0, 131072, 5832745, 0, 131072, 5832746, 0, 131072, 5832747, 0, 131072, 5832748, 0, 131072, 5832749, 0, 131072, 5832750, 0, 131072, 5832751, 0, 131072, 5832752, 0, 131072, 5832753, 0, 131072, 5832754, 0, 131072, 5832755, 0, 131072, 5832756, 0, 131072, 5832757, 0, 131072, 5832758, 0, 131072, 5832759, 0, 131072, 5832760, 0, 131072, 5832761, 0, 131072, 5832762, 0, 131072, 5832763, 0, 131072, 5832764, 0, 131072, 5832765, 0, 131072, 5832766, 0, 131072, 5832767, 0, 131072, 5832768, 0, 131072, 5832769, 0, 131072, 5832770, 0, 131072, 5832771, 0, 131072, 5832772, 0, 131072, 5832773, 0, 131072, 5832774, 0, 131072, 5832775, 0, 131072, 5832776, 0, 131072, 5832777, 0, 131072, 5832778, 0, 131072, 5832779, 0, 131072, 5832780, 0, 131072, 5832781, 0, 131072, 5832782, 0, 131072, 5832783, 0, 131072, 5832784, 0, 131072, 5832785, 0, 131072, 5832786, 0, 131072, 5832787, 0, 131072, 5832788, 0, 131072, 5832789, 0, 131072, 5832790, 0, 131072, 5832791, 0, 131072, 5832792, 0, 131072, 5832793, 0, 131072, 5832794, 0, 131072, 5832795, 0, 131072, 5832796, 0, 131072, 5832797, 0, 131072, 5832798, 0, 131072, 5832799, 0, 131072, 5832800, 0, 131072, 5832801, 0, 131072, 5832802, 0, 131072, 5832803, 0, 131072, 5832804, 0, 131072, 5832805, 0, 131072, 5832806, 0, 131072, 5832807, 0, 131072, 5832808, 0, 131072, 5832809, 0, 131072, 5832810, 0, 131072, 5832811, 0, 131072, 5832812, 0, 131072, 5832813, 0, 131072, 5832814, 0, 131072, 5832815, 0, 131072, 5832816, 0, 131072, 5832817, 0, 131072, 5832818, 0, 131072, 5832819, 0, 131072, 5832820, 0, 131072, 5832821, 0, 131072, 5832822, 0, 131072, 5832823, 0, 131072, 5832824, 0, 131072, 5832825, 0, 131072, 5832826, 0, 131072, 5832827, 0, 131072, 5832828, 0, 131072, 5832829, 0, 131072, 5832830, 0, 131072, 5832831, 0, 131072, 5832832, 0, 131072, 5832833, 0, 131072, 5832834, 0, 131072, 5832835, 0, 131072, 5832836, 0, 131072, 5832837, 0, 131072, 5832838, 0, 131072, 5832839, 0, 131072, 5832840, 0, 131072, 5832841, 0, 131072, 5832842, 0, 131072, 5832843, 0, 131072, 5832844, 0, 131072, 5832845, 0, 131072, 5832846, 0, 131072, 5832847, 0, 131072, 5832848, 0, 131072, 5832849, 0, 131072, 5832850, 0, 131072, 5832851, 0, 131072, 5832852, 0, 131072, 5832853, 0, 131072, 5832854, 0, 131072, 5832855, 0, 131072, 5832856, 0, 131072, 5832857, 0, 131072, 5832858, 0, 131072, 5832859, 0, 131072, 5832860, 0, 131072, 5832861, 0, 131072, 5832862, 0, 131072, 5832863, 0, 131072, 5832864, 0, 131072, 5832865, 0, 131072, 5832866, 0, 131072, 5832867, 0, 131072, 5832868, 0, 131072, 5832869, 0, 131072, 5832870, 0, 131072, 5832871, 0, 131072, 5832872, 0, 131072, 5832873, 0, 131072, 5832874, 0, 131072, 5832875, 0, 131072, 5832876, 0, 131072, 5832877, 0, 131072, 5832878, 0, 131072, 5832879, 0, 131072, 5832880, 0, 131072, 5832881, 0, 131072, 5832882, 0, 131072, 5832883, 0, 131072, 5832884, 0, 131072, 5963763, 0, 131072, 5963764, 0, 131072, 5963765, 0, 131072, 5963766, 0, 131072, 5963767, 0, 131072, 5963768, 0, 131072, 5963769, 0, 131072, 5963770, 0, 131072, 5963771, 0, 131072, 5963772, 0, 131072, 5963773, 0, 131072, 5963774, 0, 131072, 5963775, 0, 131072, 5898240, 0, 131072, 5898241, 0, 131072, 5898242, 0, 131072, 5898243, 0, 131072, 5898244, 0, 131072, 5898245, 0, 131072, 5898246, 0, 131072, 5898247, 0, 131072, 5898248, 0, 131072, 5898249, 0, 131072, 5898250, 0, 131072, 5898251, 0, 131072, 5898252, 0, 131072, 5898253, 0, 131072, 5898254, 0, 131072, 5898255, 0, 131072, 5898256, 0, 131072, 5898257, 0, 131072, 5898258, 0, 131072, 5898259, 0, 131072, 5898260, 0, 131072, 5898261, 0, 131072, 5898262, 0, 131072, 5898263, 0, 131072, 5898264, 0, 131072, 5898265, 0, 131072, 5898266, 0, 131072, 5898267, 0, 131072, 5898268, 0, 131072, 5898269, 0, 131072, 5898270, 0, 131072, 5898271, 0, 131072, 5898272, 0, 131072, 5898273, 0, 131072, 5898274, 0, 131072, 5898275, 0, 131072, 5898276, 0, 131072, 5898277, 0, 131072, 5898278, 0, 131072, 5898279, 0, 131072, 5898280, 0, 131072, 5898281, 0, 131072, 5898282, 0, 131072, 5898283, 0, 131072, 5898284, 0, 131072, 5898285, 0, 131072, 5898286, 0, 131072, 5898287, 0, 131072, 5898288, 0, 131072, 5898289, 0, 131072, 5898290, 0, 131072, 5898291, 0, 131072, 5898292, 0, 131072, 5898293, 0, 131072, 5898294, 0, 131072, 5898295, 0, 131072, 5898296, 0, 131072, 5898297, 0, 131072, 5898298, 0, 131072, 5898299, 0, 131072, 5898300, 0, 131072, 5898301, 0, 131072, 5898302, 0, 131072, 5898303, 0, 131072, 5898304, 0, 131072, 5898305, 0, 131072, 5898306, 0, 131072, 5898307, 0, 131072, 5898308, 0, 131072, 5898309, 0, 131072, 5898310, 0, 131072, 5898311, 0, 131072, 5898312, 0, 131072, 5898313, 0, 131072, 5898314, 0, 131072, 5898315, 0, 131072, 5898316, 0, 131072, 5898317, 0, 131072, 5898318, 0, 131072, 5898319, 0, 131072, 5898320, 0, 131072, 5898321, 0, 131072, 5898322, 0, 131072, 5898323, 0, 131072, 5898324, 0, 131072, 5898325, 0, 131072, 5898326, 0, 131072, 5898327, 0, 131072, 5898328, 0, 131072, 5898329, 0, 131072, 5898330, 0, 131072, 5898331, 0, 131072, 5898332, 0, 131072, 5898333, 0, 131072, 5898334, 0, 131072, 5898335, 0, 131072, 5898336, 0, 131072, 5898337, 0, 131072, 5898338, 0, 131072, 5898339, 0, 131072, 5898340, 0, 131072, 5898341, 0, 131072, 5898342, 0, 131072, 5898343, 0, 131072, 5898344, 0, 131072, 5898345, 0, 131072, 5898346, 0, 131072, 5898347, 0, 131072, 5898348, 0, 131072, 5898349, 0, 131072, 5898350, 0, 131072, 5898351, 0, 131072, 5898352, 0, 131072, 5898353, 0, 131072, 5898354, 0, 131072, 5898355, 0, 131072, 5898356, 0, 131072, 5898357, 0, 131072, 5898358, 0, 131072, 5898359, 0, 131072, 5898360, 0, 131072, 5898361, 0, 131072, 5898362, 0, 131072, 5898363, 0, 131072, 5898364, 0, 131072, 5898365, 0, 131072, 5898366, 0, 131072, 5898367, 0, 131072, 5898368, 0, 131072, 5898369, 0, 131072, 5898370, 0, 131072, 5898371, 0, 131072, 5898372, 0, 131072, 5898373, 0, 131072, 5898374, 0, 131072, 5898375, 0, 131072, 5898376, 0, 131072, 5898377, 0, 131072, 5898378, 0, 131072, 5898379, 0, 131072, 5898380, 0, 131072, 5898381, 0, 131072, 5898382, 0, 131072, 5898383, 0, 131072, 5898384, 0, 131072, 5898385, 0, 131072, 5898386, 0, 131072, 5898387, 0, 131072, 5898388, 0, 131072, 5898389, 0, 131072, 5898390, 0, 131072, 5898391, 0, 131072, 5898392, 0, 131072, 5898393, 0, 131072, 5898394, 0, 131072, 5898395, 0, 131072, 5898396, 0, 131072, 5898397, 0, 131072, 5898398, 0, 131072, 5898399, 0, 131072, 5898400, 0, 131072, 5898401, 0, 131072, 5898402, 0, 131072, 5898403, 0, 131072, 5898404, 0, 131072, 5898405, 0, 131072, 5898406, 0, 131072, 5898407, 0, 131072, 5898408, 0, 131072, 5898409, 0, 131072, 5898410, 0, 131072, 5898411, 0, 131072, 5898412, 0, 131072, 5898413, 0, 131072, 5898414, 0, 131072, 5898415, 0, 131072, 5898416, 0, 131072, 5898417, 0, 131072, 5898418, 0, 131072, 6029300, 0, 131072, 6029301, 0, 131072, 6029302, 0, 131072, 6029303, 0, 131072, 6029304, 0, 131072, 6029305, 0, 131072, 6029306, 0, 131072, 6029307, 0, 131072, 6029308, 0, 131072, 6029309, 0, 131072, 6029310, 0, 131072, 6029311, 0, 131072, 5963776, 0, 131072, 5963777, 0, 131072, 5963778, 0, 131072, 5963779, 0, 131072, 5963780, 0, 131072, 5963781, 0, 131072, 5963782, 0, 131072, 5963783, 0, 131072, 5963784, 0, 131072, 5963785, 0, 131072, 5963786, 0, 131072, 5963787, 0, 131072, 5963788, 0, 131072, 5963789, 0, 131072, 5963790, 0, 131072, 5963791, 0, 131072, 5963792, 0, 131072, 5963793, 0, 131072, 5963794, 0, 131072, 5963795, 0, 131072, 5963796, 0, 131072, 5963797, 0, 131072, 5963798, 0, 131072, 5963799, 0, 131072, 5963800, 0, 131072, 5963801, 0, 131072, 5963802, 0, 131072, 5963803, 0, 131072, 5963804, 0, 131072, 5963805, 0, 131072, 5963806, 0, 131072, 5963807, 0, 131072, 5963808, 0, 131072, 5963809, 0, 131072, 5963810, 0, 131072, 5963811, 0, 131072, 5963812, 0, 131072, 5963813, 0, 131072, 5963814, 0, 131072, 5963815, 0, 131072, 5963816, 0, 131072, 5963817, 0, 131072, 5963818, 0, 131072, 5963819, 0, 131072, 5963820, 0, 131072, 5963821, 0, 131072, 5963822, 0, 131072, 5963823, 0, 131072, 5963824, 0, 131072, 5963825, 0, 131072, 5963826, 0, 131072, 5963827, 0, 131072, 5963828, 0, 131072, 5963829, 0, 131072, 5963830, 0, 131072, 5963831, 0, 131072, 5963832, 0, 131072, 5963833, 0, 131072, 5963834, 0, 131072, 5963835, 0, 131072, 5963836, 0, 131072, 5963837, 0, 131072, 5963838, 0, 131072, 5963839, 0, 131072, 5963840, 0, 131072, 5963841, 0, 131072, 5963842, 0, 131072, 5963843, 0, 131072, 5963844, 0, 131072, 5963845, 0, 131072, 5963846, 0, 131072, 5963847, 0, 131072, 5963848, 0, 131072, 5963849, 0, 131072, 5963850, 0, 131072, 5963851, 0, 131072, 5963852, 0, 131072, 5963853, 0, 131072, 5963854, 0, 131072, 5963855, 0, 131072, 5963856, 0, 131072, 5963857, 0, 131072, 5963858, 0, 131072, 5963859, 0, 131072, 5963860, 0, 131072, 5963861, 0, 131072, 5963862, 0, 131072, 5963863, 0, 131072, 5963864, 0, 131072, 5963865, 0, 131072, 5963866, 0, 131072, 5963867, 0, 131072, 5963868, 0, 131072, 5963869, 0, 131072, 5963870, 0, 131072, 5963871, 0, 131072, 5963872, 0, 131072, 5963873, 0, 131072, 5963874, 0, 131072, 5963875, 0, 131072, 5963876, 0, 131072, 5963877, 0, 131072, 5963878, 0, 131072, 5963879, 0, 131072, 5963880, 0, 131072, 5963881, 0, 131072, 5963882, 0, 131072, 5963883, 0, 131072, 5963884, 0, 131072, 5963885, 0, 131072, 5963886, 0, 131072, 5963887, 0, 131072, 5963888, 0, 131072, 5963889, 0, 131072, 5963890, 0, 131072, 5963891, 0, 131072, 5963892, 0, 131072, 5963893, 0, 131072, 5963894, 0, 131072, 5963895, 0, 131072, 5963896, 0, 131072, 5963897, 0, 131072, 5963898, 0, 131072, 5963899, 0, 131072, 5963900, 0, 131072, 5963901, 0, 131072, 5963902, 0, 131072, 5963903, 0, 131072, 5963904, 0, 131072, 5963905, 0, 131072, 5963906, 0, 131072, 5963907, 0, 131072, 5963908, 0, 131072, 5963909, 0, 131072, 5963910, 0, 131072, 5963911, 0, 131072, 5963912, 0, 131072, 5963913, 0, 131072, 5963914, 0, 131072, 5963915, 0, 131072, 5963916, 0, 131072, 5963917, 0, 131072, 5963918, 0, 131072, 5963919, 0, 131072, 5963920, 0, 131072, 5963921, 0, 131072, 5963922, 0, 131072, 5963923, 0, 131072, 5963924, 0, 131072, 5963925, 0, 131072, 5963926, 0, 131072, 5963927, 0, 131072, 5963928, 0, 131072, 5963929, 0, 131072, 5963930, 0, 131072, 5963931, 0, 131072, 5963932, 0, 131072, 5963933, 0, 131072, 5963934, 0, 131072, 5963935, 0, 131072, 5963936, 0, 131072, 5963937, 0, 131072, 5963938, 0, 131072, 5963939, 0, 131072, 5963940, 0, 131072, 5963941, 0, 131072, 5963942, 0, 131072, 5963943, 0, 131072, 5963944, 0, 131072, 5963945, 0, 131072, 5963946, 0, 131072, 5963947, 0, 131072, 5963948, 0, 131072, 5963949, 0, 131072, 5963950, 0, 131072, 5963951, 0, 131072, 5963952, 0, 131072, 6094838, 0, 131072, 6094839, 0, 131072, 6094840, 0, 131072, 6094841, 0, 131072, 6094842, 0, 131072, 6094843, 0, 131072, 6094844, 0, 131072, 6094845, 0, 131072, 6094846, 0, 131072, 6094847, 0, 131072, 6029312, 0, 131072, 6029313, 0, 131072, 6029314, 0, 131072, 6029315, 0, 131072, 6029316, 0, 131072, 6029317, 0, 131072, 6029318, 0, 131072, 6029319, 0, 131072, 6029320, 0, 131072, 6029321, 0, 131072, 6029322, 0, 131072, 6029323, 0, 131072, 6029324, 0, 131072, 6029325, 0, 131072, 6029326, 0, 131072, 6029327, 0, 131072, 6029328, 0, 131072, 6029329, 0, 131072, 6029330, 0, 131072, 6029331, 0, 131072, 6029332, 0, 131072, 6029333, 0, 131072, 6029334, 0, 131072, 6029335, 0, 131072, 6029336, 0, 131072, 6029337, 0, 131072, 6029338, 0, 131072, 6029339, 0, 131072, 6029340, 0, 131072, 6029341, 0, 131072, 6029342, 0, 131072, 6029343, 0, 131072, 6029344, 0, 131072, 6029345, 0, 131072, 6029346, 0, 131072, 6029347, 0, 131072, 6029348, 0, 131072, 6029349, 0, 131072, 6029350, 0, 131072, 6029351, 0, 131072, 6029352, 0, 131072, 6029353, 0, 131072, 6029354, 0, 131072, 6029355, 0, 131072, 6029356, 0, 131072, 6029357, 0, 131072, 6029358, 0, 131072, 6029359, 0, 131072, 6029360, 0, 131072, 6029361, 0, 131072, 6029362, 0, 131072, 6029363, 0, 131072, 6029364, 0, 131072, 6029365, 0, 131072, 6029366, 0, 131072, 6029367, 0, 131072, 6029368, 0, 131072, 6029369, 0, 131072, 6029370, 0, 131072, 6029371, 0, 131072, 6029372, 0, 131072, 6029373, 0, 131072, 6029374, 0, 131072, 6029375, 0, 131072, 6029376, 0, 131072, 6029377, 0, 131072, 6029378, 0, 131072, 6029379, 0, 131072, 6029380, 0, 131072, 6029381, 0, 131072, 6029382, 0, 131072, 6029383, 0, 131072, 6029384, 0, 131072, 6029385, 0, 131072, 6029386, 0, 131072, 6029387, 0, 131072, 6029388, 0, 131072, 6029389, 0, 131072, 6029390, 0, 131072, 6029391, 0, 131072, 6029392, 0, 131072, 6029393, 0, 131072, 6029394, 0, 131072, 6029395, 0, 131072, 6029396, 0, 131072, 6029397, 0, 131072, 6029398, 0, 131072, 6029399, 0, 131072, 6029400, 0, 131072, 6029401, 0, 131072, 6029402, 0, 131072, 6029403, 0, 131072, 6029404, 0, 131072, 6029405, 0, 131072, 6029406, 0, 131072, 6029407, 0, 131072, 6029408, 0, 131072, 6029409, 0, 131072, 6029410, 0, 131072, 6029411, 0, 131072, 6029412, 0, 131072, 6029413, 0, 131072, 6029414, 0, 131072, 6029415, 0, 131072, 6029416, 0, 131072, 6029417, 0, 131072, 6029418, 0, 131072, 6029419, 0, 131072, 6029420, 0, 131072, 6029421, 0, 131072, 6029422, 0, 131072, 6029423, 0, 131072, 6029424, 0, 131072, 6029425, 0, 131072, 6029426, 0, 131072, 6029427, 0, 131072, 6029428, 0, 131072, 6029429, 0, 131072, 6029430, 0, 131072, 6029431, 0, 131072, 6029432, 0, 131072, 6029433, 0, 131072, 6029434, 0, 131072, 6029435, 0, 131072, 6029436, 0, 131072, 6029437, 0, 131072, 6029438, 0, 131072, 6029439, 0, 131072, 6029440, 0, 131072, 6029441, 0, 131072, 6029442, 0, 131072, 6029443, 0, 131072, 6029444, 0, 131072, 6029445, 0, 131072, 6029446, 0, 131072, 6029447, 0, 131072, 6029448, 0, 131072, 6029449, 0, 131072, 6029450, 0, 131072, 6029451, 0, 131072, 6029452, 0, 131072, 6029453, 0, 131072, 6029454, 0, 131072, 6029455, 0, 131072, 6029456, 0, 131072, 6029457, 0, 131072, 6029458, 0, 131072, 6029459, 0, 131072, 6029460, 0, 131072, 6029461, 0, 131072, 6029462, 0, 131072, 6029463, 0, 131072, 6029464, 0, 131072, 6029465, 0, 131072, 6029466, 0, 131072, 6029467, 0, 131072, 6029468, 0, 131072, 6029469, 0, 131072, 6029470, 0, 131072, 6029471, 0, 131072, 6029472, 0, 131072, 6029473, 0, 131072, 6029474, 0, 131072, 6029475, 0, 131072, 6029476, 0, 131072, 6029477, 0, 131072, 6029478, 0, 131072, 6029479, 0, 131072, 6029480, 0, 131072, 6029481, 0, 131072, 6029482, 0, 131072, 6029483, 0, 131072, 6029484, 0, 131072, 6029485, 0, 131072, 6029486, 0, 131072, 6160375, 0, 131072, 6160376, 0, 131072, 6160377, 0, 131072, 6160378, 0, 131072, 6160379, 0, 131072, 6160380, 0, 131072, 6160381, 0, 131072, 6160382, 0, 131072, 6160383, 0, 131072, 6094848, 0, 131072, 6094849, 0, 131072, 6094850, 0, 131072, 6094851, 0, 131072, 6094852, 0, 131072, 6094853, 0, 131072, 6094854, 0, 131072, 6094855, 0, 131072, 6094856, 0, 131072, 6094857, 0, 131072, 6094858, 0, 131072, 6094859, 0, 131072, 6094860, 0, 131072, 6094861, 0, 131072, 6094862, 0, 131072, 6094863, 0, 131072, 6094864, 0, 131072, 6094865, 0, 131072, 6094866, 0, 131072, 6094867, 0, 131072, 6094868, 0, 131072, 6094869, 0, 131072, 6094870, 0, 131072, 6094871, 0, 131072, 6094872, 0, 131072, 6094873, 0, 131072, 6094874, 0, 131072, 6094875, 0, 131072, 6094876, 0, 131072, 6094877, 0, 131072, 6094878, 0, 131072, 6094879, 0, 131072, 6094880, 0, 131072, 6094881, 0, 131072, 6094882, 0, 131072, 6094883, 0, 131072, 6094884, 0, 131072, 6094885, 0, 131072, 6094886, 0, 131072, 6094887, 0, 131072, 6094888, 0, 131072, 6094889, 0, 131072, 6094890, 0, 131072, 6094891, 0, 131072, 6094892, 0, 131072, 6094893, 0, 131072, 6094894, 0, 131072, 6094895, 0, 131072, 6094896, 0, 131072, 6094897, 0, 131072, 6094898, 0, 131072, 6094899, 0, 131072, 6094900, 0, 131072, 6094901, 0, 131072, 6094902, 0, 131072, 6094903, 0, 131072, 6094904, 0, 131072, 6094905, 0, 131072, 6094906, 0, 131072, 6094907, 0, 131072, 6094908, 0, 131072, 6094909, 0, 131072, 6094910, 0, 131072, 6094911, 0, 131072, 6094912, 0, 131072, 6094913, 0, 131072, 6094914, 0, 131072, 6094915, 0, 131072, 6094916, 0, 131072, 6094917, 0, 131072, 6094918, 0, 131072, 6094919, 0, 131072, 6094920, 0, 131072, 6094921, 0, 131072, 6094922, 0, 131072, 6094923, 0, 131072, 6094924, 0, 131072, 6094925, 0, 131072, 6094926, 0, 131072, 6094927, 0, 131072, 6094928, 0, 131072, 6094929, 0, 131072, 6094930, 0, 131072, 6094931, 0, 131072, 6094932, 0, 131072, 6094933, 0, 131072, 6094934, 0, 131072, 6094935, 0, 131072, 6094936, 0, 131072, 6094937, 0, 131072, 6094938, 0, 131072, 6094939, 0, 131072, 6094940, 0, 131072, 6094941, 0, 131072, 6094942, 0, 131072, 6094943, 0, 131072, 6094944, 0, 131072, 6094945, 0, 131072, 6094946, 0, 131072, 6094947, 0, 131072, 6094948, 0, 131072, 6094949, 0, 131072, 6094950, 0, 131072, 6094951, 0, 131072, 6094952, 0, 131072, 6094953, 0, 131072, 6094954, 0, 131072, 6094955, 0, 131072, 6094956, 0, 131072, 6094957, 0, 131072, 6094958, 0, 131072, 6094959, 0, 131072, 6094960, 0, 131072, 6094961, 0, 131072, 6094962, 0, 131072, 6094963, 0, 131072, 6094964, 0, 131072, 6094965, 0, 131072, 6094966, 0, 131072, 6094967, 0, 131072, 6094968, 0, 131072, 6094969, 0, 131072, 6094970, 0, 131072, 6094971, 0, 131072, 6094972, 0, 131072, 6094973, 0, 131072, 6094974, 0, 131072, 6094975, 0, 131072, 6094976, 0, 131072, 6094977, 0, 131072, 6094978, 0, 131072, 6094979, 0, 131072, 6094980, 0, 131072, 6094981, 0, 131072, 6094982, 0, 131072, 6094983, 0, 131072, 6094984, 0, 131072, 6094985, 0, 131072, 6094986, 0, 131072, 6094987, 0, 131072, 6094988, 0, 131072, 6094989, 0, 131072, 6094990, 0, 131072, 6094991, 0, 131072, 6094992, 0, 131072, 6094993, 0, 131072, 6094994, 0, 131072, 6094995, 0, 131072, 6094996, 0, 131072, 6094997, 0, 131072, 6094998, 0, 131072, 6094999, 0, 131072, 6095000, 0, 131072, 6095001, 0, 131072, 6095002, 0, 131072, 6095003, 0, 131072, 6095004, 0, 131072, 6095005, 0, 131072, 6095006, 0, 131072, 6095007, 0, 131072, 6095008, 0, 131072, 6095009, 0, 131072, 6095010, 0, 131072, 6095011, 0, 131072, 6095012, 0, 131072, 6095013, 0, 131072, 6095014, 0, 131072, 6095015, 0, 131072, 6095016, 0, 131072, 6095017, 0, 131072, 6095018, 0, 131072, 6095019, 0, 131072, 6225913, 0, 131072, 6225914, 0, 131072, 6225915, 0, 131072, 6225916, 0, 131072, 6225917, 0, 131072, 6225918, 0, 131072, 6225919, 0, 131072, 6160384, 0, 131072, 6160385, 0, 131072, 6160386, 0, 131072, 6160387, 0, 131072, 6160388, 0, 131072, 6160389, 0, 131072, 6160390, 0, 131072, 6160391, 0, 131072, 6160392, 0, 131072, 6160393, 0, 131072, 6160394, 0, 131072, 6160395, 0, 131072, 6160396, 0, 131072, 6160397, 0, 131072, 6160398, 0, 131072, 6160399, 0, 131072, 6160400, 0, 131072, 6160401, 0, 131072, 6160402, 0, 131072, 6160403, 0, 131072, 6160404, 0, 131072, 6160405, 0, 131072, 6160406, 0, 131072, 6160407, 0, 131072, 6160408, 0, 131072, 6160409, 0, 131072, 6160410, 0, 131072, 6160411, 0, 131072, 6160412, 0, 131072, 6160413, 0, 131072, 6160414, 0, 131072, 6160415, 0, 131072, 6160416, 0, 131072, 6160417, 0, 131072, 6160418, 0, 131072, 6160419, 0, 131072, 6160420, 0, 131072, 6160421, 0, 131072, 6160422, 0, 131072, 6160423, 0, 131072, 6160424, 0, 131072, 6160425, 0, 131072, 6160426, 0, 131072, 6160427, 0, 131072, 6160428, 0, 131072, 6160429, 0, 131072, 6160430, 0, 131072, 6160431, 0, 131072, 6160432, 0, 131072, 6160433, 0, 131072, 6160434, 0, 131072, 6160435, 0, 131072, 6160436, 0, 131072, 6160437, 0, 131072, 6160438, 0, 131072, 6160439, 0, 131072, 6160440, 0, 131072, 6160441, 0, 131072, 6160442, 0, 131072, 6160443, 0, 131072, 6160444, 0, 131072, 6160445, 0, 131072, 6160446, 0, 131072, 6160447, 0, 131072, 6160448, 0, 131072, 6160449, 0, 131072, 6160450, 0, 131072, 6160451, 0, 131072, 6160452, 0, 131072, 6160453, 0, 131072, 6160454, 0, 131072, 6160455, 0, 131072, 6160456, 0, 131072, 6160457, 0, 131072, 6160458, 0, 131072, 6160459, 0, 131072, 6160460, 0, 131072, 6160461, 0, 131072, 6160462, 0, 131072, 6160463, 0, 131072, 6160464, 0, 131072, 6160465, 0, 131072, 6160466, 0, 131072, 6160467, 0, 131072, 6160468, 0, 131072, 6160469, 0, 131072, 6160470, 0, 131072, 6160471, 0, 131072, 6160472, 0, 131072, 6160473, 0, 131072, 6160474, 0, 131072, 6160475, 0, 131072, 6160476, 0, 131072, 6160477, 0, 131072, 6160478, 0, 131072, 6160479, 0, 131072, 6160480, 0, 131072, 6160481, 0, 131072, 6160482, 0, 131072, 6160483, 0, 131072, 6160484, 0, 131072, 6160485, 0, 131072, 6160486, 0, 131072, 6160487, 0, 131072, 6160488, 0, 131072, 6160489, 0, 131072, 6160490, 0, 131072, 6160491, 0, 131072, 6160492, 0, 131072, 6160493, 0, 131072, 6160494, 0, 131072, 6160495, 0, 131072, 6160496, 0, 131072, 6160497, 0, 131072, 6160498, 0, 131072, 6160499, 0, 131072, 6160500, 0, 131072, 6160501, 0, 131072, 6160502, 0, 131072, 6160503, 0, 131072, 6160504, 0, 131072, 6160505, 0, 131072, 6160506, 0, 131072, 6160507, 0, 131072, 6160508, 0, 131072, 6160509, 0, 131072, 6160510, 0, 131072, 6160511, 0, 131072, 6160512, 0, 131072, 6160513, 0, 131072, 6160514, 0, 131072, 6160515, 0, 131072, 6160516, 0, 131072, 6160517, 0, 131072, 6160518, 0, 131072, 6160519, 0, 131072, 6160520, 0, 131072, 6160521, 0, 131072, 6160522, 0, 131072, 6160523, 0, 131072, 6160524, 0, 131072, 6160525, 0, 131072, 6160526, 0, 131072, 6160527, 0, 131072, 6160528, 0, 131072, 6160529, 0, 131072, 6160530, 0, 131072, 6160531, 0, 131072, 6160532, 0, 131072, 6160533, 0, 131072, 6160534, 0, 131072, 6160535, 0, 131072, 6160536, 0, 131072, 6160537, 0, 131072, 6160538, 0, 131072, 6160539, 0, 131072, 6160540, 0, 131072, 6160541, 0, 131072, 6160542, 0, 131072, 6160543, 0, 131072, 6160544, 0, 131072, 6160545, 0, 131072, 6160546, 0, 131072, 6160547, 0, 131072, 6160548, 0, 131072, 6160549, 0, 131072, 6160550, 0, 131072, 6160551, 0, 131072, 6160552, 0, 131072, 6291451, 0, 131072, 6291452, 0, 131072, 6291453, 0, 131072, 6291454, 0, 131072, 6291455, 0, 131072, 6225920, 0, 131072, 6225921, 0, 131072, 6225922, 0, 131072, 6225923, 0, 131072, 6225924, 0, 131072, 6225925, 0, 131072, 6225926, 0, 131072, 6225927, 0, 131072, 6225928, 0, 131072, 6225929, 0, 131072, 6225930, 0, 131072, 6225931, 0, 131072, 6225932, 0, 131072, 6225933, 0, 131072, 6225934, 0, 131072, 6225935, 0, 131072, 6225936, 0, 131072, 6225937, 0, 131072, 6225938, 0, 131072, 6225939, 0, 131072, 6225940, 0, 131072, 6225941, 0, 131072, 6225942, 0, 131072, 6225943, 0, 131072, 6225944, 0, 131072, 6225945, 0, 131072, 6225946, 0, 131072, 6225947, 0, 131072, 6225948, 0, 131072, 6225949, 0, 131072, 6225950, 0, 131072, 6225951, 0, 131072, 6225952, 0, 131072, 6225953, 0, 131072, 6225954, 0, 131072, 6225955, 0, 131072, 6225956, 0, 131072, 6225957, 0, 131072, 6225958, 0, 131072, 6225959, 0, 131072, 6225960, 0, 131072, 6225961, 0, 131072, 6225962, 0, 131072, 6225963, 0, 131072, 6225964, 0, 131072, 6225965, 0, 131072, 6225966, 0, 131072, 6225967, 0, 131072, 6225968, 0, 131072, 6225969, 0, 131072, 6225970, 0, 131072, 6225971, 0, 131072, 6225972, 0, 131072, 6225973, 0, 131072, 6225974, 0, 131072, 6225975, 0, 131072, 6225976, 0, 131072, 6225977, 0, 131072, 6225978, 0, 131072, 6225979, 0, 131072, 6225980, 0, 131072, 6225981, 0, 131072, 6225982, 0, 131072, 6225983, 0, 131072, 6225984, 0, 131072, 6225985, 0, 131072, 6225986, 0, 131072, 6225987, 0, 131072, 6225988, 0, 131072, 6225989, 0, 131072, 6225990, 0, 131072, 6225991, 0, 131072, 6225992, 0, 131072, 6225993, 0, 131072, 6225994, 0, 131072, 6225995, 0, 131072, 6225996, 0, 131072, 6225997, 0, 131072, 6225998, 0, 131072, 6225999, 0, 131072, 6226000, 0, 131072, 6226001, 0, 131072, 6226002, 0, 131072, 6226003, 0, 131072, 6226004, 0, 131072, 6226005, 0, 131072, 6226006, 0, 131072, 6226007, 0, 131072, 6226008, 0, 131072, 6226009, 0, 131072, 6226010, 0, 131072, 6226011, 0, 131072, 6226012, 0, 131072, 6226013, 0, 131072, 6226014, 0, 131072, 6226015, 0, 131072, 6226016, 0, 131072, 6226017, 0, 131072, 6226018, 0, 131072, 6226019, 0, 131072, 6226020, 0, 131072, 6226021, 0, 131072, 6226022, 0, 131072, 6226023, 0, 131072, 6226024, 0, 131072, 6226025, 0, 131072, 6226026, 0, 131072, 6226027, 0, 131072, 6226028, 0, 131072, 6226029, 0, 131072, 6226030, 0, 131072, 6226031, 0, 131072, 6226032, 0, 131072, 6226033, 0, 131072, 6226034, 0, 131072, 6226035, 0, 131072, 6226036, 0, 131072, 6226037, 0, 131072, 6226038, 0, 131072, 6226039, 0, 131072, 6226040, 0, 131072, 6226041, 0, 131072, 6226042, 0, 131072, 6226043, 0, 131072, 6226044, 0, 131072, 6226045, 0, 131072, 6226046, 0, 131072, 6226047, 0, 131072, 6226048, 0, 131072, 6226049, 0, 131072, 6226050, 0, 131072, 6226051, 0, 131072, 6226052, 0, 131072, 6226053, 0, 131072, 6226054, 0, 131072, 6226055, 0, 131072, 6226056, 0, 131072, 6226057, 0, 131072, 6226058, 0, 131072, 6226059, 0, 131072, 6226060, 0, 131072, 6226061, 0, 131072, 6226062, 0, 131072, 6226063, 0, 131072, 6226064, 0, 131072, 6226065, 0, 131072, 6226066, 0, 131072, 6226067, 0, 131072, 6226068, 0, 131072, 6226069, 0, 131072, 6226070, 0, 131072, 6226071, 0, 131072, 6226072, 0, 131072, 6226073, 0, 131072, 6226074, 0, 131072, 6226075, 0, 131072, 6226076, 0, 131072, 6226077, 0, 131072, 6226078, 0, 131072, 6226079, 0, 131072, 6226080, 0, 131072, 6226081, 0, 131072, 6226082, 0, 131072, 6226083, 0, 131072, 6226084, 0, 131072, 6226085, 0, 131072, 6226086, 0, 131072, 6356989, 0, 131072, 6356990, 0, 131072, 6356991, 0, 131072, 6291456, 0, 131072, 6291457, 0, 131072, 6291458, 0, 131072, 6291459, 0, 131072, 6291460, 0, 131072, 6291461, 0, 131072, 6291462, 0, 131072, 6291463, 0, 131072, 6291464, 0, 131072, 6291465, 0, 131072, 6291466, 0, 131072, 6291467, 0, 131072, 6291468, 0, 131072, 6291469, 0, 131072, 6291470, 0, 131072, 6291471, 0, 131072, 6291472, 0, 131072, 6291473, 0, 131072, 6291474, 0, 131072, 6291475, 0, 131072, 6291476, 0, 131072, 6291477, 0, 131072, 6291478, 0, 131072, 6291479, 0, 131072, 6291480, 0, 131072, 6291481, 0, 131072, 6291482, 0, 131072, 6291483, 0, 131072, 6291484, 0, 131072, 6291485, 0, 131072, 6291486, 0, 131072, 6291487, 0, 131072, 6291488, 0, 131072, 6291489, 0, 131072, 6291490, 0, 131072, 6291491, 0, 131072, 6291492, 0, 131072, 6291493, 0, 131072, 6291494, 0, 131072, 6291495, 0, 131072, 6291496, 0, 131072, 6291497, 0, 131072, 6291498, 0, 131072, 6291499, 0, 131072, 6291500, 0, 131072, 6291501, 0, 131072, 6291502, 0, 131072, 6291503, 0, 131072, 6291504, 0, 131072, 6291505, 0, 131072, 6291506, 0, 131072, 6291507, 0, 131072, 6291508, 0, 131072, 6291509, 0, 131072, 6291510, 0, 131072, 6291511, 0, 131072, 6291512, 0, 131072, 6291513, 0, 131072, 6291514, 0, 131072, 6291515, 0, 131072, 6291516, 0, 131072, 6291517, 0, 131072, 6291518, 0, 131072, 6291519, 0, 131072, 6291520, 0, 131072, 6291521, 0, 131072, 6291522, 0, 131072, 6291523, 0, 131072, 6291524, 0, 131072, 6291525, 0, 131072, 6291526, 0, 131072, 6291527, 0, 131072, 6291528, 0, 131072, 6291529, 0, 131072, 6291530, 0, 131072, 6291531, 0, 131072, 6291532, 0, 131072, 6291533, 0, 131072, 6291534, 0, 131072, 6291535, 0, 131072, 6291536, 0, 131072, 6291537, 0, 131072, 6291538, 0, 131072, 6291539, 0, 131072, 6291540, 0, 131072, 6291541, 0, 131072, 6291542, 0, 131072, 6291543, 0, 131072, 6291544, 0, 131072, 6291545, 0, 131072, 6291546, 0, 131072, 6291547, 0, 131072, 6291548, 0, 131072, 6291549, 0, 131072, 6291550, 0, 131072, 6291551, 0, 131072, 6291552, 0, 131072, 6291553, 0, 131072, 6291554, 0, 131072, 6291555, 0, 131072, 6291556, 0, 131072, 6291557, 0, 131072, 6291558, 0, 131072, 6291559, 0, 131072, 6291560, 0, 131072, 6291561, 0, 131072, 6291562, 0, 131072, 6291563, 0, 131072, 6291564, 0, 131072, 6291565, 0, 131072, 6291566, 0, 131072, 6291567, 0, 131072, 6291568, 0, 131072, 6291569, 0, 131072, 6291570, 0, 131072, 6291571, 0, 131072, 6291572, 0, 131072, 6291573, 0, 131072, 6291574, 0, 131072, 6291575, 0, 131072, 6291576, 0, 131072, 6291577, 0, 131072, 6291578, 0, 131072, 6291579, 0, 131072, 6291580, 0, 131072, 6291581, 0, 131072, 6291582, 0, 131072, 6291583, 0, 131072, 6291584, 0, 131072, 6291585, 0, 131072, 6291586, 0, 131072, 6291587, 0, 131072, 6291588, 0, 131072, 6291589, 0, 131072, 6291590, 0, 131072, 6291591, 0, 131072, 6291592, 0, 131072, 6291593, 0, 131072, 6291594, 0, 131072, 6291595, 0, 131072, 6291596, 0, 131072, 6291597, 0, 131072, 6291598, 0, 131072, 6291599, 0, 131072, 6291600, 0, 131072, 6291601, 0, 131072, 6291602, 0, 131072, 6291603, 0, 131072, 6291604, 0, 131072, 6291605, 0, 131072, 6291606, 0, 131072, 6291607, 0, 131072, 6291608, 0, 131072, 6291609, 0, 131072, 6291610, 0, 131072, 6291611, 0, 131072, 6291612, 0, 131072, 6291613, 0, 131072, 6291614, 0, 131072, 6291615, 0, 131072, 6291616, 0, 131072, 6291617, 0, 131072, 6291618, 0, 131072, 6291619, 0, 131072, 6422527, 0, 131072, 6356992, 0, 131072, 6356993, 0, 131072, 6356994, 0, 131072, 6356995, 0, 131072, 6356996, 0, 131072, 6356997, 0, 131072, 6356998, 0, 131072, 6356999, 0, 131072, 6357000, 0, 131072, 6357001, 0, 131072, 6357002, 0, 131072, 6357003, 0, 131072, 6357004, 0, 131072, 6357005, 0, 131072, 6357006, 0, 131072, 6357007, 0, 131072, 6357008, 0, 131072, 6357009, 0, 131072, 6357010, 0, 131072, 6357011, 0, 131072, 6357012, 0, 131072, 6357013, 0, 131072, 6357014, 0, 131072, 6357015, 0, 131072, 6357016, 0, 131072, 6357017, 0, 131072, 6357018, 0, 131072, 6357019, 0, 131072, 6357020, 0, 131072, 6357021, 0, 131072, 6357022, 0, 131072, 6357023, 0, 131072, 6357024, 0, 131072, 6357025, 0, 131072, 6357026, 0, 131072, 6357027, 0, 131072, 6357028, 0, 131072, 6357029, 0, 131072, 6357030, 0, 131072, 6357031, 0, 131072, 6357032, 0, 131072, 6357033, 0, 131072, 6357034, 0, 131072, 6357035, 0, 131072, 6357036, 0, 131072, 6357037, 0, 131072, 6357038, 0, 131072, 6357039, 0, 131072, 6357040, 0, 131072, 6357041, 0, 131072, 6357042, 0, 131072, 6357043, 0, 131072, 6357044, 0, 131072, 6357045, 0, 131072, 6357046, 0, 131072, 6357047, 0, 131072, 6357048, 0, 131072, 6357049, 0, 131072, 6357050, 0, 131072, 6357051, 0, 131072, 6357052, 0, 131072, 6357053, 0, 131072, 6357054, 0, 131072, 6357055, 0, 131072, 6357056, 0, 131072, 6357057, 0, 131072, 6357058, 0, 131072, 6357059, 0, 131072, 6357060, 0, 131072, 6357061, 0, 131072, 6357062, 0, 131072, 6357063, 0, 131072, 6357064, 0, 131072, 6357065, 0, 131072, 6357066, 0, 131072, 6357067, 0, 131072, 6357068, 0, 131072, 6357069, 0, 131072, 6357070, 0, 131072, 6357071, 0, 131072, 6357072, 0, 131072, 6357073, 0, 131072, 6357074, 0, 131072, 6357075, 0, 131072, 6357076, 0, 131072, 6357077, 0, 131072, 6357078, 0, 131072, 6357079, 0, 131072, 6357080, 0, 131072, 6357081, 0, 131072, 6357082, 0, 131072, 6357083, 0, 131072, 6357084, 0, 131072, 6357085, 0, 131072, 6357086, 0, 131072, 6357087, 0, 131072, 6357088, 0, 131072, 6357089, 0, 131072, 6357090, 0, 131072, 6357091, 0, 131072, 6357092, 0, 131072, 6357093, 0, 131072, 6357094, 0, 131072, 6357095, 0, 131072, 6357096, 0, 131072, 6357097, 0, 131072, 6357098, 0, 131072, 6357099, 0, 131072, 6357100, 0, 131072, 6357101, 0, 131072, 6357102, 0, 131072, 6357103, 0, 131072, 6357104, 0, 131072, 6357105, 0, 131072, 6357106, 0, 131072, 6357107, 0, 131072, 6357108, 0, 131072, 6357109, 0, 131072, 6357110, 0, 131072, 6357111, 0, 131072, 6357112, 0, 131072, 6357113, 0, 131072, 6357114, 0, 131072, 6357115, 0, 131072, 6357116, 0, 131072, 6357117, 0, 131072, 6357118, 0, 131072, 6357119, 0, 131072, 6357120, 0, 131072, 6357121, 0, 131072, 6357122, 0, 131072, 6357123, 0, 131072, 6357124, 0, 131072, 6357125, 0, 131072, 6357126, 0, 131072, 6357127, 0, 131072, 6357128, 0, 131072, 6357129, 0, 131072, 6357130, 0, 131072, 6357131, 0, 131072, 6357132, 0, 131072, 6357133, 0, 131072, 6357134, 0, 131072, 6357135, 0, 131072, 6357136, 0, 131072, 6357137, 0, 131072, 6357138, 0, 131072, 6357139, 0, 131072, 6357140, 0, 131072, 6357141, 0, 131072, 6357142, 0, 131072, 6357143, 0, 131072, 6357144, 0, 131072, 6357145, 0, 131072, 6357146, 0, 131072, 6357147, 0, 131072, 6357148, 0, 131072, 6357149, 0, 131072, 6357150, 0, 131072, 6357151, 0, 131072, 6357152, 0, 131072, 6422530, 0, 131072, 6422531, 0, 131072, 6422532, 0, 131072, 6422533, 0, 131072, 6422534, 0, 131072, 6422535, 0, 131072, 6422536, 0, 131072, 6422537, 0, 131072, 6422538, 0, 131072, 6422539, 0, 131072, 6422540, 0, 131072, 6422541, 0, 131072, 6422542, 0, 131072, 6422543, 0, 131072, 6422544, 0, 131072, 6422545, 0, 131072, 6422546, 0, 131072, 6422547, 0, 131072, 6422548, 0, 131072, 6422549, 0, 131072, 6422550, 0, 131072, 6422551, 0, 131072, 6422552, 0, 131072, 6422553, 0, 131072, 6422554, 0, 131072, 6422555, 0, 131072, 6422556, 0, 131072, 6422557, 0, 131072, 6422558, 0, 131072, 6422559, 0, 131072, 6422560, 0, 131072, 6422561, 0, 131072, 6422562, 0, 131072, 6422563, 0, 131072, 6422564, 0, 131072, 6422565, 0, 131072, 6422566, 0, 131072, 6422567, 0, 131072, 6422568, 0, 131072, 6422569, 0, 131072, 6422570, 0, 131072, 6422571, 0, 131072, 6422572, 0, 131072, 6422573, 0, 131072, 6422574, 0, 131072, 6422575, 0, 131072, 6422576, 0, 131072, 6422577, 0, 131072, 6422578, 0, 131072, 6422579, 0, 131072, 6422580, 0, 131072, 6422581, 0, 131072, 6422582, 0, 131072, 6422583, 0, 131072, 6422584, 0, 131072, 6422585, 0, 131072, 6422586, 0, 131072, 6422587, 0, 131072, 6422588, 0, 131072, 6422589, 0, 131072, 6422590, 0, 131072, 6422591, 0, 131072, 6422592, 0, 131072, 6422593, 0, 131072, 6422594, 0, 131072, 6422595, 0, 131072, 6422596, 0, 131072, 6422597, 0, 131072, 6422598, 0, 131072, 6422599, 0, 131072, 6422600, 0, 131072, 6422601, 0, 131072, 6422602, 0, 131072, 6422603, 0, 131072, 6422604, 0, 131072, 6422605, 0, 131072, 6422606, 0, 131072, 6422607, 0, 131072, 6422608, 0, 131072, 6422609, 0, 131072, 6422610, 0, 131072, 6422611, 0, 131072, 6422612, 0, 131072, 6422613, 0, 131072, 6422614, 0, 131072, 6422615, 0, 131072, 6422616, 0, 131072, 6422617, 0, 131072, 6422618, 0, 131072, 6422619, 0, 131072, 6422620, 0, 131072, 6422621, 0, 131072, 6422622, 0, 131072, 6422623, 0, 131072, 6422624, 0, 131072, 6422625, 0, 131072, 6422626, 0, 131072, 6422627, 0, 131072, 6422628, 0, 131072, 6422629, 0, 131072, 6422630, 0, 131072, 6422631, 0, 131072, 6422632, 0, 131072, 6422633, 0, 131072, 6422634, 0, 131072, 6422635, 0, 131072, 6422636, 0, 131072, 6422637, 0, 131072, 6422638, 0, 131072, 6422639, 0, 131072, 6422640, 0, 131072, 6422641, 0, 131072, 6422642, 0, 131072, 6422643, 0, 131072, 6422644, 0, 131072, 6422645, 0, 131072, 6422646, 0, 131072, 6422647, 0, 131072, 6422648, 0, 131072, 6422649, 0, 131072, 6422650, 0, 131072, 6422651, 0, 131072, 6422652, 0, 131072, 6422653, 0, 131072, 6422654, 0, 131072, 6422655, 0, 131072, 6422656, 0, 131072, 6422657, 0, 131072, 6422658, 0, 131072, 6422659, 0, 131072, 6422660, 0, 131072, 6422661, 0, 131072, 6422662, 0, 131072, 6422663, 0, 131072, 6422664, 0, 131072, 6422665, 0, 131072, 6422666, 0, 131072, 6422667, 0, 131072, 6422668, 0, 131072, 6422669, 0, 131072, 6422670, 0, 131072, 6422671, 0, 131072, 6422672, 0, 131072, 6422673, 0, 131072, 6422674, 0, 131072, 6422675, 0, 131072, 6422676, 0, 131072, 6422677, 0, 131072, 6422678, 0, 131072, 6422679, 0, 131072, 6422680, 0, 131072, 6422681, 0, 131072, 6422682, 0, 131072, 6422683, 0, 131072, 6422684, 0, 131072, 6422685, 0, 131072, 6422686, 0, 131072, 6488068, 0, 131072, 6488069, 0, 131072, 6488070, 0, 131072, 6488071, 0, 131072, 6488072, 0, 131072, 6488073, 0, 131072, 6488074, 0, 131072, 6488075, 0, 131072, 6488076, 0, 131072, 6488077, 0, 131072, 6488078, 0, 131072, 6488079, 0, 131072, 6488080, 0, 131072, 6488081, 0, 131072, 6488082, 0, 131072, 6488083, 0, 131072, 6488084, 0, 131072, 6488085, 0, 131072, 6488086, 0, 131072, 6488087, 0, 131072, 6488088, 0, 131072, 6488089, 0, 131072, 6488090, 0, 131072, 6488091, 0, 131072, 6488092, 0, 131072, 6488093, 0, 131072, 6488094, 0, 131072, 6488095, 0, 131072, 6488096, 0, 131072, 6488097, 0, 131072, 6488098, 0, 131072, 6488099, 0, 131072, 6488100, 0, 131072, 6488101, 0, 131072, 6488102, 0, 131072, 6488103, 0, 131072, 6488104, 0, 131072, 6488105, 0, 131072, 6488106, 0, 131072, 6488107, 0, 131072, 6488108, 0, 131072, 6488109, 0, 131072, 6488110, 0, 131072, 6488111, 0, 131072, 6488112, 0, 131072, 6488113, 0, 131072, 6488114, 0, 131072, 6488115, 0, 131072, 6488116, 0, 131072, 6488117, 0, 131072, 6488118, 0, 131072, 6488119, 0, 131072, 6488120, 0, 131072, 6488121, 0, 131072, 6488122, 0, 131072, 6488123, 0, 131072, 6488124, 0, 131072, 6488125, 0, 131072, 6488126, 0, 131072, 6488127, 0, 131072, 6488128, 0, 131072, 6488129, 0, 131072, 6488130, 0, 131072, 6488131, 0, 131072, 6488132, 0, 131072, 6488133, 0, 131072, 6488134, 0, 131072, 6488135, 0, 131072, 6488136, 0, 131072, 6488137, 0, 131072, 6488138, 0, 131072, 6488139, 0, 131072, 6488140, 0, 131072, 6488141, 0, 131072, 6488142, 0, 131072, 6488143, 0, 131072, 6488144, 0, 131072, 6488145, 0, 131072, 6488146, 0, 131072, 6488147, 0, 131072, 6488148, 0, 131072, 6488149, 0, 131072, 6488150, 0, 131072, 6488151, 0, 131072, 6488152, 0, 131072, 6488153, 0, 131072, 6488154, 0, 131072, 6488155, 0, 131072, 6488156, 0, 131072, 6488157, 0, 131072, 6488158, 0, 131072, 6488159, 0, 131072, 6488160, 0, 131072, 6488161, 0, 131072, 6488162, 0, 131072, 6488163, 0, 131072, 6488164, 0, 131072, 6488165, 0, 131072, 6488166, 0, 131072, 6488167, 0, 131072, 6488168, 0, 131072, 6488169, 0, 131072, 6488170, 0, 131072, 6488171, 0, 131072, 6488172, 0, 131072, 6488173, 0, 131072, 6488174, 0, 131072, 6488175, 0, 131072, 6488176, 0, 131072, 6488177, 0, 131072, 6488178, 0, 131072, 6488179, 0, 131072, 6488180, 0, 131072, 6488181, 0, 131072, 6488182, 0, 131072, 6488183, 0, 131072, 6488184, 0, 131072, 6488185, 0, 131072, 6488186, 0, 131072, 6488187, 0, 131072, 6488188, 0, 131072, 6488189, 0, 131072, 6488190, 0, 131072, 6488191, 0, 131072, 6488192, 0, 131072, 6488193, 0, 131072, 6488194, 0, 131072, 6488195, 0, 131072, 6488196, 0, 131072, 6488197, 0, 131072, 6488198, 0, 131072, 6488199, 0, 131072, 6488200, 0, 131072, 6488201, 0, 131072, 6488202, 0, 131072, 6488203, 0, 131072, 6488204, 0, 131072, 6488205, 0, 131072, 6488206, 0, 131072, 6488207, 0, 131072, 6488208, 0, 131072, 6488209, 0, 131072, 6488210, 0, 131072, 6488211, 0, 131072, 6488212, 0, 131072, 6488213, 0, 131072, 6488214, 0, 131072, 6488215, 0, 131072, 6488216, 0, 131072, 6488217, 0, 131072, 6488218, 0, 131072, 6488219, 0, 131072, 6553606, 0, 131072, 6553607, 0, 131072, 6553608, 0, 131072, 6553609, 0, 131072, 6553610, 0, 131072, 6553611, 0, 131072, 6553612, 0, 131072, 6553613, 0, 131072, 6553614, 0, 131072, 6553615, 0, 131072, 6553616, 0, 131072, 6553617, 0, 131072, 6553618, 0, 131072, 6553619, 0, 131072, 6553620, 0, 131072, 6553621, 0, 131072, 6553622, 0, 131072, 6553623, 0, 131072, 6553624, 0, 131072, 6553625, 0, 131072, 6553626, 0, 131072, 6553627, 0, 131072, 6553628, 0, 131072, 6553629, 0, 131072, 6553630, 0, 131072, 6553631, 0, 131072, 6553632, 0, 131072, 6553633, 0, 131072, 6553634, 0, 131072, 6553635, 0, 131072, 6553636, 0, 131072, 6553637, 0, 131072, 6553638, 0, 131072, 6553639, 0, 131072, 6553640, 0, 131072, 6553641, 0, 131072, 6553642, 0, 131072, 6553643, 0, 131072, 6553644, 0, 131072, 6553645, 0, 131072, 6553646, 0, 131072, 6553647, 0, 131072, 6553648, 0, 131072, 6553649, 0, 131072, 6553650, 0, 131072, 6553651, 0, 131072, 6553652, 0, 131072, 6553653, 0, 131072, 6553654, 0, 131072, 6553655, 0, 131072, 6553656, 0, 131072, 6553657, 0, 131072, 6553658, 0, 131072, 6553659, 0, 131072, 6553660, 0, 131072, 6553661, 0, 131072, 6553662, 0, 131072, 6553663, 0, 131072, 6553664, 0, 131072, 6553665, 0, 131072, 6553666, 0, 131072, 6553667, 0, 131072, 6553668, 0, 131072, 6553669, 0, 131072, 6553670, 0, 131072, 6553671, 0, 131072, 6553672, 0, 131072, 6553673, 0, 131072, 6553674, 0, 131072, 6553675, 0, 131072, 6553676, 0, 131072, 6553677, 0, 131072, 6553678, 0, 131072, 6553679, 0, 131072, 6553680, 0, 131072, 6553681, 0, 131072, 6553682, 0, 131072, 6553683, 0, 131072, 6553684, 0, 131072, 6553685, 0, 131072, 6553686, 0, 131072, 6553687, 0, 131072, 6553688, 0, 131072, 6553689, 0, 131072, 6553690, 0, 131072, 6553691, 0, 131072, 6553692, 0, 131072, 6553693, 0, 131072, 6553694, 0, 131072, 6553695, 0, 131072, 6553696, 0, 131072, 6553697, 0, 131072, 6553698, 0, 131072, 6553699, 0, 131072, 6553700, 0, 131072, 6553701, 0, 131072, 6553702, 0, 131072, 6553703, 0, 131072, 6553704, 0, 131072, 6553705, 0, 131072, 6553706, 0, 131072, 6553707, 0, 131072, 6553708, 0, 131072, 6553709, 0, 131072, 6553710, 0, 131072, 6553711, 0, 131072, 6553712, 0, 131072, 6553713, 0, 131072, 6553714, 0, 131072, 6553715, 0, 131072, 6553716, 0, 131072, 6553717, 0, 131072, 6553718, 0, 131072, 6553719, 0, 131072, 6553720, 0, 131072, 6553721, 0, 131072, 6553722, 0, 131072, 6553723, 0, 131072, 6553724, 0, 131072, 6553725, 0, 131072, 6553726, 0, 131072, 6553727, 0, 131072, 6553728, 0, 131072, 6553729, 0, 131072, 6553730, 0, 131072, 6553731, 0, 131072, 6553732, 0, 131072, 6553733, 0, 131072, 6553734, 0, 131072, 6553735, 0, 131072, 6553736, 0, 131072, 6553737, 0, 131072, 6553738, 0, 131072, 6553739, 0, 131072, 6553740, 0, 131072, 6553741, 0, 131072, 6553742, 0, 131072, 6553743, 0, 131072, 6553744, 0, 131072, 6553745, 0, 131072, 6553746, 0, 131072, 6553747, 0, 131072, 6553748, 0, 131072, 6553749, 0, 131072, 6553750, 0, 131072, 6553751, 0, 131072, 6619144, 0, 131072, 6619145, 0, 131072, 6619146, 0, 131072, 6619147, 0, 131072, 6619148, 0, 131072, 6619149, 0, 131072, 6619150, 0, 131072, 6619151, 0, 131072, 6619152, 0, 131072, 6619153, 0, 131072, 6619154, 0, 131072, 6619155, 0, 131072, 6619156, 0, 131072, 6619157, 0, 131072, 6619158, 0, 131072, 6619159, 0, 131072, 6619160, 0, 131072, 6619161, 0, 131072, 6619162, 0, 131072, 6619163, 0, 131072, 6619164, 0, 131072, 6619165, 0, 131072, 6619166, 0, 131072, 6619167, 0, 131072, 6619168, 0, 131072, 6619169, 0, 131072, 6619170, 0, 131072, 6619171, 0, 131072, 6619172, 0, 131072, 6619173, 0, 131072, 6619174, 0, 131072, 6619175, 0, 131072, 6619176, 0, 131072, 6619177, 0, 131072, 6619178, 0, 131072, 6619179, 0, 131072, 6619180, 0, 131072, 6619181, 0, 131072, 6619182, 0, 131072, 6619183, 0, 131072, 6619184, 0, 131072, 6619185, 0, 131072, 6619186, 0, 131072, 6619187, 0, 131072, 6619188, 0, 131072, 6619189, 0, 131072, 6619190, 0, 131072, 6619191, 0, 131072, 6619192, 0, 131072, 6619193, 0, 131072, 6619194, 0, 131072, 6619195, 0, 131072, 6619196, 0, 131072, 6619197, 0, 131072, 6619198, 0, 131072, 6619199, 0, 131072, 6619200, 0, 131072, 6619201, 0, 131072, 6619202, 0, 131072, 6619203, 0, 131072, 6619204, 0, 131072, 6619205, 0, 131072, 6619206, 0, 131072, 6619207, 0, 131072, 6619208, 0, 131072, 6619209, 0, 131072, 6619210, 0, 131072, 6619211, 0, 131072, 6619212, 0, 131072, 6619213, 0, 131072, 6619214, 0, 131072, 6619215, 0, 131072, 6619216, 0, 131072, 6619217, 0, 131072, 6619218, 0, 131072, 6619219, 0, 131072, 6619220, 0, 131072, 6619221, 0, 131072, 6619222, 0, 131072, 6619223, 0, 131072, 6619224, 0, 131072, 6619225, 0, 131072, 6619226, 0, 131072, 6619227, 0, 131072, 6619228, 0, 131072, 6619229, 0, 131072, 6619230, 0, 131072, 6619231, 0, 131072, 6619232, 0, 131072, 6619233, 0, 131072, 6619234, 0, 131072, 6619235, 0, 131072, 6619236, 0, 131072, 6619237, 0, 131072, 6619238, 0, 131072, 6619239, 0, 131072, 6619240, 0, 131072, 6619241, 0, 131072, 6619242, 0, 131072, 6619243, 0, 131072, 6619244, 0, 131072, 6619245, 0, 131072, 6619246, 0, 131072, 6619247, 0, 131072, 6619248, 0, 131072, 6619249, 0, 131072, 6619250, 0, 131072, 6619251, 0, 131072, 6619252, 0, 131072, 6619253, 0, 131072, 6619254, 0, 131072, 6619255, 0, 131072, 6619256, 0, 131072, 6619257, 0, 131072, 6619258, 0, 131072, 6619259, 0, 131072, 6619260, 0, 131072, 6619261, 0, 131072, 6619262, 0, 131072, 6619263, 0, 131072, 6619264, 0, 131072, 6619265, 0, 131072, 6619266, 0, 131072, 6619267, 0, 131072, 6619268, 0, 131072, 6619269, 0, 131072, 6619270, 0, 131072, 6619271, 0, 131072, 6619272, 0, 131072, 6619273, 0, 131072, 6619274, 0, 131072, 6619275, 0, 131072, 6619276, 0, 131072, 6619277, 0, 131072, 6619278, 0, 131072, 6619279, 0, 131072, 6619280, 0, 131072, 6619281, 0, 131072, 6619282, 0, 131072, 6619283, 0, 131072, 6684683, 0, 131072, 6684684, 0, 131072, 6684685, 0, 131072, 6684686, 0, 131072, 6684687, 0, 131072, 6684688, 0, 131072, 6684689, 0, 131072, 6684690, 0, 131072, 6684691, 0, 131072, 6684692, 0, 131072, 6684693, 0, 131072, 6684694, 0, 131072, 6684695, 0, 131072, 6684696, 0, 131072, 6684697, 0, 131072, 6684698, 0, 131072, 6684699, 0, 131072, 6684700, 0, 131072, 6684701, 0, 131072, 6684702, 0, 131072, 6684703, 0, 131072, 6684704, 0, 131072, 6684705, 0, 131072, 6684706, 0, 131072, 6684707, 0, 131072, 6684708, 0, 131072, 6684709, 0, 131072, 6684710, 0, 131072, 6684711, 0, 131072, 6684712, 0, 131072, 6684713, 0, 131072, 6684714, 0, 131072, 6684715, 0, 131072, 6684716, 0, 131072, 6684717, 0, 131072, 6684718, 0, 131072, 6684719, 0, 131072, 6684720, 0, 131072, 6684721, 0, 131072, 6684722, 0, 131072, 6684723, 0, 131072, 6684724, 0, 131072, 6684725, 0, 131072, 6684726, 0, 131072, 6684727, 0, 131072, 6684728, 0, 131072, 6684729, 0, 131072, 6684730, 0, 131072, 6684731, 0, 131072, 6684732, 0, 131072, 6684733, 0, 131072, 6684734, 0, 131072, 6684735, 0, 131072, 6684736, 0, 131072, 6684737, 0, 131072, 6684738, 0, 131072, 6684739, 0, 131072, 6684740, 0, 131072, 6684741, 0, 131072, 6684742, 0, 131072, 6684743, 0, 131072, 6684744, 0, 131072, 6684745, 0, 131072, 6684746, 0, 131072, 6684747, 0, 131072, 6684748, 0, 131072, 6684749, 0, 131072, 6684750, 0, 131072, 6684751, 0, 131072, 6684752, 0, 131072, 6684753, 0, 131072, 6684754, 0, 131072, 6684755, 0, 131072, 6684756, 0, 131072, 6684757, 0, 131072, 6684758, 0, 131072, 6684759, 0, 131072, 6684760, 0, 131072, 6684761, 0, 131072, 6684762, 0, 131072, 6684763, 0, 131072, 6684764, 0, 131072, 6684765, 0, 131072, 6684766, 0, 131072, 6684767, 0, 131072, 6684768, 0, 131072, 6684769, 0, 131072, 6684770, 0, 131072, 6684771, 0, 131072, 6684772, 0, 131072, 6684773, 0, 131072, 6684774, 0, 131072, 6684775, 0, 131072, 6684776, 0, 131072, 6684777, 0, 131072, 6684778, 0, 131072, 6684779, 0, 131072, 6684780, 0, 131072, 6684781, 0, 131072, 6684782, 0, 131072, 6684783, 0, 131072, 6684784, 0, 131072, 6684785, 0, 131072, 6684786, 0, 131072, 6684787, 0, 131072, 6684788, 0, 131072, 6684789, 0, 131072, 6684790, 0, 131072, 6684791, 0, 131072, 6684792, 0, 131072, 6684793, 0, 131072, 6684794, 0, 131072, 6684795, 0, 131072, 6684796, 0, 131072, 6684797, 0, 131072, 6684798, 0, 131072, 6684799, 0, 131072, 6684800, 0, 131072, 6684801, 0, 131072, 6684802, 0, 131072, 6684803, 0, 131072, 6684804, 0, 131072, 6684805, 0, 131072, 6684806, 0, 131072, 6684807, 0, 131072, 6684808, 0, 131072, 6684809, 0, 131072, 6684810, 0, 131072, 6684811, 0, 131072, 6684812, 0, 131072, 6684813, 0, 131072, 6684814, 0, 131072, 6684815, 0, 131072, 6750221, 0, 131072, 6750222, 0, 131072, 6750223, 0, 131072, 6750224, 0, 131072, 6750225, 0, 131072, 6750226, 0, 131072, 6750227, 0, 131072, 6750228, 0, 131072, 6750229, 0, 131072, 6750230, 0, 131072, 6750231, 0, 131072, 6750232, 0, 131072, 6750233, 0, 131072, 6750234, 0, 131072, 6750235, 0, 131072, 6750236, 0, 131072, 6750237, 0, 131072, 6750238, 0, 131072, 6750239, 0, 131072, 6750240, 0, 131072, 6750241, 0, 131072, 6750242, 0, 131072, 6750243, 0, 131072, 6750244, 0, 131072, 6750245, 0, 131072, 6750246, 0, 131072, 6750247, 0, 131072, 6750248, 0, 131072, 6750249, 0, 131072, 6750250, 0, 131072, 6750251, 0, 131072, 6750252, 0, 131072, 6750253, 0, 131072, 6750254, 0, 131072, 6750255, 0, 131072, 6750256, 0, 131072, 6750257, 0, 131072, 6750258, 0, 131072, 6750259, 0, 131072, 6750260, 0, 131072, 6750261, 0, 131072, 6750262, 0, 131072, 6750263, 0, 131072, 6750264, 0, 131072, 6750265, 0, 131072, 6750266, 0, 131072, 6750267, 0, 131072, 6750268, 0, 131072, 6750269, 0, 131072, 6750270, 0, 131072, 6750271, 0, 131072, 6750272, 0, 131072, 6750273, 0, 131072, 6750274, 0, 131072, 6750275, 0, 131072, 6750276, 0, 131072, 6750277, 0, 131072, 6750278, 0, 131072, 6750279, 0, 131072, 6750280, 0, 131072, 6750281, 0, 131072, 6750282, 0, 131072, 6750283, 0, 131072, 6750284, 0, 131072, 6750285, 0, 131072, 6750286, 0, 131072, 6750287, 0, 131072, 6750288, 0, 131072, 6750289, 0, 131072, 6750290, 0, 131072, 6750291, 0, 131072, 6750292, 0, 131072, 6750293, 0, 131072, 6750294, 0, 131072, 6750295, 0, 131072, 6750296, 0, 131072, 6750297, 0, 131072, 6750298, 0, 131072, 6750299, 0, 131072, 6750300, 0, 131072, 6750301, 0, 131072, 6750302, 0, 131072, 6750303, 0, 131072, 6750304, 0, 131072, 6750305, 0, 131072, 6750306, 0, 131072, 6750307, 0, 131072, 6750308, 0, 131072, 6750309, 0, 131072, 6750310, 0, 131072, 6750311, 0, 131072, 6750312, 0, 131072, 6750313, 0, 131072, 6750314, 0, 131072, 6750315, 0, 131072, 6750316, 0, 131072, 6750317, 0, 131072, 6750318, 0, 131072, 6750319, 0, 131072, 6750320, 0, 131072, 6750321, 0, 131072, 6750322, 0, 131072, 6750323, 0, 131072, 6750324, 0, 131072, 6750325, 0, 131072, 6750326, 0, 131072, 6750327, 0, 131072, 6750328, 0, 131072, 6750329, 0, 131072, 6750330, 0, 131072, 6750331, 0, 131072, 6750332, 0, 131072, 6750333, 0, 131072, 6750334, 0, 131072, 6750335, 0, 131072, 6750336, 0, 131072, 6750337, 0, 131072, 6750338, 0, 131072, 6750339, 0, 131072, 6750340, 0, 131072, 6750341, 0, 131072, 6750342, 0, 131072, 6750343, 0, 131072, 6750344, 0, 131072, 6750345, 0, 131072, 6750346, 0, 131072, 6750347, 0, 131072, 6815760, 0, 131072, 6815761, 0, 131072, 6815762, 0, 131072, 6815763, 0, 131072, 6815764, 0, 131072, 6815765, 0, 131072, 6815766, 0, 131072, 6815767, 0, 131072, 6815768, 0, 131072, 6815769, 0, 131072, 6815770, 0, 131072, 6815771, 0, 131072, 6815772, 0, 131072, 6815773, 0, 131072, 6815774, 0, 131072, 6815775, 0, 131072, 6815776, 0, 131072, 6815777, 0, 131072, 6815778, 0, 131072, 6815779, 0, 131072, 6815780, 0, 131072, 6815781, 0, 131072, 6815782, 0, 131072, 6815783, 0, 131072, 6815784, 0, 131072, 6815785, 0, 131072, 6815786, 0, 131072, 6815787, 0, 131072, 6815788, 0, 131072, 6815789, 0, 131072, 6815790, 0, 131072, 6815791, 0, 131072, 6815792, 0, 131072, 6815793, 0, 131072, 6815794, 0, 131072, 6815795, 0, 131072, 6815796, 0, 131072, 6815797, 0, 131072, 6815798, 0, 131072, 6815799, 0, 131072, 6815800, 0, 131072, 6815801, 0, 131072, 6815802, 0, 131072, 6815803, 0, 131072, 6815804, 0, 131072, 6815805, 0, 131072, 6815806, 0, 131072, 6815807, 0, 131072, 6815808, 0, 131072, 6815809, 0, 131072, 6815810, 0, 131072, 6815811, 0, 131072, 6815812, 0, 131072, 6815813, 0, 131072, 6815814, 0, 131072, 6815815, 0, 131072, 6815816, 0, 131072, 6815817, 0, 131072, 6815818, 0, 131072, 6815819, 0, 131072, 6815820, 0, 131072, 6815821, 0, 131072, 6815822, 0, 131072, 6815823, 0, 131072, 6815824, 0, 131072, 6815825, 0, 131072, 6815826, 0, 131072, 6815827, 0, 131072, 6815828, 0, 131072, 6815829, 0, 131072, 6815830, 0, 131072, 6815831, 0, 131072, 6815832, 0, 131072, 6815833, 0, 131072, 6815834, 0, 131072, 6815835, 0, 131072, 6815836, 0, 131072, 6815837, 0, 131072, 6815838, 0, 131072, 6815839, 0, 131072, 6815840, 0, 131072, 6815841, 0, 131072, 6815842, 0, 131072, 6815843, 0, 131072, 6815844, 0, 131072, 6815845, 0, 131072, 6815846, 0, 131072, 6815847, 0, 131072, 6815848, 0, 131072, 6815849, 0, 131072, 6815850, 0, 131072, 6815851, 0, 131072, 6815852, 0, 131072, 6815853, 0, 131072, 6815854, 0, 131072, 6815855, 0, 131072, 6815856, 0, 131072, 6815857, 0, 131072, 6815858, 0, 131072, 6815859, 0, 131072, 6815860, 0, 131072, 6815861, 0, 131072, 6815862, 0, 131072, 6815863, 0, 131072, 6815864, 0, 131072, 6815865, 0, 131072, 6815866, 0, 131072, 6815867, 0, 131072, 6815868, 0, 131072, 6815869, 0, 131072, 6815870, 0, 131072, 6815871, 0, 131072, 6815872, 0, 131072, 6815873, 0, 131072, 6815874, 0, 131072, 6815875, 0, 131072, 6815876, 0, 131072, 6815877, 0, 131072, 6815878, 0, 131072, 6815879, 0, 131072, 6881298, 0, 131072, 6881299, 0, 131072, 6881300, 0, 131072, 6881301, 0, 131072, 6881302, 0, 131072, 6881303, 0, 131072, 6881304, 0, 131072, 6881305, 0, 131072, 6881306, 0, 131072, 6881307, 0, 131072, 6881308, 0, 131072, 6881309, 0, 131072, 6881310, 0, 131072, 6881311, 0, 131072, 6881312, 0, 131072, 6881313, 0, 131072, 6881314, 0, 131072, 6881315, 0, 131072, 6881316, 0, 131072, 6881317, 0, 131072, 6881318, 0, 131072, 6881319, 0, 131072, 6881320, 0, 131072, 6881321, 0, 131072, 6881322, 0, 131072, 6881323, 0, 131072, 6881324, 0, 131072, 6881325, 0, 131072, 6881326, 0, 131072, 6881327, 0, 131072, 6881328, 0, 131072, 6881329, 0, 131072, 6881330, 0, 131072, 6881331, 0, 131072, 6881332, 0, 131072, 6881333, 0, 131072, 6881334, 0, 131072, 6881335, 0, 131072, 6881336, 0, 131072, 6881337, 0, 131072, 6881338, 0, 131072, 6881339, 0, 131072, 6881340, 0, 131072, 6881341, 0, 131072, 6881342, 0, 131072, 6881343, 0, 131072, 6881344, 0, 131072, 6881345, 0, 131072, 6881346, 0, 131072, 6881347, 0, 131072, 6881348, 0, 131072, 6881349, 0, 131072, 6881350, 0, 131072, 6881351, 0, 131072, 6881352, 0, 131072, 6881353, 0, 131072, 6881354, 0, 131072, 6881355, 0, 131072, 6881356, 0, 131072, 6881357, 0, 131072, 6881358, 0, 131072, 6881359, 0, 131072, 6881360, 0, 131072, 6881361, 0, 131072, 6881362, 0, 131072, 6881363, 0, 131072, 6881364, 0, 131072, 6881365, 0, 131072, 6881366, 0, 131072, 6881367, 0, 131072, 6881368, 0, 131072, 6881369, 0, 131072, 6881370, 0, 131072, 6881371, 0, 131072, 6881372, 0, 131072, 6881373, 0, 131072, 6881374, 0, 131072, 6881375, 0, 131072, 6881376, 0, 131072, 6881377, 0, 131072, 6881378, 0, 131072, 6881379, 0, 131072, 6881380, 0, 131072, 6881381, 0, 131072, 6881382, 0, 131072, 6881383, 0, 131072, 6881384, 0, 131072, 6881385, 0, 131072, 6881386, 0, 131072, 6881387, 0, 131072, 6881388, 0, 131072, 6881389, 0, 131072, 6881390, 0, 131072, 6881391, 0, 131072, 6881392, 0, 131072, 6881393, 0, 131072, 6881394, 0, 131072, 6881395, 0, 131072, 6881396, 0, 131072, 6881397, 0, 131072, 6881398, 0, 131072, 6881399, 0, 131072, 6881400, 0, 131072, 6881401, 0, 131072, 6881402, 0, 131072, 6881403, 0, 131072, 6881404, 0, 131072, 6881405, 0, 131072, 6881406, 0, 131072, 6881407, 0, 131072, 6881408, 0, 131072, 6881409, 0, 131072, 6881410, 0, 131072, 6881411, 0, 131072, 6946837, 0, 131072, 6946838, 0, 131072, 6946839, 0, 131072, 6946840, 0, 131072, 6946841, 0, 131072, 6946842, 0, 131072, 6946843, 0, 131072, 6946844, 0, 131072, 6946845, 0, 131072, 6946846, 0, 131072, 6946847, 0, 131072, 6946848, 0, 131072, 6946849, 0, 131072, 6946850, 0, 131072, 6946851, 0, 131072, 6946852, 0, 131072, 6946853, 0, 131072, 6946854, 0, 131072, 6946855, 0, 131072, 6946856, 0, 131072, 6946857, 0, 131072, 6946858, 0, 131072, 6946859, 0, 131072, 6946860, 0, 131072, 6946861, 0, 131072, 6946862, 0, 131072, 6946863, 0, 131072, 6946864, 0, 131072, 6946865, 0, 131072, 6946866, 0, 131072, 6946867, 0, 131072, 6946868, 0, 131072, 6946869, 0, 131072, 6946870, 0, 131072, 6946871, 0, 131072, 6946872, 0, 131072, 6946873, 0, 131072, 6946874, 0, 131072, 6946875, 0, 131072, 6946876, 0, 131072, 6946877, 0, 131072, 6946878, 0, 131072, 6946879, 0, 131072, 6946880, 0, 131072, 6946881, 0, 131072, 6946882, 0, 131072, 6946883, 0, 131072, 6946884, 0, 131072, 6946885, 0, 131072, 6946886, 0, 131072, 6946887, 0, 131072, 6946888, 0, 131072, 6946889, 0, 131072, 6946890, 0, 131072, 6946891, 0, 131072, 6946892, 0, 131072, 6946893, 0, 131072, 6946894, 0, 131072, 6946895, 0, 131072, 6946896, 0, 131072, 6946897, 0, 131072, 6946898, 0, 131072, 6946899, 0, 131072, 6946900, 0, 131072, 6946901, 0, 131072, 6946902, 0, 131072, 6946903, 0, 131072, 6946904, 0, 131072, 6946905, 0, 131072, 6946906, 0, 131072, 6946907, 0, 131072, 6946908, 0, 131072, 6946909, 0, 131072, 6946910, 0, 131072, 6946911, 0, 131072, 6946912, 0, 131072, 6946913, 0, 131072, 6946914, 0, 131072, 6946915, 0, 131072, 6946916, 0, 131072, 6946917, 0, 131072, 6946918, 0, 131072, 6946919, 0, 131072, 6946920, 0, 131072, 6946921, 0, 131072, 6946922, 0, 131072, 6946923, 0, 131072, 6946924, 0, 131072, 6946925, 0, 131072, 6946926, 0, 131072, 6946927, 0, 131072, 6946928, 0, 131072, 6946929, 0, 131072, 6946930, 0, 131072, 6946931, 0, 131072, 6946932, 0, 131072, 6946933, 0, 131072, 6946934, 0, 131072, 6946935, 0, 131072, 6946936, 0, 131072, 6946937, 0, 131072, 6946938, 0, 131072, 6946939, 0, 131072, 6946940, 0, 131072, 6946941, 0, 131072, 6946942, 0, 131072, 6946943, 0, 131072, 7012375, 0, 131072, 7012376, 0, 131072, 7012377, 0, 131072, 7012378, 0, 131072, 7012379, 0, 131072, 7012380, 0, 131072, 7012381, 0, 131072, 7012382, 0, 131072, 7012383, 0, 131072, 7012384, 0, 131072, 7012385, 0, 131072, 7012386, 0, 131072, 7012387, 0, 131072, 7012388, 0, 131072, 7012389, 0, 131072, 7012390, 0, 131072, 7012391, 0, 131072, 7012392, 0, 131072, 7012393, 0, 131072, 7012394, 0, 131072, 7012395, 0, 131072, 7012396, 0, 131072, 7012397, 0, 131072, 7012398, 0, 131072, 7012399, 0, 131072, 7012400, 0, 131072, 7012401, 0, 131072, 7012402, 0, 131072, 7012403, 0, 131072, 7012404, 0, 131072, 7012405, 0, 131072, 7012406, 0, 131072, 7012407, 0, 131072, 7012408, 0, 131072, 7012409, 0, 131072, 7012410, 0, 131072, 7012411, 0, 131072, 7012412, 0, 131072, 7012413, 0, 131072, 7012414, 0, 131072, 7012415, 0, 131072, 7012416, 0, 131072, 7012417, 0, 131072, 7012418, 0, 131072, 7012419, 0, 131072, 7012420, 0, 131072, 7012421, 0, 131072, 7012422, 0, 131072, 7012423, 0, 131072, 7012424, 0, 131072, 7012425, 0, 131072, 7012426, 0, 131072, 7012427, 0, 131072, 7012428, 0, 131072, 7012429, 0, 131072, 7012430, 0, 131072, 7012431, 0, 131072, 7012432, 0, 131072, 7012433, 0, 131072, 7012434, 0, 131072, 7012435, 0, 131072, 7012436, 0, 131072, 7012437, 0, 131072, 7012438, 0, 131072, 7012439, 0, 131072, 7012440, 0, 131072, 7012441, 0, 131072, 7012442, 0, 131072, 7012443, 0, 131072, 7012444, 0, 131072, 7012445, 0, 131072, 7012446, 0, 131072, 7012447, 0, 131072, 7012448, 0, 131072, 7012449, 0, 131072, 7012450, 0, 131072, 7012451, 0, 131072, 7012452, 0, 131072, 7012453, 0, 131072, 7012454, 0, 131072, 7012455, 0, 131072, 7012456, 0, 131072, 7012457, 0, 131072, 7012458, 0, 131072, 7012459, 0, 131072, 7012460, 0, 131072, 7012461, 0, 131072, 7012462, 0, 131072, 7012463, 0, 131072, 7012464, 0, 131072, 7012465, 0, 131072, 7012466, 0, 131072, 7012467, 0, 131072, 7012468, 0, 131072, 7012469, 0, 131072, 7012470, 0, 131072, 7012471, 0, 131072, 7012472, 0, 131072, 7012473, 0, 131072, 7012474, 0, 131072, 7012475, 0, 131072, 7077915, 0, 131072, 7077916, 0, 131072, 7077917, 0, 131072, 7077918, 0, 131072, 7077919, 0, 131072, 7077920, 0, 131072, 7077921, 0, 131072, 7077922, 0, 131072, 7077923, 0, 131072, 7077924, 0, 131072, 7077925, 0, 131072, 7077926, 0, 131072, 7077927, 0, 131072, 7077928, 0, 131072, 7077929, 0, 131072, 7077930, 0, 131072, 7077931, 0, 131072, 7077932, 0, 131072, 7077933, 0, 131072, 7077934, 0, 131072, 7077935, 0, 131072, 7077936, 0, 131072, 7077937, 0, 131072, 7077938, 0, 131072, 7077939, 0, 131072, 7077940, 0, 131072, 7077941, 0, 131072, 7077942, 0, 131072, 7077943, 0, 131072, 7077944, 0, 131072, 7077945, 0, 131072, 7077946, 0, 131072, 7077947, 0, 131072, 7077948, 0, 131072, 7077949, 0, 131072, 7077950, 0, 131072, 7077951, 0, 131072, 7077952, 0, 131072, 7077953, 0, 131072, 7077954, 0, 131072, 7077955, 0, 131072, 7077956, 0, 131072, 7077957, 0, 131072, 7077958, 0, 131072, 7077959, 0, 131072, 7077960, 0, 131072, 7077961, 0, 131072, 7077962, 0, 131072, 7077963, 0, 131072, 7077964, 0, 131072, 7077965, 0, 131072, 7077966, 0, 131072, 7077967, 0, 131072, 7077968, 0, 131072, 7077969, 0, 131072, 7077970, 0, 131072, 7077971, 0, 131072, 7077972, 0, 131072, 7077973, 0, 131072, 7077974, 0, 131072, 7077975, 0, 131072, 7077976, 0, 131072, 7077977, 0, 131072, 7077978, 0, 131072, 7077979, 0, 131072, 7077980, 0, 131072, 7077981, 0, 131072, 7077982, 0, 131072, 7077983, 0, 131072, 7077984, 0, 131072, 7077985, 0, 131072, 7077986, 0, 131072, 7077987, 0, 131072, 7077988, 0, 131072, 7077989, 0, 131072, 7077990, 0, 131072, 7077991, 0, 131072, 7077992, 0, 131072, 7077993, 0, 131072, 7077994, 0, 131072, 7077995, 0, 131072, 7077996, 0, 131072, 7077997, 0, 131072, 7077998, 0, 131072, 7077999, 0, 131072, 7078000, 0, 131072, 7078001, 0, 131072, 7078002, 0, 131072, 7078003, 0, 131072, 7078004, 0, 131072, 7078005, 0, 131072, 7143455, 0, 131072, 7143456, 0, 131072, 7143457, 0, 131072, 7143458, 0, 131072, 7143459, 0, 131072, 7143460, 0, 131072, 7143461, 0, 131072, 7143462, 0, 131072, 7143463, 0, 131072, 7143464, 0, 131072, 7143465, 0, 131072, 7143466, 0, 131072, 7143467, 0, 131072, 7143468, 0, 131072, 7143469, 0, 131072, 7143470, 0, 131072, 7143471, 0, 131072, 7143472, 0, 131072, 7143473, 0, 131072, 7143474, 0, 131072, 7143475, 0, 131072, 7143476, 0, 131072, 7143477, 0, 131072, 7143478, 0, 131072, 7143479, 0, 131072, 7143480, 0, 131072, 7143481, 0, 131072, 7143482, 0, 131072, 7143483, 0, 131072, 7143484, 0, 131072, 7143485, 0, 131072, 7143486, 0, 131072, 7143487, 0, 131072, 7143488, 0, 131072, 7143489, 0, 131072, 7143490, 0, 131072, 7143491, 0, 131072, 7143492, 0, 131072, 7143493, 0, 131072, 7143494, 0, 131072, 7143495, 0, 131072, 7143496, 0, 131072, 7143497, 0, 131072, 7143498, 0, 131072, 7143499, 0, 131072, 7143500, 0, 131072, 7143501, 0, 131072, 7143502, 0, 131072, 7143503, 0, 131072, 7143504, 0, 131072, 7143505, 0, 131072, 7143506, 0, 131072, 7143507, 0, 131072, 7143508, 0, 131072, 7143509, 0, 131072, 7143510, 0, 131072, 7143511, 0, 131072, 7143512, 0, 131072, 7143513, 0, 131072, 7143514, 0, 131072, 7143515, 0, 131072, 7143516, 0, 131072, 7143517, 0, 131072, 7143518, 0, 131072, 7143519, 0, 131072, 7143520, 0, 131072, 7143521, 0, 131072, 7143522, 0, 131072, 7143523, 0, 131072, 7143524, 0, 131072, 7143525, 0, 131072, 7143526, 0, 131072, 7143527, 0, 131072, 7143528, 0, 131072, 7143529, 0, 131072, 7143530, 0, 131072, 7143531, 0, 131072, 7143532, 0, 131072, 7143533, 0, 131072, 7208996, 0, 131072, 7208997, 0, 131072, 7208998, 0, 131072, 7208999, 0, 131072, 7209000, 0, 131072, 7209001, 0, 131072, 7209002, 0, 131072, 7209003, 0, 131072, 7209004, 0, 131072, 7209005, 0, 131072, 7209006, 0, 131072, 7209007, 0, 131072, 7209008, 0, 131072, 7209009, 0, 131072, 7209010, 0, 131072, 7209011, 0, 131072, 7209012, 0, 131072, 7209013, 0, 131072, 7209014, 0, 131072, 7209015, 0, 131072, 7209016, 0, 131072, 7209017, 0, 131072, 7209018, 0, 131072, 7209019, 0, 131072, 7209020, 0, 131072, 7209021, 0, 131072, 7209022, 0, 131072, 7209023, 0, 131072, 7209024, 0, 131072, 7209025, 0, 131072, 7209026, 0, 131072, 7209027, 0, 131072, 7209028, 0, 131072, 7209029, 0, 131072, 7209030, 0, 131072, 7209031, 0, 131072, 7209032, 0, 131072, 7209033, 0, 131072, 7209034, 0, 131072, 7209035, 0, 131072, 7209036, 0, 131072, 7209037, 0, 131072, 7209038, 0, 131072, 7209039, 0, 131072, 7209040, 0, 131072, 7209041, 0, 131072, 7209042, 0, 131072, 7209043, 0, 131072, 7209044, 0, 131072, 7209045, 0, 131072, 7209046, 0, 131072, 7209047, 0, 131072, 7209048, 0, 131072, 7209049, 0, 131072, 7209050, 0, 131072, 7209051, 0, 131072, 7209052, 0, 131072, 7209053, 0, 131072, 7209054, 0, 131072, 7209055, 0, 131072, 7209056, 0, 131072, 7209057, 0, 131072, 7209058, 0, 131072, 7209059, 0, 131072, 7209060, 0, 131072, 7209061, 0, 131072, 7274536, 0, 131072, 7274537, 0, 131072, 7274538, 0, 131072, 7274539, 0, 131072, 7274540, 0, 131072, 7274541, 0, 131072, 7274542, 0, 131072, 7274543, 0, 131072, 7274544, 0, 131072, 7274545, 0, 131072, 7274546, 0, 131072, 7274547, 0, 131072, 7274548, 0, 131072, 7274549, 0, 131072, 7274550, 0, 131072, 7274551, 0, 131072, 7274552, 0, 131072, 7274553, 0, 131072, 7274554, 0, 131072, 7274555, 0, 131072, 7274556, 0, 131072, 7274557, 0, 131072, 7274558, 0, 131072, 7274559, 0, 131072, 7274560, 0, 131072, 7274561, 0, 131072, 7274562, 0, 131072, 7274563, 0, 131072, 7274564, 0, 131072, 7274565, 0, 131072, 7274566, 0, 131072, 7274567, 0, 131072, 7274568, 0, 131072, 7274569, 0, 131072, 7274570, 0, 131072, 7274571, 0, 131072, 7274572, 0, 131072, 7274573, 0, 131072, 7274574, 0, 131072, 7274575, 0, 131072, 7274576, 0, 131072, 7274577, 0, 131072, 7274578, 0, 131072, 7274579, 0, 131072, 7274580, 0, 131072, 7274581, 0, 131072, 7274582, 0, 131072, 7274583, 0, 131072, 7274584, 0, 131072, 7274585, 0, 131072, 7274586, 0, 131072, 7274587, 0, 131072, 7274588, 0, 131072, 7274589, 0, 131072, 7340085, 0, 131072, 7340086, 0, 131072, 7340087, 0, 131072, 7340088, 0, 131072, 7340089, 0, 131072, 7340090, 0, 131072, 7340091, 0, 131072, 7340092, 0, 131072, 7340093, 0, 131072, 7340094, 0, 131072, 7340095, 0, 131072, 7340096, 0, 131072, 7340097, 0, 131072, 7340098, 0, 131072, 7340099, 0, 131072, 7340100, 0, 131072, 7340101, 0, 131072, 7340102, 0, 131072, 7340103, 0, 131072, 7340104, 0, 131072, 7340105, 0, 131072, 7340106, 0, 131072, 7340107, 0, 131072, 7340108, 0, 131072 ) diff --git a/game/addons/Godoxel/BrushPrefabs.gd b/game/addons/Godoxel/BrushPrefabs.gd new file mode 100644 index 0000000..02884d3 --- /dev/null +++ b/game/addons/Godoxel/BrushPrefabs.gd @@ -0,0 +1,106 @@ +class_name BrushPrefabs + + +const list = [ + [ Vector2(0, -1), + Vector2(-1, 0), Vector2(0, 0), Vector2(1, 0), + Vector2(0, 1) + ], + [Vector2(-1, -1), Vector2(0, -1), Vector2(1, -1), + Vector2(-1, 0), Vector2(0, 0), Vector2(1, 0), + Vector2(-1, 1), Vector2(0, 1), Vector2(1, 1), + ], + [ + Vector2(-1, 0), Vector2(0, 0), Vector2(1, 0), + ], + [ Vector2(0, -1), + Vector2(0, 0), + Vector2(0, 1) + ] +] + + +enum Type { + V_LINE, + H_LINE, + RECT, + CIRCLE, +} + +static func get_brush(type, size: int): + var pixels = [] + if size < 1: + size = 1 + + match type: + Type.CIRCLE: + size += 1 + var center = Vector2.ZERO + var last = center + var radius = size / 2.0 + for x in range(size): + for y in range(size): + if Vector2(x - radius, y - radius).length() < size / 3.0: + pixels.append(Vector2(x, y)) + + var avg = Vector2(size / 2, size / 2) + avg = Vector2(floor(avg.x), floor(avg.y)) + + for i in range(pixels.size()): + pixels[i] -= avg + + Type.RECT: + var center = Vector2.ZERO + var last = center + for x in range(size): + for y in range(size): + pixels.append(Vector2(x, y)) + + var avg = Vector2.ZERO + for cell in pixels: + avg += cell + + avg.x /= pixels.size() + avg.y /= pixels.size() + + avg = Vector2(floor(avg.x), floor(avg.y)) + + for i in range(pixels.size()): + pixels[i] -= avg + + Type.V_LINE: + var center = Vector2.ZERO + var last = center + pixels.append(Vector2.ZERO) + + for i in range(size - 1): + var sig = sign(last.y) + if sig == 0: + sig = 1 + + if last.y < 0: + center.y = abs(last.y) * -sig + else: + center.y = abs(last.y+1) * -sig + last = center + pixels.append(center) + Type.H_LINE: + var center = Vector2.ZERO + var last = center + pixels.append(Vector2.ZERO) + + for i in range(size - 1): + var sig = sign(last.x) + if sig == 0: + sig = 1 + + if last.x < 0: + center.x = abs(last.x) * -sig + else: + center.x = abs(last.x+1) * -sig + last = center + pixels.append(center) + + return pixels + + diff --git a/game/addons/Godoxel/Canvas.gd b/game/addons/Godoxel/Canvas.gd new file mode 100644 index 0000000..77afa4e --- /dev/null +++ b/game/addons/Godoxel/Canvas.gd @@ -0,0 +1,461 @@ +extends Control +class_name GECanvas +tool + +export var pixel_size: int = 16 setget set_pixel_size +export(int, 1, 2500) var canvas_width = 48 setget set_canvas_width # == pixels +export(int, 1, 2500) var canvas_height = 28 setget set_canvas_height # == pixels +export var grid_size = 16 setget set_grid_size +export var big_grid_size = 10 setget set_big_grid_size +export var can_draw = true + +var mouse_in_region +var mouse_on_top + +var layers : Array = [] # Key: layer_name, val: GELayer +var active_layer: GELayer +var preview_layer: GELayer +var tool_layer: GELayer +var canvas_layers: Control + +var canvas +var grid +var big_grid +var selected_pixels = [] + +var symmetry_x = false +var symmetry_y = false + + +func _enter_tree(): + #------------------------------- + # Set nodes + #------------------------------- + canvas = find_node("Canvas") + grid = find_node("Grid") + big_grid = find_node("BigGrid") + canvas_layers = find_node("CanvasLayers") + + #------------------------------- + # setup layers and canvas + #------------------------------- + connect("mouse_entered", self, "_on_mouse_entered") + connect("mouse_exited", self, "_on_mouse_exited") + + #------------------------------- + # setup layers and canvas + #------------------------------- + #canvas_size = Vector2(int(rect_size.x / grid_size), int(rect_size.y / grid_size)) + #pixel_size = canvas_size + + active_layer = add_new_layer("Layer1") + preview_layer = add_new_layer("Preview") + tool_layer = add_new_layer("Tool") + + set_process(true) + + +func _process(delta): + if not is_visible_in_tree(): + return + var mouse_position = get_local_mouse_position() + var rect = Rect2(Vector2(0, 0), rect_size) + mouse_in_region = rect.has_point(mouse_position) + + +func _draw(): + for layer in layers: + layer.update_texture() + + preview_layer.update_texture() + tool_layer.update_texture() + + +func resize(width: int, height: int): + if width < 0: + width = 1 + if height < 0: + height = 1 + + set_canvas_width(width) + set_canvas_height(height) + + preview_layer.resize(width, height) + tool_layer.resize(width, height) + for layer in layers: + layer.resize(width, height) + + +#------------------------------- +# Export +#------------------------------- + +func set_pixel_size(size: int): + pixel_size = size + set_grid_size(grid_size) + set_big_grid_size(big_grid_size) + set_canvas_width(canvas_width) + set_canvas_height(canvas_height) + + +func set_grid_size(size): + grid_size = size + if not find_node("Grid"): + return + find_node("Grid").size = size * pixel_size + + +func set_big_grid_size(size): + big_grid_size = size + if not find_node("BigGrid"): + return + find_node("BigGrid").size = size * pixel_size + + +func set_canvas_width(val: int): + canvas_width = val + rect_size.x = canvas_width * pixel_size + + +func set_canvas_height(val: int): + canvas_height = val + rect_size.y = canvas_height * pixel_size + + +#------------------------------- +# Layer +#------------------------------- + + + +func toggle_alpha_locked(layer_name: String): + var layer = find_layer_by_name(layer_name) + layer.toggle_alpha_locked() + + +func is_alpha_locked() -> bool: + return active_layer.alpha_locked + + +func get_content_margin() -> Rect2: + var rect = Rect2(999999, 999999, -999999, -999999) + + preview_layer.image.get_used_rect() + for layer in layers: + + var r = layer.image.get_used_rect() + + if r.position.x < rect.position.x: + rect.position.x = r.position.x + if r.position.y < rect.position.y: + rect.position.y = r.position.y + if r.size.x > rect.size.x: + rect.size.x = r.size.x + if r.size.y > rect.size.y: + rect.size.y = r.size.y + + return rect + + +func crop_to_content(): + var rect = get_content_margin() + + #print(rect) + + for layer in layers: + layer.image + +# set_canvas_width(rect.size.x) +# set_canvas_height(rect.size.x) + +# preview_layer.resize(width, height) +# tool_layer.resize(width, height) +# for layer in layers: +# layer.resize(width, height) + + +func get_active_layer(): + return active_layer + + +func get_preview_layer(): + return preview_layer + + +func clear_active_layer(): + active_layer.clear() + + +func clear_preview_layer(): + preview_layer.clear() + + +func clear_layer(layer_name: String): + for layer in layers: + if layer.name == layer_name: + layer.clear() + break + + +func remove_layer(layer_name: String): + # change current layer if the active layer is removed + var del_layer = find_layer_by_name(layer_name) + del_layer.clear() + if del_layer == active_layer: + for layer in layers: + if layer == preview_layer or layer == active_layer or layer == tool_layer: + continue + active_layer = layer + break + layers.erase(del_layer) + return active_layer + + +func add_new_layer(layer_name: String): + for layer in layers: + if layer.name == layer_name: + return + var layer = GELayer.new() + layer.name = layer_name + + if layer_name == "Preview": + layer.create($PreviewLayer, canvas_width, canvas_height) + elif layer_name == "Tool": + layer.create($ToolPreviewLayer, canvas_width, canvas_height) + else: + var texture_rect = TextureRect.new() + texture_rect.name = layer_name + canvas_layers.add_child(texture_rect, true) + texture_rect.expand = true + texture_rect.anchor_right = 1 + texture_rect.anchor_bottom = 1 + texture_rect.margin_right = 0 + texture_rect.margin_bottom = 0 + texture_rect.mouse_filter = Control.MOUSE_FILTER_IGNORE + layer.create(texture_rect, canvas_width, canvas_height) + layers.append(layer) + + return layer + + +func duplicate_layer(layer_name: String, new_layer_name: String): + for layer in layers: + if layer.name == new_layer_name: + return + + var dup_layer :GELayer = find_layer_by_name(layer_name) + var layer :GELayer = add_new_layer(new_layer_name) + layer.image.copy_from(dup_layer.image) + return layer + + +func toggle_layer_visibility(layer_name: String): + for layer in layers: + if layer.name == layer_name: + layer.visible = not layer.visible + + +func find_layer_by_name(layer_name: String): + for layer in layers: + if layer.name == layer_name: + return layer + return null + + +func toggle_lock_layer(layer_name: String): + find_layer_by_name(layer_name).toggle_lock() + + +func is_active_layer_locked() -> bool: + return active_layer.locked + + +func move_layer_forward(layer_name: String): + var layer = find_layer_by_name(layer_name).texture_rect_ref + var new_idx = max(layer.get_index() - 1, 0) + canvas_layers.move_child(layer, new_idx) + + +func move_layer_back(layer_name: String): + var layer = find_layer_by_name(layer_name).texture_rect_ref + canvas_layers.move_child(layer, layer.get_index() + 1) + + +func select_layer(layer_name: String): + active_layer = find_layer_by_name(layer_name) + + +#------------------------------- +# Check +#------------------------------- + +func _on_mouse_entered(): + mouse_on_top = true + + +func _on_mouse_exited(): + mouse_on_top = false + + +func is_inside_canvas(x, y): + if x < 0 or y < 0: + return false + if x >= canvas_width or y >= canvas_height: + return false + return true + + + +#------------------------------- +# Basic pixel-layer options +#------------------------------- + + +#Note: Arrays are always passed by reference. To get a copy of an array which +# can be modified independently of the original array, use duplicate. +# (https://docs.godotengine.org/en/stable/classes/class_array.html) +func set_pixel_arr(pixels: Array, color: Color): + for pixel in pixels: + _set_pixel(active_layer, pixel.x, pixel.y, color) + + +func set_pixel_v(pos: Vector2, color: Color): + set_pixel(pos.x, pos.y, color) + + +func set_pixel(x: int, y: int, color: Color): + _set_pixel(active_layer, x, y, color) + + +func _set_pixel_v(layer: GELayer, v: Vector2, color: Color): + _set_pixel(layer, v.x, v.y, color) + + +func _set_pixel(layer: GELayer, x: int, y: int, color: Color): + if not is_inside_canvas(x, y): + return + layer.set_pixel(x, y, color) + + +func get_pixel_v(pos: Vector2): + return get_pixel(pos.x, pos.y) + + +func get_pixel(x: int, y: int): + if active_layer: + return active_layer.get_pixel(x, y) + return null + + +func set_preview_pixel_v(pos: Vector2, color: Color): + set_preview_pixel(pos.x, pos.y, color) + + +func set_preview_pixel(x:int, y: int, color: Color): + if not is_inside_canvas(x, y): + return + preview_layer.set_pixel(x, y, color) + + +func get_preview_pixel_v(pos: Vector2): + return get_preview_pixel(pos.x, pos.y) + + +func get_preview_pixel(x: int, y: int): + if not preview_layer: + return null + return preview_layer.get_pixel(x, y) + + + +#------------------------------- +# Grid +#------------------------------- + + +func toggle_grid(): + $Grid.visible = not $Grid.visible + + +func show_grid(): + $Grid.show() + + +func hide_grid(): + $Grid.hide() + + +#------------------------------- +# Handy tools +#------------------------------- + + +func select_color(x, y): + print("???") + var same_color_pixels = [] + var color = get_pixel(x, y) + for x in range(active_layer.layer_width): + for y in range(active_layer.layer_height): + var pixel_color = active_layer.get_pixel(x, y) + if pixel_color == color: + same_color_pixels.append(color) + return same_color_pixels + + +func select_same_color(x, y): + return get_neighbouring_pixels(x, y) + + +# returns array of Vector2 +# yoinked from +# https://www.geeksforgeeks.org/flood-fill-algorithm-implement-fill-paint/ +func get_neighbouring_pixels(pos_x: int, pos_y: int) -> Array: + var pixels = [] + + var to_check_queue = [] + var checked_queue = [] + + to_check_queue.append(GEUtils.to_1D(pos_x, pos_y, canvas_width)) + + var color = get_pixel(pos_x, pos_y) + + while not to_check_queue.empty(): + var idx = to_check_queue.pop_front() + var p = GEUtils.to_2D(idx, canvas_width) + + if idx in checked_queue: + continue + + checked_queue.append(idx) + + if get_pixel(p.x, p.y) != color: + continue + + # add to result + pixels.append(p) + + # check neighbours + var x = p.x - 1 + var y = p.y + if is_inside_canvas(x, y): + idx = GEUtils.to_1D(x, y, canvas_width) + to_check_queue.append(idx) + + x = p.x + 1 + if is_inside_canvas(x, y): + idx = GEUtils.to_1D(x, y, canvas_width) + to_check_queue.append(idx) + + x = p.x + y = p.y - 1 + if is_inside_canvas(x, y): + idx = GEUtils.to_1D(x, y, canvas_width) + to_check_queue.append(idx) + + y = p.y + 1 + if is_inside_canvas(x, y): + idx = GEUtils.to_1D(x, y, canvas_width) + to_check_queue.append(idx) + + return pixels + diff --git a/game/addons/Godoxel/CanvasOutline.gd b/game/addons/Godoxel/CanvasOutline.gd new file mode 100644 index 0000000..8bf94a6 --- /dev/null +++ b/game/addons/Godoxel/CanvasOutline.gd @@ -0,0 +1,31 @@ +tool +extends Control + +export var color = Color() + + +func _ready(): + pass + + +func _draw(): + var size = get_parent().rect_size + var pos = Vector2.ZERO #get_parent().rect_global_position + draw_outline_box(pos, size, color, 1) + + +func draw_outline_box(pos, size, color, width): + #Top line + draw_line(pos, pos + Vector2(size.x, 0), color, width) + #Left line + draw_line(pos, pos + Vector2(0, size.y), color, width) + #Bottom line + draw_line(pos + Vector2(0, size.y), pos + Vector2(size.x, size.y), color, width) + #Right line + draw_line(pos + Vector2(size.x, 0), pos + Vector2(size.x, size.y), color, width) + + +func _process(delta): + if not is_visible_in_tree(): + return + update() diff --git a/game/addons/Godoxel/Colors.gd b/game/addons/Godoxel/Colors.gd new file mode 100644 index 0000000..c198e59 --- /dev/null +++ b/game/addons/Godoxel/Colors.gd @@ -0,0 +1,34 @@ +tool +extends GridContainer + +signal color_change_request + +func _enter_tree(): + for child in get_children(): + child.set("custom_styles/normal", StyleBoxFlat.new()) + child.get("custom_styles/normal").set("bg_color", Color(randf(), randf(), randf())) + for child in get_children(): + if child.is_connected("pressed", self, "change_color_to"): + return + child.connect("pressed", self, "change_color_to", [child.get("custom_styles/normal").bg_color]) + + +func change_color_to(color): + emit_signal("color_change_request", color) + + +func add_color_prefab(color: Color): + var dup = get_child(0).duplicate() + add_child(dup) + move_child(dup, 0) + dup.set("custom_styles/normal", StyleBoxFlat.new()) + dup.get("custom_styles/normal").set("bg_color", color) + for child in get_children(): + if child.is_connected("pressed", self, "change_color_to"): + return + child.connect("pressed", self, "change_color_to", [child.get("custom_styles/normal").bg_color]) + + + + + diff --git a/game/addons/Godoxel/DebugTextDisplay.gd b/game/addons/Godoxel/DebugTextDisplay.gd new file mode 100644 index 0000000..bdb7616 --- /dev/null +++ b/game/addons/Godoxel/DebugTextDisplay.gd @@ -0,0 +1,9 @@ +extends RichTextLabel +tool + +func _ready(): + pass + + +func display_text(text): + self.text = text diff --git a/game/addons/Godoxel/Editor.gd b/game/addons/Godoxel/Editor.gd new file mode 100644 index 0000000..0ae1192 --- /dev/null +++ b/game/addons/Godoxel/Editor.gd @@ -0,0 +1,832 @@ +tool +extends Control + +enum Tools { + PAINT, + BRUSH, + BUCKET, + RAINBOW, + LINE, + RECT, + DARKEN, + BRIGHTEN + COLORPICKER, + CUT, + PASTECUT, +} + +# Keyboard shortcuts +const K_UNDO = KEY_Z +const K_REDO = KEY_Y +const K_PENCIL = KEY_Q +const K_BRUSH = KEY_W +const K_BUCKET = KEY_F +const K_RAINBOW = KEY_R +const K_LINE = KEY_L +const K_DARK = KEY_D +const K_BRIGHT = KEY_B +const K_CUT = KEY_C +const K_PICK = KEY_P + + +var layer_buttons: Control +var paint_canvas_container_node +var paint_canvas: GECanvas +var canvas_background: TextureRect +var grids_node +var colors_grid +var selected_color = Color(1, 1, 1, 1) setget set_selected_color +var util = preload("res://addons/Godoxel/Util.gd") +var textinfo +var allow_drawing = true + +var mouse_in_region = false +var mouse_on_top = false + + +var _middle_mouse_pressed_pos = null +var _middle_mouse_pressed_start_pos = null +var _left_mouse_pressed_start_pos = Vector2() +var _previous_tool +var brush_mode + +var _layer_button_ref = {} + +var _total_added_layers = 1 + +var selected_brush_prefab = 0 +var _last_drawn_pixel = Vector2.ZERO +var _last_preview_draw_cell_pos = Vector2.ZERO + +var _selection_cells = [] +var _selection_colors = [] + +var _cut_pos = Vector2.ZERO +var _cut_size = Vector2.ZERO + +var _actions_history = [] # for undo +var _redo_history = [] +var _current_action + +var _last_mouse_pos_canvas_area = Vector2.ZERO + +var _picked_color = false + +var mouse_position = Vector2() +var canvas_position = Vector2() +var canvas_mouse_position = Vector2() +var cell_mouse_position = Vector2() +var cell_color = Color() + +var last_mouse_position = Vector2() +var last_canvas_position = Vector2() +var last_canvas_mouse_position = Vector2() +var last_cell_mouse_position = Vector2() +var last_cell_color = Color() + +const current_layer_highlight = Color(0.354706, 0.497302, 0.769531) +const other_layer_highlight = Color(0.180392, 0.176471, 0.176471) +const locked_layer_highlight = Color(0.098039, 0.094118, 0.094118) + +var big_grid_pixels = 4 # 1 grid-box is big_grid_pixels big + + + +func _ready(): + #-------------------- + #Setup nodes + #-------------------- + + paint_canvas_container_node = find_node("PaintCanvasContainer") + textinfo = find_node("DebugTextDisplay") + selected_color = find_node("ColorPicker").color + colors_grid = find_node("Colors") + paint_canvas = paint_canvas_container_node.find_node("Canvas") + layer_buttons = find_node("LayerButtons") + canvas_background = find_node("CanvasBackground") + + set_process(true) + + #-------------------- + #connect nodes + #-------------------- + if not colors_grid.is_connected("color_change_request", self, "change_color"): + colors_grid.connect("color_change_request", self, "change_color") + + if not is_connected("visibility_changed", self, "_on_Editor_visibility_changed"): + connect("visibility_changed", self, "_on_Editor_visibility_changed") + + find_node("CanvasBackground").material.set_shader_param( + "pixel_size", 8 * pow(0.5, big_grid_pixels)/paint_canvas.pixel_size) + + # ready + + set_brush(Tools.PAINT) + _layer_button_ref[layer_buttons.get_child(0).name] = layer_buttons.get_child(0) #ugly + _connect_layer_buttons() + highlight_layer(paint_canvas.get_active_layer().name) + + find_node("BrushSizeLabel").text = str(int(find_node("BrushSize").value)) + + paint_canvas.update() + + +func _input(event): + if is_any_menu_open(): + return + if not is_visible_in_tree(): + return + if paint_canvas_container_node == null or paint_canvas == null: + return + + if event is InputEventKey and event.is_pressed() and not event.is_echo(): + _handle_shortcuts(event.scancode) + + if is_mouse_in_canvas(): + _handle_zoom(event) + + if paint_canvas.is_active_layer_locked(): + return + + if brush_mode == Tools.CUT: + if event is InputEventMouseButton: + if event.button_index == BUTTON_LEFT: + if not event.pressed: + commit_action() + + if (paint_canvas.mouse_in_region and paint_canvas.mouse_on_top): + if event is InputEventMouseButton: + match brush_mode: + Tools.BUCKET: + if event.button_index == BUTTON_LEFT: + if event.pressed: + if _current_action == null: + _current_action = get_action() + do_action([cell_mouse_position, last_cell_mouse_position, selected_color]) + + Tools.COLORPICKER: + if event.button_index == BUTTON_LEFT: + if event.pressed: + if paint_canvas.get_pixel(cell_mouse_position.x, cell_mouse_position.y).a == 0: + return + selected_color = paint_canvas.get_pixel(cell_mouse_position.x, cell_mouse_position.y) + _picked_color = true + find_node("Colors").add_color_prefab(selected_color) + elif _picked_color: + set_brush(_previous_tool) + elif event.button_index == BUTTON_RIGHT: + if event.pressed: + set_brush(_previous_tool) + + Tools.PASTECUT: + if event.button_index == BUTTON_RIGHT: + if event.pressed: + commit_action() + set_brush(Tools.PAINT) + + +func _process(delta): + if not is_visible_in_tree(): + return + if paint_canvas_container_node == null or paint_canvas == null: + return + if is_any_menu_open(): + return + + if is_mouse_in_canvas(): + _handle_scroll() + + #Update commonly used variables + var grid_size = paint_canvas.pixel_size + mouse_position = get_global_mouse_position() #paint_canvas.get_local_mouse_position() + canvas_position = paint_canvas.rect_global_position + canvas_mouse_position = Vector2(mouse_position.x - canvas_position.x, mouse_position.y - canvas_position.y) + if is_mouse_in_canvas(): + cell_mouse_position = Vector2( + floor(canvas_mouse_position.x / grid_size), + floor(canvas_mouse_position.y / grid_size)) + cell_color = paint_canvas.get_pixel(cell_mouse_position.x, cell_mouse_position.y) + update_text_info() + +# if not is_mouse_in_canvas(): +# paint_canvas.tool_layer.clear() +# paint_canvas.update() +# paint_canvas.tool_layer.update_texture() +# else: + if is_mouse_in_canvas(): + if not paint_canvas.is_active_layer_locked(): + if is_position_in_canvas(get_global_mouse_position()) or \ + is_position_in_canvas(_last_mouse_pos_canvas_area): + brush_process() + else: + print(cell_mouse_position, " not in ", paint_canvas_container_node.rect_size) + print("not in canvas") + + _draw_tool_brush() + + #Update last variables with the current variables + last_mouse_position = mouse_position + last_canvas_position = canvas_position + last_canvas_mouse_position = canvas_mouse_position + last_cell_mouse_position = cell_mouse_position + last_cell_color = cell_color + _last_mouse_pos_canvas_area = get_global_mouse_position() #paint_canvas_container_node.get_local_mouse_position() + + +func _handle_shortcuts(scancode): + match scancode: + K_UNDO: + undo_action() + + K_REDO: + redo_action() + + K_PENCIL: + set_brush(Tools.PAINT) + + K_BRUSH: + set_brush(Tools.BRUSH) + + K_BUCKET: + set_brush(Tools.BUCKET) + + K_RAINBOW: + set_brush(Tools.RAINBOW) + + K_LINE: + set_brush(Tools.LINE) + + K_DARK: + set_brush(Tools.DARKEN) + + K_BRIGHT: + set_brush(Tools.BRIGHTEN) + + K_CUT: + set_brush(Tools.CUT) + + K_PICK: + set_brush(Tools.COLORPICKER) + + +func _draw_tool_brush(): + paint_canvas.tool_layer.clear() + + match brush_mode: + Tools.PASTECUT: + for idx in range(_selection_cells.size()): + var pixel = _selection_cells[idx] +# if pixel.x < 0 or pixel.y < 0: +# print(pixel) + var color = _selection_colors[idx] + pixel -= _cut_pos + _cut_size / 2 + pixel += cell_mouse_position + paint_canvas._set_pixel_v(paint_canvas.tool_layer, pixel, color) + Tools.BRUSH: + var pixels = BrushPrefabs.get_brush(selected_brush_prefab, find_node("BrushSize").value) + for pixel in pixels: + + paint_canvas._set_pixel(paint_canvas.tool_layer, + cell_mouse_position.x + pixel.x, cell_mouse_position.y + pixel.y, selected_color) + + Tools.RAINBOW: + paint_canvas._set_pixel(paint_canvas.tool_layer, + cell_mouse_position.x, cell_mouse_position.y, Color(0.46875, 0.446777, 0.446777, 0.196078)) + + Tools.COLORPICKER: + paint_canvas._set_pixel(paint_canvas.tool_layer, + cell_mouse_position.x, cell_mouse_position.y, Color(0.866667, 0.847059, 0.847059, 0.196078)) + _: + paint_canvas._set_pixel(paint_canvas.tool_layer, + cell_mouse_position.x, cell_mouse_position.y, selected_color) + + paint_canvas.update() + #TODO add here brush prefab drawing + paint_canvas.tool_layer.update_texture() + + +func _handle_scroll(): + if Input.is_mouse_button_pressed(BUTTON_MIDDLE): + if _middle_mouse_pressed_start_pos == null: + _middle_mouse_pressed_start_pos = paint_canvas.rect_position + _middle_mouse_pressed_pos = get_global_mouse_position() + + paint_canvas.rect_position = _middle_mouse_pressed_start_pos + paint_canvas.rect_position += get_global_mouse_position() - _middle_mouse_pressed_pos + + elif _middle_mouse_pressed_start_pos != null: + _middle_mouse_pressed_start_pos = null + + +const max_zoom_out = 1 +const max_zoom_in = 50 + +func _handle_zoom(event): + if not event is InputEventMouseButton: + return + if event.is_pressed(): + if event.button_index == BUTTON_WHEEL_UP: + var px = min(paint_canvas.pixel_size * 2, max_zoom_in) + if px == paint_canvas.pixel_size: + return + paint_canvas.set_pixel_size(px) + find_node("CanvasBackground").material.set_shader_param( + "pixel_size", 8 * pow(0.5, big_grid_pixels)/paint_canvas.pixel_size) + paint_canvas.rect_position -= paint_canvas.get_local_mouse_position() + paint_canvas.rect_position.x = clamp(paint_canvas.rect_position.x, -paint_canvas.rect_size.x * 0.8, rect_size.x) + paint_canvas.rect_position.y = clamp(paint_canvas.rect_position.y, -paint_canvas.rect_size.y * 0.8, rect_size.y) + elif event.button_index == BUTTON_WHEEL_DOWN: + var px = max(paint_canvas.pixel_size / 2.0, max_zoom_out) + if px == paint_canvas.pixel_size: + return + paint_canvas.set_pixel_size(px) + find_node("CanvasBackground").material.set_shader_param( + # 4 2 1 + "pixel_size", 8 * pow(0.5, big_grid_pixels)/paint_canvas.pixel_size) + paint_canvas.rect_position += paint_canvas.get_local_mouse_position() / 2 + paint_canvas.rect_position.x = clamp(paint_canvas.rect_position.x, -paint_canvas.rect_size.x * 0.8, rect_size.x) + paint_canvas.rect_position.y = clamp(paint_canvas.rect_position.y, -paint_canvas.rect_size.y * 0.8, rect_size.y) + + +func _handle_cut(): + if Input.is_mouse_button_pressed(BUTTON_RIGHT): + paint_canvas.clear_preview_layer() + set_brush(_previous_tool) + return + + if Input.is_mouse_button_pressed(BUTTON_LEFT): + for pixel_pos in GEUtils.get_pixels_in_line(cell_mouse_position, last_cell_mouse_position): + for idx in range(_selection_cells.size()): + var pixel = _selection_cells[idx] + var color = _selection_colors[idx] + pixel -= _cut_pos + _cut_size / 2 + pixel += pixel_pos + paint_canvas.set_pixel_v(pixel, color) + else: + if _last_preview_draw_cell_pos == cell_mouse_position: + return + paint_canvas.clear_preview_layer() + for idx in range(_selection_cells.size()): + var pixel = _selection_cells[idx] + var color = _selection_colors[idx] + pixel -= _cut_pos + _cut_size / 2 + pixel += cell_mouse_position + paint_canvas.set_preview_pixel_v(pixel, color) + _last_preview_draw_cell_pos = cell_mouse_position + + +func brush_process(): + if Input.is_mouse_button_pressed(BUTTON_LEFT): + if _current_action == null: + _current_action = get_action() + if brush_mode == Tools.COLORPICKER: + _current_action = null + + match brush_mode: + Tools.PAINT: + do_action([cell_mouse_position, last_cell_mouse_position, selected_color]) + Tools.BRUSH: + do_action([cell_mouse_position, last_cell_mouse_position, selected_color, + selected_brush_prefab, find_node("BrushSize").value]) + Tools.LINE: + do_action([cell_mouse_position, last_cell_mouse_position, selected_color]) + Tools.RECT: + do_action([cell_mouse_position, last_cell_mouse_position, selected_color]) + Tools.DARKEN: + do_action([cell_mouse_position, last_cell_mouse_position, selected_color]) + Tools.BRIGHTEN: + do_action([cell_mouse_position, last_cell_mouse_position, selected_color]) + Tools.COLORPICKER: + pass + Tools.CUT: + do_action([cell_mouse_position, last_cell_mouse_position, selected_color]) + Tools.PASTECUT: + do_action([cell_mouse_position, last_cell_mouse_position, + _selection_cells, _selection_colors, + _cut_pos, _cut_size]) + Tools.RAINBOW: + do_action([cell_mouse_position, last_cell_mouse_position]) + paint_canvas.update() + + elif Input.is_mouse_button_pressed(BUTTON_RIGHT): + paint_canvas.update() + if _current_action == null: + _current_action = get_action() + + match brush_mode: + Tools.PAINT: + do_action([cell_mouse_position, last_cell_mouse_position, Color.transparent]) + Tools.BRUSH: + do_action([cell_mouse_position, last_cell_mouse_position, Color.transparent, + selected_brush_prefab, find_node("BrushSize").value]) + else: + if _current_action and _current_action.can_commit(): + commit_action() + paint_canvas.update() + + +func update_text_info(): + var text = "" + + var cell_color_text = cell_color + cell_color_text = Color(0, 0, 0, 0) + + text += \ + str("FPS %s\t" + \ + "Mouse Position %s\t" + \ + "Canvas Mouse Position %s \t" + \ + "Canvas Position %s\t\n" + \ + "Cell Position %s \t" + \ + "Cell Color %s\t") % [ + str(Engine.get_frames_per_second()), + str(mouse_position), + str(canvas_mouse_position), + str(canvas_position), + str(cell_mouse_position), + str(cell_color_text), + ] + + find_node("DebugTextDisplay").display_text(text) + + +func _on_Save_pressed(): + get_node("SaveFileDialog").show() + + + +#--------------------------------------- +# Actions +#--------------------------------------- + + +func do_action(data: Array): + if _current_action == null: + #print("clear redo") + _redo_history.clear() + _current_action.do_action(paint_canvas, data) + + +func commit_action(): + if not _current_action: + return + + #print("commit action") + var commit_data = _current_action.commit_action(paint_canvas) + var action = get_action() + action.action_data = _current_action.action_data.duplicate(true) + _actions_history.push_back(action) + _redo_history.clear() + + match brush_mode: + Tools.CUT: + _cut_pos = _current_action.mouse_start_pos + _cut_size = _current_action.mouse_end_pos - _current_action.mouse_start_pos + _selection_cells = _current_action.action_data.redo.cells.duplicate() + _selection_colors = _current_action.action_data.redo.colors.duplicate() + set_brush(Tools.PASTECUT) + _: + _current_action = null + + +func redo_action(): + if _redo_history.empty(): + print("nothing to redo") + return + var action = _redo_history.pop_back() + if not action: + return + _actions_history.append(action) + action.redo_action(paint_canvas) + paint_canvas.update() + #print("redo action") + + +func undo_action(): + var action = _actions_history.pop_back() + if not action: + return + _redo_history.append(action) + action.undo_action(paint_canvas) + update() + paint_canvas.update() + #print("undo action") + + +func get_action(): + match brush_mode: + Tools.PAINT: + return GEPencil.new() + Tools.BRUSH: + return GEBrush.new() + Tools.LINE: + return GELine.new() + Tools.RAINBOW: + return GERainbow.new() + Tools.BUCKET: + return GEBucket.new() + Tools.RECT: + return GERect.new() + Tools.DARKEN: + return GEDarken.new() + Tools.BRIGHTEN: + return GEBrighten.new() + Tools.CUT: + return GECut.new() + Tools.PASTECUT: + return GEPasteCut.new() + _: + #print("no tool!") + return null + + +############################################ +# Brushes +############################################ + + +func set_selected_color(color): + selected_color = color + + +func set_brush(new_mode): + if brush_mode == new_mode: + return + _previous_tool = brush_mode + brush_mode = new_mode + + _current_action = get_action() + + match _previous_tool: + Tools.CUT: + paint_canvas.clear_preview_layer() + Tools.PASTECUT: + _selection_cells.clear() + _selection_colors.clear() + Tools.BUCKET: + _current_action = null + #print("Selected: ", Tools.keys()[brush_mode]) + + +func change_color(new_color): + if new_color.a == 0: + return + selected_color = new_color + find_node("ColorPicker").color = selected_color + + +func _on_ColorPicker_color_changed(color): + selected_color = color + + +func _on_PaintTool_pressed(): + set_brush(Tools.PAINT) + + +func _on_BucketTool_pressed(): + set_brush(Tools.BUCKET) + + +func _on_RainbowTool_pressed(): + set_brush(Tools.RAINBOW) + + +func _on_BrushTool_pressed(): + set_brush(Tools.BRUSH) + + +func _on_LineTool_pressed(): + set_brush(Tools.LINE) + + +func _on_RectTool_pressed(): + set_brush(Tools.RECT) + + +func _on_DarkenTool_pressed(): + set_brush(Tools.DARKEN) + + +func _on_BrightenTool_pressed(): + set_brush(Tools.BRIGHTEN) + + +func _on_ColorPickerTool_pressed(): + set_brush(Tools.COLORPICKER) + + +func _on_CutTool_pressed(): + set_brush(Tools.CUT) + + +func _on_Editor_visibility_changed(): + pause_mode = not visible + + + +############################################ +# Layer +############################################ + +func highlight_layer(layer_name: String): + for button in layer_buttons.get_children(): + if paint_canvas.find_layer_by_name(button.name).locked: + button.get("custom_styles/panel").set("bg_color", locked_layer_highlight) + elif button.name == layer_name: + button.get("custom_styles/panel").set("bg_color", current_layer_highlight) + else: + button.get("custom_styles/panel").set("bg_color", other_layer_highlight) + + +func toggle_layer_visibility(button, layer_name: String): + #print("toggling: ", layer_name) + paint_canvas.toggle_layer_visibility(layer_name) + + +func select_layer(layer_name: String): + #print("select layer: ", layer_name) + paint_canvas.select_layer(layer_name) + highlight_layer(layer_name) + + +func lock_layer(button, layer_name: String): + paint_canvas.toggle_lock_layer(layer_name) + highlight_layer(paint_canvas.get_active_layer().name) + + +func add_new_layer(): + var new_layer_button = layer_buttons.get_child(0).duplicate() + new_layer_button.set("custom_styles/panel", layer_buttons.get_child(0).get("custom_styles/panel").duplicate()) + layer_buttons.add_child_below_node( + layer_buttons.get_child(layer_buttons.get_child_count() - 1), new_layer_button, true) + _total_added_layers += 1 + new_layer_button.find_node("Select").text = "Layer " + str(_total_added_layers) + _layer_button_ref[new_layer_button.name] = new_layer_button + _connect_layer_buttons() + + var layer: GELayer = paint_canvas.add_new_layer(new_layer_button.name) + + highlight_layer(paint_canvas.get_active_layer().name) + #print("added layer: ", layer.name) + return layer + + +func remove_active_layer(): + if layer_buttons.get_child_count() <= 1: + return + var layer_name = paint_canvas.active_layer.name + paint_canvas.remove_layer(layer_name) + layer_buttons.remove_child(_layer_button_ref[layer_name]) + _layer_button_ref[layer_name].queue_free() + _layer_button_ref.erase(layer_name) + + highlight_layer(paint_canvas.get_active_layer().name) + + +func duplicate_active_layer(): + var new_layer_button = layer_buttons.get_child(0).duplicate() + new_layer_button.set("custom_styles/panel", layer_buttons.get_child(0).get("custom_styles/panel").duplicate()) + layer_buttons.add_child_below_node( + layer_buttons.get_child(layer_buttons.get_child_count() - 1), new_layer_button, true) + + _total_added_layers += 1 # for keeping track... + new_layer_button.find_node("Select").text = "Layer " + str(_total_added_layers) + + var new_layer = paint_canvas.duplicate_layer(paint_canvas.active_layer.name, new_layer_button.name) + new_layer.update_texture() + _layer_button_ref[new_layer.name] = new_layer_button + + new_layer_button.find_node("Select").connect("pressed", self, "select_layer", [new_layer_button.name]) + new_layer_button.find_node("Visible").connect("pressed", self, "toggle_layer_visibility", + [new_layer_button.find_node("Visible"), new_layer_button.name]) + new_layer_button.find_node("Up").connect("pressed", self, "move_down", [new_layer_button]) + new_layer_button.find_node("Down").connect("pressed", self, "move_up", [new_layer_button]) + new_layer_button.find_node("Lock").connect("pressed", self, "lock_layer", [new_layer_button, new_layer_button.name]) + + # update highlight + highlight_layer(paint_canvas.get_active_layer().name) + #print("added layer: ", new_layer.name, " (total:", layer_buttons.get_child_count(), ")") + + +func move_up(layer_btn): + var new_idx = min(layer_btn.get_index() + 1, layer_buttons.get_child_count()) + #print("move_up: ", layer_btn.name, " from ", layer_btn.get_index(), " to ", new_idx) + layer_buttons.move_child(layer_btn, new_idx) + paint_canvas.move_layer_back(layer_btn.name) + + +func move_down(layer_btn): + var new_idx = max(layer_btn.get_index() - 1, 0) + #print("move_down: ", layer_btn.name, " from ", layer_btn.get_index(), " to ", new_idx) + layer_buttons.move_child(layer_btn, new_idx) + paint_canvas.move_layer_forward(layer_btn.name) + + +func _connect_layer_buttons(): + for layer_btn in layer_buttons.get_children(): + if layer_btn.find_node("Select").is_connected("pressed", self, "select_layer"): + continue + layer_btn.find_node("Select").connect("pressed", self, "select_layer", [layer_btn.name]) + layer_btn.find_node("Visible").connect("pressed", self, "toggle_layer_visibility", + [layer_btn.find_node("Visible"), layer_btn.name]) + layer_btn.find_node("Up").connect("pressed", self, "move_down", [layer_btn]) + layer_btn.find_node("Down").connect("pressed", self, "move_up", [layer_btn]) + layer_btn.find_node("Lock").connect("pressed", self, "lock_layer", + [layer_btn, layer_btn.name]) + + +func _on_Button_pressed(): + add_new_layer() + + +func _on_PaintCanvasContainer_mouse_entered(): + if mouse_on_top == true: + return + mouse_on_top = true + paint_canvas.tool_layer.clear() + paint_canvas.update() + paint_canvas.tool_layer.update_texture() + + +func _on_PaintCanvasContainer_mouse_exited(): + if mouse_on_top == false: + return + mouse_on_top = false + paint_canvas.tool_layer.clear() + paint_canvas.update() + paint_canvas.tool_layer.update_texture() + + +func _on_ColorPicker_popup_closed(): + find_node("Colors").add_color_prefab(find_node("ColorPicker").color) + + +############################################ +# MISC +############################################ + +func is_position_in_canvas(pos): + if Rect2(paint_canvas_container_node.rect_global_position, + paint_canvas_container_node.rect_global_position + paint_canvas_container_node.rect_size).has_point(pos): + return true + return false + + +func is_mouse_in_canvas() -> bool: + if is_position_in_canvas(get_global_mouse_position()): + return true #mouse_on_top # check if mouse is inside canvas + else: + return false + + +func is_any_menu_open() -> bool: + return $ChangeCanvasSize.visible or \ + $ChangeGridSizeDialog.visible or \ + $Settings.visible or \ + $LoadFileDialog.visible or \ + $SaveFileDialog.visible or \ + find_node("Navbar").is_any_menu_open() + + + +func _on_LockAlpha_pressed(): + var checked = find_node("LockAlpha").pressed + paint_canvas.active_layer.toggle_alpha_locked() + for i in range(find_node("Layer").get_popup().get_item_count()): + if find_node("Layer").get_popup().get_item_text(i) == "Toggle Alpha Locked": + find_node("Layer").get_popup().set_item_checked(i, not find_node("Layer").get_popup().is_item_checked(i)) + + +func _on_BrushRect_pressed(): + if brush_mode != Tools.BRUSH: + set_brush(Tools.BRUSH) + selected_brush_prefab = BrushPrefabs.Type.RECT + + +func _on_BrushCircle_pressed(): + if brush_mode != Tools.BRUSH: + set_brush(Tools.BRUSH) + selected_brush_prefab = BrushPrefabs.Type.CIRCLE + + +func _on_BrushVLine_pressed(): + if brush_mode != Tools.BRUSH: + set_brush(Tools.BRUSH) + selected_brush_prefab = BrushPrefabs.Type.V_LINE + + +func _on_BrushHLine_pressed(): + if brush_mode != Tools.BRUSH: + set_brush(Tools.BRUSH) + selected_brush_prefab = BrushPrefabs.Type.H_LINE + + +func _on_BrushSize_value_changed(value: float): + find_node("BrushSizeLabel").text = str(int(value)) + + +func _on_XSymmetry_pressed(): + paint_canvas.symmetry_x = not paint_canvas.symmetry_x + + +func _on_YSymmetry_pressed(): + paint_canvas.symmetry_y = not paint_canvas.symmetry_y diff --git a/game/addons/Godoxel/Editor.tscn b/game/addons/Godoxel/Editor.tscn new file mode 100644 index 0000000..a7676a5 --- /dev/null +++ b/game/addons/Godoxel/Editor.tscn @@ -0,0 +1,1279 @@ +[gd_scene load_steps=56 format=2] + +[ext_resource path="res://addons/Godoxel/Editor.gd" type="Script" id=1] +[ext_resource path="res://addons/Godoxel/dialogs/LoadFileDialog.gd" type="Script" id=2] +[ext_resource path="res://addons/Godoxel/Canvas.gd" type="Script" id=3] +[ext_resource path="res://addons/Godoxel/VisualGrid.tscn" type="PackedScene" id=4] +[ext_resource path="res://addons/Godoxel/CanvasOutline.gd" type="Script" id=5] +[ext_resource path="res://addons/Godoxel/Navbar.gd" type="Script" id=6] +[ext_resource path="res://addons/Godoxel/MenuButtonExtended.gd" type="Script" id=7] +[ext_resource path="res://addons/Godoxel/Colors.gd" type="Script" id=8] +[ext_resource path="res://addons/Godoxel/SaveFileDialog.gd" type="Script" id=9] +[ext_resource path="res://addons/Godoxel/Settings.tscn" type="PackedScene" id=10] +[ext_resource path="res://addons/Godoxel/DebugTextDisplay.gd" type="Script" id=11] +[ext_resource path="res://addons/Godoxel/LayerButton.tscn" type="PackedScene" id=12] +[ext_resource path="res://addons/Godoxel/assets/grid.png" type="Texture" id=13] +[ext_resource path="res://addons/Godoxel/dialogs/ConfirmationDialog.gd" type="Script" id=14] +[ext_resource path="res://addons/Godoxel/dialogs/ChangeGridSizeDialog.gd" type="Script" id=15] +[ext_resource path="res://addons/Godoxel/assets/BrushVLine.png" type="Texture" id=16] +[ext_resource path="res://addons/Godoxel/assets/BrushRect.png" type="Texture" id=17] +[ext_resource path="res://addons/Godoxel/assets/BrushCircle.png" type="Texture" id=18] +[ext_resource path="res://addons/Godoxel/assets/BrushHLine.png" type="Texture" id=19] +[ext_resource path="res://addons/Godoxel/assets/BrushRect_Hovered.png" type="Texture" id=20] +[ext_resource path="res://addons/Godoxel/assets/BrushCircle_Hovered.png" type="Texture" id=21] +[ext_resource path="res://addons/Godoxel/assets/BrushVLine_Hovered.png" type="Texture" id=22] +[ext_resource path="res://addons/Godoxel/assets/BrushHLine_Hovered.png" type="Texture" id=23] + +[sub_resource type="Shader" id=1] +code = "shader_type canvas_item; + +uniform float pixel_size : hint_range(0.01, 1.0); + + +void fragment() { + vec4 color = texture(TEXTURE, UV); + + float light = 0.8; + float dark = 0.4; + + float val = dark; + + if ( int(UV.y * 8.0 * pixel_size) % 2 == 1 ) { + if ( int(UV.x * 8.0 * pixel_size) % 2 == 1 ) { + val = dark; + } + else { + val = light; + } + } + else { + if ( int(UV.x * 8.0 * pixel_size) % 2 == 1 ) { + val = light; + } + else { + val = dark; + } + } + + color.rgb = vec3(val, val, val); + + COLOR = color; +}" + +[sub_resource type="ShaderMaterial" id=2] +shader = SubResource( 1 ) +shader_param/pixel_size = 0.0625 + +[sub_resource type="Image" id=33] +data = { +"data": PoolByteArray( 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 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": 64, +"mipmaps": false, +"width": 64 +} + +[sub_resource type="ImageTexture" id=4] +flags = 0 +flags = 0 +image = SubResource( 33 ) +size = Vector2( 64, 64 ) + +[sub_resource type="Image" id=34] +data = { +"data": PoolByteArray( 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 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": 64, +"mipmaps": false, +"width": 64 +} + +[sub_resource type="ImageTexture" id=6] +flags = 0 +flags = 0 +image = SubResource( 34 ) +size = Vector2( 64, 64 ) + +[sub_resource type="StyleBoxFlat" id=7] +bg_color = Color( 0.2, 0.2, 0.2, 1 ) + +[sub_resource type="StyleBoxFlat" id=8] +bg_color = Color( 0.452144, 0.397716, 0.0538159, 1 ) + +[sub_resource type="StyleBoxFlat" id=9] +bg_color = Color( 0.114134, 0.989919, 0.990908, 1 ) + +[sub_resource type="StyleBoxFlat" id=10] +bg_color = Color( 0.315986, 0.563746, 0.536825, 1 ) + +[sub_resource type="StyleBoxFlat" id=11] +bg_color = Color( 0.218219, 0.336323, 0.0659741, 1 ) + +[sub_resource type="StyleBoxFlat" id=12] +bg_color = Color( 0.163289, 0.240192, 0.37346, 1 ) + +[sub_resource type="StyleBoxFlat" id=13] +bg_color = Color( 0.330661, 0.369256, 0.97379, 1 ) + +[sub_resource type="StyleBoxFlat" id=14] +bg_color = Color( 0.216537, 0.755049, 0.491349, 1 ) + +[sub_resource type="StyleBoxFlat" id=15] +bg_color = Color( 0.826652, 0.848742, 0.0115273, 1 ) + +[sub_resource type="StyleBoxFlat" id=16] +bg_color = Color( 0.122094, 0.920589, 0.44931, 1 ) + +[sub_resource type="StyleBoxFlat" id=17] +bg_color = Color( 0.150271, 0.325517, 0.694568, 1 ) + +[sub_resource type="StyleBoxFlat" id=18] +bg_color = Color( 0.703849, 0.926427, 0.334865, 1 ) + +[sub_resource type="StyleBoxFlat" id=19] +bg_color = Color( 0.471709, 0.00867083, 0.188914, 1 ) + +[sub_resource type="StyleBoxFlat" id=20] +bg_color = Color( 0.300704, 0.501144, 0.687167, 1 ) + +[sub_resource type="StyleBoxFlat" id=21] +bg_color = Color( 0.52919, 0.953225, 0.374313, 1 ) + +[sub_resource type="StyleBoxFlat" id=22] +bg_color = Color( 0.443307, 0.0121565, 0.599621, 1 ) + +[sub_resource type="StyleBoxFlat" id=23] +bg_color = Color( 0.868357, 0.245633, 0.583044, 1 ) + +[sub_resource type="StyleBoxFlat" id=24] +bg_color = Color( 0.20955, 0.510868, 0.721501, 1 ) + +[sub_resource type="StyleBoxFlat" id=25] +bg_color = Color( 0.544154, 0.786819, 0.162435, 1 ) + +[sub_resource type="StyleBoxFlat" id=26] +bg_color = Color( 0.309762, 0.772837, 0.467272, 1 ) + +[sub_resource type="StyleBoxFlat" id=27] +bg_color = Color( 0.0682784, 0.753402, 0.362869, 1 ) + +[sub_resource type="StyleBoxFlat" id=28] +bg_color = Color( 0.343818, 0.0699588, 0.589297, 1 ) + +[sub_resource type="StyleBoxFlat" id=29] +bg_color = Color( 0.290648, 0.443224, 0.249702, 1 ) + +[sub_resource type="StyleBoxFlat" id=30] +bg_color = Color( 0.838284, 0.660357, 0.11075, 1 ) + +[sub_resource type="StyleBoxFlat" id=31] +bg_color = Color( 0.876227, 0.296861, 0.400053, 1 ) + +[sub_resource type="StyleBoxFlat" id=32] +bg_color = Color( 0.156863, 0.156863, 0.156863, 1 ) +border_width_top = 2 +border_color = Color( 0.0901961, 0.0901961, 0.0901961, 1 ) + +[node name="Editor" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_clip_content = true +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Panel" type="Panel" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="NoBCViewportsnotworking26181" type="Control" parent="Panel"] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_lock_": true, +"_editor_description_": "https://github.com/godotengine/godot/issues/26181" +} + +[node name="Control" type="Control" parent="Panel/NoBCViewportsnotworking26181"] +anchor_top = 0.0833333 +anchor_right = 1.0 +anchor_bottom = 0.93 +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="PaintCanvasContainer" type="Control" parent="Panel/NoBCViewportsnotworking26181/Control"] +anchor_left = 0.137695 +anchor_right = 0.862305 +anchor_bottom = 1.0 +focus_mode = 1 +mouse_filter = 1 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 6.0 +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="Canvas" type="Control" parent="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer"] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -238.288 +margin_top = -118.205 +margin_right = 17.7117 +margin_bottom = 137.795 +mouse_filter = 1 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource( 3 ) +__meta__ = { +"_edit_group_": true, +"_edit_use_anchors_": false +} +pixel_size = 4 +canvas_width = 64 +canvas_height = 64 +grid_size = 1 +big_grid_size = 8 + +[node name="CanvasBackground" type="TextureRect" parent="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer/Canvas"] +show_behind_parent = true +material = SubResource( 2 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 13 ) +expand = true +stretch_mode = 2 +__meta__ = { +"_edit_lock_": true +} + +[node name="CanvasLayers" type="Control" parent="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer/Canvas"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +__meta__ = { +"_edit_lock_": true, +"_edit_use_anchors_": false +} + +[node name="PreviewLayer" type="TextureRect" parent="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer/Canvas"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +texture = SubResource( 4 ) +expand = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ToolPreviewLayer" type="TextureRect" parent="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer/Canvas"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +texture = SubResource( 6 ) +expand = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Grid" parent="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer/Canvas" instance=ExtResource( 4 )] +mouse_filter = 2 +color = Color( 1, 1, 1, 0.415686 ) +size = 4 + +[node name="CanvasOutline" type="Control" parent="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer/Canvas"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +script = ExtResource( 5 ) +__meta__ = { +"_edit_lock_": true, +"_edit_use_anchors_": false +} +color = Color( 0, 1, 0, 1 ) + +[node name="RightPanel" type="Panel" parent="Panel/NoBCViewportsnotworking26181/Control"] +anchor_left = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -140.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/panel = SubResource( 7 ) +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="ScrollContainer" type="ScrollContainer" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 4.0 +margin_right = -4.0 +margin_bottom = -4.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ToolMenu" type="VBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer"] +margin_right = 132.0 +margin_bottom = 500.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Tools" type="VBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu"] +margin_right = 132.0 +margin_bottom = 248.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="PaintTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_right = 132.0 +margin_bottom = 21.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Pencil (Q)" + +[node name="BrushTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +visible = false +margin_top = 24.0 +margin_right = 132.0 +margin_bottom = 44.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Brush" + +[node name="MultiTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +visible = false +margin_top = 24.0 +margin_right = 132.0 +margin_bottom = 44.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Polygon" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="BucketTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 25.0 +margin_right = 132.0 +margin_bottom = 46.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Bucket Fill (F)" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="RainbowTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 50.0 +margin_right = 132.0 +margin_bottom = 71.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Rainbow (R)" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="LineTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 75.0 +margin_right = 132.0 +margin_bottom = 96.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Line (L)" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="RectTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 100.0 +margin_right = 132.0 +margin_bottom = 122.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Rectangle" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="DarkenTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 126.0 +margin_right = 132.0 +margin_bottom = 147.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Darken (D)" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="BrightenTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 151.0 +margin_right = 132.0 +margin_bottom = 172.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Brighten (B)" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ColorPickerTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 176.0 +margin_right = 132.0 +margin_bottom = 197.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Color Picker (P)" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CutTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 201.0 +margin_right = 132.0 +margin_bottom = 222.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Cut Section (C)" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ColorPicker" type="ColorPickerButton" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 226.0 +margin_right = 132.0 +margin_bottom = 248.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Control" type="ScrollContainer" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu"] +margin_top = 252.0 +margin_right = 132.0 +margin_bottom = 500.0 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Control"] +margin_right = 132.0 +margin_bottom = 248.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="LayerButtons" type="VBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Control/VBoxContainer"] +margin_right = 132.0 +margin_bottom = 219.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Layer1" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Control/VBoxContainer/LayerButtons" instance=ExtResource( 12 )] +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_right = 132.0 +margin_bottom = 32.0 + +[node name="Button" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Control/VBoxContainer"] +margin_top = 223.0 +margin_right = 132.0 +margin_bottom = 248.0 +rect_min_size = Vector2( 0, 25 ) +size_flags_horizontal = 3 +text = "+" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="LeftPanel" type="Panel" parent="Panel/NoBCViewportsnotworking26181/Control"] +anchor_right = 0.0166016 +anchor_bottom = 1.0 +margin_right = 140.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/panel = SubResource( 7 ) +__meta__ = { +"_edit_use_anchors_": true, +"_editor_description_": "" +} + +[node name="MarginContainer" type="MarginContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel"] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer"] +margin_right = 157.0 +margin_bottom = 508.0 +custom_constants/separation = 12 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ScrollContainer" type="ScrollContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer"] +margin_right = 157.0 +margin_bottom = 144.0 +rect_min_size = Vector2( 0, 144 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Colors" type="GridContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer"] +margin_right = 145.0 +margin_bottom = 170.0 +rect_min_size = Vector2( 0, 144 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +columns = 4 +script = ExtResource( 8 ) + +[node name="Button1" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_right = 33.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 8 ) + +[node name="Button2" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 37.0 +margin_right = 70.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 9 ) + +[node name="Button3" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 74.0 +margin_right = 107.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 10 ) + +[node name="Button4" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 111.0 +margin_right = 144.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 11 ) + +[node name="Button5" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_top = 29.0 +margin_right = 33.0 +margin_bottom = 54.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 12 ) + +[node name="Button6" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 37.0 +margin_top = 29.0 +margin_right = 70.0 +margin_bottom = 54.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 13 ) + +[node name="Button7" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 74.0 +margin_top = 29.0 +margin_right = 107.0 +margin_bottom = 54.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 14 ) + +[node name="Button8" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 111.0 +margin_top = 29.0 +margin_right = 144.0 +margin_bottom = 54.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 15 ) + +[node name="Button9" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_top = 58.0 +margin_right = 33.0 +margin_bottom = 83.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 16 ) + +[node name="Button10" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 37.0 +margin_top = 58.0 +margin_right = 70.0 +margin_bottom = 83.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 17 ) + +[node name="Button11" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 74.0 +margin_top = 58.0 +margin_right = 107.0 +margin_bottom = 83.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 18 ) + +[node name="Button12" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 111.0 +margin_top = 58.0 +margin_right = 144.0 +margin_bottom = 83.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 19 ) + +[node name="Button13" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_top = 87.0 +margin_right = 33.0 +margin_bottom = 112.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 20 ) + +[node name="Button14" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 37.0 +margin_top = 87.0 +margin_right = 70.0 +margin_bottom = 112.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 21 ) + +[node name="Button15" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 74.0 +margin_top = 87.0 +margin_right = 107.0 +margin_bottom = 112.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 22 ) + +[node name="Button16" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 111.0 +margin_top = 87.0 +margin_right = 144.0 +margin_bottom = 112.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 23 ) + +[node name="Button17" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_top = 116.0 +margin_right = 33.0 +margin_bottom = 141.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 24 ) + +[node name="Button18" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 37.0 +margin_top = 116.0 +margin_right = 70.0 +margin_bottom = 141.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 25 ) + +[node name="Button19" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 74.0 +margin_top = 116.0 +margin_right = 107.0 +margin_bottom = 141.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 26 ) + +[node name="Button20" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 111.0 +margin_top = 116.0 +margin_right = 144.0 +margin_bottom = 141.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 27 ) + +[node name="Button21" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_top = 145.0 +margin_right = 33.0 +margin_bottom = 170.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 28 ) + +[node name="Button22" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 37.0 +margin_top = 145.0 +margin_right = 70.0 +margin_bottom = 170.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 29 ) + +[node name="Button23" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 74.0 +margin_top = 145.0 +margin_right = 107.0 +margin_bottom = 170.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 30 ) + +[node name="Button24" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 111.0 +margin_top = 145.0 +margin_right = 144.0 +margin_bottom = 170.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 31 ) + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer"] +margin_top = 156.0 +margin_right = 157.0 +margin_bottom = 196.0 + +[node name="LockAlpha" type="CheckButton" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/VBoxContainer"] +margin_right = 157.0 +margin_bottom = 40.0 +text = "Lock Alpha" +align = 2 + +[node name="BrushSelection" type="GridContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer"] +margin_top = 208.0 +margin_right = 157.0 +margin_bottom = 233.0 +columns = 4 + +[node name="BrushRect" type="TextureButton" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection"] +margin_right = 25.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +texture_normal = ExtResource( 17 ) +texture_hover = ExtResource( 20 ) + +[node name="BrushCircle" type="TextureButton" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection"] +margin_left = 29.0 +margin_right = 54.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +texture_normal = ExtResource( 18 ) +texture_hover = ExtResource( 21 ) + +[node name="BrushVLine" type="TextureButton" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection"] +margin_left = 58.0 +margin_right = 83.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +texture_normal = ExtResource( 16 ) +texture_hover = ExtResource( 22 ) + +[node name="BrushHLine" type="TextureButton" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection"] +margin_left = 87.0 +margin_right = 112.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +texture_normal = ExtResource( 19 ) +texture_hover = ExtResource( 23 ) + +[node name="VSplitContainer" type="VBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer"] +margin_top = 245.0 +margin_right = 157.0 +margin_bottom = 279.0 +size_flags_horizontal = 3 + +[node name="BrushLabel" type="Label" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/VSplitContainer"] +margin_right = 157.0 +margin_bottom = 14.0 +text = "Brush Size" + +[node name="HBoxContainer" type="HBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/VSplitContainer"] +margin_top = 18.0 +margin_right = 157.0 +margin_bottom = 34.0 + +[node name="BrushSizeLabel" type="Label" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/VSplitContainer/HBoxContainer"] +margin_top = 1.0 +margin_right = 30.0 +margin_bottom = 15.0 +rect_min_size = Vector2( 30, 0 ) +text = "1" + +[node name="BrushSize" type="HSlider" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/VSplitContainer/HBoxContainer"] +margin_left = 34.0 +margin_right = 157.0 +margin_bottom = 16.0 +size_flags_horizontal = 3 +size_flags_vertical = 2 +min_value = 1.0 +value = 1.0 + +[node name="XSymmetry" type="CheckButton" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer"] +margin_top = 291.0 +margin_right = 157.0 +margin_bottom = 331.0 +text = "X Symmetry" + +[node name="YSymmetry" type="CheckButton" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer"] +margin_top = 343.0 +margin_right = 157.0 +margin_bottom = 383.0 +text = "Y Symmetry" + +[node name="Navbar" type="Control" parent="Panel/NoBCViewportsnotworking26181"] +anchor_right = 1.0 +anchor_bottom = 0.0833333 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource( 6 ) +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="Panel" type="Panel" parent="Panel/NoBCViewportsnotworking26181/Navbar"] +self_modulate = Color( 0.854902, 0.854902, 0.854902, 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Buttons" type="HBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Navbar"] +anchor_left = 0.0078125 +anchor_top = 0.12 +anchor_right = 0.628906 +anchor_bottom = 0.62 +custom_constants/separation = 20 +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="File" type="MenuButton" parent="Panel/NoBCViewportsnotworking26181/Navbar/Buttons"] +margin_right = 73.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "File" +flat = false +items = [ "New", null, 0, false, false, 0, 0, null, "", false, "Save", null, 0, false, false, 1, 0, null, "", false, "Load", null, 0, false, false, 2, 0, null, "", false ] +switch_on_hover = true +script = ExtResource( 7 ) + +[node name="Edit" type="MenuButton" parent="Panel/NoBCViewportsnotworking26181/Navbar/Buttons"] +margin_left = 93.0 +margin_right = 167.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +disabled = true +text = "Edit" +flat = false +items = [ "Undo", null, 0, false, false, 0, 0, null, "", false, "Redo", null, 0, false, false, 1, 0, null, "", false, "Cut", null, 0, false, false, 2, 0, null, "", false, "Copy", null, 0, false, false, 3, 0, null, "", false, "Paste", null, 0, false, false, 4, 0, null, "", false ] +switch_on_hover = true +script = ExtResource( 7 ) + +[node name="Canvas" type="MenuButton" parent="Panel/NoBCViewportsnotworking26181/Navbar/Buttons"] +margin_left = 187.0 +margin_right = 260.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Canvas" +flat = false +items = [ "Change Size", null, 0, false, false, 0, 0, null, "", false, "Crop To Content", null, 0, false, true, 1, 0, null, "", false ] +switch_on_hover = true +script = ExtResource( 7 ) + +[node name="Layer" type="MenuButton" parent="Panel/NoBCViewportsnotworking26181/Navbar/Buttons"] +margin_left = 280.0 +margin_right = 354.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Layer" +flat = false +items = [ "Add Layer", null, 0, false, false, 0, 0, null, "", false, "Delete Layer", null, 0, false, false, 1, 0, null, "", false, "Duplicate Layer", null, 0, false, false, 2, 0, null, "", false, "Clear Layer", null, 0, false, false, 3, 0, null, "", false, "", null, 0, false, false, 4, 0, null, "", true, "Toggle Alpha Locked", null, 1, false, false, 5, 0, null, "", false ] +switch_on_hover = true +script = ExtResource( 7 ) + +[node name="Grid" type="MenuButton" parent="Panel/NoBCViewportsnotworking26181/Navbar/Buttons"] +margin_left = 374.0 +margin_right = 447.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Grid" +flat = false +items = [ "Toggle Grid", null, 0, false, false, 0, 0, null, "", false, "Change Grid Size", null, 0, false, false, 1, 0, null, "", false ] +switch_on_hover = true +script = ExtResource( 7 ) + +[node name="Magic" type="MenuButton" parent="Panel/NoBCViewportsnotworking26181/Navbar/Buttons"] +margin_left = 467.0 +margin_right = 541.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Magic" +flat = false +items = [ "ChangeSingleColor", null, 0, false, false, 0, 0, null, "", false, "ChangeColorRange", null, 0, false, false, 1, 0, null, "", false, "HSV Noise", null, 0, false, false, 2, 0, null, "", false, "HSV Color Modulation", null, 0, false, false, 3, 0, null, "", false ] +switch_on_hover = true +script = ExtResource( 7 ) + +[node name="Editor" type="MenuButton" parent="Panel/NoBCViewportsnotworking26181/Navbar/Buttons"] +margin_left = 561.0 +margin_right = 635.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Editor" +flat = false +items = [ "Settings", null, 0, false, false, 0, 0, null, "", false ] +switch_on_hover = true +script = ExtResource( 7 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="Panel/NoBCViewportsnotworking26181/Navbar"] +modulate = Color( 1, 1, 1, 0.184314 ) +anchor_left = 1.0 +anchor_right = 1.0 +margin_left = -164.0 +margin_bottom = 50.0 +text = "Undo (Z) +Redo (Y)" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="BottomPanel" type="Panel" parent="Panel/NoBCViewportsnotworking26181"] +anchor_top = 0.931667 +anchor_right = 0.839844 +anchor_bottom = 0.998333 +rect_min_size = Vector2( 0, 40 ) +size_flags_horizontal = 3 +custom_styles/panel = SubResource( 32 ) +__meta__ = { +"_edit_group_": true, +"_edit_use_anchors_": true +} + +[node name="DebugTextDisplay" type="RichTextLabel" parent="Panel/NoBCViewportsnotworking26181/BottomPanel"] +anchor_right = 1.0 +anchor_bottom = 1.0 +text = "FPS 60 Mouse Position (-12, 130) Canvas Mouse Position (-285.711731, -55.794662) Canvas Position (273.711731, 185.794662) +Cell Position (67, -25) Cell Color 0,0,0,0 " +scroll_active = false +script = ExtResource( 11 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="SaveFileDialog" type="FileDialog" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -340.0 +margin_top = -165.0 +margin_right = 340.0 +margin_bottom = 165.0 +mouse_filter = 1 +filters = PoolStringArray( "*.png ; PNG Images" ) +script = ExtResource( 9 ) + +[node name="LoadFileDialog" type="FileDialog" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -340.0 +margin_top = -165.0 +margin_right = 340.0 +margin_bottom = 165.0 +mouse_filter = 1 +window_title = "Open a File" +mode = 0 +filters = PoolStringArray( "*.png ; PNG Images" ) +script = ExtResource( 2 ) + +[node name="Settings" parent="." instance=ExtResource( 10 )] +visible = false +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -150.0 +margin_top = -50.0 +margin_right = 150.0 +margin_bottom = 50.0 +mouse_filter = 1 + +[node name="ChangeCanvasSize" type="ConfirmationDialog" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -162.0 +margin_top = -69.0 +margin_right = 162.0 +margin_bottom = 69.0 +script = ExtResource( 14 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="ChangeCanvasSize"] +anchor_left = 0.104938 +anchor_top = 0.108696 +anchor_right = 0.891975 +anchor_bottom = 0.695652 +margin_left = -25.9999 +margin_top = -7.00005 +margin_right = 27.0001 +margin_bottom = 6.00002 +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="Label" type="Label" parent="ChangeCanvasSize/VBoxContainer"] +margin_top = 7.0 +margin_right = 308.0 +margin_bottom = 21.0 +size_flags_vertical = 6 +text = "Change canvas size?" +align = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="ChangeCanvasSize/VBoxContainer"] +margin_top = 32.0 +margin_right = 308.0 +margin_bottom = 61.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="ChangeCanvasSize/VBoxContainer/HBoxContainer"] +margin_top = 7.0 +margin_right = 152.0 +margin_bottom = 21.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +text = "Width (X)" + +[node name="Width" type="SpinBox" parent="ChangeCanvasSize/VBoxContainer/HBoxContainer"] +margin_left = 156.0 +margin_right = 308.0 +margin_bottom = 29.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +min_value = 1.0 +max_value = 2500.0 +value = 64.0 +align = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HBoxContainer2" type="HBoxContainer" parent="ChangeCanvasSize/VBoxContainer"] +margin_top = 65.0 +margin_right = 308.0 +margin_bottom = 94.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="ChangeCanvasSize/VBoxContainer/HBoxContainer2"] +margin_top = 7.0 +margin_right = 152.0 +margin_bottom = 21.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +text = "Height (Y)" + +[node name="Height" type="SpinBox" parent="ChangeCanvasSize/VBoxContainer/HBoxContainer2"] +margin_left = 156.0 +margin_right = 308.0 +margin_bottom = 29.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +min_value = 1.0 +max_value = 2500.0 +value = 64.0 +align = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ChangeGridSizeDialog" type="AcceptDialog" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -127.0 +margin_top = -74.0 +margin_right = 128.0 +margin_bottom = 73.0 +window_title = "Change Grid Size" +resizable = true +script = ExtResource( 15 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="ChangeGridSizeDialog"] +anchor_left = 0.0313726 +anchor_top = 0.0816327 +anchor_right = 0.968627 +anchor_bottom = 0.727891 +margin_left = -1.23978e-05 +margin_top = -4.00001 +margin_right = 0.00012207 +margin_bottom = 4.00002 +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="Label" type="Label" parent="ChangeGridSizeDialog/VBoxContainer"] +margin_right = 239.0 +margin_bottom = 31.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Change Grid Size" +align = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="ChangeGridSizeDialog/VBoxContainer"] +margin_top = 35.0 +margin_right = 239.0 +margin_bottom = 67.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="ChangeGridSizeDialog/VBoxContainer/HBoxContainer"] +margin_top = 9.0 +margin_right = 117.0 +margin_bottom = 23.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +text = "Grid 1" + +[node name="GridValue" type="SpinBox" parent="ChangeGridSizeDialog/VBoxContainer/HBoxContainer"] +margin_left = 121.0 +margin_top = 4.0 +margin_right = 239.0 +margin_bottom = 28.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +max_value = 2500.0 +value = 1.0 + +[node name="HBoxContainer2" type="HBoxContainer" parent="ChangeGridSizeDialog/VBoxContainer"] +margin_top = 71.0 +margin_right = 239.0 +margin_bottom = 103.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="ChangeGridSizeDialog/VBoxContainer/HBoxContainer2"] +margin_top = 9.0 +margin_right = 117.0 +margin_bottom = 23.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +text = "Grid 2" + +[node name="BigGridValue" type="SpinBox" parent="ChangeGridSizeDialog/VBoxContainer/HBoxContainer2"] +margin_left = 121.0 +margin_top = 4.0 +margin_right = 239.0 +margin_bottom = 28.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +max_value = 2500.0 +value = 8.0 +[connection signal="mouse_entered" from="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer" to="." method="_on_PaintCanvasContainer_mouse_entered"] +[connection signal="mouse_exited" from="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer" to="." method="_on_PaintCanvasContainer_mouse_exited"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/PaintTool" to="." method="_on_PaintTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/BrushTool" to="." method="_on_BrushTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/MultiTool" to="." method="_on_MultiTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/BucketTool" to="." method="_on_BucketTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/RainbowTool" to="." method="_on_RainbowTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/LineTool" to="." method="_on_LineTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/RectTool" to="." method="_on_RectTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/DarkenTool" to="." method="_on_DarkenTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/BrightenTool" to="." method="_on_BrightenTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/ColorPickerTool" to="." method="_on_ColorPickerTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/CutTool" to="." method="_on_CutTool_pressed"] +[connection signal="color_changed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/ColorPicker" to="." method="_on_ColorPicker_color_changed"] +[connection signal="popup_closed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/ColorPicker" to="." method="_on_ColorPicker_popup_closed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Control/VBoxContainer/Button" to="." method="_on_Button_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/VBoxContainer/LockAlpha" to="." method="_on_LockAlpha_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection/BrushRect" to="." method="_on_BrushRect_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection/BrushCircle" to="." method="_on_BrushCircle_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection/BrushVLine" to="." method="_on_BrushVLine_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection/BrushHLine" to="." method="_on_BrushHLine_pressed"] +[connection signal="value_changed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/VSplitContainer/HBoxContainer/BrushSize" to="." method="_on_BrushSize_value_changed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/XSymmetry" to="." method="_on_XSymmetry_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/YSymmetry" to="." method="_on_YSymmetry_pressed"] +[connection signal="about_to_show" from="SaveFileDialog" to="SaveFileDialog" method="_on_SaveFileDialog_about_to_show"] +[connection signal="confirmed" from="SaveFileDialog" to="SaveFileDialog" method="_on_SaveFileDialog_confirmed"] +[connection signal="file_selected" from="SaveFileDialog" to="SaveFileDialog" method="_on_SaveFileDialog_file_selected"] +[connection signal="visibility_changed" from="SaveFileDialog" to="SaveFileDialog" method="_on_SaveFileDialog_visibility_changed"] +[connection signal="about_to_show" from="LoadFileDialog" to="LoadFileDialog" method="_on_LoadFileDialog_about_to_show"] +[connection signal="confirmed" from="LoadFileDialog" to="LoadFileDialog" method="_on_LoadFileDialog_confirmed"] +[connection signal="file_selected" from="LoadFileDialog" to="LoadFileDialog" method="_on_LoadFileDialog_file_selected"] +[connection signal="visibility_changed" from="LoadFileDialog" to="LoadFileDialog" method="_on_LoadFileDialog_visibility_changed"] +[connection signal="confirmed" from="ChangeCanvasSize" to="ChangeCanvasSize" method="_on_ConfirmationDialog_confirmed"] +[connection signal="visibility_changed" from="ChangeCanvasSize" to="ChangeCanvasSize" method="_on_ChangeCanvasSize_visibility_changed"] +[connection signal="confirmed" from="ChangeGridSizeDialog" to="ChangeGridSizeDialog" method="_on_ChangeGridSizeDialog_confirmed"] +[connection signal="visibility_changed" from="ChangeGridSizeDialog" to="ChangeGridSizeDialog" method="_on_ChangeGridSizeDialog_visibility_changed"] +[connection signal="value_changed" from="ChangeGridSizeDialog/VBoxContainer/HBoxContainer/GridValue" to="ChangeGridSizeDialog" method="_on_GridValue_value_changed"] +[connection signal="value_changed" from="ChangeGridSizeDialog/VBoxContainer/HBoxContainer2/BigGridValue" to="ChangeGridSizeDialog" method="_on_BigGridValue_value_changed"] diff --git a/game/addons/Godoxel/Layer.gd b/game/addons/Godoxel/Layer.gd new file mode 100644 index 0000000..1200f3b --- /dev/null +++ b/game/addons/Godoxel/Layer.gd @@ -0,0 +1,98 @@ +extends Reference +class_name GELayer + + +var name +var layer_width +var layer_height +var visible = true setget set_visible +var locked = false +var alpha_locked = false + +var texture: ImageTexture +var image: Image +var texture_rect_ref + + +func _init(): + texture = ImageTexture.new() + + +func create(texture_rect_ref, width: int, height: int): + self.texture_rect_ref = texture_rect_ref + + layer_width = width + layer_height = height + + image = Image.new() + image.create(width, height, false, Image.FORMAT_RGBA8) + image.fill(Color.transparent) + update_texture() + + +func resize(width: int, height: int): + var pixel_colors = [] + var prev_width = layer_width + var prev_height = layer_height + + image.lock() + for y in range(prev_height): + for x in range(prev_width): + pixel_colors.append(image.get_pixel(x, y)) + image.unlock() + + layer_width = width + layer_height = height + + image.create(width, height, false, Image.FORMAT_RGBA8) + + image.lock() + for x in range(prev_width): + for y in range(prev_height): + if x >= width or y >= height: + continue + image.set_pixel(x, y, pixel_colors[GEUtils.to_1D(x, y, prev_width)]) + image.unlock() + + update_texture() + + +func set_pixel(x, y, color): + image.lock() + image.set_pixel(x, y, color) + image.unlock() + + +func get_pixel(x: int, y: int): + if x < 0 or y < 0 or x >= image.get_width() or y >= image.get_height(): + return null + image.lock() + var pixel = image.get_pixel(x, y) + image.unlock() + return pixel + + +func clear(): + image.fill(Color.transparent) + update_texture() + + +func update_texture(): + texture.create_from_image(image, 0) + texture_rect_ref.texture = texture + texture_rect_ref.margin_right = 0 + texture_rect_ref.margin_bottom = 0 + + +func set_visible(vis: bool): + visible = vis + texture_rect_ref.visible = visible + + +func toggle_lock(): + locked = not locked + + +func toggle_alpha_locked(): + alpha_locked = not alpha_locked + diff --git a/game/addons/Godoxel/LayerButton.tscn b/game/addons/Godoxel/LayerButton.tscn new file mode 100644 index 0000000..9252482 --- /dev/null +++ b/game/addons/Godoxel/LayerButton.tscn @@ -0,0 +1,110 @@ +[gd_scene load_steps=11 format=2] + +[ext_resource path="res://addons/Godoxel/assets/minidotta_invis.png" type="Texture" id=1] +[ext_resource path="res://addons/Godoxel/assets/minidotta.png" type="Texture" id=2] +[ext_resource path="res://addons/Godoxel/assets/arrow_down.png" type="Texture" id=3] +[ext_resource path="res://addons/Godoxel/assets/arrow_up.png" type="Texture" id=4] +[ext_resource path="res://addons/Godoxel/assets/lock_layer_1.png" type="Texture" id=5] +[ext_resource path="res://addons/Godoxel/assets/unlock_layer.png" type="Texture" id=6] + + +[sub_resource type="StyleBoxFlat" id=4] +bg_color = Color( 0.180392, 0.176471, 0.176471, 1 ) + +[sub_resource type="StyleBoxFlat" id=1] +bg_color = Color( 0.25098, 0.25098, 0.25098, 0 ) + +[sub_resource type="StyleBoxFlat" id=2] +bg_color = Color( 0.6, 0.6, 0.6, 0 ) + +[sub_resource type="StyleBoxFlat" id=3] +bg_color = Color( 0.6, 0.6, 0.6, 0 ) + +[node name="Layer1" type="Panel"] +show_behind_parent = true +anchor_right = 0.113281 +anchor_bottom = 0.0416667 +margin_bottom = -1.90735e-06 +rect_min_size = Vector2( 0, 32 ) +mouse_filter = 2 +custom_styles/panel = SubResource( 4 ) +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="Select" type="Button" parent="." groups=[ +"layer_button", +]] +anchor_right = 0.827586 +anchor_bottom = 1.0 +custom_styles/hover = SubResource( 1 ) +custom_styles/pressed = SubResource( 1 ) +custom_styles/focus = SubResource( 1 ) +custom_styles/disabled = SubResource( 1 ) +custom_styles/normal = SubResource( 1 ) +text = "Layer 1" +align = 2 +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="Visible" type="CheckButton" parent="."] +anchor_top = 0.5 +anchor_bottom = 0.5 +margin_left = 3.0 +margin_top = -8.5 +margin_right = 19.0 +margin_bottom = 7.5 +custom_icons/off = ExtResource( 1 ) +custom_icons/on = ExtResource( 2 ) +custom_styles/normal = SubResource( 2 ) +pressed = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Lock" type="CheckButton" parent="."] +anchor_top = 0.5 +anchor_bottom = 0.5 +margin_left = 22.0 +margin_top = -11.0 +margin_right = 46.0 +margin_bottom = 11.0 +custom_icons/off = ExtResource( 6 ) +custom_icons/on = ExtResource( 5 ) +custom_styles/normal = SubResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +anchor_left = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -20.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Up" type="TextureButton" parent="VBoxContainer"] +margin_right = 20.0 +margin_bottom = 14.0 +rect_min_size = Vector2( 20, 0 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +texture_normal = ExtResource( 4 ) +texture_pressed = ExtResource( 2 ) +expand = true +stretch_mode = 3 + +[node name="Down" type="TextureButton" parent="VBoxContainer"] +margin_top = 18.0 +margin_right = 20.0 +margin_bottom = 32.0 +rect_min_size = Vector2( 20, 0 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +texture_normal = ExtResource( 3 ) +texture_pressed = ExtResource( 2 ) +expand = true +stretch_mode = 3 diff --git a/game/addons/Godoxel/MenuButtonExtended.gd b/game/addons/Godoxel/MenuButtonExtended.gd new file mode 100644 index 0000000..dd442f6 --- /dev/null +++ b/game/addons/Godoxel/MenuButtonExtended.gd @@ -0,0 +1,13 @@ +tool +extends MenuButton + +var popup = get_popup() +signal item_pressed + +func _ready(): + popup.connect("id_pressed", self, "id_pressed") + +func id_pressed(id): + emit_signal("item_pressed", name, popup.get_item_text(id), id) + + diff --git a/game/addons/Godoxel/Navbar.gd b/game/addons/Godoxel/Navbar.gd new file mode 100644 index 0000000..5752c3f --- /dev/null +++ b/game/addons/Godoxel/Navbar.gd @@ -0,0 +1,106 @@ +tool +extends Control + +var editor +var paint_canvas + +func _ready(): + editor = owner + paint_canvas = editor.find_node("PaintCanvas") + + for i in get_node("Buttons").get_children(): + i.connect("item_pressed", self, "button_pressed") + + +func button_pressed(button_name, button_item, id): +# print("pressed: ", button_name) +# print("pressed item is: '%s'" % button_item) + + match button_name: + "File": + handle_file_menu(button_item, id) + "Edit": + handle_edit_menu(button_item, id) + "Canvas": + handle_canvas_menu(button_item, id) + "Layer": + handle_layer_menu(button_item, id) + "Grid": + handle_grid_menu(button_item, id) + "Magic": + handle_magic_menu(button_item, id) + "Editor": + handle_editor_menu(button_item, id) + + +func handle_file_menu(pressed_item: String, id): + match pressed_item: + "Save": + owner.get_node("SaveFileDialog").show() + "Load": + owner.get_node("LoadFileDialog").show() + "New": + owner.get_node("ConfirmationDialog").show() + + +func handle_edit_menu(pressed_item: String, id): + match pressed_item: + "Add Layer": + editor.add_new_layer() + + +func handle_canvas_menu(pressed_item: String, id): + match pressed_item: + "Change Size": + owner.get_node("ChangeCanvasSize").show() + "Crop To Content": + owner.paint_canvas.crop_to_content() + + +func handle_layer_menu(pressed_item: String, id): + match pressed_item: + "Add Layer": + editor.add_new_layer() + "Delete Layer": + editor.remove_active_layer() + "Duplicate Layer": + editor.duplicate_active_layer() + "Clear Layer": + owner.paint_canvas.clear_active_layer() + "Toggle Alpha Locked": + owner.paint_canvas.active_layer.toggle_alpha_locked() + $Buttons/Layer.get_popup().set_item_checked(id, not $Buttons/Layer.get_popup().is_item_checked(id)) + owner.find_node("LockAlpha").pressed = $Buttons/Layer.get_popup().is_item_checked(id) + + +func handle_grid_menu(pressed_item: String, id): + match pressed_item: + "Change Grid Size": + owner.get_node("ChangeGridSizeDialog").show() + "Toggle Grid": + owner.paint_canvas.toggle_grid() + + +func handle_magic_menu(pressed_item: String, id): + match pressed_item: + "Add Layer": + editor.add_new_layer() + + +func handle_editor_menu(pressed_item: String, id): + match pressed_item: + "Settings": + owner.get_node("Settings").show() + "Toggle Grid": + var grids_node = owner.find_node("Grids") + grids_node.visible = !grids_node.visible + "Reset Canvas Position": + owner.paint_canvas_node.rect_position = Vector2(0, 0) + + +func is_any_menu_open() -> bool: + for child in $Buttons.get_children(): + if child.get_popup().visible: + return true + return false + diff --git a/game/addons/Godoxel/PaintCanvas.gd b/game/addons/Godoxel/PaintCanvas.gd new file mode 100644 index 0000000..934fc34 --- /dev/null +++ b/game/addons/Godoxel/PaintCanvas.gd @@ -0,0 +1,489 @@ +tool +extends Control + +var image = Image.new() +var last_pixel = [] +onready var canvas_image_node = get_node("CanvasImage") +export var grid_size = 16 +export var canvas_size = Vector2(48, 28) +export var region_size = 10 +export var can_draw = true + +var mouse_in_region +var mouse_on_top + +#terms +#global cell - a cell that has a global grid position on the canvas +#local cell - a cell that has a local grid position in a chunk region on the canvas +#chunk region - a set of cells contained in an even number + +#TODO: Maybe each chunk region can hold an image resource so that way the engine wouldn't lag at all when updating the canvas + +var layers = {} +var active_layer + +var preview_layer = "preview" +var preview_enabled = false + + +func _enter_tree(): + #---------------------- + # init Layer + #---------------------- + layers[preview_layer] = { + "layer": null, + "data": [], + "chunks": null, + } + + canvas_size = Vector2(int(rect_size.x / grid_size), int(rect_size.y / grid_size)) + #print("canvas_size: ", canvas_size) + + +func _ready(): + active_layer = add_existing_layer(get_tree().get_nodes_in_group("layer")[0]) + #print("active Layer: ", active_layer) + + +func get_layer_data(layer_name): + return layers[layer_name] + + +func get_active_layer(): + return layers[active_layer] + + +func get_preview_layer(): + return layers[preview_layer] + + +func clear_active_layer(): + for pixel in layers[active_layer].data: + set_global_cell_in_chunk(pixel[0], pixel[1], Color(0,0,0,0)) + + +func clear_layer(layer_name: String): + for pixel in layers[layer_name].data: + set_global_cell_in_chunk(pixel[0], pixel[1], Color(0,0,0,0)) + + +func clear_preview_layer(): + for pixel in layers["preview"].data: + set_global_cell_in_chunk(pixel[0], pixel[1], Color(0,0,0,0)) + + +func remove_layer(layer_name): + get_node("ChunkNodes").remove_child(layers[layer_name].chunks) + layers[layer_name].chunks.queue_free() + + layers.erase(layer_name) + + if active_layer == layer_name: + for layer in layers: + if layer == preview_layer: + continue + active_layer = layer + break + + return active_layer + + + +# only needed for init +func add_existing_layer(layer): + layers[layer.name] = { + "layer": layer, + "data": [], + "chunks": null, + } + generate_chunks() + return layer.name + + +func add_new_layer(layer_name): + layers[layer_name] = { + "layer": null, + "data": [], + "chunks": null, + } + + generate_chunks() + + return layer_name + + +func duplicate_layer(layer: String, neu_layer_name: String): + var _preview = preview_enabled + preview_enabled = false + var _temp = active_layer + active_layer = neu_layer_name + + layers[neu_layer_name] = { + "layer": null, + "data": layers[layer].data.duplicate(true), + "chunks": null, + } + + generate_chunks() +# get_node("ChunkNodes").remove_child(layers[neu_layer_name].chunks) +# get_node("ChunkNodes").add_child_below_node(layers[layer].chunks, layers[neu_layer_name].chunks, true) + + for pixel in layers[neu_layer_name].data: + set_pixel_cell(pixel[0], pixel[1], pixel[2]) + active_layer = _temp + + preview_enabled = _preview + return neu_layer_name + + +func toggle_layer_visibility(layer_name): + layers[layer_name].chunks.visible = not layers[layer_name].chunks.visible + #print("Layer: ", layer_name, " is now: ", layers[layer_name].chunks.visible) + + +var util = preload("res://addons/Godoxel/Util.gd") + + +func _on_mouse_entered(): + mouse_on_top = true + + +func _on_mouse_exited(): + mouse_on_top = false + + +func _process(delta): + var mouse_position = get_local_mouse_position() + var rect = Rect2(Vector2(0, 0), rect_size) + mouse_in_region = rect.has_point(mouse_position) + update() + #if not Engine.editor_hint: + # print(mouse_on_canvas, " | ", has_focus()) + #draw_canvas_out just updates the image constantly + #if can_draw: + # draw_canvas_out() + + +func generate_chunks(): + var maxium_chunk_size = get_maxium_filled_chunks() + #TODO: We probably don't need to check for x and y anymore + for key in layers: + if layers[key].chunks != null: + continue + + var chunk_node = Control.new() + get_node("ChunkNodes").add_child(chunk_node) + chunk_node.owner = self + + layers[key].chunks = chunk_node + + for x in maxium_chunk_size.x: + for y in maxium_chunk_size.y: + var paint_canvas_chunk = load("res://addons/Godoxel/PaintCanvasChunk.tscn").instance() + paint_canvas_chunk.setup(region_size) + paint_canvas_chunk.name = "C-%s-%s" % [x, y] + paint_canvas_chunk.rect_position = Vector2(x * (grid_size * region_size), y * (grid_size * region_size)) + layers[key].chunks.add_child(paint_canvas_chunk) + + +func get_maxium_filled_chunks(): + return Vector2(canvas_size.x / region_size, canvas_size.y / region_size).ceil() + +#TODO: Remake these functions with godot's setget features +#so that we don't have to call these functions +func resize_grid(grid): + #print(grid) + if grid <= 0: + return + grid_size = grid + canvas_image_node.rect_scale = Vector2(grid, grid) + +func resize_canvas(x, y): + image.unlock() + image.create(x, y, true, Image.FORMAT_RGBA8) + canvas_size = Vector2(x, y) + #setup_all_chunks() + image.lock() + +#func draw_canvas_out(a = ""): +# if canvas_image_node == null: +# return +# var image_texture = ImageTexture.new() +# image_texture.create_from_image(image) +# image_texture.set_flags(0) +# canvas_image_node.texture = image_texture + +func get_wrapped_region_cell(x, y): + return Vector2(wrapi(x, 0, region_size), wrapi(y, 0, region_size)) + +func get_region_from_cell(x, y): + return Vector2(floor(x / region_size), floor(y / region_size)) + + +func set_local_cell_in_chunk(chunk_x, chunk_y, local_cell_x, local_cell_y, color): + var chunk_node + + if preview_enabled: + chunk_node = layers.preview.chunks.get_node_or_null("C-%s-%s" % [chunk_x, chunk_y]) + else: + chunk_node = layers[active_layer].chunks.get_node_or_null("C-%s-%s" % [chunk_x, chunk_y]) + + if chunk_node == null: + #print("Can't find chunk node!") + return + chunk_node.set_cell(local_cell_x, local_cell_y, color) + + +func set_global_cell_in_chunk(cell_x, cell_y, color): + var chunk = get_region_from_cell(cell_x, cell_y) + var wrapped_cell = get_wrapped_region_cell(cell_x, cell_y) + set_local_cell_in_chunk(chunk.x, chunk.y, wrapped_cell.x, wrapped_cell.y, color) + +#func update_chunk_region_from_cell(x, y): +# var region_to_update = get_region_from_cell(x, y) +# update_chunk_region(region_to_update.x, region_to_update.y) + +func get_pixel_cell_color(x, y): + if not cell_in_canvas_region(x, y): + return null + var pixel_cell = get_pixel_cell(x, y) + if pixel_cell == null: + #We already checked that the cell can't be out of the canvas region so we can assume the pixel cell is completely transparent if it's null + return Color(0, 0, 0, 0) + else: + return util.color_from_array(pixel_cell[2]) + +func get_pixel_cell_color_v(vec2): + return get_pixel_cell_color(vec2.x, vec2.y) + +func get_pixel_cell(x, y): + if active_layer == null: + return + if not cell_in_canvas_region(x, y): + return null + + for pixel in get_active_layer().data: + if pixel[0] == x and pixel[1] == y: + return pixel + + return null + +func get_pixel_cell_v(vec2): + return get_pixel_cell(vec2.x, vec2.y) + +#func remove_pixel_cell(x, y): +# if can_draw == false: +# return false +# if not cell_in_canvas_region(x, y): +# return false +# var layer_data = get_layer_data("Layer 1") +# for pixel in range(0, layer_data.size()): +# if layer_data[pixel][0] == x and layer_data[pixel][1] == y: +# layer_data.remove(pixel) +# #update_chunk_region_from_cell(x, y) +# #TOOD: If pixel exists in temp_pool_pixels then remove it +# image.set_pixel(x, y, Color(0, 0, 0, 0)) +# return true +# return false + +#func remove_pixel_cell_v(vec2): +# return remove_pixel_cell(vec2.x, vec2.y) + +func set_pixel_cell(x, y, color): + if can_draw == false: + return false + + if not cell_in_canvas_region(x, y): + return false + + var layer + if preview_enabled: + layer = get_preview_layer() + else: + layer = get_active_layer() + + var index = 0 + for pixel in layer.data: + #TODO: Make a better way of accessing the array because the more pixels we have, the longer it takes to + #set the pixel + if pixel[0] == x and pixel[1] == y: + #No reason to set the pixel again if the colors are the same + + #If the color we are setting is 0, 0, 0, 0 then there is no reason to keep the information about the pixel + #so we remove it from the layer data + if color == Color(0, 0, 0, 0): + layer.data.remove(index) + else: + pixel[2] = color + #TODO: The new system is going to allow chunks to each have their own TextureRect and Image + #nodes so what we are doing in here is that we are setting the local cell in the region of that image + set_global_cell_in_chunk(x, y, color) + last_pixel = [x, y, color] + return true + index += 1 + #don't append any data if the color is 0, 0, 0, 0 + if color != Color(0, 0, 0, 0): + #if the pixel data doesn't exist then we add it in + layer.data.append([x, y, color]) + set_global_cell_in_chunk(x, y, color) + last_pixel = [x, y, color] + return true + +func set_pixel_cell_v(vec2, color): + return set_pixel_cell(vec2.x, vec2.y, color) + +func set_pixels_from_line(vec2_1, vec2_2, color): + var points = get_pixels_from_line(vec2_1, vec2_2) + for i in points: + set_pixel_cell_v(i, color) + +func set_random_pixels_from_line(vec2_1, vec2_2): + var points = get_pixels_from_line(vec2_1, vec2_2) + for i in points: + set_pixel_cell_v(i, util.random_color_alt()) + +func get_pixels_from_line(vec2_1, vec2_2): + var points = PoolVector2Array() + + var dx = abs(vec2_2.x - vec2_1.x) + var dy = abs(vec2_2.y - vec2_1.y) + + var x = vec2_1.x + var y = vec2_1.y + + var sx = 0 + if vec2_1.x > vec2_2.x: + sx = -1 + else: + sx = 1 + + var sy = 0 + if vec2_1.y > vec2_2.y: + sy = -1 + else: + sy = 1 + + if dx > dy: + var err = dx / 2 + while(true): + if x == vec2_2.x: + break + points.push_back(Vector2(x, y)) + + err -= dy + if err < 0: + y += sy + err += dx + x += sx + else: + var err = dy / 2 + while (true): + if y == vec2_2.y: + break + points.push_back(Vector2(x, y)) + + err -= dx + if err < 0: + x += sx + err += dy + y += sy + points.push_back(Vector2(x, y)) + return points + + +#even though the function checks for it, we can't afford adding more functions to the call stack +#because godot has a limit until it crashes +var flood_fill_queue = 0 +func flood_fill(x, y, target_color, replacement_color): + #yield(get_tree().create_timer(1), "timeout") + flood_fill_queue += 1 + if not cell_in_canvas_region(x, y): + flood_fill_queue -= 1 + return + if target_color == replacement_color: + flood_fill_queue -= 1 + return + elif not get_pixel_cell_color(x, y) == target_color: + flood_fill_queue -= 1 + return + else: + set_pixel_cell(x, y, replacement_color) + if flood_fill_queue >= 500: + #print(flood_fill_queue) + yield(get_tree().create_timer(0.01), "timeout") + #up + if get_pixel_cell_color(x, y - 1) == target_color: + flood_fill(x, y - 1, target_color, replacement_color) + #down + if get_pixel_cell_color(x, y + 1) == target_color: + flood_fill(x, y + 1, target_color, replacement_color) + #left + if get_pixel_cell_color(x - 1, y) == target_color: + flood_fill(x - 1, y, target_color, replacement_color) + #right + if get_pixel_cell_color(x + 1, y) == target_color: + flood_fill(x + 1, y, target_color, replacement_color) + flood_fill_queue -= 1 + return + +#func flood_fill_erase(x, y, target_color): +# yield(get_tree().create_timer(0.001), "timeout") +# if not cell_in_canvas_region(x, y): +# print("cell not in canvas") +# return +# #if target_color == replacement_color: +# # return +# elif not get_pixel_cell_color(x, y) == target_color: +# print("cell doesn't match pixel color") +# return +# elif not get_pixel_cell(x, y): +# print("cell already erased") +# return +# else: +# print("removed pixel") +# remove_pixel_cell(x, y) +# print("x: ", x, " y: ", y, " color: ", target_color) +# #up +# flood_fill_erase(x, y - 1, target_color) +# #down +# flood_fill_erase(x, y + 1, target_color) +# #left +# flood_fill_erase(x - 1, y, target_color) +# #right +# flood_fill_erase(x + 1, y, target_color) +# return + +func cell_in_canvas_region(x, y): + if x > canvas_size.x - 1 or x < 0 or y > canvas_size.y - 1 or y < 0: + #out of bounds, return false + return false + else: + return true + +#Both of these functions right now just return the starting position of the canvas and the last position of the canvas +func get_all_used_regions_in_canvas(): + var first_used_region = get_first_used_region_in_canvas() + var last_used_region = get_last_used_region_in_canvas() + var chunk_pool = PoolVector2Array() + for chunk_x in range(first_used_region.x, last_used_region.x): + for chunk_y in range(first_used_region.y, last_used_region.y): + chunk_pool.append(Vector2(chunk_x, chunk_y)) + return chunk_pool + +func get_first_used_region_in_canvas(): + return get_region_from_cell(0, 0) + +func get_last_used_region_in_canvas(): + return get_region_from_cell(canvas_size.x - 1, canvas_size.y - 1) + +func get_cells_in_region(x, y): + var start_cell = Vector2(x * region_size, y * region_size) + var end_cell = Vector2((x * region_size) + region_size, (y * region_size) + region_size) + var cell_array = [] + for cx in range(start_cell.x, end_cell.x): + for cy in range(start_cell.y, end_cell.y): + var pixel_cell = get_pixel_cell(cx, cy) + if pixel_cell == null: + pixel_cell = [cx, cy, Color(0, 0, 0, 0)] + cell_array.append(pixel_cell) + return cell_array diff --git a/game/addons/Godoxel/PaintCanvas.tscn b/game/addons/Godoxel/PaintCanvas.tscn new file mode 100644 index 0000000..4ce7581 --- /dev/null +++ b/game/addons/Godoxel/PaintCanvas.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/Godoxel/PaintCanvas.gd" type="Script" id=1] + + +[node name="PaintCanvas" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +canvas_size = Vector2( 64, 37 ) + +[node name="ChunkNodes" type="Control" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CanvasImage" type="TextureRect" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +expand = true +stretch_mode = 3 diff --git a/game/addons/Godoxel/PaintCanvasChunk.gd b/game/addons/Godoxel/PaintCanvasChunk.gd new file mode 100644 index 0000000..3a49c02 --- /dev/null +++ b/game/addons/Godoxel/PaintCanvasChunk.gd @@ -0,0 +1,27 @@ +tool +extends Control + +var image = Image.new() +var image_texture = ImageTexture.new() + +func _ready(): + mouse_filter = Control.MOUSE_FILTER_IGNORE + +func setup(region_size): + image.create(region_size, region_size, true, Image.FORMAT_RGBA8) + image.lock() + +func update_chunk(): + image_texture.create_from_image(image) + image_texture.set_flags(0) + self.texture = image_texture + +func set_cell(x, y, color): + image.set_pixel(x, y, color) + update_chunk() + +func _on_VisibilityNotifier2D_screen_entered(): + visible = true + +func _on_VisibilityNotifier2D_screen_exited(): + visible = false diff --git a/game/addons/Godoxel/PaintCanvasChunk.tscn b/game/addons/Godoxel/PaintCanvasChunk.tscn new file mode 100644 index 0000000..1f2f2b0 --- /dev/null +++ b/game/addons/Godoxel/PaintCanvasChunk.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/Godoxel/PaintCanvasChunk.gd" type="Script" id=1] + + +[node name="PaintCanvasChunk" type="TextureRect"] +margin_right = 10.0 +margin_bottom = 10.0 +rect_scale = Vector2( 16, 16 ) +mouse_filter = 2 +expand = true +stretch_mode = 1 +script = ExtResource( 1 ) diff --git a/game/addons/Godoxel/PaintCanvasContainer.gd b/game/addons/Godoxel/PaintCanvasContainer.gd new file mode 100644 index 0000000..34ca400 --- /dev/null +++ b/game/addons/Godoxel/PaintCanvasContainer.gd @@ -0,0 +1,2 @@ +tool +extends Control diff --git a/game/addons/Godoxel/SaveFileDialog.gd b/game/addons/Godoxel/SaveFileDialog.gd new file mode 100644 index 0000000..a803a06 --- /dev/null +++ b/game/addons/Godoxel/SaveFileDialog.gd @@ -0,0 +1,70 @@ +tool +extends FileDialog + +var canvas + +var file_path = "" + + +func _enter_tree(): + canvas = get_parent().find_node("Canvas") + + +func _ready(): + # warning-ignore:return_value_discarded + get_line_edit().connect("text_entered", self, "_on_LineEdit_text_entered") + invalidate() + clear_filters() + add_filter("*.png ; PNG Images") + + +func _on_SaveFileDialog_file_selected(path): + #print("selected file: ", path) + file_path = path + save_file() + + +# warning-ignore:unused_argument +func _on_LineEdit_text_entered(text): + return +# print("text entered: ", text) + + +func _on_SaveFileDialog_confirmed(): + return +# print("confirmed: ", current_path) + + +func save_file(): + var image = Image.new() + image.create(canvas.canvas_width, canvas.canvas_height, true, Image.FORMAT_RGBA8) + image.lock() + + for layer in canvas.layers: + var idx = 0 + if not layer.visible: + continue + for x in range(layer.layer_width): + for y in range(layer.layer_height): + var color = layer.get_pixel(x, y) + var image_color = image.get_pixel(x, y) + + if color.a != 0: + image.set_pixel(x, y, image_color.blend(color)) + else: + image.set_pixel(x, y, color) + image.unlock() + + var dir = Directory.new() + if dir.file_exists(file_path): + dir.remove(file_path) + + image.save_png(file_path) + + +func _on_SaveFileDialog_about_to_show(): + invalidate() + + +func _on_SaveFileDialog_visibility_changed(): + invalidate() diff --git a/game/addons/Godoxel/SelectionBox.gd b/game/addons/Godoxel/SelectionBox.gd new file mode 100644 index 0000000..7ddfd2a --- /dev/null +++ b/game/addons/Godoxel/SelectionBox.gd @@ -0,0 +1,24 @@ +tool +extends Control + +export var outline_size = 3 + +func _ready(): + pass + +func _process(delta): + update() + +func _draw(): + if not rect_size == Vector2(): + draw_outline_box(rect_size, Color.gray, outline_size) + +func draw_outline_box(size, color, width): + #Top line + draw_line(Vector2(0 + 1, 0), Vector2(size.x, 0), color, width) + #Left line + draw_line(Vector2(0 + 1, 0), Vector2(0, size.y), color, width) + #Bottom line + draw_line(Vector2(0 + 1, size.y), Vector2(size.x, size.y), color, width) + #Right line + draw_line(Vector2(size.x, 0), Vector2(size.x, size.y), color, width) diff --git a/game/addons/Godoxel/Settings.gd b/game/addons/Godoxel/Settings.gd new file mode 100644 index 0000000..8657585 --- /dev/null +++ b/game/addons/Godoxel/Settings.gd @@ -0,0 +1,24 @@ +tool +extends Control + +var editor +var canvas_outline +var start_time +var end_time + + +func _enter_tree(): + canvas_outline = get_parent().find_node("CanvasOutline") + editor = get_parent() + + +func _on_ColorPickerButton_color_changed(color): + canvas_outline.color = color + + +func _on_CheckButton_toggled(button_pressed): + canvas_outline.visible = button_pressed + + +func _on_Ok_pressed(): + hide() diff --git a/game/addons/Godoxel/Settings.tscn b/game/addons/Godoxel/Settings.tscn new file mode 100644 index 0000000..f2d9c24 --- /dev/null +++ b/game/addons/Godoxel/Settings.tscn @@ -0,0 +1,64 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/Godoxel/Settings.gd" type="Script" id=1] + + +[node name="Settings" type="WindowDialog"] +visible = true +margin_top = 20.0 +margin_right = 300.0 +margin_bottom = 120.0 +window_title = "Settings" +script = ExtResource( 1 ) + +[node name="Ok" type="Button" parent="."] +margin_left = 210.0 +margin_top = 70.0 +margin_right = 290.0 +margin_bottom = 90.0 +text = "Ok" + +[node name="CanvasOutlineToggle" type="Control" parent="."] +margin_left = 10.0 +margin_top = 10.0 +margin_right = 290.0 +margin_bottom = 30.0 +__meta__ = { +"_edit_group_": true +} + +[node name="Label" type="Label" parent="CanvasOutlineToggle"] +margin_right = 130.0 +margin_bottom = 20.0 +text = "Canvas Outline:" +valign = 1 + +[node name="CheckButton" type="CheckButton" parent="CanvasOutlineToggle"] +margin_left = 210.0 +margin_top = -10.0 +margin_right = 286.0 +margin_bottom = 30.0 +pressed = true + +[node name="CanvasOutlineColor" type="Control" parent="."] +margin_left = 10.0 +margin_top = 40.0 +margin_right = 290.0 +margin_bottom = 60.0 +__meta__ = { +"_edit_group_": true +} + +[node name="Label" type="Label" parent="CanvasOutlineColor"] +margin_right = 130.0 +margin_bottom = 20.0 +text = "Canvas Outline Color:" +valign = 1 + +[node name="ColorPickerButton" type="ColorPickerButton" parent="CanvasOutlineColor"] +margin_left = 170.0 +margin_right = 280.0 +margin_bottom = 20.0 +[connection signal="pressed" from="Ok" to="." method="_on_Ok_pressed"] +[connection signal="toggled" from="CanvasOutlineToggle/CheckButton" to="." method="_on_CheckButton_toggled"] +[connection signal="color_changed" from="CanvasOutlineColor/ColorPickerButton" to="." method="_on_ColorPickerButton_color_changed"] diff --git a/game/addons/Godoxel/TextInfo.gd b/game/addons/Godoxel/TextInfo.gd new file mode 100644 index 0000000..e9368e1 --- /dev/null +++ b/game/addons/Godoxel/TextInfo.gd @@ -0,0 +1,39 @@ +tool +extends Control + +var size = 240 + +#TODO: To make reading the text easier, the text info with the longest text should have it's length applied to all the +#the other text infos + +func add_text_info(text_name, custom_node = null): + var last_text_info_child = null + var child_count = get_child_count() + if not child_count <= 0: + last_text_info_child = get_children()[get_children().size() - 1] + var label = Label.new() + label.name = text_name + label.rect_size = Vector2(size, 14) + if not last_text_info_child == null: + var x = last_text_info_child.rect_position.x + var y = last_text_info_child.rect_position.y + var temp_size = size + if child_count == 4: + x = 0 + y = 20 + temp_size = 0 + label.rect_position = Vector2(x + temp_size, y) + if not custom_node == null: + label.add_child(custom_node) + add_child(label) + +func update_text_info(text_name, text_value = null, node = null, node_target_value = null, node_value = null): + var text_label = self.get_node(text_name) + if text_label == null: + return + if not node == null: + get_node(text_name).get_node(node).set(node_target_value, node_value) + if text_value == null: + text_label.text = "%s: %s" % [text_name, null] + else: + text_label.text = "%s: %s" % [text_name, String(text_value)] diff --git a/game/addons/Godoxel/Util.gd b/game/addons/Godoxel/Util.gd new file mode 100644 index 0000000..9840120 --- /dev/null +++ b/game/addons/Godoxel/Util.gd @@ -0,0 +1,94 @@ +tool +extends Node +class_name GEUtils + + +static func get_pixels_in_line(from: Vector2, to: Vector2): + var dx = to[0] - from[0] + var dy = to[1] - from[1] + var nx = abs(dx) + var ny = abs(dy) + var signX = sign(dx) + var signY = sign(dy) + var p = from + var points : Array = [p] + + var ix = 0 + var iy = 0 + + while ix < nx || iy < ny: + if (1 + (ix << 1)) * ny < (1 + (iy << 1)) * nx: + p[0] += signX + ix +=1 + else: + p[1] += signY + iy += 1 + points.append(p) + return points + + +static func to_1D_v(p, w) -> int: + return p.x + p.y * w + + +static func to_1D(x, y, w) -> int: + return x + y * w + + +static func to_2D(idx, w) -> Vector2: + var p = Vector2() + p.x = int(idx) % int(w) + p.y = int(idx / w) + return p + + + +static func color_from_array(color_array): + var r = color_array[0] + var g = color_array[1] + var b = color_array[2] + var a = color_array[3] + return Color(r, g, b, a) + +static func random_color(): + return Color(randf(), randf(), randf()) + +static func random_color_alt(): + var rand = randi() % 6 + + match rand: + #red + 0: + return Color.red + #blue + 1: + return Color.blue + #green + 2: + return Color.green + #orange + 3: + return Color.orange + #yellow + 4: + return Color.yellow + #purple + 5: + return Color.purple + +static func get_line_string(file, number): + return file.get_as_text().split("\n")[number - 1].strip_edges() + +static func printv(variable): + var stack = get_stack()[get_stack().size() - 1] + var line = stack.line + var source = stack.source + var file = File.new() + file.open(source, File.READ) + var line_string = get_line_string(file, line) + file.close() + var left_p = line_string.find("(") + var left_p_string = line_string.right(left_p + 1) + var right_p = left_p_string.find(")") + var variable_name = left_p_string.left(right_p) + print("%s: %s" % [variable_name, variable]) diff --git a/game/addons/Godoxel/ViewportContainer.gd b/game/addons/Godoxel/ViewportContainer.gd new file mode 100644 index 0000000..5ff1df6 --- /dev/null +++ b/game/addons/Godoxel/ViewportContainer.gd @@ -0,0 +1,6 @@ +extends ViewportContainer +tool + +func _ready(): + get_child(0).size = rect_size + diff --git a/game/addons/Godoxel/VisualGrid.gd b/game/addons/Godoxel/VisualGrid.gd new file mode 100644 index 0000000..a935a15 --- /dev/null +++ b/game/addons/Godoxel/VisualGrid.gd @@ -0,0 +1,41 @@ +tool +extends Control + +export var color = Color() +export var size:int = 16 +export var zoom = 0 +export var offset = Vector2(0, 0) + + +func _enter_tree(): + set_process(true) + + +func _draw(): + if size == 0: + size = 1 + + var temp_size = size + zoom + + var wrap_offset = Vector2(wrapf(offset.x, 0, temp_size), wrapf(offset.y, 0, temp_size)) + + var ceil_x = ceil(rect_size.x / temp_size) + var ceil_y = ceil(rect_size.y / temp_size) + + for i in ceil_y: + var start_x = Vector2(0, (i * temp_size) + wrap_offset.y) + var end_x = Vector2(rect_size.x, (i * temp_size) + wrap_offset.y) +# var end_x = Vector2(int(rect_size.x) + size - int(rect_size.x) % size, (i * temp_size) + wrap_offset.y) + draw_line(start_x, end_x, color, 1) + + for i in ceil_x: + var start_y = Vector2((i * temp_size) + wrap_offset.x, 0) + var end_y = Vector2((i * temp_size) + (wrap_offset.x), rect_size.y) +# var end_y = Vector2((i * temp_size) + (wrap_offset.x), int(rect_size.y) + size - int(rect_size.y) % size) + draw_line(start_y, end_y, color, 1) + + +func _process(delta): + if not is_visible_in_tree(): + return + update() diff --git a/game/addons/Godoxel/VisualGrid.tscn b/game/addons/Godoxel/VisualGrid.tscn new file mode 100644 index 0000000..ac8345a --- /dev/null +++ b/game/addons/Godoxel/VisualGrid.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/Godoxel/VisualGrid.gd" type="Script" id=1] + + +[node name="VisualGrid" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 1 ) diff --git a/game/addons/Godoxel/actions/Action.gd b/game/addons/Godoxel/actions/Action.gd new file mode 100644 index 0000000..97292c2 --- /dev/null +++ b/game/addons/Godoxel/actions/Action.gd @@ -0,0 +1,123 @@ +extends Node +class_name GEAction + + +var action_data = {} + + +func _init(): + action_data["redo"] = {} + action_data["undo"] = {} + action_data["preview"] = {} + + +func do_action(canvas, data: Array): + if not "cells" in action_data.redo: + action_data.redo["cells"] = [] + action_data.redo["colors"] = [] + + if not "cells" in action_data.undo: + action_data.undo["cells"] = [] + action_data.undo["colors"] = [] + + if not "cells" in action_data.preview: + action_data.preview["cells"] = [] + action_data.preview["colors"] = [] + + if not "layer" in action_data: + action_data["layer"] = canvas.active_layer + + +func commit_action(canvas): + print("NO IMPL commit_action ") + return [] + + +func undo_action(canvas): + print("NO IMPL undo_action ") + + +func redo_action(canvas): + print("NO IMPL redo_action ") + + +func can_commit() -> bool: + return not action_data.redo.empty() + + +func get_x_sym_points(canvas_width, pixel): + var p = int(canvas_width - pixel.x) + var all_points = [pixel, Vector2(p-1, pixel.y)] + + var points :Array = [] + for point in all_points: + if point in points: + continue + points.append(point) + return points + + +func get_y_sym_points(canvas_height, pixel): + var p = int(canvas_height - pixel.y) + var all_points = [pixel, Vector2(pixel.x, p-1)] + + var points :Array = [] + for point in all_points: + if point in points: + continue + points.append(point) + return points + + +func get_xy_sym_points(canvas_width, canvas_height, pixel): + var all_points = [] + var xpoints = get_x_sym_points(canvas_width, pixel) + + all_points += get_y_sym_points(canvas_height, xpoints[0]) + all_points += get_y_sym_points(canvas_height, xpoints[1]) + + var points :Array = [] + for point in all_points: + if point in points: + continue + points.append(point) + + return points + + +func get_points(canvas, pixel): + var points = [] + if canvas.symmetry_x and canvas.symmetry_y: + var sym_points = get_xy_sym_points(canvas.canvas_width, canvas.canvas_height, pixel) + for point in sym_points: + if point in action_data.undo.cells or canvas.get_pixel_v(point) == null: + continue + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + points.append(point) + elif canvas.symmetry_y: + var sym_points = get_y_sym_points(canvas.canvas_height, pixel) + for point in sym_points: + if point in action_data.undo.cells or canvas.get_pixel_v(point) == null: + continue + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + points.append(point) + elif canvas.symmetry_x: + var sym_points = get_x_sym_points(canvas.canvas_width, pixel) + for point in sym_points: + if point in action_data.undo.cells or canvas.get_pixel_v(point) == null: + continue + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + points.append(point) + else: + if pixel in action_data.undo.cells or canvas.get_pixel_v(pixel) == null: + return [] + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + return [] + points.append(pixel) + + return points + + diff --git a/game/addons/Godoxel/actions/Brighten.gd b/game/addons/Godoxel/actions/Brighten.gd new file mode 100644 index 0000000..faf7f81 --- /dev/null +++ b/game/addons/Godoxel/actions/Brighten.gd @@ -0,0 +1,53 @@ +extends GEAction +class_name GEBrighten + + +const brighten_color = 0.1 + + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + var pixels = GEUtils.get_pixels_in_line(data[0], data[1]) + for pixel in pixels: + if canvas.get_pixel_v(pixel) == null: + continue + + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + + if pixel in action_data.undo.cells: + var brightened_color = canvas.get_pixel_v(pixel).lightened(0.1) + canvas.set_pixel_v(pixel, brightened_color) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(brightened_color) + continue + + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.undo.cells.append(pixel) + var brightened_color = canvas.get_pixel_v(pixel).lightened(0.1) + canvas.set_pixel_v(pixel, brightened_color) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(brightened_color) + + +func commit_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) diff --git a/game/addons/Godoxel/actions/Brush.gd b/game/addons/Godoxel/actions/Brush.gd new file mode 100644 index 0000000..edeccaf --- /dev/null +++ b/game/addons/Godoxel/actions/Brush.gd @@ -0,0 +1,47 @@ +extends GEAction +class_name GEBrush + + +func do_action(canvas: GECanvas, data: Array): + .do_action(canvas, data) + + for pixel in GEUtils.get_pixels_in_line(data[0], data[1]): + for off in BrushPrefabs.get_brush(data[3], data[4]): + var p = pixel + off + + if p in action_data.undo.cells or canvas.get_pixel_v(p) == null: + continue + + if canvas.is_alpha_locked() and canvas.get_pixel_v(p) == Color.transparent: + continue + + action_data.undo.colors.append(canvas.get_pixel_v(p)) + action_data.undo.cells.append(p) + + canvas.set_pixel_v(p, data[2]) + + action_data.redo.cells.append(p) + action_data.redo.colors.append(data[2]) + + +func commit_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/Bucket.gd b/game/addons/Godoxel/actions/Bucket.gd new file mode 100644 index 0000000..8ff2f90 --- /dev/null +++ b/game/addons/Godoxel/actions/Bucket.gd @@ -0,0 +1,49 @@ +extends GEAction +class_name GEBucket + + + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + if canvas.get_pixel_v(data[0]) == data[2]: + return + var pixels = canvas.select_same_color(data[0].x, data[0].y) + + for pixel in pixels: + if pixel in action_data.undo.cells: + continue + + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.undo.cells.append(pixel) + + canvas.set_pixel_v(pixel, data[2]) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(data[2]) + + +func commit_action(canvas): + var cells = action_data.preview.cells + var colors = action_data.preview.colors + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/Cut.gd b/game/addons/Godoxel/actions/Cut.gd new file mode 100644 index 0000000..4f60815 --- /dev/null +++ b/game/addons/Godoxel/actions/Cut.gd @@ -0,0 +1,82 @@ +extends GEAction +class_name GECut + +const selection_color = Color(0.8, 0.8, 0.8, 0.5) +var mouse_start_pos = null +var mouse_end_pos = null + + +func can_commit() -> bool: + return false #ugly way of handling a cut + + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + if mouse_start_pos == null: + mouse_start_pos = data[0] + mouse_end_pos = data[0] + + action_data.preview.cells.clear() + action_data.preview.colors.clear() + canvas.clear_preview_layer() + + var p = mouse_start_pos + var s = mouse_end_pos - mouse_start_pos + + var pixels = GEUtils.get_pixels_in_line(p, p + Vector2(s.x, 0)) + pixels += GEUtils.get_pixels_in_line(p, p + Vector2(0, s.y)) + pixels += GEUtils.get_pixels_in_line(p + s, p + s + Vector2(0, -s.y)) + pixels += GEUtils.get_pixels_in_line(p + s, p + s + Vector2(-s.x, 0)) + + for pixel in pixels: + canvas.set_preview_pixel_v(pixel, selection_color) + action_data.preview.cells.append(pixel) + action_data.preview.colors.append(selection_color) + + +func commit_action(canvas): + canvas.clear_preview_layer() + var p = mouse_start_pos + var s = mouse_end_pos - mouse_start_pos + + for x in range(abs(s.x)+1): + for y in range(abs(s.y)+1): + var px = x + var py = y + if s.x < 0: + px *= -1 + if s.y < 0: + py *= -1 + + var pos = p + Vector2(px, py) + var color = canvas.get_pixel(pos.x, pos.y) + + if color == null or color.a == 0.0: + continue + + action_data.redo.cells.append(pos) + action_data.redo.colors.append(canvas.get_pixel_v(pos)) + + canvas.set_pixel_v(pos, Color.transparent) + + action_data.undo.cells.append(pos) + action_data.undo.colors.append(Color.transparent) + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/Darken.gd b/game/addons/Godoxel/actions/Darken.gd new file mode 100644 index 0000000..3832a17 --- /dev/null +++ b/game/addons/Godoxel/actions/Darken.gd @@ -0,0 +1,55 @@ +extends GEAction +class_name GEDarken + +const dark_factor = 0.1 + + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + var pixels = GEUtils.get_pixels_in_line(data[0], data[1]) + for pixel in pixels: + if canvas.get_pixel_v(pixel) == null: + continue + + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + + if pixel in action_data.undo.cells: + var darkened_color = canvas.get_pixel_v(pixel).darkened(dark_factor) + canvas.set_pixel_v(pixel, darkened_color) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(darkened_color) + continue + + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.undo.cells.append(pixel) + var darkened_color = canvas.get_pixel_v(pixel).darkened(dark_factor) + canvas.set_pixel_v(pixel, darkened_color) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(darkened_color) + + +func commit_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/Line.gd b/game/addons/Godoxel/actions/Line.gd new file mode 100644 index 0000000..6f17316 --- /dev/null +++ b/game/addons/Godoxel/actions/Line.gd @@ -0,0 +1,59 @@ +extends GEAction +class_name GELine + + +var mouse_start_pos = null + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + if mouse_start_pos == null: + mouse_start_pos = data[0] + + action_data.preview.cells.clear() + action_data.preview.colors.clear() + canvas.clear_preview_layer() + + var pixels = GEUtils.get_pixels_in_line(data[0], mouse_start_pos) + for pixel in pixels: + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + + canvas.set_preview_pixel_v(pixel, data[2]) + action_data.preview.cells.append(pixel) + action_data.preview.colors.append(data[2]) + + +func commit_action(canvas): + canvas.clear_preview_layer() + var cells = action_data.preview.cells + var colors = action_data.preview.colors + for idx in range(cells.size()): + if canvas.get_pixel_v(cells[idx]) == null: + continue + action_data.undo.cells.append(cells[idx]) + action_data.undo.colors.append(canvas.get_pixel_v(cells[idx])) + + canvas.set_pixel_v(cells[idx], colors[idx]) + + action_data.redo.cells.append(cells[idx]) + action_data.redo.colors.append(colors[idx]) + mouse_start_pos = null + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/MultiLine.gd b/game/addons/Godoxel/actions/MultiLine.gd new file mode 100644 index 0000000..b3850ff --- /dev/null +++ b/game/addons/Godoxel/actions/MultiLine.gd @@ -0,0 +1,44 @@ +extends GEAction +class_name GEMultiLine + + +func can_commit() -> bool: + return false + + +func update_action(canvas, data: Array): + .update_action(canvas, data) + + var pixels = GEUtils.get_pixels_in_line(data[0], data[1]) + for pixel in pixels: + if pixel in action_data.undo.cells or canvas.get_pixel_v(pixel) == null or canvas.is_alpha_locked(): + continue + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.undo.cells.append(pixel) + canvas.set_pixel_v(pixel, data[2]) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(data[2]) + + +func commit_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/PasteCut.gd b/game/addons/Godoxel/actions/PasteCut.gd new file mode 100644 index 0000000..5ffaa8e --- /dev/null +++ b/game/addons/Godoxel/actions/PasteCut.gd @@ -0,0 +1,59 @@ +extends GEAction +class_name GEPasteCut + + +#data[2] = selection_pos +#data[3] = selection_color +#data[4] = cut pos +#data[5] = cut size +func do_action(canvas, data: Array): + .do_action(canvas, data) + + for pixel_pos in GEUtils.get_pixels_in_line(data[0], data[1]): + for idx in range(data[2].size()): + var pixel = data[2][idx] + var color = data[3][idx] + pixel -= data[4] + data[5] / 2 + pixel += pixel_pos + + if canvas.get_pixel_v(pixel) == null: + continue + + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + + var found = action_data.redo.cells.find(pixel) + if found == -1: + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(color) + else: + action_data.redo.colors[found] = color + + found = action_data.undo.cells.find(pixel) + if found == -1: + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.undo.cells.append(pixel) + + canvas.set_pixel_v(pixel, color) + + +func commit_action(canvas): + canvas.clear_preview_layer() + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/Pencil.gd b/game/addons/Godoxel/actions/Pencil.gd new file mode 100644 index 0000000..906236f --- /dev/null +++ b/game/addons/Godoxel/actions/Pencil.gd @@ -0,0 +1,43 @@ +extends GEAction +class_name GEPencil + + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + var pixels = GEUtils.get_pixels_in_line(data[0], data[1]) + for pixel in pixels: + for p in get_points(canvas, pixel): + _set_pixel(canvas, p, data[2]) + + +func _set_pixel(canvas, pixel, color): + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.undo.cells.append(pixel) + canvas.set_pixel_v(pixel, color) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(color) + + +func commit_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/Rainbow.gd b/game/addons/Godoxel/actions/Rainbow.gd new file mode 100644 index 0000000..618bdd1 --- /dev/null +++ b/game/addons/Godoxel/actions/Rainbow.gd @@ -0,0 +1,58 @@ +extends GEAction +class_name GERainbow + + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + var pixels = GEUtils.get_pixels_in_line(data[0], data[1]) + for pixel in pixels: + if canvas.get_pixel_v(pixel) == null: + continue + + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + + if pixel in action_data.undo.cells: + var color = GEUtils.random_color() + canvas.set_pixel_v(pixel, color) + + var idx = action_data.redo.cells.find(pixel) + action_data.redo.cells.remove(idx) + action_data.redo.colors.remove(idx) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(color) + continue + + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.undo.cells.append(pixel) + + var color = GEUtils.random_color() + canvas.set_pixel_v(pixel, color) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(color) + + +func commit_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/Rect.gd b/game/addons/Godoxel/actions/Rect.gd new file mode 100644 index 0000000..770e28b --- /dev/null +++ b/game/addons/Godoxel/actions/Rect.gd @@ -0,0 +1,69 @@ +extends GEAction +class_name GERect + + +var mouse_start_pos = null + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + if mouse_start_pos == null: + mouse_start_pos = data[0] + #print("init:", mouse_start_pos) + + + action_data.undo.cells.clear() + action_data.undo.colors.clear() + action_data.preview.cells.clear() + action_data.preview.colors.clear() + canvas.clear_preview_layer() + + var p = mouse_start_pos + var s = data[0] - mouse_start_pos + var pixels = GEUtils.get_pixels_in_line(p, p + Vector2(s.x, 0)) + pixels += GEUtils.get_pixels_in_line(p, p + Vector2(0, s.y)) + pixels += GEUtils.get_pixels_in_line(p + s, p + s + Vector2(0, -s.y)) + pixels += GEUtils.get_pixels_in_line(p + s, p + s + Vector2(-s.x, 0)) + + for pixel in pixels: + if canvas.get_pixel_v(pixel) == null: + continue + + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + + canvas.set_preview_pixel_v(pixel, data[2]) + action_data.undo.cells.append(pixel) + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.preview.cells.append(pixel) + action_data.preview.colors.append(data[2]) + + +func commit_action(canvas): + canvas.clear_preview_layer() + var cells = action_data.preview.cells + var colors = action_data.preview.colors + for idx in range(cells.size()): + canvas.set_pixel_v(cells[idx], colors[idx]) + + action_data.redo.cells.append(cells[idx]) + action_data.redo.colors.append(colors[idx]) + mouse_start_pos = null + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/assets/BrushCircle.png b/game/addons/Godoxel/assets/BrushCircle.png new file mode 100644 index 0000000..2924980 Binary files /dev/null and b/game/addons/Godoxel/assets/BrushCircle.png differ diff --git a/game/addons/Godoxel/assets/BrushCircle.png.import b/game/addons/Godoxel/assets/BrushCircle.png.import new file mode 100644 index 0000000..6c0c697 --- /dev/null +++ b/game/addons/Godoxel/assets/BrushCircle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/BrushCircle.png-dd250909fee7964ffc38f7e4fcfe9c07.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/BrushCircle.png" +dest_files=[ "res://.import/BrushCircle.png-dd250909fee7964ffc38f7e4fcfe9c07.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/BrushCircle_Hovered.png b/game/addons/Godoxel/assets/BrushCircle_Hovered.png new file mode 100644 index 0000000..d955418 Binary files /dev/null and b/game/addons/Godoxel/assets/BrushCircle_Hovered.png differ diff --git a/game/addons/Godoxel/assets/BrushCircle_Hovered.png.import b/game/addons/Godoxel/assets/BrushCircle_Hovered.png.import new file mode 100644 index 0000000..262712b --- /dev/null +++ b/game/addons/Godoxel/assets/BrushCircle_Hovered.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/BrushCircle_Hovered.png-ae1a4d835af51e8a293b71d6a241b71c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/BrushCircle_Hovered.png" +dest_files=[ "res://.import/BrushCircle_Hovered.png-ae1a4d835af51e8a293b71d6a241b71c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/BrushHLine.png b/game/addons/Godoxel/assets/BrushHLine.png new file mode 100644 index 0000000..ab8b7f5 Binary files /dev/null and b/game/addons/Godoxel/assets/BrushHLine.png differ diff --git a/game/addons/Godoxel/assets/BrushHLine.png.import b/game/addons/Godoxel/assets/BrushHLine.png.import new file mode 100644 index 0000000..dc4eaf1 --- /dev/null +++ b/game/addons/Godoxel/assets/BrushHLine.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/BrushHLine.png-9182ec8ac804af16d356bf911782e299.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/BrushHLine.png" +dest_files=[ "res://.import/BrushHLine.png-9182ec8ac804af16d356bf911782e299.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/BrushHLine_Hovered.png b/game/addons/Godoxel/assets/BrushHLine_Hovered.png new file mode 100644 index 0000000..c2a5238 Binary files /dev/null and b/game/addons/Godoxel/assets/BrushHLine_Hovered.png differ diff --git a/game/addons/Godoxel/assets/BrushHLine_Hovered.png.import b/game/addons/Godoxel/assets/BrushHLine_Hovered.png.import new file mode 100644 index 0000000..a5a460b --- /dev/null +++ b/game/addons/Godoxel/assets/BrushHLine_Hovered.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/BrushHLine_Hovered.png-e51d5f3c1628c510a225057f3ed60d5a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/BrushHLine_Hovered.png" +dest_files=[ "res://.import/BrushHLine_Hovered.png-e51d5f3c1628c510a225057f3ed60d5a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/BrushRect.png b/game/addons/Godoxel/assets/BrushRect.png new file mode 100644 index 0000000..a88cc75 Binary files /dev/null and b/game/addons/Godoxel/assets/BrushRect.png differ diff --git a/game/addons/Godoxel/assets/BrushRect.png.import b/game/addons/Godoxel/assets/BrushRect.png.import new file mode 100644 index 0000000..73e3317 --- /dev/null +++ b/game/addons/Godoxel/assets/BrushRect.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/BrushRect.png-2b2d0ae4889c1fbc5c7bee7ae5515663.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/BrushRect.png" +dest_files=[ "res://.import/BrushRect.png-2b2d0ae4889c1fbc5c7bee7ae5515663.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/BrushRect_Hovered.png b/game/addons/Godoxel/assets/BrushRect_Hovered.png new file mode 100644 index 0000000..4df526a Binary files /dev/null and b/game/addons/Godoxel/assets/BrushRect_Hovered.png differ diff --git a/game/addons/Godoxel/assets/BrushRect_Hovered.png.import b/game/addons/Godoxel/assets/BrushRect_Hovered.png.import new file mode 100644 index 0000000..df4596c --- /dev/null +++ b/game/addons/Godoxel/assets/BrushRect_Hovered.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/BrushRect_Hovered.png-b09066b673d6082ce887a03a19f17977.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/BrushRect_Hovered.png" +dest_files=[ "res://.import/BrushRect_Hovered.png-b09066b673d6082ce887a03a19f17977.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/BrushVLine.png b/game/addons/Godoxel/assets/BrushVLine.png new file mode 100644 index 0000000..dd047f7 Binary files /dev/null and b/game/addons/Godoxel/assets/BrushVLine.png differ diff --git a/game/addons/Godoxel/assets/BrushVLine.png.import b/game/addons/Godoxel/assets/BrushVLine.png.import new file mode 100644 index 0000000..6eaf85a --- /dev/null +++ b/game/addons/Godoxel/assets/BrushVLine.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/BrushVLine.png-022220d888fe2fe2f8a081bcca62b4b2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/BrushVLine.png" +dest_files=[ "res://.import/BrushVLine.png-022220d888fe2fe2f8a081bcca62b4b2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/BrushVLine_Hovered.png b/game/addons/Godoxel/assets/BrushVLine_Hovered.png new file mode 100644 index 0000000..7ad6863 Binary files /dev/null and b/game/addons/Godoxel/assets/BrushVLine_Hovered.png differ diff --git a/game/addons/Godoxel/assets/BrushVLine_Hovered.png.import b/game/addons/Godoxel/assets/BrushVLine_Hovered.png.import new file mode 100644 index 0000000..d1ec261 --- /dev/null +++ b/game/addons/Godoxel/assets/BrushVLine_Hovered.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/BrushVLine_Hovered.png-104e29757699756f1b44bd32a622df2c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/BrushVLine_Hovered.png" +dest_files=[ "res://.import/BrushVLine_Hovered.png-104e29757699756f1b44bd32a622df2c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/Godoxel_Preview.png b/game/addons/Godoxel/assets/Godoxel_Preview.png new file mode 100644 index 0000000..06bd3c6 Binary files /dev/null and b/game/addons/Godoxel/assets/Godoxel_Preview.png differ diff --git a/game/addons/Godoxel/assets/Godoxel_Preview.png.import b/game/addons/Godoxel/assets/Godoxel_Preview.png.import new file mode 100644 index 0000000..53fe208 --- /dev/null +++ b/game/addons/Godoxel/assets/Godoxel_Preview.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Godoxel_Preview.png-e30103581d3fc0ed2a2c92cdf72b5c70.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/Godoxel_Preview.png" +dest_files=[ "res://.import/Godoxel_Preview.png-e30103581d3fc0ed2a2c92cdf72b5c70.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/arrow_down.png b/game/addons/Godoxel/assets/arrow_down.png new file mode 100644 index 0000000..9673c8d Binary files /dev/null and b/game/addons/Godoxel/assets/arrow_down.png differ diff --git a/game/addons/Godoxel/assets/arrow_down.png.import b/game/addons/Godoxel/assets/arrow_down.png.import new file mode 100644 index 0000000..b9e87b6 --- /dev/null +++ b/game/addons/Godoxel/assets/arrow_down.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow_down.png-d2bd93428c0bc172a28a43c55aac576e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/arrow_down.png" +dest_files=[ "res://.import/arrow_down.png-d2bd93428c0bc172a28a43c55aac576e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/arrow_up.png b/game/addons/Godoxel/assets/arrow_up.png new file mode 100644 index 0000000..b6bec65 Binary files /dev/null and b/game/addons/Godoxel/assets/arrow_up.png differ diff --git a/game/addons/Godoxel/assets/arrow_up.png.import b/game/addons/Godoxel/assets/arrow_up.png.import new file mode 100644 index 0000000..4ea01b4 --- /dev/null +++ b/game/addons/Godoxel/assets/arrow_up.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow_up.png-2598e148d1b795a628ce80a4fd5cf401.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/arrow_up.png" +dest_files=[ "res://.import/arrow_up.png-2598e148d1b795a628ce80a4fd5cf401.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/COPYRIGHT.TXT b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/COPYRIGHT.TXT new file mode 100644 index 0000000..e651be1 --- /dev/null +++ b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/COPYRIGHT.TXT @@ -0,0 +1,124 @@ +Bitstream Vera Fonts Copyright + +The fonts have a generous copyright, allowing derivative works (as +long as "Bitstream" or "Vera" are not in the names), and full +redistribution (so long as they are not *sold* by themselves). They +can be be bundled, redistributed and sold with any software. + +The fonts are distributed under the following copyright: + +Copyright +========= + +Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream +Vera is a trademark of Bitstream, Inc. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the fonts accompanying this license ("Fonts") and associated +documentation files (the "Font Software"), to reproduce and distribute +the Font Software, including without limitation the rights to use, +copy, merge, publish, distribute, and/or sell copies of the Font +Software, and to permit persons to whom the Font Software is furnished +to do so, subject to the following conditions: + +The above copyright and trademark notices and this permission notice +shall be included in all copies of one or more of the Font Software +typefaces. + +The Font Software may be modified, altered, or added to, and in +particular the designs of glyphs or characters in the Fonts may be +modified and additional glyphs or characters may be added to the +Fonts, only if the fonts are renamed to names not containing either +the words "Bitstream" or the word "Vera". + +This License becomes null and void to the extent applicable to Fonts +or Font Software that has been modified and is distributed under the +"Bitstream Vera" names. + +The Font Software may be sold as part of a larger software package but +no copy of one or more of the Font Software typefaces may be sold by +itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL +BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, +OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT +SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + +Except as contained in this notice, the names of Gnome, the Gnome +Foundation, and Bitstream Inc., shall not be used in advertising or +otherwise to promote the sale, use or other dealings in this Font +Software without prior written authorization from the Gnome Foundation +or Bitstream Inc., respectively. For further information, contact: +fonts at gnome dot org. + +Copyright FAQ +============= + + 1. I don't understand the resale restriction... What gives? + + Bitstream is giving away these fonts, but wishes to ensure its + competitors can't just drop the fonts as is into a font sale system + and sell them as is. It seems fair that if Bitstream can't make money + from the Bitstream Vera fonts, their competitors should not be able to + do so either. You can sell the fonts as part of any software package, + however. + + 2. I want to package these fonts separately for distribution and + sale as part of a larger software package or system. Can I do so? + + Yes. A RPM or Debian package is a "larger software package" to begin + with, and you aren't selling them independently by themselves. + See 1. above. + + 3. Are derivative works allowed? + Yes! + + 4. Can I change or add to the font(s)? + Yes, but you must change the name(s) of the font(s). + + 5. Under what terms are derivative works allowed? + + You must change the name(s) of the fonts. This is to ensure the + quality of the fonts, both to protect Bitstream and Gnome. We want to + ensure that if an application has opened a font specifically of these + names, it gets what it expects (though of course, using fontconfig, + substitutions could still could have occurred during font + opening). You must include the Bitstream copyright. Additional + copyrights can be added, as per copyright law. Happy Font Hacking! + + 6. If I have improvements for Bitstream Vera, is it possible they might get + adopted in future versions? + + Yes. The contract between the Gnome Foundation and Bitstream has + provisions for working with Bitstream to ensure quality additions to + the Bitstream Vera font family. Please contact us if you have such + additions. Note, that in general, we will want such additions for the + entire family, not just a single font, and that you'll have to keep + both Gnome and Jim Lyles, Vera's designer, happy! To make sense to add + glyphs to the font, they must be stylistically in keeping with Vera's + design. Vera cannot become a "ransom note" font. Jim Lyles will be + providing a document describing the design elements used in Vera, as a + guide and aid for people interested in contributing to Vera. + + 7. I want to sell a software package that uses these fonts: Can I do so? + + Sure. Bundle the fonts with your software and sell your software + with the fonts. That is the intent of the copyright. + + 8. If applications have built the names "Bitstream Vera" into them, + can I override this somehow to use fonts of my choosing? + + This depends on exact details of the software. Most open source + systems and software (e.g., Gnome, KDE, etc.) are now converting to + use fontconfig (see www.fontconfig.org) to handle font configuration, + selection and substitution; it has provisions for overriding font + names and subsituting alternatives. An example is provided by the + supplied local.conf file, which chooses the family Bitstream Vera for + "sans", "serif" and "monospace". Other software (e.g., the XFree86 + core server) has other mechanisms for font substitution. + diff --git a/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/README.TXT b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/README.TXT new file mode 100644 index 0000000..0f71795 --- /dev/null +++ b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/README.TXT @@ -0,0 +1,11 @@ +Contained herin is the Bitstream Vera font family. + +The Copyright information is found in the COPYRIGHT.TXT file (along +with being incoporated into the fonts themselves). + +The releases notes are found in the file "RELEASENOTES.TXT". + +We hope you enjoy Vera! + + Bitstream, Inc. + The Gnome Project diff --git a/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/RELEASENOTES.TXT b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/RELEASENOTES.TXT new file mode 100644 index 0000000..270bc0d --- /dev/null +++ b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/RELEASENOTES.TXT @@ -0,0 +1,162 @@ +Bitstream Vera Fonts - April 16, 2003 +===================================== + +The version number of these fonts is 1.10 to distinguish them from the +beta test fonts. + +Note that the Vera copyright is incorporated in the fonts themselves. +The License field in the fonts contains the copyright license as it +appears below. The TrueType copyright field is not large enough to +contain the full license, so the license is incorporated (as you might +think if you thought about it) into the license field, which +unfortunately can be obscure to find. (In pfaedit, see: Element->Font +Info->TTFNames->License). + +Our apologies for it taking longer to complete the fonts than planned. +Beta testers requested a tighter line spacing (less leading) and Jim +Lyles redesigned Vera's accents to bring its line spacing to more +typical of other fonts. This took additional time and effort. Our +thanks to Jim for this effort above and beyond the call of duty. + +There are four monospace and sans faces (normal, oblique, bold, bold +oblique) and two serif faces (normal and bold). Fontconfig/Xft2 (see +www.fontconfig.org) can artificially oblique the serif faces for you: +this loses hinting and distorts the faces slightly, but is visibly +different than normal and bold, and reasonably pleasing. + +On systems with fontconfig 2.0 or 2.1 installed, making your sans, +serif and monospace fonts default to these fonts is very easy. Just +drop the file local.conf into your /etc/fonts directory. This will +make the Bitstream fonts your default fonts for all applications using +fontconfig (if sans, serif, or monospace names are used, as they often +are as default values in many desktops). The XML in local.conf may +need modification to enable subpixel decimation, if appropriate, +however, the commented out phrase does so for XFree86 4.3, in the case +that the server does not have sufficient information to identify the +use of a flat panel. Fontconfig 2.2 adds Vera to the list of font +families and will, by default use it as the default sans, serif and +monospace fonts. + +During the testing of the final Vera fonts, we learned that screen +fonts in general are only typically hinted to work correctly at +integer pixel sizes. Vera is coded internally for integer sizes only. +We need to investigate further to see if there are commonly used fonts +that are hinted to be rounded but are not rounded to integer sizes due +to oversights in their coding. + +Most fonts work best at 8 pixels and below if anti-aliased only, as +the amount of work required to hint well at smaller and smaller sizes +becomes astronomical. GASP tables are typically used to control +whether hinting is used or not, but Freetype/Xft does not currently +support GASP tables (which are present in Vera). + +To mitigate this problem, both for Vera and other fonts, there will be +(very shortly) a new fontconfig 2.2 release that will, by default not +apply hints if the size is below 8 pixels. if you should have a font +that in fact has been hinted more agressively, you can use fontconfig +to note this exception. We believe this should improve many hinted +fonts in addition to Vera, though implemeting GASP support is likely +the right long term solution. + +Font rendering in Gnome or KDE is the combination of algorithms in +Xft2 and Freetype, along with hinting in the fonts themselves. It is +vital to have sufficient information to disentangle problems that you +may observe. + +Note that having your font rendering system set up correctly is vital +to proper judgement of problems of the fonts: + + * Freetype may or may not be configured to in ways that may + implement execution of possibly patented (in some parts of the world) + TrueType hinting algorithms, particularly at small sizes. Best + results are obtained while using these algorithms. + + * The freetype autohinter (used when the possibly patented + algorithms are not used) continues to improve with each release. If + you are using the autohinter, please ensure you are using an up to + date version of freetype before reporting problems. + + * Please identify what version of freetype you are using in any + bug reports, and how your freetype is configured. + + * Make sure you are not using the freetype version included in + XFree86 4.3, as it has bugs that significantly degrade most fonts, + including Vera. if you build XFree86 4.3 from source yourself, you may + have installed this broken version without intending it (as I + did). Vera was verified with the recently released Freetype 2.1.4. On + many systems, 'ldd" can be used to see which freetype shared library + is actually being used. + + * Xft/X Render does not (yet) implement gamma correction. This + causes significant problems rendering white text on a black background + (causing partial pixels to be insufficiently shaded) if the gamma of + your monitor has not been compensated for, and minor problems with + black text on a while background. The program "xgamma" can be used to + set a gamma correction value in the X server's color pallette. Most + monitors have a gamma near 2. + + * Note that the Vera family uses minimal delta hinting. Your + results on other systems when not used anti-aliased may not be + entirely satisfying. We are primarily interested in reports of + problems on open source systems implementing Xft2/fontconfig/freetype + (which implements antialiasing and hinting adjustements, and + sophisticated subpixel decimation on flatpanels). Also, the + algorithms used by Xft2 adjust the hints to integer widths and the + results are crisper on open source systems than on Windows or + MacIntosh. + + * Your fontconfig may (probably does) predate the release of + fontconfig 2.2, and you may see artifacts not present when the font is + used at very small sizes with hinting enabled. "vc-list -V" can be + used to see what version you have installed. + +We believe and hope that these fonts will resolve the problems +reported during beta test. The largest change is the reduction of +leading (interline spacing), which had annoyed a number of people, and +reduced Vera's utility for some applcations. The Vera monospace font +should also now make '0' and 'O' and '1' and 'l' more clearly +distinguishable. + +The version of these fonts is version 1.10. Fontconfig should be +choosing the new version of the fonts if both the released fonts and +beta test fonts are installed (though please discard them: they have +names of form tt20[1-12]gn.ttf). Note that older versions of +fontconfig sometimes did not rebuild their cache correctly when new +fonts are installed: please upgrade to fontconfig 2.2. "fc-cache -f" +can be used to force rebuilding fontconfig's cache files. + +If you note problems, please send them to fonts at gnome dot org, with +exactly which face and size and unicode point you observe the problem +at. The xfd utility from XFree86 CVS may be useful for this (e.g. "xfd +-fa sans"). A possibly more useful program to examine fonts at a +variety of sizes is the "waterfall" program found in Keith Packard's +CVS. + + $ cvs -d :pserver:anoncvs@keithp.com:/local/src/CVS login + Logging in to :pserver:anoncvs@keithp.com:2401/local/src/CVS + CVS password: + $ cvs -d :pserver:anoncvs@keithp.com:/local/src/CVS co waterfall + $ cd waterfall + $ xmkmf -a + $ make + # make install + # make install.man + +Again, please make sure you are running an up-to-date freetype, and +that you are only examining integer sizes. + +Reporting Problems +================== + +Please send problem reports to fonts at gnome org, with the following +information: + + 1. Version of Freetype, Xft2 and fontconfig + 2. Whether TT hinting is being used, or the autohinter + 3. Application being used + 4. Character/Unicode code point that has problems (if applicable) + 5. Version of which operating system + 6. Please include a screenshot, when possible. + +Please check the fonts list archives before reporting problems to cut +down on duplication. diff --git a/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/Vera.ttf b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/Vera.ttf new file mode 100644 index 0000000..58cd6b5 Binary files /dev/null and b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/Vera.ttf differ diff --git a/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/VeraBI.ttf b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/VeraBI.ttf new file mode 100644 index 0000000..b55eee3 Binary files /dev/null and b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/VeraBI.ttf differ diff --git a/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/VeraBd.ttf b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/VeraBd.ttf new file mode 100644 index 0000000..51d6111 Binary files /dev/null and b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/VeraBd.ttf differ diff --git a/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/VeraIt.ttf b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/VeraIt.ttf new file mode 100644 index 0000000..cc23c9e Binary files /dev/null and b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/VeraIt.ttf differ diff --git a/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/all-free-download.com.url b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/all-free-download.com.url new file mode 100644 index 0000000..be505ef --- /dev/null +++ b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/all-free-download.com.url @@ -0,0 +1,8 @@ +[InternetShortcut] +URL=http://www.all-free-download.com/ +IDList= +HotKey=0 +IconFile=C:\WINDOWS\system32\SHELL32.dll +IconIndex=23 +[{000214A0-0000-0000-C000-000000000046}] +Prop3=19,2 diff --git a/game/addons/Godoxel/assets/grid.png b/game/addons/Godoxel/assets/grid.png new file mode 100644 index 0000000..71a1664 Binary files /dev/null and b/game/addons/Godoxel/assets/grid.png differ diff --git a/game/addons/Godoxel/assets/grid.png.import b/game/addons/Godoxel/assets/grid.png.import new file mode 100644 index 0000000..eac50ac --- /dev/null +++ b/game/addons/Godoxel/assets/grid.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/grid.png-e3d637acacdb891e09f422df261dbd1e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/grid.png" +dest_files=[ "res://.import/grid.png-e3d637acacdb891e09f422df261dbd1e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/lock_layer.png b/game/addons/Godoxel/assets/lock_layer.png new file mode 100644 index 0000000..8bd4802 Binary files /dev/null and b/game/addons/Godoxel/assets/lock_layer.png differ diff --git a/game/addons/Godoxel/assets/lock_layer.png.import b/game/addons/Godoxel/assets/lock_layer.png.import new file mode 100644 index 0000000..5fd8060 --- /dev/null +++ b/game/addons/Godoxel/assets/lock_layer.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/lock_layer.png-076954b389746de9e13c853ed5d9ba59.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/lock_layer.png" +dest_files=[ "res://.import/lock_layer.png-076954b389746de9e13c853ed5d9ba59.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/lock_layer_1.png b/game/addons/Godoxel/assets/lock_layer_1.png new file mode 100644 index 0000000..317cb3f Binary files /dev/null and b/game/addons/Godoxel/assets/lock_layer_1.png differ diff --git a/game/addons/Godoxel/assets/lock_layer_1.png.import b/game/addons/Godoxel/assets/lock_layer_1.png.import new file mode 100644 index 0000000..e3cb23a --- /dev/null +++ b/game/addons/Godoxel/assets/lock_layer_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/lock_layer_1.png-4848d5f2cd0f48c68b880712b6b38776.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/lock_layer_1.png" +dest_files=[ "res://.import/lock_layer_1.png-4848d5f2cd0f48c68b880712b6b38776.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/minidotta.png b/game/addons/Godoxel/assets/minidotta.png new file mode 100644 index 0000000..2f2a7fc Binary files /dev/null and b/game/addons/Godoxel/assets/minidotta.png differ diff --git a/game/addons/Godoxel/assets/minidotta.png.import b/game/addons/Godoxel/assets/minidotta.png.import new file mode 100644 index 0000000..462757f --- /dev/null +++ b/game/addons/Godoxel/assets/minidotta.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/minidotta.png-adac81df344972ef82e2499656aa288e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/minidotta.png" +dest_files=[ "res://.import/minidotta.png-adac81df344972ef82e2499656aa288e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/minidotta_invis.png b/game/addons/Godoxel/assets/minidotta_invis.png new file mode 100644 index 0000000..3050928 Binary files /dev/null and b/game/addons/Godoxel/assets/minidotta_invis.png differ diff --git a/game/addons/Godoxel/assets/minidotta_invis.png.import b/game/addons/Godoxel/assets/minidotta_invis.png.import new file mode 100644 index 0000000..607a755 --- /dev/null +++ b/game/addons/Godoxel/assets/minidotta_invis.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/minidotta_invis.png-5232a113bb226997ae55212b2aa90bd4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/minidotta_invis.png" +dest_files=[ "res://.import/minidotta_invis.png-5232a113bb226997ae55212b2aa90bd4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/unlock_layer.png b/game/addons/Godoxel/assets/unlock_layer.png new file mode 100644 index 0000000..36694fd Binary files /dev/null and b/game/addons/Godoxel/assets/unlock_layer.png differ diff --git a/game/addons/Godoxel/assets/unlock_layer.png.import b/game/addons/Godoxel/assets/unlock_layer.png.import new file mode 100644 index 0000000..17d2172 --- /dev/null +++ b/game/addons/Godoxel/assets/unlock_layer.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/unlock_layer.png-ae7c97a04fb889522c7c466fdc9dd8f6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/unlock_layer.png" +dest_files=[ "res://.import/unlock_layer.png-ae7c97a04fb889522c7c466fdc9dd8f6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/dialogs/ChangeGridSizeDialog.gd b/game/addons/Godoxel/dialogs/ChangeGridSizeDialog.gd new file mode 100644 index 0000000..2aea630 --- /dev/null +++ b/game/addons/Godoxel/dialogs/ChangeGridSizeDialog.gd @@ -0,0 +1,28 @@ +extends AcceptDialog +tool + +func _ready(): + yield(owner, "ready") + find_node("GridValue").value = owner.paint_canvas.grid_size + find_node("BigGridValue").value = owner.paint_canvas.big_grid_size + + +func _on_ChangeGridSizeDialog_confirmed(): + var grid_size = find_node("GridValue").value + var big_grid_size = find_node("BigGridValue").value + owner.paint_canvas.grid_size = grid_size + owner.paint_canvas.big_grid_size = big_grid_size + + +func _on_GridValue_value_changed(value): + var grid_size = value + owner.paint_canvas.grid_size = grid_size + + +func _on_BigGridValue_value_changed(value): + var big_grid_size = value + owner.paint_canvas.big_grid_size = big_grid_size + + +func _on_ChangeGridSizeDialog_visibility_changed(): + pass # Replace with function body. diff --git a/game/addons/Godoxel/dialogs/ConfirmationDialog.gd b/game/addons/Godoxel/dialogs/ConfirmationDialog.gd new file mode 100644 index 0000000..07b15a0 --- /dev/null +++ b/game/addons/Godoxel/dialogs/ConfirmationDialog.gd @@ -0,0 +1,20 @@ +extends ConfirmationDialog +tool + +func _ready(): + yield(owner, "ready") + find_node("Width").value = owner.paint_canvas.canvas_width + find_node("Height").value = owner.paint_canvas.canvas_height + + +func _on_ConfirmationDialog_confirmed(): + var width = find_node("Width").value + var height = find_node("Height").value + print("change canvas size: ", width, " ", height) + owner.paint_canvas.resize(width, height) + + +func _on_ChangeCanvasSize_visibility_changed(): + if visible: + find_node("Width").value = owner.paint_canvas.canvas_width + find_node("Height").value = owner.paint_canvas.canvas_height diff --git a/game/addons/Godoxel/dialogs/LoadFileDialog.gd b/game/addons/Godoxel/dialogs/LoadFileDialog.gd new file mode 100644 index 0000000..858f2d3 --- /dev/null +++ b/game/addons/Godoxel/dialogs/LoadFileDialog.gd @@ -0,0 +1,70 @@ +tool +extends FileDialog + + +var canvas: GECanvas + +var file_path = "" + + +func _ready(): + get_line_edit().connect("text_entered", self, "_on_LineEdit_text_entered") + invalidate() + clear_filters() + add_filter("*.png ; PNG Images") + + +func _on_LineEdit_text_entered(_text): + return +# print(_text) + #load_img() +# print("hsadfasd") + + +func _on_LoadFileDialog_file_selected(path): + file_path = path + #print("1ere") + load_img() + + +func _on_LoadFileDialog_confirmed(): + return + #print("ere") + #load_img() + + +func load_img(): + var image = Image.new() + if image.load(file_path) != OK: + print("couldn't load image!") + return + + var image_data = image.get_data() + var layer: GELayer = owner.add_new_layer() + + var width = image.get_width() + var height = image.get_height() + + if owner.paint_canvas.canvas_width < width: + owner.paint_canvas.resize(width, owner.paint_canvas.canvas_height) + + if owner.paint_canvas.canvas_height < height: + owner.paint_canvas.resize(owner.paint_canvas.canvas_width, height) + + for i in range(image_data.size() / 4): + var color = Color(image_data[i*4] / 255.0, image_data[i*4+1] / 255.0, image_data[i*4+2] / 255.0, image_data[i*4+3] / 255.0) + var pos = GEUtils.to_2D(i, image.get_width()) + if pos.x > layer.layer_width: + continue + + layer.set_pixel(pos.x, pos.y, color) + layer.update_texture() + + + +func _on_LoadFileDialog_about_to_show(): + invalidate() + + +func _on_LoadFileDialog_visibility_changed(): + invalidate() diff --git a/game/addons/Godoxel/dialogs/LoadFileDialog.tscn b/game/addons/Godoxel/dialogs/LoadFileDialog.tscn new file mode 100644 index 0000000..0d083c0 --- /dev/null +++ b/game/addons/Godoxel/dialogs/LoadFileDialog.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=2 format=2] + +[sub_resource type="GDScript" id=1] +script/source = "extends ConfirmationDialog + +func _ready(): + get_ok().connect(\"pressed\", self, \"hide\") + get_cancel().connect(\"pressed\", self, \"hide\") + + + +" + +[node name="LoadFileDialog" type="FileDialog"] +margin_right = 604.0 +margin_bottom = 367.0 +window_title = "Open a File" +mode = 0 +access = 2 +current_dir = "/Projects/BitBucket/GraphicsEditor" +current_path = "/Projects/BitBucket/GraphicsEditor/" +script = SubResource( 1 ) diff --git a/game/addons/Godoxel/plugin.cfg b/game/addons/Godoxel/plugin.cfg new file mode 100644 index 0000000..526cfb3 --- /dev/null +++ b/game/addons/Godoxel/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="Godoxel - Pixel Image Editor" +description="" +author="" +version="" +script="plugin.gd" diff --git a/game/addons/Godoxel/plugin.gd b/game/addons/Godoxel/plugin.gd new file mode 100644 index 0000000..c288aaf --- /dev/null +++ b/game/addons/Godoxel/plugin.gd @@ -0,0 +1,37 @@ +tool +extends EditorPlugin + +var editor_scene = load("res://addons/Godoxel/Editor.tscn").instance() + +func _enter_tree(): + editor_scene.name = "Editor" + if get_editor_interface().get_editor_viewport().has_node("Editor"): + var n = get_editor_interface().get_editor_viewport().get_node("Editor") + n.name = "EditorDel" + n.queue_free() + get_editor_interface().get_editor_viewport().add_child(editor_scene, true) + editor_scene.owner = get_editor_interface().get_editor_viewport() + make_visible(false) + + +func _exit_tree(): + if editor_scene: + editor_scene.queue_free() + + +func has_main_screen(): + return true + + +func make_visible(visible): + if editor_scene: + editor_scene.visible = visible + + +func get_plugin_name(): + return "Godoxel" + + +func get_plugin_icon(): + # Must return some kind of Texture for the icon. + return get_editor_interface().get_base_control().get_icon("CanvasModulate", "EditorIcons") diff --git a/game/addons/mat_maker_gd/LICENSE.md b/game/addons/mat_maker_gd/LICENSE.md new file mode 100644 index 0000000..ca6aeaf --- /dev/null +++ b/game/addons/mat_maker_gd/LICENSE.md @@ -0,0 +1,22 @@ +# MIT License + +Copyright (c) 2020 Péter Magyar +Copyright (c) 2018-2020 Rodolphe Suescun and contributors + +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/game/addons/mat_maker_gd/README.md b/game/addons/mat_maker_gd/README.md new file mode 100644 index 0000000..f5f42f6 --- /dev/null +++ b/game/addons/mat_maker_gd/README.md @@ -0,0 +1,22 @@ +# mat_maker_gd + +My goal with this project is to take Material Maker's ( https://github.com/RodZill4/material-maker ) code, +and make it an in-godot texture/image generator. + +If it turns out well I'll probably turn it into a c++ engine module eventually. + +Multi threading uses my threadpool engine module for now. + +## Status: + +Missing ~ 60 nodes from ~ 195. + +## TODOS + +- [ ] Go through the current MaterialMaker and add the code from all the new nodes. +- [ ] Go through the current MaterialMaker and update any old code. +- [ ] Add note to all files that has code from MaterialMaker. +- [ ] Proper readme.md. +- [ ] Per node seed like in the original. +- [ ] Port all the nodes. Missing ~ 60 from ~ 195 +- [ ] Somehow get ctrl-s to always just save the edited material, instead of having to double click it (for the inspector to update), and then clicking the save icon and selecting save. diff --git a/game/addons/mat_maker_gd/editor/CreateNamePopup.gd b/game/addons/mat_maker_gd/editor/CreateNamePopup.gd new file mode 100644 index 0000000..c014226 --- /dev/null +++ b/game/addons/mat_maker_gd/editor/CreateNamePopup.gd @@ -0,0 +1,65 @@ +tool +extends ConfirmationDialog + +signal ok_pressed + +export(NodePath) var line_edit_path : NodePath +export(NodePath) var tree_path : NodePath + +export(PoolStringArray) var type_folders : PoolStringArray + +var _resource_type : String = "MMNode" + +var _line_edit : LineEdit +var _tree : Tree + +func _ready(): + _line_edit = get_node(line_edit_path) as LineEdit + _tree = get_node(tree_path) as Tree + + connect("confirmed", self, "_on_OK_pressed") + connect("about_to_show", self, "about_to_show") + +func set_resource_type(resource_type : String) -> void: + _resource_type = resource_type + +func about_to_show(): + _tree.clear() + + var root : TreeItem = _tree.create_item() + + for s in type_folders: + evaluate_folder(s, root) + +func evaluate_folder(folder : String, root : TreeItem) -> void: + var ti : TreeItem = _tree.create_item(root) + ti.set_text(0, folder.substr(folder.find_last("/") + 1)) + + var dir = Directory.new() + if dir.open(folder) == OK: + dir.list_dir_begin() + var file_name = dir.get_next() + while file_name != "": + if !dir.current_is_dir(): + print("Found file: " + file_name) + var e : TreeItem = _tree.create_item(ti) + + e.set_text(0, file_name.get_file()) + e.set_meta("file", folder + "/" + file_name) + + file_name = dir.get_next() + else: + print("An error occurred when trying to access the path.") + +func _on_OK_pressed(): + var selected : TreeItem = _tree.get_selected() + + if selected: + if !selected.has_meta("file"): + hide() + return + + var file_name : String = selected.get_meta("file") + emit_signal("ok_pressed", file_name) + + hide() diff --git a/game/addons/mat_maker_gd/editor/CreateNamePopup.tscn b/game/addons/mat_maker_gd/editor/CreateNamePopup.tscn new file mode 100644 index 0000000..b2f22ac --- /dev/null +++ b/game/addons/mat_maker_gd/editor/CreateNamePopup.tscn @@ -0,0 +1,61 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/editor/CreateNamePopup.gd" type="Script" id=1] + +[node name="CreateNamePopup" type="ConfirmationDialog"] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -245.5 +margin_top = -220.0 +margin_right = 245.5 +margin_bottom = 220.0 +window_title = "Create New Resource" +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +line_edit_path = NodePath("VBoxContainer/LineEdit") +tree_path = NodePath("VBoxContainer/Tree") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +margin_left = 8.0 +margin_top = 8.0 +margin_right = 483.0 +margin_bottom = 404.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label2" type="Label" parent="VBoxContainer"] +margin_right = 475.0 +margin_bottom = 14.0 +size_flags_horizontal = 3 +text = "Type" + +[node name="Tree" type="Tree" parent="VBoxContainer"] +margin_top = 18.0 +margin_right = 475.0 +margin_bottom = 350.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +hide_root = true + +[node name="Label" type="Label" parent="VBoxContainer"] +visible = false +margin_top = 354.0 +margin_right = 475.0 +margin_bottom = 368.0 +size_flags_horizontal = 3 +text = "Name" + +[node name="LineEdit" type="LineEdit" parent="VBoxContainer"] +visible = false +margin_top = 372.0 +margin_right = 475.0 +margin_bottom = 396.0 +size_flags_horizontal = 3 +caret_blink = true diff --git a/game/addons/mat_maker_gd/editor/MatMakerGDEditor.gd b/game/addons/mat_maker_gd/editor/MatMakerGDEditor.gd new file mode 100644 index 0000000..d7fb043 --- /dev/null +++ b/game/addons/mat_maker_gd/editor/MatMakerGDEditor.gd @@ -0,0 +1,148 @@ +tool +extends MarginContainer + +var MMGraphNode = preload("res://addons/mat_maker_gd/editor/mm_graph_node.gd") + +export(PoolColorArray) var slot_colors : PoolColorArray + +export(NodePath) var graph_edit_path : NodePath = "VBoxContainer/GraphEdit" +export(NodePath) var add_popup_path : NodePath = "Popups/AddPopup" + +var _graph_edit : GraphEdit = null + +var _material : MMMateial + +func _enter_tree(): + ensure_objs() + +func ensure_objs() -> void: + if !_graph_edit: + _graph_edit = get_node(graph_edit_path) + + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL) + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_INT, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL) + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL) + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL) + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR3, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL) + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_COLOR, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL) + + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE) + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_INT) + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT) + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2) + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR3) + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_COLOR) + + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL) + + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE) + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_INT, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_INT) + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT) + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2) + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR3, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR3) + _graph_edit.add_valid_connection_type(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_COLOR, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_COLOR) + + _graph_edit.connect("connection_request", self, "on_graph_edit_connection_request") + _graph_edit.connect("disconnection_request", self, "on_graph_edit_disconnection_request") + +func recreate() -> void: + ensure_objs() + + _graph_edit.clear_connections() + + for c in _graph_edit.get_children(): + if c is GraphNode: + _graph_edit.remove_child(c) + c.queue_free() + + if !_material: + return + + _material.cancel_render_and_wait() + + for n in _material.nodes: + var gn : GraphNode = MMGraphNode.new() + gn.slot_colors = slot_colors + gn.set_node(_material, n) + _graph_edit.add_child(gn) + + #connect them + for n in _material.nodes: + if n: + for ip in n.input_properties: + if ip.input_property: + var input_node : Node = find_graph_node_for(n) + var output_node : Node = find_graph_node_for(ip.input_property.owner) + + var to_slot : int = input_node.get_input_property_graph_node_slot_index(ip) + var from_slot : int = output_node.get_output_property_graph_node_slot_index(ip.input_property) + + _graph_edit.connect_node(output_node.name, from_slot, input_node.name, to_slot) + + _material.render() + +func find_graph_node_for(nnode) -> Node: + for c in _graph_edit.get_children(): + if c is GraphNode: + if c.has_method("get_material_node"): + var n = c.get_material_node() + + if n == nnode: + return c + + return null + +func set_mmmaterial(object : MMMateial): + _material = object + + recreate() + +func on_graph_edit_connection_request(from: String, from_slot: int, to: String, to_slot: int): + var from_node : GraphNode = _graph_edit.get_node(from) + var to_node : GraphNode = _graph_edit.get_node(to) + + _material.cancel_render_and_wait() + + if from_node.connect_slot(from_slot, to_node, to_slot): + _graph_edit.connect_node(from, from_slot, to, to_slot) + +func on_graph_edit_disconnection_request(from: String, from_slot: int, to: String, to_slot: int): + var from_node : GraphNode = _graph_edit.get_node(from) + var to_node : GraphNode = _graph_edit.get_node(to) + + _material.cancel_render_and_wait() + + if from_node.disconnect_slot(from_slot, to_node, to_slot): + _graph_edit.disconnect_node(from, from_slot, to, to_slot) + +func on_graph_node_close_request(node : GraphNode) -> void: + if _material: + _material.cancel_render_and_wait() + _material.remove_node(node._node) + recreate() + +func _on_AddButton_pressed(): + get_node(add_popup_path).popup_centered() + +func _on_AddPopup_ok_pressed(script_path : String): + if !_material: + return + + ensure_objs() + + _material.cancel_render_and_wait() + + var sc = load(script_path) + var nnode : MMNode = sc.new() + + if !nnode: + print("_on_AddPopup_ok_pressed: Error !nnode! script: " + script_path) + return + + _material.add_node(nnode) + + var gn : GraphNode = MMGraphNode.new() + gn.slot_colors = slot_colors + gn.set_node(_material, nnode) + _graph_edit.add_child(gn) + diff --git a/game/addons/mat_maker_gd/editor/MatMakerGDEditor.tscn b/game/addons/mat_maker_gd/editor/MatMakerGDEditor.tscn new file mode 100644 index 0000000..c8e3a63 --- /dev/null +++ b/game/addons/mat_maker_gd/editor/MatMakerGDEditor.tscn @@ -0,0 +1,55 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://addons/mat_maker_gd/editor/MatMakerGDEditor.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/editor/CreateNamePopup.tscn" type="PackedScene" id=2] + +[node name="MatMakerGDEditor" type="MarginContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_min_size = Vector2( 0, 200 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +slot_colors = PoolColorArray( 0.905882, 0.0627451, 0.0627451, 1, 0.431373, 0.0352941, 0.0352941, 1, 0.827451, 0.376471, 0.376471, 1, 0.0431373, 0.478431, 0.427451, 1, 0.352941, 0.0352941, 0.341176, 1, 0.0352941, 0.0509804, 1, 1, 0.372549, 0.372549, 0.372549, 1 ) + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +margin_right = 1024.0 +margin_bottom = 600.0 + +[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer"] +margin_right = 1024.0 +margin_bottom = 34.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/PanelContainer"] +margin_left = 7.0 +margin_top = 7.0 +margin_right = 1017.0 +margin_bottom = 27.0 + +[node name="AddButton" type="Button" parent="VBoxContainer/PanelContainer/HBoxContainer"] +margin_right = 37.0 +margin_bottom = 20.0 +text = "Add" + +[node name="GraphEdit" type="GraphEdit" parent="VBoxContainer"] +margin_top = 38.0 +margin_right = 1024.0 +margin_bottom = 600.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +right_disconnects = true +scroll_offset = Vector2( 0, -20 ) + +[node name="Popups" type="Control" parent="."] +margin_right = 1024.0 +margin_bottom = 600.0 +mouse_filter = 2 + +[node name="AddPopup" parent="Popups" instance=ExtResource( 2 )] +type_folders = PoolStringArray( "res://addons/mat_maker_gd/nodes/uniform", "res://addons/mat_maker_gd/nodes/noise", "res://addons/mat_maker_gd/nodes/filter", "res://addons/mat_maker_gd/nodes/gradient", "res://addons/mat_maker_gd/nodes/pattern", "res://addons/mat_maker_gd/nodes/sdf2d", "res://addons/mat_maker_gd/nodes/sdf3d", "res://addons/mat_maker_gd/nodes/transform", "res://addons/mat_maker_gd/nodes/simple", "res://addons/mat_maker_gd/nodes/other" ) + +[connection signal="pressed" from="VBoxContainer/PanelContainer/HBoxContainer/AddButton" to="." method="_on_AddButton_pressed"] +[connection signal="ok_pressed" from="Popups/AddPopup" to="." method="_on_AddPopup_ok_pressed"] diff --git a/game/addons/mat_maker_gd/editor/mm_graph_node.gd b/game/addons/mat_maker_gd/editor/mm_graph_node.gd new file mode 100644 index 0000000..b12fc2e --- /dev/null +++ b/game/addons/mat_maker_gd/editor/mm_graph_node.gd @@ -0,0 +1,607 @@ +tool +extends GraphNode + +var gradient_editor_scene : PackedScene = preload("res://addons/mat_maker_gd/widgets/gradient_editor/gradient_editor.tscn") +var polygon_edit_scene : PackedScene = preload("res://addons/mat_maker_gd/widgets/polygon_edit/polygon_edit.tscn") +var curve_edit_scene : PackedScene = preload("res://addons/mat_maker_gd/widgets/curve_edit/curve_edit.tscn") + +var slot_colors : PoolColorArray + +var _material : MMMateial = null +var _node : MMNode = null +var properties : Array = Array() + +func _init(): + show_close = true + connect("offset_changed", self, "on_offset_changed") + connect("close_request", self, "on_close_request") + +func add_slot_texture(getter : String, setter : String) -> int: + var t : TextureRect = TextureRect.new() + t.rect_min_size = Vector2(128, 128) + t.expand = true + t.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED + + var slot_idx : int = add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, getter, setter, t) + + t.texture = _node.call(getter, _material, slot_idx) + properties[slot_idx].append(t.texture) + + return slot_idx + +func add_slot_texture_universal(property : MMNodeUniversalProperty) -> int: + var t : TextureRect = TextureRect.new() + t.rect_min_size = Vector2(128, 128) + t.expand = true + t.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED + + var slot_idx : int = add_slot(property.input_slot_type, property.output_slot_type, "", "", t) + + var img : Image = property.get_active_image() + + var tex : ImageTexture = ImageTexture.new() + + if img: + tex.create_from_image(img, 0) + + t.texture = tex + + properties[slot_idx].append(property) + + property.connect("changed", self, "on_universal_texture_changed", [ slot_idx ]) + + return slot_idx + +func add_slot_image_path_universal(property : MMNodeUniversalProperty, getter : String, setter : String) -> int: + var t : TextureButton = load("res://addons/mat_maker_gd/widgets/image_picker_button/image_picker_button.tscn").instance() + + var slot_idx : int = add_slot(property.input_slot_type, property.output_slot_type, "", "", t) + + properties[slot_idx].append(property) + properties[slot_idx].append(getter) + properties[slot_idx].append(setter) + + property.connect("changed", self, "on_universal_texture_changed_image_picker", [ slot_idx ]) + + t.connect("on_file_selected", self, "on_universal_image_path_changed", [ slot_idx ]) + + t.call_deferred("do_set_image_path", _node.call(getter)) + + return slot_idx + + +func add_slot_gradient() -> int: + var ge : Control = gradient_editor_scene.instance() + + var slot_idx : int = add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, "", "", ge) + + ge.set_value(_node) + #ge.texture = _node.call(getter, _material, slot_idx) + #properties[slot_idx].append(ge.texture) + + return slot_idx + +func add_slot_polygon() -> int: + var ge : Control = polygon_edit_scene.instance() + + var slot_idx : int = add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, "", "", ge) + + ge.set_value(_node) + #ge.texture = _node.call(getter, _material, slot_idx) + #properties[slot_idx].append(ge.texture) + + return slot_idx + +func add_slot_curve() -> int: + var ge : Control = curve_edit_scene.instance() + + var slot_idx : int = add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, "", "", ge) + + ge.set_value(_node) + #ge.texture = _node.call(getter, _material, slot_idx) + #properties[slot_idx].append(ge.texture) + + return slot_idx + +func add_slot_color(getter : String, setter : String) -> int: + var cp : ColorPickerButton = ColorPickerButton.new() + + var slot_idx : int = add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, getter, setter, cp) + + cp.color = _node.call(getter) + + cp.connect("color_changed", _node, setter) + + return slot_idx + +func add_slot_color_universal(property : MMNodeUniversalProperty) -> int: + var cp : ColorPickerButton = ColorPickerButton.new() + + var slot_idx : int = add_slot(property.input_slot_type, property.output_slot_type, "", "", cp) + + cp.color = property.get_default_value() + + properties[slot_idx].append(property) + + cp.connect("color_changed", self, "on_universal_color_changed", [ slot_idx ]) + + return slot_idx + +func add_slot_label(getter : String, setter : String, slot_name : String) -> int: + var l : Label = Label.new() + + l.text = slot_name + + return add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, getter, setter, l) + +func add_slot_line_edit(getter : String, setter : String, slot_name : String, placeholder : String = "") -> int: + var bc : VBoxContainer = VBoxContainer.new() + + var l : Label = Label.new() + l.text = slot_name + bc.add_child(l) + + var le : LineEdit = LineEdit.new() + le.placeholder_text = placeholder + bc.add_child(le) + + var slot_idx : int = add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, getter, setter, bc) + + le.text = _node.call(getter) + + le.connect("text_entered", self, "on_slot_line_edit_text_entered", [ slot_idx ]) + + return slot_idx + +func add_slot_enum(getter : String, setter : String, slot_name : String, values : Array) -> int: + var bc : VBoxContainer = VBoxContainer.new() + + if slot_name: + var l : Label = Label.new() + l.text = slot_name + bc.add_child(l) + + var mb : OptionButton = OptionButton.new() + + for v in values: + mb.add_item(v) + + bc.add_child(mb) + + var slot_idx : int = add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, getter, setter, bc) + + mb.selected = _node.call(getter) + + mb.connect("item_selected", self, "on_slot_enum_item_selected", [ slot_idx ]) + + return slot_idx + +func add_slot_int(getter : String, setter : String, slot_name : String, prange : Vector2 = Vector2(-1000, 1000)) -> int: + var bc : VBoxContainer = VBoxContainer.new() + + var l : Label = Label.new() + l.text = slot_name + bc.add_child(l) + + var sb : SpinBox = SpinBox.new() + sb.rounded = true + sb.min_value = prange.x + sb.max_value = prange.y + bc.add_child(sb) + + var slot_idx : int = add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, getter, setter, bc) + + sb.value = _node.call(getter) + + sb.connect("value_changed", self, "on_int_spinbox_value_changed", [ slot_idx ]) + + return slot_idx + +func add_slot_bool(getter : String, setter : String, slot_name : String) -> int: + var cb : CheckBox = CheckBox.new() + cb.text = slot_name + + var slot_idx : int = add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, getter, setter, cb) + + cb.pressed = _node.call(getter) + + cb.connect("toggled", _node, setter) + + return slot_idx + +func add_slot_label_universal(property : MMNodeUniversalProperty) -> int: + var l : Label = Label.new() + l.text = property.slot_name + + var slot_idx : int = add_slot(property.input_slot_type, property.output_slot_type, "", "", l) + + properties[slot_idx].append(property) + + return slot_idx + +func add_slot_int_universal(property : MMNodeUniversalProperty) -> int: + var bc : VBoxContainer = VBoxContainer.new() + + var l : Label = Label.new() + l.text = property.slot_name + bc.add_child(l) + + var sb : SpinBox = SpinBox.new() + sb.rounded = true + sb.min_value = property.value_range.x + sb.max_value = property.value_range.y + bc.add_child(sb) + + var slot_idx : int = add_slot(property.input_slot_type, property.output_slot_type, "", "", bc) + + sb.value = property.get_default_value() + + sb.connect("value_changed", self, "on_int_universal_spinbox_value_changed", [ slot_idx ]) + + properties[slot_idx].append(property) + + return slot_idx + +func add_slot_float(getter : String, setter : String, slot_name : String, step : float = 0.1, prange : Vector2 = Vector2(-1000, 1000)) -> int: + var bc : VBoxContainer = VBoxContainer.new() + + var l : Label = Label.new() + l.text = slot_name + bc.add_child(l) + + var sb : SpinBox = SpinBox.new() + bc.add_child(sb) + + var slot_idx : int = add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, getter, setter, bc) + sb.rounded = false + sb.step = step + sb.min_value = prange.x + sb.max_value = prange.y + sb.value = _node.call(getter) + + sb.connect("value_changed", self, "on_float_spinbox_value_changed", [ slot_idx ]) + + return slot_idx + +func add_slot_float_universal(property : MMNodeUniversalProperty) -> int: + var bc : VBoxContainer = VBoxContainer.new() + + var l : Label = Label.new() + l.text = property.slot_name + bc.add_child(l) + + var sb : SpinBox = SpinBox.new() + bc.add_child(sb) + + var slot_idx : int = add_slot(property.input_slot_type, property.output_slot_type, "", "", bc) + sb.rounded = false + sb.step = property.value_step + sb.min_value = property.value_range.x + sb.max_value = property.value_range.y + sb.value = property.get_default_value() + + properties[slot_idx].append(property) + + sb.connect("value_changed", self, "on_float_universal_spinbox_value_changed", [ slot_idx ]) + + return slot_idx + +func add_slot_vector2(getter : String, setter : String, slot_name : String, step : float = 0.1, prange : Vector2 = Vector2(-1000, 1000)) -> int: + var bc : VBoxContainer = VBoxContainer.new() + + var l : Label = Label.new() + l.text = slot_name + bc.add_child(l) + + var sbx : SpinBox = SpinBox.new() + bc.add_child(sbx) + + var sby : SpinBox = SpinBox.new() + bc.add_child(sby) + + var slot_idx : int = add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, getter, setter, bc) + sbx.rounded = false + sby.rounded = false + sbx.step = step + sby.step = step + sbx.min_value = prange.x + sbx.max_value = prange.y + sby.min_value = prange.x + sby.max_value = prange.y + + var val : Vector2 = _node.call(getter) + + sbx.value = val.x + sby.value = val.y + + sbx.connect("value_changed", self, "on_vector2_spinbox_value_changed", [ slot_idx, sbx, sby ]) + sby.connect("value_changed", self, "on_vector2_spinbox_value_changed", [ slot_idx, sbx, sby ]) + + return slot_idx + +func add_slot_vector3(getter : String, setter : String, slot_name : String, step : float = 0.1, prange : Vector2 = Vector2(-1000, 1000)) -> int: + var bc : VBoxContainer = VBoxContainer.new() + + var l : Label = Label.new() + l.text = slot_name + bc.add_child(l) + + var sbx : SpinBox = SpinBox.new() + bc.add_child(sbx) + + var sby : SpinBox = SpinBox.new() + bc.add_child(sby) + + var sbz : SpinBox = SpinBox.new() + bc.add_child(sbz) + + var slot_idx : int = add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, getter, setter, bc) + sbx.rounded = false + sby.rounded = false + sbz.rounded = false + sbx.step = step + sby.step = step + sbz.step = step + sbx.min_value = prange.x + sbx.max_value = prange.y + sby.min_value = prange.x + sby.max_value = prange.y + sbz.min_value = prange.x + sbz.max_value = prange.y + + var val : Vector3 = _node.call(getter) + + sbx.value = val.x + sby.value = val.y + sbz.value = val.z + + sbx.connect("value_changed", self, "on_vector3_spinbox_value_changed", [ slot_idx, sbx, sby, sbz ]) + sby.connect("value_changed", self, "on_vector3_spinbox_value_changed", [ slot_idx, sbx, sby, sbz ]) + sbz.connect("value_changed", self, "on_vector3_spinbox_value_changed", [ slot_idx, sbx, sby, sbz ]) + + return slot_idx + +func add_slot_vector2_universal(property : MMNodeUniversalProperty) -> int: + var bc : VBoxContainer = VBoxContainer.new() + + var l : Label = Label.new() + l.text = property.slot_name + bc.add_child(l) + + var sbx : SpinBox = SpinBox.new() + bc.add_child(sbx) + + var sby : SpinBox = SpinBox.new() + bc.add_child(sby) + + var slot_idx : int = add_slot(property.input_slot_type, property.output_slot_type, "", "", bc) + sbx.rounded = false + sby.rounded = false + sbx.step = property.value_step + sby.step = property.value_step + sbx.min_value = property.value_range.x + sbx.max_value = property.value_range.y + sby.min_value = property.value_range.x + sby.max_value = property.value_range.y + + var val : Vector2 = property.get_default_value() + + sbx.value = val.x + sby.value = val.y + + properties[slot_idx].append(property) + + sbx.connect("value_changed", self, "on_vector2_universal_spinbox_value_changed", [ slot_idx, sbx, sby ]) + sby.connect("value_changed", self, "on_vector2_universal_spinbox_value_changed", [ slot_idx, sbx, sby ]) + + return slot_idx + +func add_slot(input_type : int, output_type : int, getter : String, setter : String, control : Control) -> int: + add_child(control) + var slot_idx : int = get_child_count() - 1 + + var arr : Array = Array() + + arr.append(slot_idx) + arr.append(input_type) + arr.append(output_type) + arr.append(getter) + arr.append(setter) + arr.append(control) + + properties.append(arr) + + set_slot_enabled_left(slot_idx, input_type != -1) + set_slot_enabled_right(slot_idx, output_type != -1) + + if input_type != -1: + set_slot_type_left(slot_idx, input_type) + + if output_type != -1: + set_slot_type_left(slot_idx, output_type) + + if input_type != -1 && slot_colors.size() > input_type: + set_slot_color_left(slot_idx, slot_colors[input_type]) + + if output_type != -1 && slot_colors.size() > output_type: + set_slot_color_right(slot_idx, slot_colors[output_type]) + + return slot_idx + +func connect_slot(slot_idx : int, to_node : Node, to_slot_idx : int) -> bool: + var from_property_index : int = -1 + var to_property_index : int = -1 + + for i in range(properties.size()): + if properties[i][2] != -1: + from_property_index += 1 + + if from_property_index == slot_idx: + from_property_index = i + break + + for i in range(to_node.properties.size()): + if to_node.properties[i][1] != -1: + to_property_index += 1 + + if to_property_index == to_slot_idx: + to_property_index = i + break + + to_node.properties[to_property_index][6].set_input_property(properties[from_property_index][6]) + + return true + +func disconnect_slot(slot_idx : int, to_node : Node, to_slot_idx : int) -> bool: + var from_property_index : int = -1 + var to_property_index : int = -1 + + for i in range(properties.size()): + if properties[i][2] != -1: + from_property_index += 1 + + if from_property_index == slot_idx: + from_property_index = i + break + + for i in range(to_node.properties.size()): + if to_node.properties[i][1] != -1: + to_property_index += 1 + + if to_property_index == to_slot_idx: + to_property_index = i + break + + to_node.properties[to_property_index][6].set_input_property(null) + + return true + +func get_input_property_graph_node_slot_index(property) -> int: + var property_index : int = -1 + + for i in range(properties.size()): + if properties[i][1] != -1: + property_index += 1 + + if properties[i][6] == property: + break + + return property_index + +func get_output_property_graph_node_slot_index(property) -> int: + var property_index : int = -1 + + for i in range(properties.size()): + if properties[i][2] != -1: + property_index += 1 + + if properties[i][6] == property: + break + + return property_index + +func get_property_control(slot_idx : int) -> Node: + return properties[slot_idx][5] + +func set_node(material : MMMateial, node : MMNode) -> void: + _node = node + _material = material + + if !_node: + return + + title = _node.get_class() + + if _node.get_script(): + title = _node.get_script().resource_path.get_file().get_basename() + + _node.register_methods(self) + + offset = _node.get_graph_position() + + _node.connect("changed", self, "on_node_changed") + +func propagate_node_change() -> void: + pass + +func on_offset_changed(): + if _node: + _node.set_graph_position(offset) + +func on_node_changed(): + #get all properties again + #_node.recalculate_image(_material) + + propagate_node_change() + +func on_int_spinbox_value_changed(val : float, slot_idx) -> void: + _node.call(properties[slot_idx][4], int(val)) + +func on_float_spinbox_value_changed(val : float, slot_idx) -> void: + _node.call(properties[slot_idx][4], val) + +func on_vector2_spinbox_value_changed(val : float, slot_idx, spinbox_x, spinbox_y) -> void: + var vv : Vector2 = Vector2(spinbox_x.value, spinbox_y.value) + + _node.call(properties[slot_idx][4], vv) + +func on_vector3_spinbox_value_changed(val : float, slot_idx, spinbox_x, spinbox_y, spinbox_z) -> void: + var vv : Vector3 = Vector3(spinbox_x.value, spinbox_y.value, spinbox_z.value) + + _node.call(properties[slot_idx][4], vv) + +func on_int_universal_spinbox_value_changed(val : float, slot_idx) -> void: + properties[slot_idx][6].set_default_value(int(val)) + +func on_float_universal_spinbox_value_changed(val : float, slot_idx) -> void: + properties[slot_idx][6].set_default_value(val) + +func on_vector2_universal_spinbox_value_changed(val : float, slot_idx, spinbox_x, spinbox_y) -> void: + var vv : Vector2 = Vector2(spinbox_x.value, spinbox_y.value) + + properties[slot_idx][6].set_default_value(vv) + +func on_slot_enum_item_selected(val : int, slot_idx : int) -> void: + _node.call(properties[slot_idx][4], val) + +func on_universal_texture_changed(slot_idx : int) -> void: + var img : Image = properties[slot_idx][6].get_active_image() + + var tex : ImageTexture = properties[slot_idx][5].texture + + if img: + properties[slot_idx][5].texture.create_from_image(img, 0) + else: + properties[slot_idx][5].texture = ImageTexture.new() + +func on_universal_texture_changed_image_picker(slot_idx : int) -> void: + var img : Image = properties[slot_idx][6].get_active_image() + + var tex : ImageTexture = properties[slot_idx][5].texture_normal + + if img: + properties[slot_idx][5].texture_normal.create_from_image(img, 0) + else: + properties[slot_idx][5].texture_normal = ImageTexture.new() + +func on_slot_line_edit_text_entered(text : String, slot_idx : int) -> void: + _node.call(properties[slot_idx][4], text) + +func on_universal_color_changed(c : Color, slot_idx : int) -> void: + properties[slot_idx][6].set_default_value(c) + +func on_universal_image_path_changed(f : String, slot_idx : int) -> void: + _node.call(properties[slot_idx][8], f) + +func get_material_node() -> MMNode: + return _node + +func on_close_request() -> void: + var n : Node = get_parent() + + while n: + if n.has_method("on_graph_node_close_request"): + n.call_deferred("on_graph_node_close_request", self) + return + + n = n.get_parent() diff --git a/game/addons/mat_maker_gd/icons/custom.png b/game/addons/mat_maker_gd/icons/custom.png new file mode 100644 index 0000000..45a7a18 Binary files /dev/null and b/game/addons/mat_maker_gd/icons/custom.png differ diff --git a/game/addons/mat_maker_gd/icons/custom.png.import b/game/addons/mat_maker_gd/icons/custom.png.import new file mode 100644 index 0000000..59e2366 --- /dev/null +++ b/game/addons/mat_maker_gd/icons/custom.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/custom.png-b026bd10e22818d25d499d2eddb137a8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/mat_maker_gd/icons/custom.png" +dest_files=[ "res://.import/custom.png-b026bd10e22818d25d499d2eddb137a8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/mat_maker_gd/icons/down.tres b/game/addons/mat_maker_gd/icons/down.tres new file mode 100644 index 0000000..aca6f4c --- /dev/null +++ b/game/addons/mat_maker_gd/icons/down.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/icons/icons.tres" type="Texture" id=1] + +[resource] +flags = 4 +atlas = ExtResource( 1 ) +region = Rect2( 32, 48, 16, 16 ) diff --git a/game/addons/mat_maker_gd/icons/edit.tres b/game/addons/mat_maker_gd/icons/edit.tres new file mode 100644 index 0000000..aa39c29 --- /dev/null +++ b/game/addons/mat_maker_gd/icons/edit.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/icons/icons.tres" type="Texture" id=1] + +[resource] +flags = 7 +atlas = ExtResource( 1 ) +region = Rect2( 16, 16, 16, 16 ) diff --git a/game/addons/mat_maker_gd/icons/godot_logo.svg b/game/addons/mat_maker_gd/icons/godot_logo.svg new file mode 100644 index 0000000..d7aef39 --- /dev/null +++ b/game/addons/mat_maker_gd/icons/godot_logo.svg @@ -0,0 +1 @@ + diff --git a/game/addons/mat_maker_gd/icons/godot_logo.svg.import b/game/addons/mat_maker_gd/icons/godot_logo.svg.import new file mode 100644 index 0000000..e96628e --- /dev/null +++ b/game/addons/mat_maker_gd/icons/godot_logo.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/godot_logo.svg-4e4bf625f601f4dc5d1d367a2f781011.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/mat_maker_gd/icons/godot_logo.svg" +dest_files=[ "res://.import/godot_logo.svg-4e4bf625f601f4dc5d1d367a2f781011.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/mat_maker_gd/icons/icons.svg b/game/addons/mat_maker_gd/icons/icons.svg new file mode 100644 index 0000000..cc85b87 --- /dev/null +++ b/game/addons/mat_maker_gd/icons/icons.svg @@ -0,0 +1,3522 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/game/addons/mat_maker_gd/icons/icons.svg.import b/game/addons/mat_maker_gd/icons/icons.svg.import new file mode 100644 index 0000000..733f804 --- /dev/null +++ b/game/addons/mat_maker_gd/icons/icons.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icons.svg-bac181e82e23c7264cdf6c36903654b9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/mat_maker_gd/icons/icons.svg" +dest_files=[ "res://.import/icons.svg-bac181e82e23c7264cdf6c36903654b9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/mat_maker_gd/icons/icons.tres b/game/addons/mat_maker_gd/icons/icons.tres new file mode 100644 index 0000000..e347b32 --- /dev/null +++ b/game/addons/mat_maker_gd/icons/icons.tres @@ -0,0 +1,30 @@ +[gd_resource type="ProxyTexture" load_steps=4 format=2] + +[sub_resource type="Image" id=2] +data = { +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 13, 13, 13, 0, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 102, 53, 0, 123, 110, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 1, 0, 117, 0, 1, 0, 234, 45, 3, 0, 235, 77, 3, 0, 235, 77, 3, 0, 235, 46, 0, 0, 171, 2, 1, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 39, 255, 255, 255, 50, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 6, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 71, 255, 255, 255, 191, 255, 255, 255, 254, 255, 255, 255, 235, 255, 255, 255, 128, 191, 191, 191, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 5, 255, 4, 4, 107, 191, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 2, 2, 0, 255, 5, 5, 101, 191, 3, 3, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 191, 6, 44, 24, 255, 9, 128, 24, 255, 9, 128, 17, 191, 5, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 16, 16, 16, 78, 26, 26, 26, 179, 27, 27, 27, 204, 27, 27, 27, 204, 27, 27, 27, 204, 27, 27, 27, 204, 27, 27, 27, 204, 27, 27, 27, 204, 27, 27, 27, 204, 27, 27, 27, 204, 27, 27, 27, 204, 27, 27, 27, 204, 25, 25, 25, 163, 19, 19, 19, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 16, 14, 23, 23, 23, 158, 27, 27, 27, 221, 24, 24, 24, 163, 18, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 79, 255, 255, 255, 151, 255, 255, 255, 156, 255, 255, 255, 103, 255, 255, 255, 20, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 54, 29, 0, 242, 214, 113, 59, 241, 213, 111, 143, 247, 221, 116, 164, 247, 221, 116, 113, 244, 216, 114, 31, 122, 109, 58, 0, 55, 55, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 8, 2, 0, 234, 117, 6, 4, 236, 229, 10, 10, 237, 255, 12, 14, 237, 255, 13, 15, 237, 255, 11, 12, 237, 255, 8, 7, 236, 231, 4, 2, 234, 127, 0, 0, 173, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 9, 255, 255, 255, 255, 255, 255, 255, 233, 191, 191, 191, 27, 0, 0, 0, 0, 191, 191, 191, 18, 255, 255, 255, 207, 255, 255, 255, 179, 191, 191, 191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 191, 191, 191, 24, 255, 255, 255, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 148, 128, 128, 128, 0, 0, 0, 0, 0, 191, 0, 0, 6, 255, 6, 6, 175, 255, 9, 9, 255, 255, 6, 6, 163, 191, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 2, 2, 0, 255, 8, 8, 135, 255, 9, 9, 255, 255, 7, 7, 197, 191, 4, 4, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 255, 9, 86, 24, 255, 9, 255, 24, 255, 9, 255, 22, 255, 7, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 20, 56, 67, 67, 67, 252, 207, 207, 207, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 244, 244, 244, 255, 247, 247, 247, 255, 166, 166, 166, 255, 26, 26, 26, 191, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 8, 26, 26, 26, 193, 147, 147, 147, 255, 239, 239, 239, 255, 155, 155, 155, 255, 27, 27, 27, 203, 17, 17, 17, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 7, 255, 255, 255, 105, 255, 255, 255, 162, 255, 255, 255, 176, 255, 255, 255, 153, 255, 255, 255, 132, 255, 255, 255, 114, 255, 255, 255, 95, 255, 255, 255, 77, 255, 255, 255, 51, 255, 255, 255, 22, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 191, 191, 191, 6, 255, 255, 255, 75, 255, 255, 255, 95, 255, 255, 255, 38, 128, 128, 128, 0, 191, 191, 191, 2, 255, 255, 255, 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 255, 255, 255, 178, 255, 255, 255, 87, 191, 191, 191, 8, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 147, 74, 2, 246, 220, 115, 63, 247, 220, 116, 99, 247, 219, 116, 50, 120, 106, 56, 0, 120, 106, 55, 0, 247, 220, 116, 129, 248, 221, 117, 255, 249, 230, 155, 255, 251, 237, 184, 255, 249, 232, 168, 255, 243, 217, 117, 254, 244, 217, 115, 192, 235, 219, 113, 100, 185, 164, 86, 16, 122, 110, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 176, 29, 4, 13, 223, 206, 9, 43, 204, 255, 19, 27, 234, 255, 24, 33, 239, 255, 27, 38, 240, 255, 28, 39, 240, 255, 26, 36, 240, 255, 22, 30, 239, 255, 16, 20, 238, 255, 8, 8, 236, 216, 1, 0, 117, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 233, 255, 255, 255, 255, 255, 255, 255, 197, 255, 255, 255, 22, 255, 255, 255, 206, 255, 255, 255, 255, 255, 255, 255, 205, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 2, 255, 255, 255, 103, 255, 255, 255, 239, 255, 255, 255, 255, 255, 255, 255, 240, 255, 255, 255, 106, 191, 191, 191, 5, 255, 255, 255, 46, 255, 255, 255, 244, 255, 255, 255, 250, 255, 255, 255, 23, 128, 2, 2, 0, 255, 6, 6, 142, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 6, 6, 165, 191, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 64, 2, 2, 0, 255, 8, 8, 138, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 8, 8, 172, 128, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 255, 9, 85, 24, 255, 9, 255, 24, 255, 9, 255, 22, 255, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, 123, 158, 158, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 45, 45, 45, 248, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 16, 3, 26, 26, 26, 173, 139, 139, 139, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 155, 155, 155, 255, 26, 26, 26, 193, 15, 15, 15, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 191, 191, 191, 9, 255, 255, 255, 46, 255, 255, 255, 51, 255, 255, 255, 51, 255, 255, 255, 51, 255, 255, 255, 46, 255, 255, 255, 26, 255, 255, 255, 26, 255, 255, 255, 24, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 15, 255, 255, 255, 202, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 255, 255, 255, 38, 64, 64, 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, 0, 64, 64, 64, 0, 255, 255, 255, 68, 255, 255, 255, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 255, 255, 255, 137, 255, 255, 255, 170, 255, 255, 255, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 255, 255, 255, 158, 255, 255, 255, 65, 191, 191, 191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 23, 0, 138, 132, 67, 43, 248, 221, 116, 223, 248, 222, 122, 255, 245, 220, 126, 255, 237, 211, 112, 255, 231, 205, 108, 219, 230, 203, 106, 136, 237, 211, 110, 169, 238, 212, 111, 224, 226, 202, 106, 255, 218, 195, 105, 255, 223, 208, 149, 255, 235, 227, 194, 255, 242, 232, 195, 255, 234, 217, 150, 255, 232, 206, 108, 248, 241, 215, 113, 171, 246, 219, 115, 80, 181, 160, 85, 5, 55, 55, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 15, 5, 2, 236, 213, 6, 125, 118, 255, 0, 209, 28, 255, 12, 145, 110, 255, 38, 56, 241, 255, 42, 62, 242, 255, 43, 63, 243, 255, 39, 64, 235, 255, 22, 105, 164, 255, 29, 41, 240, 255, 20, 27, 238, 255, 10, 10, 237, 225, 2, 0, 175, 20, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 191, 191, 191, 0, 255, 255, 255, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 138, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 21, 255, 255, 255, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 191, 191, 191, 25, 64, 64, 64, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 199, 255, 255, 255, 255, 255, 255, 255, 51, 0, 0, 0, 0, 191, 5, 5, 21, 255, 8, 8, 209, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 6, 6, 167, 191, 0, 0, 4, 191, 0, 0, 0, 255, 8, 8, 140, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 226, 191, 5, 5, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 255, 7, 84, 24, 255, 9, 255, 24, 255, 9, 255, 23, 255, 7, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 22, 70, 81, 81, 81, 254, 235, 235, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 241, 241, 255, 232, 232, 232, 255, 161, 161, 161, 255, 26, 26, 26, 189, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 0, 20, 20, 20, 151, 117, 117, 117, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 143, 143, 143, 255, 24, 24, 24, 181, 16, 16, 16, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 11, 11, 11, 37, 23, 23, 23, 154, 26, 26, 26, 172, 16, 16, 16, 64, 6, 6, 6, 0, 0, 0, 0, 0, 191, 191, 191, 0, 255, 255, 255, 113, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 255, 255, 255, 149, 191, 191, 191, 20, 128, 128, 128, 0, 255, 255, 255, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 255, 255, 255, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 50, 255, 255, 255, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 189, 255, 255, 255, 151, 255, 255, 255, 79, 255, 255, 255, 145, 255, 255, 255, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 191, 191, 191, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 195, 101, 22, 248, 221, 117, 236, 251, 239, 193, 255, 245, 237, 206, 255, 235, 223, 176, 255, 238, 230, 201, 255, 235, 224, 186, 255, 213, 196, 130, 255, 199, 177, 92, 255, 202, 180, 93, 199, 205, 182, 94, 162, 192, 176, 90, 80, 183, 164, 83, 132, 177, 157, 80, 222, 181, 162, 88, 255, 210, 198, 152, 255, 234, 227, 201, 255, 238, 227, 185, 255, 236, 216, 137, 255, 244, 218, 115, 222, 235, 216, 111, 58, 30, 26, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 20, 15, 0, 153, 19, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 3, 1, 224, 145, 13, 15, 237, 255, 20, 58, 207, 255, 0, 207, 30, 255, 0, 209, 28, 255, 28, 137, 146, 255, 56, 87, 245, 255, 48, 105, 212, 255, 10, 184, 68, 255, 0, 208, 29, 255, 32, 85, 203, 255, 31, 44, 240, 255, 20, 26, 238, 255, 7, 6, 233, 162, 1, 0, 114, 0, 0, 0, 0, 0, 255, 255, 255, 41, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 154, 255, 255, 255, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 191, 191, 191, 3, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 190, 255, 255, 255, 255, 255, 255, 255, 223, 255, 255, 255, 90, 255, 255, 255, 74, 255, 255, 255, 67, 191, 191, 191, 10, 128, 128, 128, 0, 255, 255, 255, 93, 255, 255, 255, 252, 255, 255, 255, 244, 191, 191, 191, 16, 0, 0, 0, 0, 0, 0, 0, 0, 191, 5, 5, 20, 255, 8, 8, 207, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 6, 6, 169, 255, 6, 6, 144, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 224, 191, 5, 5, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 255, 7, 83, 24, 255, 9, 255, 24, 255, 9, 255, 23, 255, 7, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 26, 26, 26, 106, 26, 26, 26, 208, 27, 27, 27, 230, 27, 27, 27, 230, 27, 27, 27, 230, 27, 27, 27, 230, 27, 27, 27, 230, 27, 27, 27, 219, 27, 27, 27, 204, 27, 27, 27, 204, 27, 27, 27, 204, 27, 27, 27, 204, 26, 26, 26, 157, 19, 19, 19, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 26, 26, 26, 126, 98, 98, 98, 255, 244, 244, 244, 255, 246, 246, 246, 255, 246, 246, 246, 255, 230, 230, 230, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 131, 131, 131, 255, 24, 24, 24, 170, 14, 14, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 23, 23, 23, 74, 46, 46, 46, 240, 169, 169, 169, 255, 190, 190, 190, 255, 56, 56, 56, 252, 26, 26, 26, 36, 64, 64, 64, 0, 255, 255, 255, 121, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 255, 255, 255, 24, 255, 255, 255, 57, 255, 255, 255, 82, 255, 255, 255, 102, 255, 255, 255, 74, 255, 255, 255, 35, 255, 255, 255, 54, 255, 255, 255, 77, 255, 255, 255, 98, 255, 255, 255, 116, 255, 255, 255, 135, 255, 255, 255, 153, 255, 255, 255, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 191, 191, 191, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 255, 255, 255, 137, 255, 255, 255, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 255, 255, 255, 137, 255, 255, 255, 17, 255, 255, 255, 74, 255, 255, 255, 166, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 191, 191, 191, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 55, 29, 0, 247, 220, 116, 130, 250, 235, 173, 255, 236, 220, 159, 255, 212, 188, 98, 197, 196, 172, 91, 133, 183, 162, 83, 195, 179, 162, 92, 255, 204, 193, 153, 255, 229, 224, 203, 255, 218, 208, 169, 255, 196, 178, 109, 255, 200, 178, 92, 250, 213, 191, 98, 159, 131, 117, 60, 25, 149, 131, 67, 61, 149, 132, 66, 152, 164, 146, 74, 237, 187, 169, 99, 255, 223, 211, 167, 255, 244, 235, 199, 255, 242, 218, 121, 237, 122, 110, 57, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 27, 43, 0, 207, 27, 183, 0, 153, 19, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 15, 7, 6, 236, 248, 20, 27, 238, 255, 8, 163, 85, 255, 0, 209, 28, 255, 7, 196, 51, 255, 57, 115, 218, 255, 71, 110, 247, 255, 42, 153, 155, 255, 0, 209, 28, 255, 0, 209, 28, 255, 6, 189, 58, 255, 16, 143, 119, 255, 16, 101, 160, 255, 12, 43, 207, 252, 3, 1, 232, 30, 64, 64, 64, 0, 255, 255, 255, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 255, 255, 255, 89, 255, 255, 255, 76, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 255, 255, 255, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 30, 255, 255, 255, 255, 255, 255, 255, 220, 255, 255, 255, 146, 255, 255, 255, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 255, 255, 255, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 113, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 5, 5, 19, 255, 8, 8, 206, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 8, 8, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 223, 191, 5, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 12, 255, 4, 40, 23, 255, 8, 77, 23, 255, 8, 77, 23, 255, 8, 77, 23, 255, 8, 77, 23, 255, 8, 134, 24, 255, 9, 255, 24, 255, 9, 255, 23, 255, 8, 127, 23, 255, 8, 77, 23, 255, 7, 66, 22, 255, 7, 51, 22, 255, 7, 51, 11, 255, 4, 26, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 26, 26, 26, 0, 13, 13, 13, 0, 14, 14, 14, 0, 14, 14, 14, 0, 14, 14, 14, 0, 14, 14, 14, 0, 14, 14, 14, 0, 14, 14, 14, 0, 14, 14, 14, 0, 13, 13, 13, 0, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 25, 25, 25, 102, 81, 81, 81, 254, 240, 240, 240, 255, 246, 246, 246, 255, 246, 246, 246, 255, 175, 175, 175, 255, 28, 28, 28, 250, 153, 153, 153, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 118, 118, 118, 255, 20, 20, 20, 157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, 0, 26, 26, 26, 116, 67, 67, 67, 252, 220, 220, 220, 255, 246, 246, 246, 255, 246, 246, 246, 255, 138, 138, 138, 254, 26, 26, 26, 103, 191, 191, 191, 17, 255, 255, 255, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 163, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 1, 255, 255, 255, 249, 255, 255, 255, 255, 255, 255, 255, 174, 191, 191, 191, 0, 64, 64, 64, 0, 128, 128, 128, 0, 255, 255, 255, 57, 255, 255, 255, 156, 255, 255, 255, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 191, 191, 191, 8, 128, 128, 128, 0, 191, 191, 191, 13, 255, 255, 255, 94, 255, 255, 255, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 129, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 110, 58, 0, 247, 220, 116, 209, 247, 238, 205, 255, 213, 190, 99, 210, 148, 135, 68, 4, 46, 39, 21, 0, 85, 74, 38, 0, 170, 157, 81, 35, 171, 151, 77, 149, 140, 125, 62, 216, 163, 149, 94, 255, 206, 198, 164, 255, 232, 226, 203, 255, 215, 199, 137, 255, 217, 193, 101, 219, 172, 151, 78, 22, 70, 61, 30, 0, 105, 96, 48, 6, 158, 141, 70, 81, 174, 156, 80, 187, 203, 184, 108, 255, 243, 233, 195, 255, 242, 216, 113, 169, 122, 109, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 14, 0, 0, 104, 14, 0, 0, 104, 14, 0, 0, 104, 14, 0, 0, 104, 14, 0, 0, 104, 14, 0, 0, 104, 14, 0, 0, 104, 14, 0, 0, 104, 14, 0, 0, 104, 14, 0, 0, 207, 27, 43, 0, 209, 28, 255, 0, 206, 27, 182, 0, 150, 20, 7, 0, 0, 0, 0, 3, 0, 235, 84, 12, 13, 237, 255, 19, 71, 194, 255, 0, 209, 28, 255, 5, 199, 46, 255, 56, 119, 212, 255, 77, 120, 248, 255, 85, 133, 250, 255, 77, 145, 224, 255, 0, 209, 28, 255, 0, 209, 28, 255, 0, 209, 28, 255, 0, 209, 28, 255, 0, 209, 28, 255, 8, 114, 135, 255, 7, 7, 234, 102, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 81, 255, 255, 255, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 64, 64, 64, 0, 0, 0, 0, 0, 255, 255, 255, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 38, 255, 255, 255, 185, 255, 255, 255, 216, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 188, 255, 255, 255, 181, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 234, 255, 255, 255, 89, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 5, 5, 18, 255, 8, 8, 204, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 8, 8, 255, 255, 9, 9, 221, 191, 6, 6, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 12, 255, 5, 133, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 12, 255, 5, 132, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 42, 27, 27, 27, 197, 45, 45, 45, 251, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 63, 63, 63, 255, 31, 31, 31, 225, 25, 25, 25, 75, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 0, 24, 24, 24, 80, 66, 66, 66, 252, 233, 233, 233, 255, 246, 246, 246, 255, 246, 246, 246, 255, 192, 192, 192, 255, 33, 33, 33, 221, 25, 25, 25, 37, 27, 27, 27, 200, 164, 164, 164, 255, 246, 246, 246, 255, 246, 246, 246, 255, 244, 244, 244, 255, 106, 106, 106, 255, 20, 20, 20, 143, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 8, 26, 26, 26, 161, 98, 98, 98, 255, 237, 237, 237, 255, 246, 246, 246, 255, 246, 246, 246, 255, 237, 237, 237, 255, 69, 69, 69, 253, 25, 25, 25, 54, 255, 255, 255, 59, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 129, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 191, 191, 191, 4, 255, 255, 255, 26, 255, 255, 255, 26, 255, 255, 255, 26, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 9, 255, 255, 255, 251, 255, 255, 255, 255, 255, 255, 255, 123, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 14, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 12, 255, 255, 255, 245, 255, 255, 255, 174, 255, 255, 255, 146, 255, 255, 255, 160, 255, 255, 255, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 116, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 6, 255, 255, 255, 211, 255, 255, 255, 255, 255, 255, 255, 205, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 110, 58, 0, 244, 218, 115, 229, 237, 224, 178, 255, 198, 178, 93, 145, 95, 86, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 108, 56, 0, 242, 215, 114, 220, 219, 194, 101, 188, 162, 143, 73, 147, 147, 130, 62, 149, 162, 145, 74, 235, 216, 205, 165, 255, 215, 195, 121, 255, 228, 200, 103, 157, 104, 91, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 113, 55, 0, 182, 161, 81, 177, 226, 214, 167, 255, 234, 211, 120, 241, 180, 159, 85, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 14, 0, 0, 208, 27, 214, 0, 209, 28, 230, 0, 209, 28, 230, 0, 209, 28, 230, 0, 209, 28, 230, 0, 209, 28, 230, 0, 209, 28, 230, 0, 209, 28, 230, 0, 209, 28, 230, 0, 209, 28, 230, 0, 209, 28, 234, 0, 209, 28, 255, 0, 209, 28, 255, 0, 206, 27, 181, 0, 133, 34, 7, 2, 0, 219, 121, 15, 18, 238, 255, 27, 53, 224, 255, 0, 208, 29, 255, 39, 131, 170, 255, 72, 111, 247, 255, 85, 134, 250, 255, 97, 153, 252, 255, 101, 160, 253, 255, 67, 164, 190, 255, 56, 150, 182, 255, 37, 150, 149, 255, 2, 205, 36, 255, 0, 209, 28, 255, 19, 58, 205, 255, 6, 7, 233, 136, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 13, 255, 255, 255, 227, 255, 255, 255, 255, 255, 255, 255, 150, 191, 191, 191, 0, 128, 128, 128, 0, 255, 255, 255, 112, 255, 255, 255, 255, 255, 255, 255, 249, 255, 255, 255, 161, 255, 255, 255, 50, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 16, 255, 255, 255, 151, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 214, 255, 255, 255, 156, 255, 255, 255, 209, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 184, 255, 255, 255, 70, 64, 64, 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, 0, 191, 0, 0, 1, 255, 6, 6, 156, 255, 8, 8, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 6, 6, 180, 191, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 12, 255, 5, 131, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 255, 12, 255, 5, 133, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, 0, 29, 29, 29, 213, 200, 200, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 230, 230, 255, 44, 44, 44, 244, 19, 19, 19, 8, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 22, 22, 22, 61, 55, 55, 55, 247, 224, 224, 224, 255, 246, 246, 246, 255, 246, 246, 246, 255, 207, 207, 207, 255, 40, 40, 40, 234, 13, 13, 13, 37, 0, 0, 0, 0, 19, 19, 19, 18, 28, 28, 28, 209, 174, 174, 174, 255, 246, 246, 246, 255, 246, 246, 246, 255, 243, 243, 243, 255, 95, 95, 95, 255, 26, 26, 26, 128, 6, 6, 6, 0, 0, 0, 0, 0, 19, 19, 19, 25, 27, 27, 27, 199, 137, 137, 137, 255, 245, 245, 245, 255, 246, 246, 246, 255, 246, 246, 246, 255, 220, 220, 220, 255, 67, 67, 67, 252, 25, 25, 25, 110, 6, 6, 6, 0, 255, 255, 255, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 38, 255, 255, 255, 36, 255, 255, 255, 17, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 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, 0, 255, 255, 255, 13, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 139, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 7, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 153, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 255, 255, 255, 112, 255, 255, 255, 185, 255, 255, 255, 251, 255, 255, 255, 221, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 134, 255, 255, 255, 255, 255, 255, 255, 247, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 110, 58, 0, 242, 215, 113, 212, 237, 227, 188, 255, 194, 173, 89, 193, 124, 114, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 98, 50, 0, 227, 207, 108, 141, 230, 205, 110, 255, 216, 198, 133, 255, 181, 161, 82, 206, 161, 142, 71, 110, 170, 151, 77, 172, 200, 177, 92, 247, 223, 198, 104, 250, 181, 169, 54, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 160, 81, 94, 215, 199, 138, 255, 237, 221, 157, 255, 243, 214, 112, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 14, 0, 0, 209, 28, 238, 0, 209, 28, 255, 0, 209, 28, 255, 0, 209, 28, 255, 0, 209, 28, 255, 0, 209, 28, 255, 0, 209, 28, 255, 0, 209, 28, 255, 0, 209, 28, 255, 0, 209, 28, 255, 0, 209, 28, 255, 0, 209, 28, 255, 0, 209, 28, 255, 0, 209, 28, 255, 0, 206, 26, 113, 2, 17, 139, 121, 16, 19, 238, 255, 30, 43, 240, 255, 6, 185, 62, 255, 13, 185, 72, 255, 72, 115, 245, 255, 88, 138, 250, 255, 102, 161, 253, 255, 74, 184, 180, 255, 38, 186, 116, 255, 41, 168, 139, 255, 41, 144, 161, 255, 43, 103, 205, 255, 12, 158, 97, 255, 24, 32, 239, 255, 7, 7, 236, 140, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 167, 255, 255, 255, 153, 255, 255, 255, 249, 255, 255, 255, 255, 255, 255, 255, 229, 255, 255, 255, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 31, 255, 255, 255, 218, 255, 255, 255, 255, 255, 255, 255, 246, 255, 255, 255, 172, 255, 255, 255, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 255, 255, 255, 164, 255, 255, 255, 243, 255, 255, 255, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 2, 255, 6, 6, 153, 255, 9, 9, 255, 255, 9, 9, 255, 255, 8, 8, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 6, 6, 178, 191, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 12, 255, 4, 39, 23, 255, 8, 77, 23, 255, 8, 77, 23, 255, 8, 77, 23, 255, 8, 77, 22, 255, 8, 127, 24, 255, 9, 255, 24, 255, 9, 255, 23, 255, 8, 133, 23, 255, 8, 92, 23, 255, 8, 102, 23, 255, 8, 102, 23, 255, 8, 102, 12, 255, 4, 54, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, 6, 50, 50, 50, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 78, 78, 255, 25, 25, 25, 33, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 44, 45, 45, 45, 239, 213, 213, 213, 255, 246, 246, 246, 255, 246, 246, 246, 255, 219, 219, 219, 255, 49, 49, 49, 243, 13, 13, 13, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 24, 32, 32, 32, 218, 184, 184, 184, 255, 246, 246, 246, 255, 246, 246, 246, 255, 240, 240, 240, 255, 85, 85, 85, 254, 25, 25, 25, 113, 12, 12, 12, 51, 36, 36, 36, 227, 174, 174, 174, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 194, 194, 194, 255, 46, 46, 46, 240, 24, 24, 24, 75, 6, 6, 6, 0, 0, 0, 0, 0, 255, 255, 255, 36, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 255, 255, 255, 161, 255, 255, 255, 139, 255, 255, 255, 120, 255, 255, 255, 102, 255, 255, 255, 77, 255, 255, 255, 58, 255, 255, 255, 39, 255, 255, 255, 38, 255, 255, 255, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 183, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 121, 191, 191, 191, 18, 128, 128, 128, 0, 0, 0, 0, 0, 255, 255, 255, 45, 255, 255, 255, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 255, 255, 255, 168, 255, 255, 255, 167, 255, 255, 255, 5, 64, 64, 64, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 167, 255, 255, 255, 255, 255, 255, 255, 231, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 110, 56, 0, 234, 214, 111, 143, 239, 227, 183, 255, 201, 182, 109, 255, 161, 146, 58, 148, 141, 126, 51, 28, 65, 58, 27, 0, 21, 21, 0, 0, 175, 158, 84, 21, 244, 218, 115, 227, 238, 223, 163, 255, 233, 225, 195, 255, 196, 181, 124, 255, 160, 142, 72, 243, 156, 136, 69, 175, 179, 160, 81, 165, 212, 192, 98, 32, 37, 33, 17, 0, 0, 0, 0, 0, 44, 38, 20, 0, 183, 161, 82, 126, 220, 207, 153, 255, 235, 217, 146, 255, 243, 211, 110, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 14, 0, 0, 208, 27, 190, 0, 209, 27, 204, 0, 209, 27, 204, 0, 209, 27, 204, 0, 209, 27, 204, 0, 209, 27, 204, 0, 209, 27, 204, 0, 209, 27, 204, 0, 209, 27, 204, 0, 209, 27, 204, 0, 209, 27, 213, 0, 209, 28, 255, 0, 209, 28, 255, 0, 204, 26, 165, 0, 145, 16, 3, 3, 0, 235, 90, 14, 17, 238, 255, 28, 40, 240, 255, 15, 150, 110, 255, 0, 209, 28, 255, 45, 147, 167, 255, 82, 129, 249, 255, 91, 146, 248, 255, 14, 201, 60, 255, 0, 209, 28, 255, 0, 209, 28, 255, 10, 190, 63, 255, 50, 76, 244, 255, 36, 53, 241, 255, 22, 30, 239, 255, 8, 10, 236, 107, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 172, 255, 255, 255, 255, 255, 255, 255, 195, 255, 255, 255, 36, 255, 255, 255, 25, 255, 255, 255, 115, 255, 255, 255, 142, 255, 255, 255, 98, 255, 255, 255, 142, 255, 255, 255, 255, 255, 255, 255, 249, 255, 255, 255, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 2, 255, 6, 6, 155, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 8, 8, 217, 255, 8, 8, 200, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 6, 6, 180, 191, 1, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 255, 8, 71, 24, 255, 9, 255, 24, 255, 9, 255, 23, 255, 7, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 24, 24, 24, 108, 26, 26, 26, 186, 27, 27, 27, 204, 27, 27, 27, 204, 27, 27, 27, 204, 27, 27, 27, 204, 27, 27, 27, 204, 25, 25, 25, 161, 13, 13, 13, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 26, 26, 26, 179, 138, 138, 138, 255, 207, 207, 207, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 190, 190, 190, 255, 140, 140, 140, 255, 27, 27, 27, 199, 3, 3, 3, 0, 0, 0, 0, 0, 19, 19, 19, 30, 36, 36, 36, 228, 199, 199, 199, 255, 246, 246, 246, 255, 246, 246, 246, 255, 229, 229, 229, 255, 61, 61, 61, 250, 23, 23, 23, 70, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 31, 35, 35, 35, 226, 194, 194, 194, 255, 246, 246, 246, 255, 246, 246, 246, 255, 236, 236, 236, 255, 76, 76, 76, 253, 53, 53, 53, 248, 205, 205, 205, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 161, 161, 161, 255, 31, 31, 31, 218, 13, 13, 13, 41, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 215, 255, 255, 255, 255, 255, 255, 255, 243, 255, 255, 255, 103, 255, 255, 255, 48, 255, 255, 255, 26, 255, 255, 255, 26, 255, 255, 255, 26, 255, 255, 255, 26, 255, 255, 255, 26, 255, 255, 255, 26, 255, 255, 255, 47, 255, 255, 255, 101, 255, 255, 255, 102, 255, 255, 255, 102, 255, 255, 255, 32, 255, 255, 255, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 191, 191, 191, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 54, 255, 255, 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 255, 255, 255, 174, 255, 255, 255, 84, 255, 255, 255, 7, 255, 255, 255, 62, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 255, 255, 255, 127, 255, 255, 255, 60, 255, 255, 255, 118, 255, 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 179, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 159, 82, 27, 224, 201, 109, 237, 235, 228, 197, 255, 194, 178, 119, 255, 157, 139, 71, 253, 136, 121, 59, 190, 109, 100, 33, 97, 87, 77, 37, 15, 207, 184, 96, 40, 244, 218, 115, 202, 229, 206, 115, 255, 231, 218, 166, 255, 236, 230, 206, 255, 212, 203, 167, 255, 177, 162, 101, 255, 159, 141, 72, 231, 122, 108, 55, 141, 152, 135, 69, 66, 180, 158, 83, 95, 196, 174, 91, 242, 240, 232, 202, 255, 233, 208, 110, 218, 149, 146, 53, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 13, 0, 0, 104, 13, 0, 0, 104, 13, 0, 0, 104, 13, 0, 0, 104, 13, 0, 0, 104, 13, 0, 0, 104, 13, 0, 0, 104, 13, 0, 0, 104, 13, 0, 0, 104, 13, 0, 0, 207, 27, 43, 0, 209, 28, 255, 0, 204, 26, 166, 0, 143, 16, 3, 0, 0, 0, 0, 2, 0, 233, 22, 10, 10, 236, 251, 24, 33, 239, 255, 15, 138, 121, 255, 6, 193, 53, 255, 58, 102, 232, 255, 72, 112, 247, 255, 73, 129, 232, 255, 3, 205, 37, 255, 0, 209, 28, 255, 0, 209, 28, 255, 24, 152, 124, 255, 45, 67, 243, 255, 31, 45, 241, 255, 18, 23, 238, 254, 3, 3, 234, 34, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 119, 255, 255, 255, 245, 255, 255, 255, 166, 255, 255, 255, 75, 255, 255, 255, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 241, 255, 255, 255, 255, 191, 191, 191, 17, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 255, 255, 255, 70, 255, 255, 255, 220, 255, 255, 255, 255, 255, 255, 255, 251, 255, 255, 255, 98, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 2, 255, 6, 6, 158, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 8, 8, 216, 191, 5, 5, 25, 191, 4, 4, 14, 255, 7, 7, 197, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 8, 8, 182, 191, 6, 6, 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, 0, 0, 0, 0, 23, 255, 7, 70, 24, 255, 9, 255, 24, 255, 9, 255, 23, 255, 7, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 0, 23, 23, 23, 108, 99, 99, 99, 255, 215, 215, 215, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 186, 186, 186, 255, 44, 44, 44, 239, 13, 13, 13, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 12, 25, 25, 25, 128, 26, 26, 26, 177, 26, 26, 26, 179, 26, 26, 26, 179, 26, 26, 26, 179, 26, 26, 26, 179, 26, 26, 26, 153, 26, 26, 26, 153, 26, 26, 26, 153, 26, 26, 26, 120, 18, 18, 18, 16, 0, 0, 0, 0, 18, 18, 18, 8, 30, 30, 30, 214, 183, 183, 183, 255, 246, 246, 246, 255, 246, 246, 246, 255, 237, 237, 237, 255, 74, 74, 74, 253, 26, 26, 26, 91, 6, 6, 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, 0, 13, 13, 13, 39, 39, 39, 39, 233, 203, 203, 203, 255, 246, 246, 246, 255, 246, 246, 246, 255, 240, 240, 240, 255, 237, 237, 237, 255, 246, 246, 246, 255, 246, 246, 246, 255, 243, 243, 243, 255, 122, 122, 122, 255, 25, 25, 25, 187, 18, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 61, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 191, 191, 191, 9, 191, 191, 191, 10, 255, 255, 255, 136, 255, 255, 255, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 255, 255, 255, 82, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 104, 255, 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 255, 255, 255, 155, 255, 255, 255, 68, 255, 255, 255, 86, 255, 255, 255, 176, 255, 255, 255, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 52, 26, 0, 227, 203, 102, 72, 213, 189, 100, 243, 222, 210, 162, 255, 231, 226, 204, 255, 199, 190, 154, 255, 155, 140, 83, 255, 138, 122, 61, 247, 138, 122, 61, 168, 172, 160, 80, 78, 212, 189, 96, 74, 237, 209, 111, 162, 223, 198, 104, 243, 217, 197, 119, 255, 231, 220, 175, 255, 237, 231, 207, 255, 217, 206, 161, 255, 207, 190, 121, 255, 213, 195, 124, 255, 240, 232, 204, 255, 241, 223, 154, 255, 243, 216, 114, 103, 61, 54, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 27, 43, 0, 206, 25, 167, 0, 147, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 4, 3, 235, 158, 18, 22, 238, 255, 11, 135, 118, 255, 31, 97, 189, 255, 52, 78, 244, 255, 60, 92, 245, 255, 65, 101, 246, 255, 31, 157, 131, 255, 0, 209, 28, 255, 6, 193, 54, 255, 44, 79, 230, 255, 37, 54, 241, 255, 24, 34, 239, 255, 9, 12, 235, 176, 1, 1, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 2, 191, 191, 191, 13, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 138, 255, 255, 255, 255, 255, 255, 255, 245, 191, 191, 191, 11, 191, 191, 191, 4, 255, 255, 255, 95, 255, 255, 255, 156, 191, 191, 191, 6, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 228, 255, 255, 255, 255, 255, 255, 255, 50, 128, 128, 128, 0, 191, 191, 191, 22, 255, 255, 255, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 255, 255, 255, 48, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 2, 2, 0, 255, 6, 6, 133, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 8, 8, 214, 191, 5, 5, 24, 0, 0, 0, 0, 0, 0, 0, 0, 191, 3, 3, 13, 255, 8, 8, 195, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 8, 8, 163, 128, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 255, 7, 68, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, 0, 26, 26, 26, 179, 209, 209, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, 115, 115, 255, 26, 26, 26, 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, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 12, 12, 12, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 12, 12, 12, 0, 13, 13, 13, 0, 13, 13, 13, 0, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25, 93, 121, 121, 121, 255, 246, 246, 246, 255, 246, 246, 246, 255, 242, 242, 242, 255, 89, 89, 89, 254, 25, 25, 25, 114, 6, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 48, 45, 45, 45, 239, 211, 211, 211, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 232, 232, 232, 255, 86, 86, 86, 254, 20, 20, 20, 146, 12, 12, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 90, 255, 255, 255, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 255, 255, 255, 69, 64, 64, 64, 0, 0, 0, 0, 0, 64, 64, 64, 0, 191, 191, 191, 5, 255, 255, 255, 46, 255, 255, 255, 73, 255, 255, 255, 91, 255, 255, 255, 110, 255, 255, 255, 128, 255, 255, 255, 153, 255, 255, 255, 172, 255, 255, 255, 179, 255, 255, 255, 153, 255, 255, 255, 38, 64, 64, 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, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 42, 255, 255, 255, 149, 255, 255, 255, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 255, 255, 255, 157, 255, 255, 255, 150, 255, 255, 255, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 112, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 46, 23, 0, 216, 183, 93, 27, 207, 185, 96, 134, 194, 172, 90, 225, 198, 181, 118, 255, 220, 210, 175, 255, 225, 220, 197, 255, 200, 189, 147, 255, 176, 158, 86, 255, 184, 164, 84, 255, 198, 176, 91, 238, 218, 193, 101, 162, 236, 210, 109, 151, 235, 209, 109, 183, 230, 205, 108, 251, 236, 216, 141, 255, 246, 232, 179, 255, 248, 235, 182, 255, 246, 224, 141, 255, 233, 213, 102, 149, 160, 160, 76, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 17, 11, 0, 150, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 176, 21, 9, 9, 236, 226, 17, 56, 203, 255, 31, 44, 240, 255, 39, 59, 242, 255, 46, 70, 243, 255, 50, 77, 244, 255, 48, 86, 229, 255, 3, 198, 44, 255, 32, 98, 190, 255, 36, 53, 241, 255, 27, 38, 240, 255, 16, 20, 238, 234, 3, 3, 117, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 85, 255, 255, 255, 255, 255, 255, 255, 170, 128, 128, 128, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 127, 255, 255, 255, 255, 255, 255, 255, 241, 255, 255, 255, 183, 255, 255, 255, 241, 255, 255, 255, 255, 255, 255, 255, 242, 255, 255, 255, 109, 191, 191, 191, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 5, 5, 25, 255, 8, 8, 216, 255, 9, 9, 255, 255, 8, 8, 212, 191, 6, 6, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 4, 4, 12, 255, 8, 8, 193, 255, 9, 9, 255, 255, 9, 9, 231, 255, 2, 2, 41, 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, 0, 0, 0, 22, 255, 7, 68, 24, 255, 9, 255, 24, 255, 9, 255, 24, 255, 9, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 0, 20, 20, 20, 129, 126, 126, 126, 255, 247, 247, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 223, 223, 255, 55, 55, 55, 250, 24, 24, 24, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26, 92, 119, 119, 119, 255, 246, 246, 246, 255, 245, 245, 245, 255, 108, 108, 108, 255, 26, 26, 26, 139, 6, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 21, 21, 21, 57, 50, 50, 50, 244, 218, 218, 218, 255, 246, 246, 246, 255, 246, 246, 246, 255, 212, 212, 212, 255, 59, 59, 59, 249, 26, 26, 26, 100, 6, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 30, 255, 255, 255, 128, 255, 255, 255, 167, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 142, 255, 255, 255, 36, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 191, 191, 191, 5, 255, 255, 255, 77, 255, 255, 255, 169, 255, 255, 255, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 191, 191, 191, 10, 255, 255, 255, 34, 255, 255, 255, 120, 255, 255, 255, 173, 255, 255, 255, 141, 255, 255, 255, 52, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 47, 24, 0, 153, 118, 44, 1, 201, 177, 91, 63, 199, 175, 92, 155, 196, 175, 91, 239, 216, 200, 140, 255, 236, 227, 192, 255, 238, 230, 201, 255, 237, 225, 179, 255, 236, 211, 113, 255, 247, 220, 116, 226, 182, 165, 86, 26, 232, 219, 113, 22, 226, 209, 96, 108, 248, 220, 116, 169, 245, 218, 113, 153, 246, 219, 114, 68, 109, 103, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 2, 0, 202, 41, 10, 10, 237, 223, 19, 26, 238, 255, 27, 38, 240, 255, 33, 47, 241, 255, 36, 53, 241, 255, 37, 54, 242, 255, 29, 74, 207, 255, 30, 44, 240, 255, 24, 33, 239, 255, 15, 19, 237, 229, 3, 3, 224, 51, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 15, 255, 255, 255, 89, 191, 191, 191, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 2, 255, 255, 255, 147, 255, 255, 255, 250, 255, 255, 255, 255, 255, 255, 255, 251, 255, 255, 255, 168, 191, 191, 191, 27, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 5, 5, 24, 255, 8, 8, 171, 191, 6, 6, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 4, 4, 11, 255, 7, 7, 167, 255, 4, 4, 39, 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, 0, 0, 0, 0, 0, 0, 0, 17, 191, 5, 33, 24, 255, 9, 128, 23, 255, 8, 149, 22, 255, 8, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, 6, 23, 23, 23, 148, 27, 27, 27, 222, 27, 27, 27, 230, 27, 27, 27, 230, 27, 27, 27, 230, 27, 27, 27, 230, 27, 27, 27, 230, 26, 26, 26, 202, 24, 24, 24, 77, 6, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 8, 28, 28, 28, 204, 98, 98, 98, 255, 74, 74, 74, 255, 26, 26, 26, 149, 3, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 0, 24, 24, 24, 67, 54, 54, 54, 248, 179, 179, 179, 255, 158, 158, 158, 255, 40, 40, 40, 234, 13, 13, 13, 61, 6, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 191, 191, 191, 15, 255, 255, 255, 97, 255, 255, 255, 184, 255, 255, 255, 235, 255, 255, 255, 219, 255, 255, 255, 140, 191, 191, 191, 15, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 89, 47, 0, 161, 140, 71, 7, 219, 194, 101, 84, 229, 204, 107, 173, 236, 210, 111, 227, 244, 217, 114, 228, 245, 217, 115, 160, 184, 163, 86, 27, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 16, 0, 124, 110, 58, 0, 122, 108, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 167, 17, 6, 6, 219, 144, 14, 16, 237, 244, 19, 24, 238, 255, 21, 29, 239, 255, 22, 30, 239, 255, 20, 27, 239, 255, 16, 21, 238, 249, 8, 10, 234, 152, 5, 4, 175, 22, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 24, 255, 255, 255, 51, 255, 255, 255, 23, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 35, 0, 10, 0, 70, 0, 10, 0, 70, 0, 137, 5, 73, 0, 53, 49, 80, 0, 53, 49, 80, 0, 53, 49, 80, 0, 53, 49, 80, 0, 53, 49, 80, 0, 53, 49, 80, 0, 53, 49, 80, 0, 53, 49, 80, 0, 153, 21, 76, 0, 10, 0, 70, 0, 4, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 43, 5, 0, 99, 88, 10, 0, 99, 88, 10, 0, 99, 88, 10, 0, 99, 88, 10, 0, 99, 88, 10, 0, 99, 88, 10, 0, 109, 215, 13, 0, 104, 151, 12, 0, 99, 88, 10, 0, 99, 87, 9, 0, 47, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 3, 26, 26, 26, 66, 24, 24, 24, 44, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 24, 24, 24, 51, 24, 24, 24, 157, 24, 24, 24, 139, 18, 18, 18, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 55, 0, 121, 108, 57, 0, 123, 110, 58, 0, 122, 107, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 101, 0, 1, 1, 176, 10, 7, 5, 235, 70, 10, 11, 236, 105, 10, 11, 236, 102, 9, 8, 235, 77, 5, 5, 176, 13, 2, 2, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 23, 46, 0, 128, 50, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 141, 77, 20, 0, 141, 153, 20, 0, 141, 153, 21, 3, 140, 153, 141, 137, 167, 173, 141, 137, 167, 173, 141, 137, 167, 173, 141, 137, 167, 173, 141, 137, 167, 173, 141, 137, 167, 173, 141, 137, 167, 173, 141, 137, 167, 173, 61, 46, 149, 160, 20, 0, 141, 153, 18, 0, 137, 86, 5, 0, 35, 0, 0, 0, 0, 0, 199, 176, 20, 51, 207, 185, 28, 179, 209, 188, 30, 179, 209, 188, 30, 179, 209, 188, 30, 179, 209, 188, 30, 179, 209, 188, 30, 179, 209, 188, 30, 179, 209, 188, 30, 179, 209, 188, 30, 179, 204, 182, 25, 179, 190, 160, 6, 67, 45, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 0, 13, 13, 13, 0, 23, 23, 23, 20, 13, 13, 13, 0, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 13, 13, 13, 0, 13, 13, 13, 0, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 0, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 29, 29, 0, 83, 83, 83, 5, 117, 117, 117, 59, 117, 117, 117, 92, 117, 117, 117, 95, 116, 116, 116, 63, 85, 85, 85, 7, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 36, 34, 0, 255, 114, 163, 65, 255, 101, 187, 180, 191, 76, 140, 11, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 141, 128, 20, 0, 141, 255, 20, 0, 141, 255, 23, 3, 141, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 161, 159, 172, 255, 146, 142, 168, 255, 175, 175, 175, 255, 70, 57, 152, 255, 20, 0, 141, 255, 20, 0, 141, 253, 19, 0, 139, 93, 5, 0, 35, 0, 200, 180, 21, 82, 244, 225, 60, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 231, 212, 49, 255, 217, 196, 37, 251, 184, 151, 6, 67, 45, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 26, 24, 24, 24, 160, 42, 42, 42, 246, 67, 67, 67, 255, 35, 35, 35, 236, 26, 26, 26, 133, 16, 16, 16, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 0, 24, 24, 24, 63, 25, 25, 25, 158, 27, 27, 27, 197, 27, 27, 27, 192, 20, 20, 20, 141, 18, 18, 18, 34, 6, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 86, 86, 13, 116, 116, 116, 133, 119, 119, 119, 240, 122, 122, 122, 255, 123, 123, 123, 255, 124, 124, 124, 255, 123, 123, 123, 255, 120, 120, 120, 241, 110, 110, 110, 143, 83, 83, 83, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 47, 27, 0, 214, 155, 142, 79, 255, 106, 184, 252, 255, 102, 188, 255, 255, 102, 187, 192, 191, 73, 137, 11, 0, 0, 0, 0, 20, 0, 141, 128, 20, 0, 141, 255, 20, 0, 141, 255, 23, 3, 141, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 103, 94, 159, 255, 29, 10, 143, 255, 175, 175, 175, 255, 70, 57, 152, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 140, 205, 10, 0, 70, 0, 200, 180, 21, 82, 244, 225, 60, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 233, 213, 50, 255, 229, 209, 47, 255, 206, 184, 27, 251, 188, 158, 10, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 38, 36, 36, 36, 227, 164, 164, 164, 255, 244, 244, 244, 255, 246, 246, 246, 255, 237, 237, 237, 255, 131, 131, 131, 255, 25, 25, 25, 186, 17, 17, 17, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 24, 24, 24, 165, 84, 84, 84, 255, 178, 178, 178, 255, 219, 219, 219, 255, 215, 215, 215, 255, 160, 160, 160, 255, 54, 54, 54, 247, 26, 26, 26, 102, 6, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 87, 87, 36, 116, 116, 116, 216, 118, 118, 118, 255, 126, 126, 126, 255, 131, 131, 131, 255, 132, 132, 132, 255, 133, 133, 133, 255, 132, 132, 132, 255, 129, 129, 129, 255, 125, 125, 125, 255, 121, 121, 121, 226, 113, 113, 113, 44, 27, 27, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 47, 26, 0, 255, 196, 98, 58, 224, 188, 119, 243, 222, 130, 179, 255, 255, 102, 188, 255, 255, 102, 188, 255, 255, 100, 186, 183, 191, 12, 23, 0, 20, 0, 141, 128, 20, 0, 141, 255, 20, 0, 141, 255, 23, 3, 141, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 103, 94, 159, 255, 29, 10, 143, 255, 175, 175, 175, 255, 70, 57, 152, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 140, 205, 10, 0, 70, 0, 200, 180, 21, 82, 244, 225, 60, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 254, 236, 69, 255, 249, 231, 65, 255, 243, 224, 60, 255, 202, 180, 23, 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, 0, 0, 0, 17, 17, 17, 8, 30, 30, 30, 215, 192, 192, 192, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 141, 141, 141, 255, 26, 26, 26, 175, 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 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, 0, 0, 0, 0, 0, 19, 19, 19, 36, 35, 35, 35, 226, 154, 154, 154, 255, 245, 245, 245, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 232, 232, 232, 255, 78, 78, 78, 254, 26, 26, 26, 97, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 0, 12, 12, 12, 0, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 84, 84, 19, 118, 118, 118, 221, 114, 114, 114, 255, 105, 105, 105, 255, 114, 114, 114, 255, 138, 138, 138, 255, 141, 141, 141, 255, 142, 142, 142, 255, 139, 139, 139, 255, 123, 123, 123, 255, 133, 133, 133, 255, 128, 128, 128, 255, 122, 122, 122, 231, 86, 86, 86, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 47, 26, 0, 255, 191, 102, 58, 248, 196, 98, 242, 225, 175, 80, 255, 193, 158, 94, 255, 221, 129, 178, 255, 252, 102, 184, 254, 231, 97, 152, 83, 64, 13, 23, 0, 20, 0, 141, 128, 20, 0, 141, 255, 20, 0, 141, 255, 23, 3, 141, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 132, 126, 165, 255, 87, 76, 155, 255, 175, 175, 175, 255, 70, 57, 152, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 140, 205, 10, 0, 70, 0, 200, 180, 21, 82, 244, 225, 60, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 249, 230, 64, 255, 202, 180, 23, 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, 3, 3, 3, 0, 26, 26, 26, 125, 132, 132, 132, 255, 246, 246, 246, 255, 246, 246, 246, 255, 244, 244, 244, 255, 199, 199, 199, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 91, 91, 91, 255, 16, 16, 16, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 12, 12, 12, 38, 25, 25, 25, 165, 30, 30, 30, 226, 29, 29, 29, 220, 25, 25, 25, 100, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 31, 35, 35, 35, 225, 191, 191, 191, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 232, 232, 232, 255, 49, 49, 49, 243, 13, 13, 13, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 23, 23, 23, 96, 26, 26, 26, 168, 24, 24, 24, 115, 9, 9, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 77, 77, 17, 75, 75, 75, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 0, 112, 112, 112, 153, 123, 123, 123, 255, 126, 126, 126, 255, 105, 105, 105, 255, 105, 105, 105, 255, 127, 127, 127, 255, 150, 150, 150, 255, 141, 141, 141, 255, 111, 111, 111, 255, 105, 105, 105, 255, 132, 132, 132, 255, 134, 134, 134, 255, 127, 127, 127, 255, 118, 118, 118, 170, 56, 56, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 48, 24, 0, 255, 192, 99, 58, 248, 196, 98, 242, 225, 175, 80, 255, 201, 153, 61, 255, 177, 130, 42, 255, 159, 127, 69, 249, 181, 120, 123, 98, 48, 25, 28, 0, 0, 0, 0, 0, 20, 0, 141, 128, 20, 0, 141, 255, 20, 0, 141, 255, 23, 3, 141, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 70, 57, 152, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 140, 205, 10, 0, 70, 0, 200, 180, 21, 82, 244, 225, 60, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 249, 230, 64, 255, 202, 180, 23, 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, 10, 10, 10, 26, 51, 51, 51, 245, 236, 236, 236, 255, 246, 246, 246, 255, 246, 246, 246, 255, 111, 111, 111, 255, 26, 26, 26, 226, 143, 143, 143, 255, 246, 246, 246, 255, 246, 246, 246, 255, 212, 212, 212, 255, 31, 31, 31, 217, 18, 18, 18, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 0, 22, 22, 22, 75, 46, 46, 46, 240, 175, 175, 175, 255, 244, 244, 244, 255, 230, 230, 230, 255, 66, 66, 66, 254, 26, 26, 26, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 16, 10, 29, 29, 29, 211, 184, 184, 184, 255, 246, 246, 246, 255, 246, 246, 246, 255, 244, 244, 244, 255, 142, 142, 142, 255, 43, 43, 43, 244, 50, 50, 50, 247, 208, 208, 208, 255, 246, 246, 246, 255, 246, 246, 246, 255, 179, 179, 179, 255, 25, 25, 25, 184, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 26, 26, 26, 126, 90, 90, 90, 254, 191, 191, 191, 255, 111, 111, 111, 255, 19, 19, 19, 138, 6, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 105, 105, 43, 103, 103, 103, 194, 75, 75, 75, 12, 0, 0, 0, 0, 0, 0, 0, 0, 100, 100, 100, 18, 120, 120, 120, 250, 128, 128, 128, 255, 111, 111, 111, 255, 105, 105, 105, 255, 111, 111, 111, 255, 150, 150, 150, 255, 159, 159, 159, 255, 137, 137, 137, 255, 105, 105, 105, 255, 105, 105, 105, 255, 109, 109, 109, 255, 117, 117, 117, 255, 119, 119, 119, 255, 120, 120, 120, 254, 113, 113, 113, 34, 64, 0, 0, 0, 255, 3, 3, 18, 255, 5, 5, 26, 255, 5, 5, 26, 255, 5, 5, 26, 255, 5, 5, 26, 255, 5, 5, 26, 255, 7, 7, 20, 128, 4, 4, 0, 128, 5, 5, 0, 128, 5, 5, 0, 128, 5, 5, 0, 128, 5, 5, 0, 128, 5, 5, 0, 64, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 48, 24, 0, 255, 194, 97, 58, 248, 196, 98, 242, 225, 175, 80, 255, 201, 153, 61, 255, 177, 130, 42, 255, 153, 107, 23, 248, 127, 88, 3, 73, 33, 27, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 141, 128, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 141, 255, 20, 0, 140, 205, 10, 0, 70, 0, 200, 180, 21, 82, 244, 225, 60, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 249, 230, 64, 255, 202, 180, 23, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 19, 19, 19, 140, 154, 154, 154, 255, 246, 246, 246, 255, 246, 246, 246, 255, 193, 193, 193, 255, 27, 27, 27, 190, 15, 15, 15, 9, 32, 32, 32, 220, 216, 216, 216, 255, 246, 246, 246, 255, 246, 246, 246, 255, 123, 123, 123, 255, 24, 24, 24, 113, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 22, 43, 54, 54, 54, 247, 221, 221, 221, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 124, 124, 124, 255, 26, 26, 26, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 20, 20, 20, 156, 141, 141, 141, 255, 246, 246, 246, 255, 246, 246, 246, 255, 242, 242, 242, 255, 95, 95, 95, 254, 20, 20, 20, 155, 15, 15, 15, 11, 25, 25, 25, 56, 63, 63, 63, 251, 242, 242, 242, 255, 246, 246, 246, 255, 246, 246, 246, 255, 86, 86, 86, 255, 24, 24, 24, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 24, 24, 24, 83, 74, 74, 74, 253, 240, 240, 240, 255, 246, 246, 246, 255, 234, 234, 234, 255, 26, 26, 26, 214, 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 52, 0, 53, 53, 53, 0, 53, 53, 53, 0, 53, 53, 53, 0, 53, 53, 53, 0, 53, 53, 53, 0, 53, 53, 53, 0, 53, 53, 53, 0, 53, 53, 53, 0, 53, 53, 53, 0, 105, 105, 105, 43, 105, 105, 105, 255, 103, 103, 103, 193, 76, 76, 76, 11, 0, 0, 0, 0, 117, 117, 117, 88, 123, 123, 123, 255, 125, 125, 125, 255, 105, 105, 105, 255, 110, 110, 110, 255, 149, 149, 149, 255, 162, 162, 162, 255, 167, 167, 167, 255, 161, 161, 161, 255, 105, 105, 105, 255, 105, 105, 105, 255, 105, 105, 105, 255, 105, 105, 105, 255, 105, 105, 105, 255, 116, 116, 116, 255, 118, 118, 118, 105, 128, 4, 4, 0, 255, 8, 8, 180, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 8, 8, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 48, 24, 0, 255, 194, 97, 59, 248, 196, 97, 242, 225, 175, 80, 255, 201, 152, 61, 255, 177, 130, 42, 255, 153, 107, 23, 248, 127, 88, 3, 73, 31, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 141, 128, 20, 0, 141, 255, 64, 50, 150, 255, 111, 103, 161, 255, 113, 105, 161, 255, 113, 105, 161, 255, 113, 105, 161, 255, 113, 105, 161, 255, 113, 105, 161, 255, 113, 105, 161, 255, 113, 105, 161, 255, 113, 105, 161, 255, 113, 105, 161, 255, 89, 78, 156, 255, 22, 2, 141, 255, 20, 0, 140, 205, 10, 0, 70, 0, 200, 180, 21, 82, 244, 225, 60, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 249, 230, 64, 255, 202, 180, 23, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 21, 47, 47, 47, 242, 239, 239, 239, 255, 246, 246, 246, 255, 246, 246, 246, 255, 79, 79, 79, 255, 23, 23, 23, 56, 6, 6, 6, 0, 26, 26, 26, 84, 98, 98, 98, 255, 246, 246, 246, 255, 246, 246, 246, 255, 232, 232, 232, 255, 43, 43, 43, 239, 15, 15, 15, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 7, 28, 28, 28, 207, 193, 193, 193, 255, 246, 246, 246, 255, 246, 246, 246, 255, 238, 238, 238, 255, 174, 174, 174, 255, 45, 45, 45, 240, 12, 12, 12, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 71, 81, 81, 81, 255, 244, 244, 244, 255, 246, 246, 246, 255, 246, 246, 246, 255, 110, 110, 110, 255, 20, 20, 20, 142, 6, 6, 6, 0, 0, 0, 0, 0, 6, 6, 6, 0, 20, 20, 20, 148, 152, 152, 152, 255, 246, 246, 246, 255, 246, 246, 246, 255, 199, 199, 199, 255, 27, 27, 27, 199, 3, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25, 46, 50, 50, 50, 244, 224, 224, 224, 255, 246, 246, 246, 255, 246, 246, 246, 255, 174, 174, 174, 255, 25, 25, 25, 168, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 52, 0, 105, 105, 105, 214, 105, 105, 105, 230, 105, 105, 105, 230, 105, 105, 105, 230, 105, 105, 105, 230, 105, 105, 105, 230, 105, 105, 105, 230, 105, 105, 105, 230, 105, 105, 105, 230, 105, 105, 105, 230, 105, 105, 105, 234, 105, 105, 105, 255, 105, 105, 105, 255, 104, 104, 104, 192, 77, 77, 77, 11, 111, 111, 111, 122, 124, 124, 124, 255, 130, 130, 130, 255, 105, 105, 105, 255, 135, 135, 135, 255, 159, 159, 159, 255, 167, 167, 167, 255, 174, 174, 174, 255, 177, 177, 177, 255, 159, 159, 159, 255, 150, 150, 150, 255, 134, 134, 134, 255, 107, 107, 107, 255, 105, 105, 105, 255, 125, 125, 125, 255, 116, 116, 116, 137, 128, 4, 4, 0, 255, 8, 8, 178, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 255, 255, 9, 9, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 48, 24, 0, 255, 194, 97, 59, 248, 195, 98, 242, 225, 175, 80, 255, 201, 152, 61, 255, 177, 129, 42, 255, 153, 107, 23, 248, 129, 85, 3, 73, 31, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 141, 128, 28, 9, 142, 255, 171, 171, 174, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 71, 58, 152, 255, 20, 0, 140, 205, 10, 0, 70, 0, 200, 180, 21, 82, 244, 225, 60, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 249, 230, 64, 255, 202, 180, 23, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 20, 20, 20, 140, 151, 151, 151, 255, 246, 246, 246, 255, 246, 246, 246, 255, 183, 183, 183, 255, 26, 26, 26, 178, 12, 12, 12, 0, 0, 0, 0, 0, 3, 3, 3, 1, 26, 26, 26, 195, 194, 194, 194, 255, 246, 246, 246, 255, 246, 246, 246, 255, 150, 150, 150, 255, 19, 19, 19, 144, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 20, 20, 20, 142, 131, 131, 131, 255, 246, 246, 246, 255, 246, 246, 246, 255, 232, 232, 232, 255, 60, 60, 60, 249, 23, 23, 23, 155, 24, 24, 24, 47, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 16, 6, 30, 30, 30, 216, 209, 209, 209, 255, 246, 246, 246, 255, 246, 246, 246, 255, 160, 160, 160, 255, 25, 25, 25, 177, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 19, 42, 42, 42, 237, 230, 230, 230, 255, 246, 246, 246, 255, 246, 246, 246, 255, 103, 103, 103, 255, 22, 22, 22, 91, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 13, 13, 13, 35, 33, 33, 33, 222, 200, 200, 200, 255, 246, 246, 246, 255, 246, 246, 246, 255, 212, 212, 212, 255, 40, 40, 40, 233, 18, 18, 18, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 52, 0, 105, 105, 105, 238, 105, 105, 105, 255, 105, 105, 105, 255, 105, 105, 105, 255, 105, 105, 105, 255, 105, 105, 105, 255, 105, 105, 105, 255, 105, 105, 105, 255, 105, 105, 105, 255, 105, 105, 105, 255, 105, 105, 105, 255, 105, 105, 105, 255, 105, 105, 105, 255, 105, 105, 105, 255, 93, 93, 93, 111, 108, 108, 108, 120, 125, 125, 125, 255, 133, 133, 133, 255, 111, 111, 111, 255, 113, 113, 113, 255, 158, 158, 158, 255, 168, 168, 168, 255, 176, 176, 176, 255, 154, 154, 154, 255, 128, 128, 128, 255, 131, 131, 131, 255, 133, 133, 133, 255, 141, 141, 141, 255, 117, 117, 117, 255, 130, 130, 130, 255, 116, 116, 116, 139, 64, 2, 2, 0, 255, 8, 8, 89, 255, 9, 9, 128, 255, 9, 9, 128, 255, 9, 9, 128, 255, 9, 9, 128, 255, 8, 8, 137, 255, 7, 7, 153, 255, 7, 7, 153, 255, 7, 7, 153, 255, 7, 7, 153, 255, 7, 7, 153, 255, 7, 7, 153, 255, 7, 7, 153, 255, 8, 8, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 48, 24, 0, 255, 194, 97, 59, 247, 195, 98, 242, 225, 175, 80, 255, 201, 152, 61, 255, 177, 129, 42, 255, 153, 107, 23, 248, 130, 83, 3, 72, 32, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 141, 128, 36, 19, 144, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 84, 72, 155, 255, 20, 0, 140, 205, 10, 0, 70, 0, 200, 180, 21, 82, 244, 225, 60, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 249, 230, 64, 255, 202, 180, 23, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 26, 51, 51, 51, 246, 240, 240, 240, 255, 246, 246, 246, 255, 246, 246, 246, 255, 73, 73, 73, 254, 25, 25, 25, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 53, 71, 71, 71, 254, 245, 245, 245, 255, 246, 246, 246, 255, 241, 241, 241, 255, 65, 65, 65, 252, 15, 15, 15, 58, 0, 0, 0, 0, 6, 6, 6, 0, 24, 24, 24, 86, 79, 79, 79, 254, 242, 242, 242, 255, 246, 246, 246, 255, 246, 246, 246, 255, 104, 104, 104, 255, 26, 26, 26, 106, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 24, 24, 24, 118, 125, 125, 125, 255, 246, 246, 246, 255, 246, 246, 246, 255, 222, 222, 222, 255, 35, 35, 35, 228, 17, 17, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 26, 26, 26, 111, 124, 124, 124, 255, 246, 246, 246, 255, 246, 246, 246, 255, 220, 220, 220, 255, 34, 34, 34, 226, 19, 19, 19, 10, 0, 0, 0, 0, 6, 6, 6, 0, 23, 23, 23, 63, 41, 41, 41, 236, 189, 189, 189, 255, 246, 246, 246, 255, 246, 246, 246, 255, 233, 233, 233, 255, 60, 60, 60, 250, 25, 25, 25, 62, 6, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 52, 0, 105, 105, 105, 166, 105, 105, 105, 179, 105, 105, 105, 179, 105, 105, 105, 179, 105, 105, 105, 179, 105, 105, 105, 179, 105, 105, 105, 179, 105, 105, 105, 179, 105, 105, 105, 179, 105, 105, 105, 179, 105, 105, 105, 191, 105, 105, 105, 255, 105, 105, 105, 255, 104, 104, 104, 151, 72, 72, 72, 1, 117, 117, 117, 87, 124, 124, 124, 255, 132, 132, 132, 255, 118, 118, 118, 255, 105, 105, 105, 255, 138, 138, 138, 255, 165, 165, 165, 255, 169, 169, 169, 255, 113, 113, 113, 255, 105, 105, 105, 255, 105, 105, 105, 255, 113, 113, 113, 255, 146, 146, 146, 255, 137, 137, 137, 255, 129, 129, 129, 255, 119, 119, 119, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 2, 2, 0, 128, 3, 3, 0, 128, 3, 3, 0, 128, 3, 3, 0, 128, 3, 3, 0, 128, 3, 3, 0, 128, 3, 3, 0, 128, 3, 3, 0, 64, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 48, 32, 0, 255, 194, 109, 58, 247, 196, 98, 242, 225, 174, 80, 255, 201, 152, 61, 255, 177, 129, 42, 255, 153, 107, 23, 248, 130, 83, 3, 72, 32, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 141, 128, 36, 19, 144, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 84, 72, 155, 255, 20, 0, 140, 205, 10, 0, 70, 0, 200, 180, 21, 82, 244, 225, 60, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 249, 230, 64, 255, 202, 180, 23, 108, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 19, 19, 19, 32, 20, 20, 20, 169, 159, 159, 159, 255, 246, 246, 246, 255, 246, 246, 246, 255, 189, 189, 189, 255, 26, 26, 26, 180, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 26, 26, 26, 166, 169, 169, 169, 255, 246, 246, 246, 255, 246, 246, 246, 255, 206, 206, 206, 255, 37, 37, 37, 230, 16, 16, 16, 75, 24, 24, 24, 101, 50, 50, 50, 244, 226, 226, 226, 255, 246, 246, 246, 255, 246, 246, 246, 255, 172, 172, 172, 255, 26, 26, 26, 185, 3, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 23, 47, 47, 47, 242, 234, 234, 234, 255, 246, 246, 246, 255, 246, 246, 246, 255, 108, 108, 108, 255, 25, 25, 25, 96, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 7, 34, 34, 34, 226, 223, 223, 223, 255, 246, 246, 246, 255, 246, 246, 246, 255, 135, 135, 135, 255, 26, 26, 26, 146, 19, 19, 19, 18, 25, 25, 25, 129, 60, 60, 60, 250, 214, 214, 214, 255, 246, 246, 246, 255, 246, 246, 246, 255, 244, 244, 244, 255, 89, 89, 89, 254, 25, 25, 25, 103, 6, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 52, 0, 53, 53, 53, 0, 53, 53, 53, 0, 53, 53, 53, 0, 53, 53, 53, 0, 53, 53, 53, 0, 53, 53, 53, 0, 53, 53, 53, 0, 53, 53, 53, 0, 53, 53, 53, 0, 105, 105, 105, 43, 105, 105, 105, 255, 104, 104, 104, 152, 77, 77, 77, 1, 0, 0, 0, 0, 113, 113, 113, 19, 121, 121, 121, 249, 130, 130, 130, 255, 118, 118, 118, 255, 111, 111, 111, 255, 150, 150, 150, 255, 158, 158, 158, 255, 158, 158, 158, 255, 108, 108, 108, 255, 105, 105, 105, 255, 105, 105, 105, 255, 124, 124, 124, 255, 142, 142, 142, 255, 134, 134, 134, 255, 126, 126, 126, 254, 112, 112, 112, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 111, 83, 0, 255, 222, 164, 193, 230, 184, 97, 238, 200, 152, 60, 255, 177, 129, 42, 255, 152, 107, 23, 248, 127, 85, 3, 72, 31, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 141, 128, 36, 19, 144, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 84, 72, 155, 255, 20, 0, 140, 205, 10, 0, 70, 0, 200, 180, 21, 82, 244, 225, 60, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 249, 230, 64, 255, 202, 180, 23, 108, 0, 0, 0, 0, 3, 3, 3, 0, 26, 26, 26, 124, 62, 62, 62, 252, 135, 135, 135, 255, 245, 245, 245, 255, 246, 246, 246, 255, 244, 244, 244, 255, 69, 69, 69, 253, 24, 24, 24, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, 30, 45, 45, 45, 240, 225, 225, 225, 255, 246, 246, 246, 255, 246, 246, 246, 255, 203, 203, 203, 255, 107, 107, 107, 255, 124, 124, 124, 255, 223, 223, 223, 255, 246, 246, 246, 255, 246, 246, 246, 255, 223, 223, 223, 255, 43, 43, 43, 237, 20, 20, 20, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 0, 20, 20, 20, 139, 152, 152, 152, 255, 246, 246, 246, 255, 246, 246, 246, 255, 204, 204, 204, 255, 28, 28, 28, 206, 3, 3, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 0, 24, 24, 24, 95, 101, 101, 101, 255, 246, 246, 246, 255, 246, 246, 246, 255, 242, 242, 242, 255, 106, 106, 106, 255, 54, 54, 54, 253, 142, 142, 142, 255, 235, 235, 235, 255, 246, 246, 246, 255, 246, 246, 246, 255, 245, 245, 245, 255, 112, 112, 112, 255, 19, 19, 19, 147, 6, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 105, 105, 43, 100, 100, 100, 153, 74, 74, 74, 1, 0, 0, 0, 0, 0, 0, 0, 0, 55, 55, 55, 0, 116, 116, 116, 149, 126, 126, 126, 255, 116, 116, 116, 255, 132, 132, 132, 255, 146, 146, 146, 255, 151, 151, 151, 255, 154, 154, 154, 255, 130, 130, 130, 255, 105, 105, 105, 255, 111, 111, 111, 255, 141, 141, 141, 255, 137, 137, 137, 255, 130, 130, 130, 255, 119, 119, 119, 167, 55, 55, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 220, 164, 52, 255, 224, 167, 255, 253, 221, 162, 240, 192, 148, 67, 238, 152, 107, 23, 248, 127, 85, 3, 72, 31, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 141, 128, 36, 19, 144, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 84, 72, 155, 255, 20, 0, 140, 205, 10, 0, 70, 0, 200, 180, 21, 82, 244, 225, 60, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 249, 230, 64, 255, 202, 180, 23, 108, 0, 0, 0, 0, 13, 13, 13, 19, 57, 57, 57, 251, 240, 240, 240, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 152, 152, 152, 255, 26, 26, 26, 155, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 26, 26, 26, 89, 86, 86, 86, 254, 241, 241, 241, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 232, 232, 232, 255, 67, 67, 67, 252, 23, 23, 23, 79, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 37, 37, 37, 235, 239, 239, 239, 255, 246, 246, 246, 255, 246, 246, 246, 255, 84, 84, 84, 255, 16, 16, 16, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 1, 26, 26, 26, 186, 175, 175, 175, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 241, 241, 241, 255, 110, 110, 110, 255, 20, 20, 20, 158, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, 8, 64, 64, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 86, 86, 16, 120, 120, 120, 219, 124, 124, 124, 255, 134, 134, 134, 255, 139, 139, 139, 255, 143, 143, 143, 255, 145, 145, 145, 255, 144, 144, 144, 255, 108, 108, 108, 255, 132, 132, 132, 255, 137, 137, 137, 255, 131, 131, 131, 255, 125, 125, 125, 227, 88, 88, 88, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 93, 70, 0, 239, 205, 154, 155, 255, 224, 167, 255, 255, 224, 167, 255, 250, 218, 160, 192, 158, 107, 38, 68, 31, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 141, 128, 35, 17, 144, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 82, 70, 154, 255, 20, 0, 140, 205, 10, 0, 70, 0, 200, 180, 21, 82, 244, 225, 60, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 249, 230, 64, 255, 202, 180, 23, 108, 0, 0, 0, 0, 24, 24, 24, 26, 66, 66, 66, 254, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 177, 177, 177, 255, 31, 31, 31, 217, 19, 19, 19, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 26, 26, 26, 134, 86, 86, 86, 254, 227, 227, 227, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 196, 196, 196, 255, 64, 64, 64, 252, 26, 26, 26, 99, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 5, 42, 42, 42, 243, 241, 241, 241, 255, 246, 246, 246, 255, 175, 175, 175, 255, 26, 26, 26, 180, 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 29, 37, 37, 37, 228, 188, 188, 188, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 219, 219, 219, 255, 78, 78, 78, 254, 26, 26, 26, 135, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 88, 88, 33, 120, 120, 120, 214, 127, 127, 127, 255, 131, 131, 131, 255, 135, 135, 135, 255, 137, 137, 137, 255, 137, 137, 137, 255, 131, 131, 131, 255, 133, 133, 133, 255, 129, 129, 129, 255, 124, 124, 124, 221, 60, 60, 60, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 79, 62, 18, 85, 78, 65, 246, 242, 210, 153, 151, 255, 221, 163, 50, 128, 111, 83, 0, 50, 37, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 141, 128, 21, 1, 141, 255, 135, 131, 166, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 175, 175, 175, 255, 162, 160, 172, 255, 41, 24, 146, 255, 20, 0, 140, 205, 10, 0, 70, 0, 200, 180, 21, 82, 244, 225, 60, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 255, 237, 70, 255, 249, 230, 64, 255, 202, 180, 23, 108, 0, 0, 0, 0, 10, 10, 10, 0, 24, 24, 24, 161, 95, 95, 95, 255, 137, 137, 137, 255, 86, 86, 86, 255, 26, 26, 26, 195, 19, 19, 19, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 26, 26, 26, 93, 37, 37, 37, 233, 110, 110, 110, 255, 148, 148, 148, 255, 140, 140, 140, 255, 88, 88, 88, 255, 27, 27, 27, 203, 26, 26, 26, 51, 6, 6, 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, 0, 7, 7, 7, 0, 20, 20, 20, 127, 77, 77, 77, 255, 124, 124, 124, 255, 39, 39, 39, 234, 19, 19, 19, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, 37, 29, 29, 29, 209, 114, 114, 114, 255, 189, 189, 189, 255, 212, 212, 212, 255, 188, 188, 188, 255, 117, 117, 117, 255, 31, 31, 31, 221, 21, 21, 21, 83, 6, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 86, 86, 11, 119, 119, 119, 128, 122, 122, 122, 235, 126, 126, 126, 255, 128, 128, 128, 255, 128, 128, 128, 255, 127, 127, 127, 255, 125, 125, 125, 241, 121, 121, 121, 136, 89, 89, 89, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 87, 70, 20, 95, 81, 64, 13, 114, 99, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 141, 102, 20, 0, 141, 204, 20, 0, 141, 204, 32, 14, 143, 204, 36, 18, 144, 204, 36, 18, 144, 204, 36, 18, 144, 204, 36, 18, 144, 204, 36, 18, 144, 204, 36, 18, 144, 204, 36, 18, 144, 204, 36, 18, 144, 204, 36, 18, 144, 204, 21, 2, 141, 204, 20, 0, 141, 204, 20, 0, 140, 164, 10, 0, 70, 0, 198, 177, 21, 47, 205, 184, 27, 170, 207, 186, 29, 168, 207, 186, 29, 168, 207, 186, 29, 168, 207, 186, 29, 168, 207, 186, 29, 168, 207, 186, 29, 168, 207, 186, 29, 168, 207, 186, 29, 168, 207, 186, 29, 168, 207, 186, 29, 168, 206, 185, 28, 169, 199, 176, 20, 63, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 16, 3, 26, 26, 26, 72, 26, 26, 26, 93, 26, 26, 26, 51, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 17, 17, 17, 6, 26, 26, 26, 75, 26, 26, 26, 113, 26, 26, 26, 103, 25, 25, 25, 52, 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 26, 26, 26, 59, 26, 26, 26, 92, 19, 19, 19, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 5, 16, 16, 16, 91, 26, 26, 26, 164, 26, 26, 26, 183, 26, 26, 26, 164, 26, 26, 26, 94, 19, 19, 19, 5, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 43, 0, 68, 17, 42, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 111, 102, 60, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 26, 17, 68, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 114, 63, 106, 0, 134, 96, 128, 4, 131, 105, 127, 55, 133, 107, 128, 90, 133, 107, 128, 88, 132, 106, 127, 59, 133, 95, 127, 5, 115, 64, 106, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 85, 34, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 35, 0, 226, 223, 241, 20, 255, 255, 255, 153, 226, 223, 241, 71, 10, 0, 70, 0, 10, 0, 70, 0, 10, 0, 70, 0, 10, 0, 70, 0, 10, 0, 70, 0, 10, 0, 70, 0, 10, 0, 70, 0, 10, 0, 70, 0, 10, 0, 70, 0, 10, 0, 70, 0, 10, 0, 70, 0, 10, 0, 70, 0, 0, 0, 0, 0, 255, 255, 255, 8, 255, 255, 255, 153, 255, 255, 255, 83, 170, 161, 103, 0, 99, 88, 10, 0, 99, 88, 10, 0, 99, 88, 10, 0, 99, 88, 10, 0, 162, 151, 74, 0, 233, 225, 167, 10, 241, 235, 196, 51, 241, 235, 196, 27, 226, 215, 138, 0, 49, 43, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 1, 0, 103, 2, 2, 0, 104, 2, 2, 0, 67, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 13, 13, 13, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 16, 255, 255, 255, 55, 255, 255, 255, 255, 255, 255, 255, 131, 255, 255, 255, 25, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 14, 255, 255, 255, 37, 255, 255, 255, 255, 255, 255, 255, 149, 255, 255, 255, 26, 191, 191, 191, 1, 0, 0, 0, 0, 64, 64, 64, 0, 191, 191, 191, 11, 255, 255, 255, 137, 255, 255, 255, 241, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 164, 191, 191, 191, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 1, 1, 1, 131, 0, 0, 0, 153, 0, 0, 0, 153, 0, 0, 0, 153, 0, 0, 0, 153, 0, 0, 0, 153, 0, 0, 0, 153, 0, 0, 0, 153, 0, 0, 0, 153, 1, 1, 1, 132, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 150, 2, 0, 0, 153, 74, 2, 2, 153, 192, 4, 4, 173, 231, 5, 5, 200, 231, 5, 5, 201, 194, 4, 4, 175, 77, 2, 2, 153, 3, 0, 0, 153, 0, 0, 0, 151, 0, 0, 0, 93, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 32, 0, 42, 42, 99, 11, 82, 82, 155, 110, 102, 102, 174, 122, 102, 102, 174, 122, 102, 102, 174, 122, 102, 102, 174, 122, 102, 102, 174, 122, 102, 102, 174, 122, 102, 102, 174, 122, 102, 102, 174, 122, 102, 102, 174, 122, 110, 110, 179, 116, 120, 120, 185, 107, 120, 120, 185, 107, 120, 120, 185, 107, 120, 120, 185, 107, 120, 120, 185, 107, 143, 143, 200, 101, 41, 41, 54, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 255, 255, 255, 21, 255, 255, 255, 51, 255, 255, 255, 36, 191, 191, 191, 2, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 255, 255, 255, 13, 255, 255, 255, 96, 191, 191, 191, 15, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 17, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 10, 128, 128, 128, 0, 255, 255, 255, 75, 255, 255, 255, 223, 255, 255, 255, 255, 255, 255, 255, 251, 255, 255, 255, 189, 255, 255, 255, 237, 255, 255, 255, 255, 255, 255, 255, 158, 128, 128, 128, 0, 0, 0, 0, 0, 1, 1, 1, 67, 60, 60, 60, 248, 188, 188, 188, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 189, 189, 189, 255, 62, 62, 62, 249, 1, 1, 1, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 112, 112, 112, 255, 218, 175, 175, 255, 245, 43, 43, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 6, 6, 255, 246, 41, 41, 255, 219, 172, 172, 255, 118, 118, 118, 255, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 33, 0, 50, 50, 100, 26, 68, 68, 142, 141, 75, 75, 154, 245, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 91, 91, 168, 255, 195, 195, 239, 253, 108, 108, 127, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 191, 191, 191, 19, 255, 255, 255, 125, 255, 255, 255, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 255, 255, 255, 169, 255, 255, 255, 53, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 80, 255, 255, 255, 144, 255, 255, 255, 255, 255, 255, 255, 186, 255, 255, 255, 123, 255, 255, 255, 109, 255, 255, 255, 255, 255, 255, 255, 175, 191, 191, 191, 1, 64, 64, 64, 0, 255, 255, 255, 94, 255, 255, 255, 248, 255, 255, 255, 101, 128, 128, 128, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 70, 255, 255, 255, 134, 255, 255, 255, 255, 255, 255, 255, 196, 255, 255, 255, 128, 255, 255, 255, 30, 255, 255, 255, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 255, 255, 255, 44, 128, 128, 128, 0, 191, 191, 191, 28, 255, 255, 255, 245, 255, 255, 255, 249, 255, 255, 255, 14, 0, 0, 0, 0, 3, 3, 3, 187, 237, 237, 237, 255, 211, 211, 211, 255, 144, 144, 144, 255, 247, 247, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 255, 148, 148, 148, 255, 202, 202, 202, 255, 238, 238, 238, 255, 4, 4, 4, 191, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 206, 253, 201, 201, 255, 255, 19, 19, 255, 255, 6, 6, 255, 255, 34, 34, 255, 255, 135, 135, 255, 255, 185, 185, 255, 255, 186, 186, 255, 255, 137, 137, 255, 255, 37, 37, 255, 255, 6, 6, 255, 255, 17, 17, 255, 254, 197, 197, 255, 20, 20, 20, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 60, 0, 50, 50, 119, 45, 71, 71, 146, 161, 76, 76, 156, 252, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 89, 89, 167, 255, 194, 194, 239, 255, 216, 216, 255, 253, 108, 108, 128, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 50, 255, 255, 255, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 255, 255, 255, 196, 255, 255, 255, 216, 255, 255, 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 141, 191, 191, 191, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 33, 255, 255, 255, 255, 255, 255, 255, 118, 0, 0, 0, 0, 255, 255, 255, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 117, 255, 255, 255, 92, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 13, 255, 255, 255, 255, 255, 255, 255, 138, 255, 255, 255, 62, 255, 255, 255, 238, 255, 255, 255, 255, 255, 255, 255, 239, 255, 255, 255, 104, 191, 191, 191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 2, 255, 255, 255, 231, 255, 255, 255, 255, 255, 255, 255, 25, 0, 0, 0, 0, 30, 30, 30, 221, 255, 255, 255, 255, 74, 74, 74, 255, 0, 0, 0, 255, 176, 176, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 196, 196, 255, 0, 0, 0, 255, 53, 53, 53, 255, 255, 255, 255, 255, 33, 33, 33, 224, 0, 0, 0, 0, 0, 0, 0, 0, 38, 26, 26, 219, 255, 33, 33, 255, 255, 6, 6, 255, 167, 4, 4, 255, 179, 170, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 194, 194, 255, 164, 3, 3, 255, 255, 5, 5, 255, 255, 28, 28, 255, 49, 34, 34, 228, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 65, 0, 64, 64, 128, 66, 69, 69, 143, 182, 76, 76, 158, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 88, 88, 166, 255, 192, 192, 238, 255, 215, 215, 255, 255, 216, 216, 255, 253, 108, 108, 128, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 230, 218, 156, 255, 239, 231, 192, 255, 239, 231, 192, 255, 239, 231, 192, 255, 230, 218, 156, 255, 221, 204, 119, 255, 222, 205, 121, 255, 236, 227, 181, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 236, 227, 181, 255, 222, 205, 121, 255, 221, 204, 119, 255, 230, 218, 156, 255, 239, 231, 192, 255, 239, 231, 192, 255, 239, 231, 192, 255, 230, 218, 156, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 255, 255, 255, 55, 255, 255, 255, 244, 255, 255, 255, 255, 255, 255, 255, 185, 255, 255, 255, 54, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 124, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 177, 191, 191, 191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 0, 191, 191, 191, 0, 128, 128, 128, 0, 255, 255, 255, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 255, 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 255, 255, 255, 10, 255, 255, 255, 231, 255, 255, 255, 255, 255, 255, 255, 174, 255, 255, 255, 88, 255, 255, 255, 128, 255, 255, 255, 115, 255, 255, 255, 31, 191, 191, 191, 16, 255, 255, 255, 162, 255, 255, 255, 255, 255, 255, 255, 214, 191, 191, 191, 1, 0, 0, 0, 0, 32, 32, 32, 222, 255, 255, 255, 255, 193, 193, 193, 255, 113, 113, 113, 255, 240, 240, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 248, 248, 255, 117, 117, 117, 255, 181, 181, 181, 255, 255, 255, 255, 255, 35, 35, 35, 225, 0, 0, 0, 0, 16, 0, 0, 0, 130, 7, 7, 223, 255, 6, 6, 255, 248, 53, 53, 255, 127, 123, 123, 255, 242, 242, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 249, 255, 250, 145, 145, 255, 233, 9, 9, 255, 255, 6, 6, 255, 255, 6, 6, 255, 137, 7, 7, 231, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 33, 33, 68, 0, 65, 65, 136, 88, 72, 72, 147, 205, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 87, 87, 165, 255, 191, 191, 237, 255, 215, 215, 255, 255, 215, 215, 255, 255, 216, 216, 255, 253, 108, 108, 128, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 135, 33, 84, 255, 141, 44, 92, 255, 148, 56, 102, 255, 148, 56, 102, 255, 148, 56, 102, 255, 148, 56, 102, 255, 148, 56, 102, 255, 148, 56, 102, 255, 148, 56, 102, 255, 148, 56, 102, 255, 148, 56, 102, 255, 148, 56, 102, 255, 148, 56, 102, 255, 148, 56, 102, 255, 148, 56, 102, 255, 148, 56, 102, 255, 148, 56, 102, 255, 142, 45, 93, 255, 135, 33, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 236, 226, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 250, 242, 255, 221, 204, 119, 255, 231, 220, 161, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 220, 161, 255, 221, 204, 119, 255, 252, 250, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 227, 179, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 171, 69, 154, 255, 201, 135, 189, 255, 218, 174, 211, 255, 203, 140, 192, 255, 171, 70, 154, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 191, 191, 191, 6, 255, 255, 255, 211, 255, 255, 255, 255, 255, 255, 255, 150, 191, 191, 191, 3, 128, 128, 128, 0, 255, 255, 255, 139, 255, 255, 255, 246, 255, 255, 255, 226, 255, 255, 255, 72, 128, 128, 128, 0, 255, 255, 255, 50, 255, 255, 255, 229, 255, 255, 255, 255, 255, 255, 255, 117, 64, 64, 64, 0, 64, 64, 64, 0, 191, 191, 191, 4, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 4, 64, 64, 64, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 129, 255, 255, 255, 203, 255, 255, 255, 179, 255, 255, 255, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 255, 255, 255, 39, 255, 255, 255, 15, 128, 128, 128, 0, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 63, 255, 255, 255, 255, 255, 255, 255, 189, 255, 255, 255, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 255, 255, 255, 175, 255, 255, 255, 232, 255, 255, 255, 255, 255, 255, 255, 239, 255, 255, 255, 57, 64, 64, 64, 0, 0, 0, 0, 0, 32, 32, 32, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 35, 35, 35, 225, 0, 0, 0, 0, 95, 1, 1, 0, 218, 5, 5, 243, 255, 6, 6, 255, 255, 187, 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 251, 255, 255, 157, 157, 255, 255, 35, 35, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 6, 6, 255, 223, 5, 5, 247, 99, 1, 1, 0, 0, 0, 0, 0, 36, 36, 82, 5, 43, 43, 121, 106, 73, 73, 150, 226, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 85, 85, 164, 255, 189, 189, 236, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 216, 216, 255, 253, 108, 108, 128, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 151, 62, 106, 255, 250, 246, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 249, 250, 255, 155, 70, 113, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 236, 226, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 251, 244, 255, 221, 204, 119, 255, 233, 223, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 223, 169, 255, 221, 204, 119, 255, 252, 251, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 227, 179, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 223, 184, 216, 255, 255, 255, 255, 255, 252, 247, 251, 255, 255, 255, 255, 255, 227, 195, 222, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 255, 255, 255, 96, 255, 255, 255, 255, 255, 255, 255, 209, 191, 191, 191, 4, 0, 0, 0, 0, 255, 255, 255, 20, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 128, 128, 128, 0, 64, 64, 64, 0, 255, 255, 255, 61, 255, 255, 255, 253, 255, 255, 255, 248, 255, 255, 255, 13, 255, 255, 255, 57, 255, 255, 255, 240, 255, 255, 255, 109, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 118, 255, 255, 255, 240, 255, 255, 255, 48, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 167, 255, 255, 255, 54, 255, 255, 255, 102, 255, 255, 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 255, 255, 255, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 47, 255, 255, 255, 184, 255, 255, 255, 246, 255, 255, 255, 255, 255, 255, 255, 231, 255, 255, 255, 159, 255, 255, 255, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 255, 255, 255, 35, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 112, 112, 255, 110, 110, 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 35, 35, 35, 225, 0, 0, 0, 0, 255, 0, 0, 5, 254, 6, 6, 255, 255, 10, 10, 255, 255, 251, 251, 255, 255, 255, 255, 255, 255, 252, 252, 255, 255, 164, 164, 255, 251, 36, 36, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 39, 39, 255, 255, 160, 160, 255, 255, 15, 15, 255, 255, 6, 6, 255, 255, 0, 0, 11, 0, 0, 0, 0, 102, 102, 157, 86, 132, 132, 189, 255, 126, 126, 183, 255, 123, 123, 180, 255, 119, 119, 177, 255, 115, 115, 175, 255, 114, 114, 174, 255, 109, 109, 173, 255, 108, 108, 173, 255, 106, 106, 175, 255, 103, 103, 172, 255, 98, 98, 167, 255, 103, 103, 172, 252, 112, 112, 180, 255, 108, 108, 178, 255, 107, 107, 177, 255, 95, 95, 170, 255, 92, 92, 168, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 84, 84, 164, 255, 187, 187, 235, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 216, 216, 255, 253, 108, 108, 128, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 166, 90, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 101, 137, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 236, 226, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 251, 244, 255, 221, 204, 119, 255, 233, 223, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 223, 169, 255, 221, 204, 119, 255, 252, 251, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 227, 179, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 175, 79, 159, 255, 218, 174, 211, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 223, 185, 217, 255, 255, 255, 255, 255, 216, 169, 208, 255, 170, 68, 153, 255, 211, 158, 202, 255, 255, 255, 255, 255, 225, 189, 219, 255, 221, 180, 214, 255, 221, 180, 214, 255, 218, 173, 210, 255, 175, 78, 158, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 255, 255, 255, 83, 255, 255, 255, 255, 255, 255, 255, 233, 191, 191, 191, 27, 0, 0, 0, 0, 191, 191, 191, 10, 255, 255, 255, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 128, 128, 128, 0, 64, 64, 64, 0, 255, 255, 255, 91, 255, 255, 255, 255, 255, 255, 255, 241, 255, 255, 255, 10, 255, 255, 255, 44, 255, 255, 255, 251, 255, 255, 255, 251, 255, 255, 255, 61, 64, 64, 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, 0, 64, 64, 64, 0, 255, 255, 255, 68, 255, 255, 255, 253, 255, 255, 255, 249, 255, 255, 255, 36, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 6, 255, 255, 255, 120, 255, 255, 255, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 255, 255, 255, 52, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 57, 255, 255, 255, 213, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 255, 181, 255, 255, 255, 173, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 233, 255, 255, 255, 170, 255, 255, 255, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 248, 248, 255, 10, 10, 10, 255, 9, 9, 9, 255, 246, 246, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 35, 35, 35, 225, 0, 0, 0, 0, 255, 3, 3, 18, 255, 6, 6, 255, 255, 21, 21, 255, 255, 254, 254, 255, 255, 170, 170, 255, 255, 46, 46, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 34, 34, 255, 255, 155, 155, 255, 255, 250, 250, 255, 255, 255, 255, 255, 255, 29, 29, 255, 255, 6, 6, 255, 255, 5, 5, 26, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 137, 137, 193, 255, 141, 141, 195, 255, 141, 141, 196, 255, 175, 175, 223, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 216, 216, 255, 253, 108, 108, 128, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 166, 90, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 101, 137, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 236, 226, 179, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 244, 239, 214, 255, 221, 204, 119, 255, 225, 210, 136, 255, 251, 249, 240, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 251, 250, 240, 255, 225, 210, 136, 255, 221, 204, 119, 255, 244, 239, 213, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 236, 227, 180, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 187, 106, 174, 255, 245, 232, 242, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 248, 239, 246, 255, 255, 255, 255, 255, 201, 136, 190, 255, 170, 68, 153, 255, 196, 126, 184, 255, 255, 255, 255, 255, 248, 240, 247, 255, 247, 236, 245, 255, 247, 236, 245, 255, 244, 231, 242, 255, 186, 104, 173, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 191, 191, 191, 0, 255, 255, 255, 171, 255, 255, 255, 255, 255, 255, 255, 210, 191, 191, 191, 31, 128, 128, 128, 0, 255, 255, 255, 58, 255, 255, 255, 146, 255, 255, 255, 127, 191, 191, 191, 24, 128, 128, 128, 0, 255, 255, 255, 81, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 86, 64, 64, 64, 0, 64, 64, 64, 0, 255, 255, 255, 120, 255, 255, 255, 255, 255, 255, 255, 236, 255, 255, 255, 64, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 70, 255, 255, 255, 239, 255, 255, 255, 255, 255, 255, 255, 111, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 84, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, 128, 128, 128, 0, 191, 191, 191, 8, 255, 255, 255, 216, 255, 255, 255, 255, 255, 255, 255, 209, 255, 255, 255, 97, 191, 191, 191, 7, 64, 64, 64, 0, 64, 64, 64, 0, 255, 255, 255, 74, 255, 255, 255, 248, 255, 255, 255, 255, 255, 255, 255, 211, 255, 255, 255, 146, 255, 255, 255, 244, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 161, 255, 255, 255, 190, 255, 255, 255, 255, 255, 255, 255, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 205, 205, 255, 204, 204, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 35, 35, 35, 225, 0, 0, 0, 0, 189, 1, 1, 2, 250, 5, 5, 253, 255, 6, 6, 255, 255, 50, 50, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 30, 30, 255, 250, 144, 144, 255, 255, 248, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 243, 255, 255, 9, 9, 255, 252, 6, 6, 254, 255, 0, 0, 5, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 172, 172, 221, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 216, 216, 255, 253, 108, 108, 128, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 166, 90, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 101, 137, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 223, 207, 126, 255, 224, 209, 133, 255, 224, 209, 133, 255, 224, 208, 130, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 222, 205, 122, 255, 224, 209, 133, 255, 224, 209, 133, 255, 224, 209, 133, 255, 224, 209, 133, 255, 224, 209, 133, 255, 224, 209, 133, 255, 224, 209, 133, 255, 224, 209, 133, 255, 222, 205, 122, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 224, 208, 130, 255, 224, 209, 133, 255, 224, 209, 133, 255, 223, 207, 126, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 171, 71, 155, 255, 241, 224, 238, 255, 249, 242, 248, 255, 223, 185, 217, 255, 248, 239, 246, 255, 244, 231, 242, 255, 173, 74, 157, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 191, 191, 191, 15, 255, 255, 255, 204, 255, 255, 255, 255, 255, 255, 255, 234, 255, 255, 255, 106, 191, 191, 191, 10, 255, 255, 255, 0, 191, 191, 191, 0, 255, 255, 255, 31, 255, 255, 255, 150, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 133, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 1, 255, 255, 255, 162, 255, 255, 255, 255, 255, 255, 255, 250, 255, 255, 255, 142, 255, 255, 255, 33, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 37, 255, 255, 255, 148, 255, 255, 255, 251, 255, 255, 255, 255, 255, 255, 255, 152, 191, 191, 191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 33, 255, 255, 255, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 255, 255, 255, 162, 255, 255, 255, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 158, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 1, 255, 255, 255, 217, 255, 255, 255, 255, 255, 255, 255, 134, 191, 191, 191, 5, 191, 191, 191, 6, 255, 255, 255, 71, 255, 255, 255, 88, 255, 255, 255, 77, 255, 255, 255, 199, 255, 255, 255, 255, 255, 255, 255, 224, 191, 191, 191, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 222, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 35, 35, 35, 225, 0, 0, 0, 0, 67, 1, 1, 0, 194, 4, 4, 236, 255, 6, 6, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 27, 27, 255, 255, 142, 142, 255, 255, 246, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 247, 247, 255, 255, 158, 158, 255, 255, 6, 6, 255, 199, 5, 5, 242, 81, 1, 1, 0, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 172, 172, 221, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 216, 216, 255, 253, 108, 108, 128, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 166, 90, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 101, 137, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 222, 205, 121, 255, 232, 220, 162, 255, 234, 223, 171, 255, 234, 223, 171, 255, 234, 223, 171, 255, 234, 223, 171, 255, 234, 223, 171, 255, 234, 223, 171, 255, 234, 223, 171, 255, 234, 223, 171, 255, 228, 215, 147, 255, 221, 204, 119, 255, 221, 204, 119, 255, 228, 214, 147, 255, 234, 223, 171, 255, 234, 223, 171, 255, 234, 223, 171, 255, 234, 223, 171, 255, 234, 223, 171, 255, 234, 223, 171, 255, 234, 223, 171, 255, 234, 223, 171, 255, 232, 220, 162, 255, 222, 205, 121, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 181, 92, 166, 255, 229, 198, 224, 255, 246, 236, 244, 255, 231, 202, 226, 255, 183, 97, 169, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 10, 255, 255, 255, 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 255, 255, 255, 217, 255, 255, 255, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 255, 255, 255, 102, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 1, 255, 255, 255, 123, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 255, 255, 255, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 255, 255, 255, 117, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 14, 255, 255, 255, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 64, 64, 64, 0, 0, 0, 0, 0, 255, 255, 255, 12, 255, 255, 255, 255, 255, 255, 255, 237, 191, 191, 191, 1, 0, 0, 0, 0, 64, 64, 64, 0, 191, 191, 191, 10, 255, 255, 255, 136, 255, 255, 255, 251, 255, 255, 255, 255, 255, 255, 255, 222, 255, 255, 255, 44, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 222, 255, 255, 255, 255, 102, 102, 102, 255, 17, 17, 17, 255, 222, 222, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 255, 14, 14, 14, 255, 117, 117, 117, 255, 255, 255, 255, 255, 35, 35, 35, 225, 0, 0, 0, 0, 2, 0, 0, 0, 93, 12, 12, 220, 255, 6, 6, 255, 255, 6, 6, 255, 150, 7, 7, 255, 219, 207, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 209, 209, 255, 38, 11, 11, 255, 236, 10, 10, 255, 255, 6, 6, 255, 102, 14, 14, 229, 4, 0, 0, 0, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 172, 172, 221, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 216, 216, 255, 253, 108, 108, 128, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 166, 90, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 101, 137, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 234, 223, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 252, 249, 255, 223, 208, 129, 255, 223, 207, 129, 255, 253, 253, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 223, 171, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 71, 255, 255, 255, 186, 255, 255, 255, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 255, 255, 255, 150, 255, 255, 255, 32, 64, 64, 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, 0, 64, 64, 64, 0, 255, 255, 255, 37, 255, 255, 255, 152, 255, 255, 255, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 255, 255, 255, 150, 255, 255, 255, 32, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 5, 255, 255, 255, 201, 255, 255, 255, 200, 255, 255, 255, 110, 255, 255, 255, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 255, 255, 255, 124, 255, 255, 255, 238, 255, 255, 255, 255, 255, 255, 255, 217, 191, 191, 191, 1, 0, 0, 0, 0, 191, 191, 191, 4, 255, 255, 255, 234, 255, 255, 255, 254, 255, 255, 255, 63, 128, 128, 128, 0, 255, 255, 255, 73, 255, 255, 255, 221, 255, 255, 255, 255, 255, 255, 255, 251, 255, 255, 255, 137, 191, 191, 191, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 21, 214, 255, 255, 255, 255, 85, 85, 85, 255, 8, 8, 8, 255, 216, 216, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 202, 202, 255, 6, 6, 6, 255, 101, 101, 101, 255, 255, 255, 255, 255, 24, 24, 24, 217, 0, 0, 0, 0, 0, 0, 0, 0, 27, 27, 27, 218, 255, 77, 77, 255, 255, 6, 6, 255, 226, 5, 5, 255, 222, 159, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 157, 157, 255, 223, 5, 5, 255, 255, 6, 6, 255, 255, 71, 71, 255, 37, 36, 36, 227, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 172, 172, 221, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 216, 216, 255, 253, 108, 108, 128, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 166, 90, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 228, 234, 255, 238, 224, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 101, 137, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 236, 226, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 213, 142, 255, 226, 212, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 226, 179, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 191, 191, 191, 1, 255, 255, 255, 34, 255, 255, 255, 21, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 191, 191, 191, 10, 191, 191, 191, 11, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 5, 128, 128, 128, 0, 64, 64, 64, 0, 191, 191, 191, 0, 255, 255, 255, 234, 255, 255, 255, 255, 255, 255, 255, 148, 191, 191, 191, 0, 191, 191, 191, 14, 255, 255, 255, 125, 255, 255, 255, 72, 64, 64, 64, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 118, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 255, 255, 255, 47, 64, 64, 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, 0, 0, 0, 0, 0, 1, 1, 1, 154, 187, 187, 187, 254, 255, 255, 255, 255, 242, 242, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 242, 242, 255, 255, 255, 255, 255, 190, 190, 190, 254, 1, 1, 1, 157, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 180, 223, 208, 208, 255, 255, 65, 65, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 51, 51, 255, 255, 102, 102, 255, 255, 103, 103, 255, 255, 53, 53, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 60, 60, 255, 227, 209, 209, 255, 5, 5, 5, 187, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 172, 172, 221, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 216, 216, 255, 253, 108, 108, 128, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 166, 90, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 242, 245, 255, 145, 51, 98, 255, 142, 46, 94, 255, 244, 235, 240, 255, 255, 255, 255, 255, 172, 101, 137, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 236, 226, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 213, 142, 255, 226, 212, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 226, 179, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 175, 79, 159, 255, 213, 163, 205, 255, 227, 193, 221, 255, 206, 148, 196, 255, 171, 70, 154, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 182, 255, 255, 255, 255, 255, 255, 255, 62, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 113, 255, 255, 255, 230, 255, 255, 255, 255, 255, 255, 255, 215, 255, 255, 255, 103, 191, 191, 191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 7, 7, 7, 191, 86, 86, 86, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 86, 86, 86, 255, 7, 7, 7, 193, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 23, 23, 23, 223, 95, 89, 89, 255, 138, 18, 18, 255, 239, 6, 6, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 6, 6, 255, 255, 6, 6, 255, 241, 6, 6, 255, 141, 17, 17, 255, 96, 88, 88, 255, 26, 26, 26, 226, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 172, 172, 221, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 216, 216, 255, 253, 108, 108, 128, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 135, 33, 85, 255, 144, 50, 98, 255, 151, 62, 107, 255, 139, 40, 90, 255, 147, 54, 101, 255, 169, 94, 131, 255, 208, 168, 188, 255, 253, 251, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 145, 170, 255, 137, 35, 86, 255, 138, 38, 88, 255, 189, 132, 161, 255, 255, 255, 255, 255, 172, 101, 137, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 233, 222, 167, 255, 255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 251, 246, 255, 223, 207, 127, 255, 223, 207, 126, 255, 252, 251, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 255, 233, 222, 168, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 172, 72, 155, 255, 239, 219, 235, 255, 254, 252, 253, 255, 243, 230, 241, 255, 255, 255, 255, 255, 222, 182, 215, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 34, 255, 255, 255, 76, 191, 191, 191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 26, 0, 0, 0, 26, 44, 0, 0, 30, 211, 4, 4, 76, 242, 4, 4, 106, 243, 4, 4, 107, 213, 4, 4, 78, 48, 0, 0, 31, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 172, 172, 221, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 216, 216, 255, 253, 108, 108, 128, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 135, 33, 85, 255, 136, 34, 85, 255, 144, 50, 97, 255, 177, 110, 144, 255, 192, 137, 164, 255, 182, 120, 151, 255, 155, 70, 112, 255, 136, 34, 85, 255, 154, 67, 110, 255, 234, 216, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 241, 244, 255, 144, 48, 96, 255, 175, 106, 140, 255, 182, 121, 152, 255, 140, 42, 91, 255, 243, 233, 238, 255, 172, 101, 137, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 229, 215, 150, 255, 232, 221, 165, 255, 232, 221, 165, 255, 232, 221, 165, 255, 232, 221, 165, 255, 232, 221, 165, 255, 232, 221, 165, 255, 232, 221, 165, 255, 232, 221, 165, 255, 225, 210, 135, 255, 221, 204, 119, 255, 221, 204, 119, 255, 225, 210, 135, 255, 232, 221, 165, 255, 232, 221, 165, 255, 232, 221, 165, 255, 232, 221, 165, 255, 232, 221, 165, 255, 232, 221, 165, 255, 232, 221, 165, 255, 232, 221, 165, 255, 229, 215, 150, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 179, 88, 164, 255, 227, 194, 221, 255, 230, 199, 224, 255, 230, 199, 224, 255, 235, 210, 230, 255, 255, 255, 255, 255, 199, 132, 188, 255, 170, 68, 153, 255, 218, 174, 211, 255, 255, 254, 254, 255, 230, 199, 224, 255, 230, 199, 224, 255, 230, 199, 224, 255, 230, 199, 224, 255, 230, 199, 224, 255, 230, 199, 224, 255, 230, 199, 224, 255, 230, 199, 224, 255, 230, 199, 224, 255, 230, 199, 224, 255, 230, 199, 224, 255, 230, 199, 224, 255, 227, 193, 221, 255, 178, 87, 163, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 171, 171, 220, 254, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 216, 216, 255, 253, 108, 108, 128, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 137, 37, 87, 255, 197, 147, 172, 255, 251, 247, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 193, 208, 255, 149, 58, 104, 255, 142, 46, 94, 255, 235, 217, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 144, 170, 255, 137, 36, 86, 255, 234, 217, 226, 255, 240, 228, 234, 255, 139, 39, 89, 255, 187, 128, 158, 255, 172, 101, 137, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 225, 210, 135, 255, 230, 217, 154, 255, 230, 217, 154, 255, 229, 217, 153, 255, 222, 206, 123, 255, 221, 204, 119, 255, 221, 204, 119, 255, 225, 210, 134, 255, 230, 217, 154, 255, 230, 217, 154, 255, 230, 217, 154, 255, 230, 217, 154, 255, 230, 217, 154, 255, 230, 217, 154, 255, 230, 217, 154, 255, 230, 217, 154, 255, 225, 210, 135, 255, 221, 204, 119, 255, 221, 204, 119, 255, 222, 206, 123, 255, 229, 217, 153, 255, 230, 217, 154, 255, 230, 217, 154, 255, 225, 210, 136, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 183, 97, 169, 255, 236, 212, 232, 255, 238, 218, 235, 255, 238, 218, 235, 255, 242, 226, 239, 255, 255, 255, 255, 255, 195, 123, 183, 255, 170, 68, 153, 255, 214, 164, 206, 255, 255, 255, 255, 255, 238, 218, 235, 255, 238, 218, 235, 255, 238, 218, 235, 255, 238, 218, 235, 255, 238, 218, 235, 255, 238, 218, 235, 255, 238, 218, 235, 255, 238, 218, 235, 255, 238, 218, 235, 255, 238, 218, 235, 255, 238, 218, 235, 255, 238, 218, 235, 255, 235, 212, 231, 255, 183, 96, 168, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 191, 191, 191, 7, 255, 255, 255, 128, 255, 255, 255, 119, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 143, 255, 255, 255, 124, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 8, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 95, 0, 0, 0, 149, 0, 0, 0, 175, 0, 0, 0, 201, 0, 0, 0, 201, 0, 0, 0, 175, 0, 0, 0, 149, 0, 0, 0, 97, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 170, 170, 220, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 207, 207, 249, 204, 99, 99, 121, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 35, 86, 255, 214, 179, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 232, 237, 255, 149, 58, 104, 255, 154, 68, 111, 255, 253, 251, 252, 255, 255, 255, 255, 255, 247, 240, 244, 255, 143, 47, 95, 255, 176, 109, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 124, 155, 255, 140, 41, 90, 255, 164, 86, 125, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 236, 226, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 244, 226, 255, 221, 204, 119, 255, 227, 213, 144, 255, 254, 253, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 250, 255, 227, 214, 145, 255, 221, 204, 119, 255, 247, 244, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 227, 180, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 173, 75, 157, 255, 243, 228, 240, 255, 251, 247, 251, 255, 236, 212, 232, 255, 254, 254, 254, 255, 227, 194, 222, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 255, 255, 255, 12, 255, 255, 255, 255, 255, 255, 255, 241, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 114, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 12, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1, 1, 1, 190, 56, 56, 56, 252, 135, 135, 135, 255, 197, 197, 197, 255, 223, 223, 223, 255, 249, 249, 249, 255, 249, 249, 249, 255, 223, 223, 223, 255, 197, 197, 197, 255, 137, 137, 137, 255, 58, 58, 58, 252, 1, 1, 1, 192, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 170, 170, 220, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 198, 198, 243, 86, 0, 0, 0, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 180, 116, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 192, 207, 255, 136, 34, 85, 255, 209, 170, 190, 255, 255, 255, 255, 255, 194, 143, 169, 255, 137, 36, 87, 255, 236, 219, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 230, 236, 255, 139, 40, 90, 255, 137, 37, 87, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 236, 226, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 251, 244, 255, 221, 204, 119, 255, 233, 223, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 223, 169, 255, 221, 204, 119, 255, 252, 251, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 227, 179, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 179, 87, 164, 255, 221, 181, 214, 255, 234, 210, 230, 255, 214, 165, 206, 255, 173, 75, 157, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 255, 255, 255, 10, 255, 255, 255, 255, 255, 255, 255, 243, 191, 191, 191, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 105, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 1, 1, 1, 184, 89, 89, 89, 255, 221, 221, 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 224, 224, 255, 92, 92, 92, 255, 2, 2, 2, 187, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 170, 170, 220, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 208, 208, 249, 221, 99, 99, 121, 0, 0, 0, 0, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 233, 214, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 69, 112, 255, 149, 58, 103, 255, 171, 100, 136, 255, 140, 42, 91, 255, 178, 112, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 127, 157, 255, 136, 34, 85, 255, 135, 33, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 236, 226, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 251, 244, 255, 221, 204, 119, 255, 233, 223, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 223, 169, 255, 221, 204, 119, 255, 252, 251, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 227, 179, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 255, 255, 255, 7, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 96, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 19, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 78, 38, 38, 38, 242, 203, 203, 203, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 206, 206, 255, 41, 41, 41, 244, 1, 1, 1, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 170, 170, 220, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 126, 126, 248, 101, 0, 0, 64, 0, 0, 0, 0, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 142, 46, 94, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 121, 152, 255, 136, 34, 85, 255, 135, 33, 85, 255, 138, 37, 87, 255, 237, 222, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 232, 238, 255, 140, 41, 91, 255, 135, 33, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 236, 226, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 249, 238, 255, 221, 204, 119, 255, 230, 217, 154, 255, 255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 230, 217, 155, 255, 221, 204, 119, 255, 251, 249, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 227, 179, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 255, 255, 255, 5, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 255, 88, 64, 64, 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, 0, 0, 0, 0, 0, 255, 255, 255, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 15, 64, 64, 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, 110, 67, 67, 67, 252, 238, 238, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 207, 207, 255, 132, 132, 132, 255, 202, 202, 202, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 205, 205, 255, 130, 130, 130, 255, 205, 205, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 240, 240, 255, 71, 71, 71, 252, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 170, 170, 220, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 210, 210, 251, 233, 115, 115, 167, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 148, 57, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 133, 161, 255, 136, 34, 85, 255, 136, 34, 85, 255, 180, 116, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 131, 160, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 228, 215, 147, 255, 235, 225, 176, 255, 235, 225, 176, 255, 235, 225, 175, 255, 227, 213, 144, 255, 221, 204, 119, 255, 221, 204, 119, 255, 232, 220, 162, 255, 235, 225, 176, 255, 235, 225, 176, 255, 235, 225, 176, 255, 235, 225, 176, 255, 235, 225, 176, 255, 235, 225, 176, 255, 235, 225, 176, 255, 235, 225, 176, 255, 232, 220, 162, 255, 221, 204, 119, 255, 221, 204, 119, 255, 227, 213, 143, 255, 235, 225, 175, 255, 235, 225, 176, 255, 235, 225, 176, 255, 228, 215, 148, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 204, 142, 194, 255, 239, 219, 235, 255, 239, 219, 235, 255, 204, 143, 194, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 255, 255, 255, 2, 255, 255, 255, 255, 255, 255, 255, 251, 191, 191, 191, 0, 191, 191, 191, 0, 255, 255, 255, 134, 255, 255, 255, 255, 255, 255, 255, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 96, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 255, 255, 255, 80, 64, 64, 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, 0, 255, 255, 255, 27, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 24, 255, 255, 255, 34, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 70, 255, 255, 255, 189, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 71, 71, 71, 253, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 187, 187, 255, 55, 55, 55, 251, 0, 0, 0, 170, 0, 0, 0, 182, 175, 175, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 180, 180, 255, 0, 0, 0, 184, 0, 0, 0, 167, 52, 52, 52, 250, 183, 183, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 255, 75, 75, 75, 253, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 170, 170, 220, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 196, 196, 241, 116, 46, 46, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 135, 33, 85, 255, 138, 38, 88, 255, 251, 248, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 107, 141, 255, 136, 34, 85, 255, 138, 38, 88, 255, 239, 224, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 234, 239, 255, 141, 43, 92, 255, 135, 33, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 199, 131, 188, 255, 255, 255, 255, 255, 236, 213, 232, 255, 236, 213, 232, 255, 255, 255, 255, 255, 199, 132, 188, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 255, 255, 255, 255, 253, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 133, 255, 255, 255, 255, 255, 255, 255, 120, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 51, 255, 255, 255, 202, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 198, 255, 255, 255, 40, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 22, 255, 255, 255, 51, 255, 255, 255, 51, 255, 255, 255, 51, 255, 255, 255, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 255, 255, 255, 51, 255, 255, 255, 51, 255, 255, 255, 51, 255, 255, 255, 33, 64, 64, 64, 0, 0, 0, 0, 0, 255, 255, 255, 90, 255, 255, 255, 254, 255, 255, 255, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 77, 255, 255, 255, 248, 255, 255, 255, 249, 191, 191, 191, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 39, 39, 39, 243, 239, 239, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 250, 250, 255, 103, 103, 103, 255, 0, 0, 0, 176, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 125, 175, 175, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 180, 180, 255, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 172, 97, 97, 97, 255, 249, 249, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 242, 242, 255, 42, 42, 42, 244, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 170, 170, 220, 255, 215, 215, 255, 255, 215, 215, 255, 255, 211, 211, 252, 242, 147, 147, 176, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 217, 184, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 246, 248, 255, 144, 48, 96, 255, 135, 33, 85, 255, 182, 119, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 134, 162, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 229, 217, 153, 255, 252, 251, 244, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 248, 245, 229, 255, 222, 205, 122, 255, 222, 205, 122, 255, 248, 245, 229, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 253, 252, 247, 255, 252, 251, 244, 255, 230, 217, 153, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 187, 104, 173, 255, 244, 231, 242, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 252, 248, 251, 255, 243, 229, 241, 255, 171, 70, 154, 255, 171, 69, 154, 255, 243, 228, 240, 255, 252, 248, 251, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 247, 236, 245, 255, 244, 230, 241, 255, 186, 103, 172, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 252, 255, 255, 255, 255, 191, 191, 191, 1, 128, 128, 128, 0, 255, 255, 255, 131, 255, 255, 255, 255, 255, 255, 255, 242, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 155, 128, 128, 128, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 73, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 14, 255, 255, 255, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 255, 255, 255, 40, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 126, 255, 255, 255, 255, 255, 255, 255, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 84, 255, 255, 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 191, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 249, 249, 255, 70, 70, 70, 252, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 175, 175, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 180, 180, 255, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 65, 65, 65, 251, 248, 248, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 214, 214, 255, 3, 3, 3, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 157, 86, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 170, 170, 220, 255, 215, 215, 255, 255, 215, 215, 255, 255, 201, 201, 244, 131, 48, 48, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 157, 73, 115, 255, 252, 249, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 143, 169, 255, 136, 34, 85, 255, 136, 34, 85, 255, 204, 160, 182, 255, 219, 189, 204, 255, 219, 189, 204, 255, 219, 189, 204, 255, 219, 189, 204, 255, 219, 189, 204, 255, 219, 189, 204, 255, 219, 189, 204, 255, 219, 189, 204, 255, 209, 170, 190, 255, 136, 34, 85, 255, 135, 33, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 236, 226, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 212, 142, 255, 226, 212, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 226, 179, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 176, 80, 160, 255, 219, 175, 211, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 241, 223, 238, 255, 249, 241, 248, 255, 178, 86, 163, 255, 178, 86, 163, 255, 249, 241, 247, 255, 241, 223, 238, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 221, 180, 214, 255, 218, 174, 211, 255, 175, 79, 159, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 250, 255, 255, 255, 255, 255, 255, 255, 3, 128, 128, 128, 0, 255, 255, 255, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 69, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 17, 255, 255, 255, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 255, 255, 255, 46, 64, 64, 64, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 119, 255, 255, 255, 255, 255, 255, 255, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 12, 255, 255, 255, 139, 255, 255, 255, 255, 255, 255, 255, 236, 255, 255, 255, 119, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 74, 96, 96, 96, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 99, 99, 255, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 105, 105, 105, 255, 153, 153, 153, 255, 153, 153, 153, 255, 108, 108, 108, 255, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 93, 93, 93, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 101, 101, 101, 254, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 108, 161, 78, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 170, 170, 220, 255, 215, 215, 255, 255, 212, 212, 253, 248, 145, 145, 179, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 135, 33, 85, 255, 136, 34, 85, 255, 175, 107, 141, 255, 252, 249, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 175, 193, 255, 137, 36, 87, 255, 135, 33, 84, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 135, 33, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 236, 226, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 213, 142, 255, 226, 212, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 226, 179, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 185, 101, 171, 255, 252, 248, 251, 255, 253, 251, 253, 255, 253, 251, 253, 255, 252, 248, 251, 255, 185, 102, 171, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 247, 255, 255, 255, 255, 255, 255, 255, 6, 128, 128, 128, 0, 255, 255, 255, 130, 255, 255, 255, 255, 255, 255, 255, 136, 255, 255, 255, 26, 255, 255, 255, 26, 255, 255, 255, 26, 255, 255, 255, 26, 255, 255, 255, 26, 255, 255, 255, 17, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 65, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 21, 255, 255, 255, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 255, 255, 255, 51, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 79, 255, 255, 255, 255, 255, 255, 255, 99, 64, 64, 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, 0, 128, 128, 128, 0, 255, 255, 255, 178, 255, 255, 255, 246, 255, 255, 255, 17, 255, 255, 255, 17, 64, 64, 64, 0, 0, 0, 0, 0, 5, 5, 5, 199, 226, 226, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 182, 182, 254, 1, 1, 1, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 176, 176, 176, 254, 255, 255, 255, 255, 255, 255, 255, 255, 229, 229, 229, 255, 7, 7, 7, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 41, 0, 109, 109, 148, 22, 146, 146, 200, 98, 141, 141, 195, 135, 140, 140, 196, 207, 136, 136, 193, 250, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 170, 170, 220, 255, 215, 215, 255, 255, 205, 205, 247, 147, 49, 49, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 156, 72, 114, 255, 216, 182, 199, 255, 251, 247, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 209, 220, 255, 178, 112, 145, 255, 136, 34, 85, 255, 135, 33, 84, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 235, 225, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 251, 255, 225, 210, 135, 255, 224, 209, 134, 255, 254, 254, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 225, 176, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 183, 95, 168, 255, 214, 164, 205, 255, 214, 164, 205, 255, 183, 95, 168, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 8, 128, 128, 128, 0, 255, 255, 255, 131, 255, 255, 255, 255, 255, 255, 255, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 61, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 25, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 255, 255, 255, 58, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 4, 255, 255, 255, 219, 255, 255, 255, 244, 255, 255, 255, 90, 191, 191, 191, 1, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 191, 191, 191, 11, 255, 255, 255, 137, 255, 255, 255, 255, 255, 255, 255, 152, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 69, 69, 69, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 48, 48, 247, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 42, 42, 42, 245, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 74, 74, 74, 255, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 37, 50, 0, 73, 73, 101, 0, 71, 71, 98, 0, 149, 149, 200, 58, 142, 142, 197, 115, 140, 140, 193, 162, 139, 139, 195, 232, 135, 135, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 170, 170, 220, 255, 213, 213, 254, 253, 149, 149, 181, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 135, 33, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 148, 56, 102, 255, 140, 41, 91, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 224, 208, 130, 255, 238, 229, 187, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 234, 223, 171, 255, 221, 204, 119, 255, 221, 204, 119, 255, 234, 223, 171, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 241, 235, 201, 255, 238, 230, 187, 255, 224, 208, 130, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 255, 255, 255, 255, 253, 253, 254, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 242, 255, 255, 255, 255, 255, 255, 255, 11, 128, 128, 128, 0, 255, 255, 255, 133, 255, 255, 255, 255, 255, 255, 255, 174, 255, 255, 255, 102, 255, 255, 255, 102, 255, 255, 255, 102, 255, 255, 255, 102, 191, 191, 191, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 58, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 30, 255, 255, 255, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 255, 255, 255, 65, 64, 64, 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, 0, 255, 255, 255, 38, 255, 255, 255, 221, 255, 255, 255, 255, 255, 255, 255, 230, 255, 255, 255, 178, 255, 255, 255, 153, 255, 255, 255, 147, 255, 255, 255, 176, 255, 255, 255, 238, 255, 255, 255, 255, 255, 255, 255, 187, 191, 191, 191, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 147, 147, 147, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 196, 196, 255, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 190, 190, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 152, 152, 255, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 73, 98, 0, 72, 72, 100, 0, 111, 111, 149, 15, 146, 146, 201, 88, 127, 127, 175, 126, 141, 141, 196, 198, 137, 137, 194, 247, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 170, 170, 220, 255, 194, 194, 238, 163, 88, 88, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 240, 255, 255, 255, 255, 255, 255, 255, 13, 128, 128, 128, 0, 255, 255, 255, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 54, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 35, 255, 255, 255, 229, 255, 255, 255, 249, 255, 255, 255, 72, 64, 64, 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, 0, 0, 0, 0, 0, 64, 64, 64, 0, 191, 191, 191, 8, 255, 255, 255, 100, 255, 255, 255, 178, 255, 255, 255, 212, 255, 255, 255, 239, 255, 255, 255, 251, 255, 255, 255, 223, 255, 255, 255, 189, 255, 255, 255, 85, 191, 191, 191, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 215, 215, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 121, 121, 121, 254, 0, 0, 0, 139, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 135, 116, 116, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 220, 220, 255, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 27, 36, 0, 74, 74, 100, 0, 71, 71, 98, 0, 147, 147, 200, 47, 143, 143, 198, 110, 140, 140, 194, 150, 140, 140, 195, 225, 135, 135, 192, 254, 134, 134, 191, 255, 134, 134, 191, 255, 169, 169, 219, 254, 172, 172, 233, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 143, 255, 255, 255, 153, 255, 255, 255, 9, 128, 128, 128, 0, 255, 255, 255, 81, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 36, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 40, 255, 255, 255, 77, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 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, 191, 244, 244, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 162, 162, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 60, 60, 60, 255, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 111, 111, 111, 255, 153, 153, 153, 255, 153, 153, 153, 255, 114, 114, 114, 255, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 58, 58, 58, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 160, 160, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 248, 248, 255, 0, 0, 0, 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 38, 50, 0, 73, 73, 100, 0, 110, 110, 148, 9, 147, 147, 201, 80, 140, 140, 195, 122, 156, 156, 207, 130, 81, 81, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 64, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 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, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 120, 120, 255, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 185, 185, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 190, 190, 255, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 115, 115, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 15, 15, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 17, 43, 0, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 255, 136, 34, 85, 253, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 221, 204, 119, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 255, 51, 34, 136, 253, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 255, 170, 68, 153, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 54, 0, 0, 0, 85, 0, 0, 0, 84, 0, 0, 0, 51, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 33, 0, 48, 48, 100, 25, 103, 103, 172, 107, 102, 102, 147, 18, 68, 68, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 22, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 120, 120, 255, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 185, 185, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 190, 190, 255, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 115, 115, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 27, 27, 27, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 222, 77, 77, 77, 255, 77, 77, 77, 255, 7, 7, 7, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 120, 22, 22, 22, 233, 97, 97, 97, 255, 132, 132, 132, 254, 131, 131, 131, 255, 93, 93, 93, 255, 19, 19, 19, 229, 0, 0, 0, 112, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 33, 0, 46, 46, 98, 23, 69, 69, 143, 146, 75, 75, 156, 250, 77, 77, 159, 255, 85, 85, 164, 251, 109, 109, 179, 167, 134, 134, 195, 69, 65, 65, 96, 0, 34, 34, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 203, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 236, 236, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 108, 108, 108, 255, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 167, 167, 167, 255, 230, 230, 230, 255, 230, 230, 230, 255, 171, 171, 171, 255, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 104, 104, 104, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 235, 235, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 4, 4, 4, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 64, 0, 20, 1, 128, 0, 15, 1, 128, 0, 20, 0, 255, 13, 39, 3, 255, 60, 39, 2, 255, 105, 34, 1, 255, 74, 15, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 23, 123, 56, 255, 98, 165, 120, 255, 98, 165, 120, 255, 23, 123, 56, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 221, 255, 255, 255, 255, 255, 255, 255, 255, 22, 22, 22, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 6, 6, 202, 138, 138, 138, 255, 248, 248, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 245, 245, 255, 130, 130, 130, 255, 3, 3, 3, 194, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 96, 128, 0, 64, 192, 255, 40, 66, 191, 255, 77, 66, 191, 255, 70, 48, 143, 191, 17, 29, 92, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 32, 0, 49, 49, 99, 23, 70, 70, 143, 144, 76, 76, 155, 249, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 99, 99, 173, 224, 119, 119, 185, 118, 105, 105, 147, 18, 68, 68, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 229, 229, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 97, 97, 255, 0, 0, 0, 202, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 200, 91, 91, 91, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 234, 234, 255, 0, 0, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 2, 191, 24, 39, 2, 255, 133, 40, 3, 255, 178, 40, 4, 255, 223, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 38, 2, 255, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 20, 121, 53, 255, 198, 222, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 222, 206, 255, 20, 121, 53, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 221, 255, 255, 255, 255, 255, 255, 255, 255, 22, 22, 22, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 6, 6, 6, 202, 189, 189, 189, 255, 255, 255, 255, 255, 231, 231, 231, 255, 121, 121, 121, 255, 71, 71, 71, 255, 74, 74, 74, 255, 125, 125, 125, 255, 235, 235, 235, 255, 255, 255, 255, 255, 178, 178, 178, 254, 4, 4, 4, 192, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 48, 64, 0, 64, 191, 255, 55, 66, 192, 255, 205, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 250, 62, 189, 255, 153, 46, 142, 191, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 91, 6, 70, 70, 141, 141, 75, 75, 155, 249, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 84, 84, 164, 251, 112, 112, 179, 168, 139, 139, 171, 35, 0, 0, 0, 0, 0, 0, 0, 135, 176, 176, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 167, 167, 167, 255, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 161, 161, 161, 254, 255, 255, 255, 255, 255, 255, 255, 255, 181, 181, 181, 255, 0, 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 191, 2, 40, 4, 255, 198, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 239, 35, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 62, 145, 90, 255, 255, 255, 255, 255, 122, 179, 141, 255, 122, 179, 141, 255, 255, 255, 255, 255, 62, 145, 90, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 78, 175, 159, 255, 141, 203, 193, 255, 141, 203, 193, 255, 78, 175, 158, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 221, 255, 255, 255, 255, 255, 255, 255, 255, 22, 22, 22, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 140, 140, 140, 255, 255, 255, 255, 255, 181, 181, 181, 254, 19, 19, 19, 226, 0, 0, 0, 89, 0, 0, 0, 26, 0, 0, 0, 29, 0, 0, 0, 94, 23, 23, 23, 231, 190, 190, 190, 254, 255, 255, 255, 255, 127, 127, 127, 255, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 45, 64, 0, 63, 186, 255, 68, 67, 193, 255, 248, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 66, 192, 255, 206, 49, 142, 191, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 141, 28, 126, 126, 183, 255, 99, 99, 167, 255, 78, 78, 158, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 123, 123, 190, 255, 202, 202, 245, 255, 218, 218, 255, 99, 0, 0, 0, 0, 0, 0, 0, 56, 98, 98, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 245, 245, 255, 18, 18, 18, 226, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 15, 15, 15, 222, 242, 242, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 102, 102, 102, 255, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 2, 255, 43, 40, 4, 255, 249, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 38, 3, 255, 176, 19, 1, 255, 35, 4, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 45, 135, 75, 255, 253, 254, 253, 255, 185, 215, 195, 255, 185, 215, 195, 255, 253, 254, 253, 255, 45, 135, 75, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 70, 171, 154, 255, 141, 203, 193, 255, 238, 247, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 247, 246, 255, 140, 203, 193, 255, 70, 171, 154, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 221, 255, 255, 255, 255, 255, 255, 255, 255, 22, 22, 22, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 25, 25, 25, 234, 249, 249, 249, 255, 231, 231, 231, 255, 18, 18, 18, 225, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, 24, 24, 232, 237, 237, 237, 255, 244, 244, 244, 255, 17, 17, 17, 224, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 48, 143, 191, 12, 66, 193, 255, 232, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 66, 192, 255, 144, 32, 96, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 141, 28, 134, 134, 191, 255, 134, 134, 191, 255, 128, 128, 185, 255, 103, 103, 169, 255, 80, 80, 158, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 77, 77, 159, 255, 102, 102, 176, 255, 181, 181, 231, 255, 215, 215, 255, 255, 215, 215, 255, 255, 218, 218, 255, 99, 0, 0, 0, 0, 0, 0, 0, 2, 22, 22, 22, 231, 249, 249, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 130, 130, 130, 255, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 123, 123, 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 251, 251, 255, 25, 25, 25, 234, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 64, 0, 39, 3, 255, 129, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 239, 36, 1, 255, 71, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 122, 179, 141, 255, 251, 253, 251, 255, 251, 253, 251, 255, 122, 179, 141, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 159, 214, 241, 255, 160, 214, 241, 255, 158, 213, 241, 255, 140, 206, 239, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 113, 190, 178, 255, 219, 239, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 239, 235, 255, 113, 190, 178, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 16, 7, 7, 7, 230, 26, 26, 26, 230, 26, 26, 26, 230, 26, 26, 26, 230, 26, 26, 26, 230, 43, 43, 43, 251, 255, 255, 255, 255, 255, 255, 255, 255, 46, 46, 46, 252, 26, 26, 26, 230, 26, 26, 26, 230, 26, 26, 26, 230, 26, 26, 26, 230, 7, 7, 7, 230, 0, 0, 0, 18, 0, 0, 0, 56, 101, 101, 101, 255, 255, 255, 255, 255, 119, 119, 119, 255, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 133, 133, 133, 254, 255, 255, 255, 255, 87, 87, 87, 255, 0, 0, 0, 43, 0, 0, 0, 0, 0, 32, 64, 0, 41, 167, 255, 96, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 244, 46, 141, 191, 9, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 141, 28, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 130, 130, 187, 255, 106, 106, 170, 255, 86, 86, 162, 252, 77, 77, 159, 255, 86, 86, 165, 255, 159, 159, 216, 255, 215, 215, 254, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 218, 218, 255, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 147, 147, 147, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 248, 248, 255, 42, 42, 42, 243, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 53, 53, 53, 255, 77, 77, 77, 255, 77, 77, 77, 255, 54, 54, 54, 255, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 37, 37, 37, 241, 246, 246, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 152, 152, 255, 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 191, 7, 40, 3, 255, 214, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 246, 35, 1, 255, 56, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 190, 218, 199, 255, 190, 218, 199, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 176, 221, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 255, 255, 198, 231, 247, 255, 139, 205, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 91, 180, 165, 255, 192, 226, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 226, 220, 255, 91, 180, 165, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 18, 68, 68, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 73, 73, 255, 0, 0, 0, 20, 0, 0, 0, 89, 138, 138, 138, 254, 255, 255, 255, 255, 69, 69, 69, 255, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 83, 83, 83, 255, 255, 255, 255, 255, 126, 126, 126, 255, 0, 0, 0, 76, 0, 0, 0, 0, 31, 94, 128, 0, 64, 191, 255, 149, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 66, 192, 255, 51, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 141, 28, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 135, 135, 192, 254, 136, 136, 194, 252, 208, 208, 249, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 218, 218, 255, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 22, 22, 22, 230, 243, 243, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 218, 218, 255, 19, 19, 19, 227, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 175, 175, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 180, 180, 255, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 17, 17, 17, 224, 215, 215, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 245, 245, 255, 25, 25, 25, 233, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 24, 1, 255, 59, 40, 4, 255, 254, 39, 3, 255, 192, 38, 2, 255, 80, 40, 3, 255, 221, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 222, 27, 0, 191, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 27, 124, 59, 255, 65, 146, 92, 255, 33, 128, 65, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 190, 218, 199, 255, 190, 218, 199, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 33, 128, 65, 255, 65, 146, 92, 255, 27, 124, 59, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 159, 214, 241, 255, 160, 214, 241, 255, 172, 219, 243, 255, 209, 235, 248, 255, 255, 255, 255, 255, 204, 233, 248, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 76, 174, 158, 255, 164, 214, 206, 255, 249, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 252, 252, 255, 164, 214, 205, 255, 76, 174, 157, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 18, 68, 68, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 73, 73, 255, 0, 0, 0, 20, 0, 0, 0, 89, 138, 138, 138, 254, 255, 255, 255, 255, 68, 68, 68, 255, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 80, 80, 80, 255, 255, 255, 255, 255, 126, 126, 126, 255, 0, 0, 0, 76, 0, 0, 0, 0, 31, 96, 128, 0, 65, 192, 255, 156, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 66, 191, 255, 56, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 141, 28, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 147, 147, 201, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 218, 218, 255, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 96, 96, 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 213, 213, 255, 31, 31, 31, 238, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 175, 175, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 180, 180, 255, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 28, 28, 28, 236, 209, 209, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 102, 102, 102, 255, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 128, 0, 29, 2, 255, 150, 35, 2, 255, 104, 8, 0, 64, 0, 28, 2, 191, 20, 40, 4, 255, 225, 40, 4, 255, 255, 40, 4, 255, 255, 38, 2, 255, 119, 9, 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, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 50, 138, 80, 255, 230, 241, 234, 255, 255, 255, 255, 255, 242, 247, 244, 255, 73, 151, 100, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 190, 218, 199, 255, 190, 218, 199, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 73, 151, 100, 255, 242, 247, 244, 255, 255, 255, 255, 255, 230, 241, 234, 255, 50, 138, 80, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 201, 232, 247, 255, 254, 255, 255, 255, 152, 211, 240, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 69, 170, 154, 255, 136, 201, 190, 255, 236, 246, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 246, 244, 255, 136, 201, 190, 255, 69, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 16, 7, 7, 7, 230, 26, 26, 26, 230, 26, 26, 26, 230, 26, 26, 26, 230, 26, 26, 26, 230, 43, 43, 43, 251, 255, 255, 255, 255, 255, 255, 255, 255, 46, 46, 46, 252, 26, 26, 26, 230, 26, 26, 26, 230, 26, 26, 26, 230, 26, 26, 26, 230, 7, 7, 7, 230, 0, 0, 0, 18, 0, 0, 0, 56, 101, 101, 101, 255, 255, 255, 255, 255, 119, 119, 119, 255, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 131, 131, 131, 254, 255, 255, 255, 255, 88, 88, 88, 255, 0, 0, 0, 43, 0, 0, 0, 0, 15, 44, 64, 0, 63, 186, 255, 113, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 251, 59, 173, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 141, 28, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 147, 147, 201, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 218, 218, 255, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 143, 143, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 238, 238, 255, 97, 97, 97, 255, 2, 2, 2, 192, 0, 0, 0, 82, 0, 0, 0, 134, 175, 175, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 180, 180, 255, 0, 0, 0, 138, 0, 0, 0, 79, 1, 1, 1, 189, 94, 94, 94, 255, 236, 236, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 148, 148, 255, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 3, 3, 0, 255, 11, 11, 20, 64, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 191, 14, 29, 2, 191, 19, 0, 0, 0, 0, 0, 0, 64, 0, 24, 2, 255, 87, 40, 4, 255, 255, 40, 4, 255, 255, 39, 4, 255, 221, 5, 0, 191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 14, 14, 13, 191, 13, 13, 8, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 158, 199, 171, 255, 242, 248, 244, 255, 97, 165, 120, 255, 224, 237, 228, 255, 191, 218, 200, 255, 51, 138, 80, 255, 178, 211, 189, 255, 184, 214, 194, 255, 184, 214, 194, 255, 169, 205, 181, 255, 22, 122, 55, 255, 51, 138, 80, 255, 178, 211, 189, 255, 235, 244, 238, 255, 235, 244, 238, 255, 169, 205, 181, 255, 22, 122, 55, 255, 51, 138, 80, 255, 178, 211, 189, 255, 184, 214, 194, 255, 184, 214, 194, 255, 169, 205, 181, 255, 22, 122, 55, 255, 191, 218, 200, 255, 224, 237, 228, 255, 97, 165, 120, 255, 242, 248, 244, 255, 157, 199, 171, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 157, 213, 241, 255, 255, 255, 255, 255, 176, 221, 244, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 84, 177, 162, 255, 191, 226, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 226, 220, 255, 84, 177, 161, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 221, 255, 255, 255, 255, 255, 255, 255, 255, 22, 22, 22, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 25, 25, 25, 235, 249, 249, 249, 255, 231, 231, 231, 255, 18, 18, 18, 225, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, 24, 24, 232, 237, 237, 237, 255, 244, 244, 244, 255, 16, 16, 16, 224, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 59, 172, 255, 26, 67, 193, 255, 246, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 66, 192, 255, 173, 31, 90, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 142, 27, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 147, 147, 201, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 218, 218, 255, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 190, 154, 154, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 255, 116, 116, 116, 255, 44, 44, 44, 255, 175, 175, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 180, 180, 255, 42, 42, 42, 255, 115, 115, 115, 255, 217, 217, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 158, 158, 158, 255, 4, 4, 4, 194, 0, 0, 0, 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, 255, 10, 10, 17, 255, 21, 21, 236, 255, 18, 18, 85, 64, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 191, 4, 40, 4, 255, 246, 40, 4, 255, 255, 40, 4, 255, 255, 38, 3, 255, 51, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5, 5, 0, 255, 20, 20, 46, 255, 21, 21, 217, 255, 20, 20, 86, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 158, 199, 172, 255, 242, 248, 244, 255, 97, 165, 120, 255, 224, 237, 228, 255, 191, 219, 200, 255, 51, 138, 80, 255, 178, 211, 189, 255, 184, 214, 194, 255, 184, 214, 194, 255, 168, 205, 181, 255, 22, 122, 55, 255, 51, 138, 80, 255, 178, 211, 189, 255, 187, 216, 197, 255, 187, 216, 197, 255, 168, 205, 181, 255, 22, 122, 55, 255, 51, 138, 80, 255, 178, 211, 189, 255, 184, 214, 194, 255, 184, 214, 194, 255, 168, 205, 181, 255, 22, 122, 55, 255, 191, 219, 200, 255, 224, 237, 228, 255, 97, 165, 120, 255, 242, 248, 244, 255, 158, 199, 172, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 159, 214, 241, 255, 160, 214, 241, 255, 160, 214, 241, 255, 157, 213, 241, 255, 140, 206, 239, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 140, 206, 239, 255, 255, 255, 255, 255, 192, 228, 246, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 81, 176, 160, 255, 107, 188, 174, 255, 68, 170, 153, 255, 113, 190, 177, 255, 219, 239, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 239, 235, 255, 112, 190, 177, 255, 68, 170, 153, 255, 107, 188, 174, 255, 82, 176, 161, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 221, 255, 255, 255, 255, 255, 255, 255, 255, 22, 22, 22, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 139, 139, 139, 255, 255, 255, 255, 255, 182, 182, 182, 254, 19, 19, 19, 227, 0, 0, 0, 90, 0, 0, 0, 28, 0, 0, 0, 30, 0, 0, 0, 96, 23, 23, 23, 232, 191, 191, 191, 254, 255, 255, 255, 255, 127, 127, 127, 255, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 43, 64, 0, 65, 192, 255, 109, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 234, 49, 144, 191, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 43, 0, 145, 145, 199, 86, 139, 139, 194, 227, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 147, 147, 201, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 214, 214, 254, 255, 205, 205, 247, 160, 146, 146, 175, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 165, 111, 111, 111, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 255, 116, 116, 116, 255, 0, 0, 0, 169, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5, 5, 0, 255, 21, 21, 105, 255, 22, 22, 255, 255, 22, 22, 255, 255, 21, 21, 136, 191, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 128, 0, 39, 3, 255, 200, 40, 4, 255, 255, 40, 4, 255, 255, 24, 2, 255, 108, 0, 0, 64, 0, 128, 5, 5, 0, 255, 21, 21, 99, 255, 22, 22, 246, 255, 22, 22, 255, 255, 22, 22, 181, 128, 8, 8, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 51, 138, 80, 255, 230, 241, 234, 255, 255, 255, 255, 255, 242, 247, 244, 255, 73, 151, 100, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 73, 151, 100, 255, 242, 247, 244, 255, 255, 255, 255, 255, 230, 241, 234, 255, 50, 138, 80, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 176, 221, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 248, 253, 255, 156, 213, 241, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 237, 247, 252, 255, 221, 240, 250, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 161, 215, 242, 255, 214, 237, 249, 255, 145, 208, 239, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 96, 183, 168, 255, 254, 254, 254, 255, 184, 223, 216, 255, 86, 178, 163, 255, 70, 171, 154, 255, 142, 204, 193, 255, 239, 248, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 248, 246, 255, 141, 203, 193, 255, 70, 171, 154, 255, 86, 178, 163, 255, 185, 223, 217, 255, 254, 255, 254, 255, 97, 183, 169, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 221, 255, 255, 255, 255, 255, 255, 255, 255, 22, 22, 22, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 6, 6, 6, 202, 188, 188, 188, 255, 255, 255, 255, 255, 232, 232, 232, 255, 123, 123, 123, 255, 73, 73, 73, 255, 76, 76, 76, 255, 127, 127, 127, 254, 236, 236, 236, 255, 255, 255, 255, 255, 177, 177, 177, 254, 4, 4, 4, 192, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 48, 64, 0, 65, 191, 255, 103, 67, 193, 255, 242, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 66, 193, 255, 206, 58, 172, 255, 40, 13, 38, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 138, 4, 143, 143, 198, 120, 136, 136, 193, 245, 134, 134, 191, 255, 134, 134, 191, 255, 134, 134, 191, 255, 147, 147, 201, 255, 215, 215, 255, 255, 215, 215, 255, 255, 215, 215, 255, 255, 210, 210, 251, 230, 196, 196, 240, 71, 49, 49, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 119, 43, 43, 43, 245, 179, 179, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 182, 182, 255, 45, 45, 45, 247, 0, 0, 0, 122, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 10, 10, 0, 255, 22, 22, 199, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 21, 21, 186, 191, 15, 15, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 1, 128, 0, 37, 3, 255, 153, 40, 4, 255, 255, 40, 4, 255, 255, 39, 2, 255, 151, 183, 10, 95, 10, 255, 16, 16, 161, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 251, 255, 10, 10, 24, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 27, 124, 59, 255, 65, 146, 92, 255, 33, 128, 65, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 33, 128, 65, 255, 65, 146, 92, 255, 27, 124, 59, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 159, 214, 241, 255, 160, 214, 241, 255, 160, 214, 241, 255, 175, 221, 244, 255, 243, 250, 253, 255, 226, 243, 251, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 195, 229, 246, 255, 254, 255, 255, 255, 162, 215, 242, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 156, 213, 241, 255, 250, 253, 254, 255, 233, 246, 252, 255, 145, 208, 239, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 96, 183, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 251, 250, 255, 155, 209, 200, 255, 73, 172, 156, 255, 79, 175, 159, 255, 171, 217, 209, 255, 251, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 253, 253, 255, 171, 217, 209, 255, 79, 175, 159, 255, 73, 172, 156, 255, 156, 210, 201, 255, 246, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 183, 169, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 221, 255, 255, 255, 255, 255, 255, 255, 255, 22, 22, 22, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 6, 6, 201, 136, 136, 136, 255, 247, 247, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 245, 245, 255, 129, 129, 129, 255, 3, 3, 3, 193, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 48, 64, 0, 48, 143, 191, 18, 66, 192, 255, 96, 64, 187, 255, 131, 65, 190, 255, 124, 65, 192, 255, 66, 31, 138, 191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 36, 50, 0, 111, 111, 150, 20, 142, 142, 197, 154, 135, 135, 192, 253, 134, 134, 191, 255, 147, 147, 201, 255, 215, 215, 255, 255, 214, 214, 254, 255, 205, 205, 247, 162, 144, 144, 180, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 159, 57, 57, 57, 252, 144, 144, 144, 255, 224, 224, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 226, 226, 255, 146, 146, 146, 255, 60, 60, 60, 253, 0, 0, 0, 162, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 18, 18, 39, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 21, 21, 214, 191, 16, 16, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4, 255, 128, 40, 4, 255, 255, 40, 4, 255, 255, 64, 5, 228, 193, 255, 21, 21, 212, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 20, 20, 115, 72, 65, 31, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 31, 127, 63, 255, 194, 220, 203, 255, 55, 140, 83, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 55, 141, 84, 255, 194, 220, 203, 255, 31, 127, 63, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 198, 230, 247, 255, 252, 254, 255, 255, 139, 205, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 142, 207, 239, 255, 239, 248, 253, 255, 243, 250, 253, 255, 157, 213, 241, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 166, 217, 242, 255, 250, 253, 254, 255, 233, 245, 252, 255, 145, 208, 239, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 96, 183, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 243, 241, 255, 125, 196, 184, 255, 68, 170, 153, 255, 97, 183, 168, 255, 201, 230, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 230, 225, 255, 96, 183, 168, 255, 68, 170, 153, 255, 126, 196, 185, 255, 229, 243, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 183, 169, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 222, 77, 77, 77, 255, 77, 77, 77, 255, 7, 7, 7, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 118, 20, 20, 20, 231, 93, 93, 93, 255, 130, 130, 130, 255, 129, 129, 129, 255, 89, 89, 89, 255, 18, 18, 18, 227, 0, 0, 0, 111, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 44, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 31, 44, 0, 125, 125, 177, 43, 139, 139, 195, 184, 147, 147, 200, 255, 210, 210, 251, 231, 196, 196, 243, 72, 48, 48, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 106, 0, 0, 0, 185, 30, 30, 30, 238, 57, 57, 57, 255, 83, 83, 83, 255, 84, 84, 84, 255, 58, 58, 58, 255, 32, 32, 32, 239, 0, 0, 0, 187, 0, 0, 0, 107, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5, 5, 0, 255, 21, 21, 133, 255, 22, 22, 241, 255, 22, 22, 251, 255, 22, 22, 255, 255, 22, 22, 255, 255, 19, 19, 104, 191, 9, 9, 6, 64, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 4, 255, 128, 40, 4, 255, 255, 40, 4, 255, 255, 39, 3, 255, 188, 228, 16, 47, 32, 255, 21, 21, 192, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 251, 255, 22, 22, 210, 136, 67, 33, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 57, 142, 85, 255, 248, 251, 249, 255, 98, 165, 120, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 98, 165, 120, 255, 248, 251, 249, 255, 57, 142, 85, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 168, 218, 243, 255, 255, 255, 255, 255, 206, 234, 248, 255, 163, 216, 242, 255, 161, 215, 241, 255, 172, 219, 243, 255, 174, 220, 243, 255, 174, 220, 243, 255, 193, 228, 246, 255, 250, 253, 254, 255, 253, 254, 255, 255, 209, 235, 248, 255, 190, 227, 246, 255, 188, 226, 245, 255, 187, 226, 245, 255, 187, 226, 245, 255, 187, 226, 245, 255, 215, 237, 249, 255, 254, 255, 255, 255, 233, 245, 252, 255, 145, 208, 239, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 96, 183, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 232, 227, 255, 99, 184, 170, 255, 68, 170, 153, 255, 122, 194, 182, 255, 226, 242, 239, 255, 226, 242, 239, 255, 121, 194, 182, 255, 68, 170, 153, 255, 100, 184, 170, 255, 205, 232, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 183, 169, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 61, 61, 22, 61, 61, 61, 26, 61, 61, 61, 26, 61, 61, 61, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 64, 64, 64, 0, 0, 0, 0, 2, 0, 0, 0, 50, 0, 0, 0, 83, 0, 0, 0, 81, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 72, 100, 0, 155, 155, 210, 63, 146, 146, 176, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 95, 58, 0, 98, 95, 60, 0, 98, 95, 60, 0, 98, 95, 60, 0, 98, 95, 60, 0, 98, 95, 60, 0, 98, 95, 60, 0, 98, 95, 60, 0, 98, 95, 60, 0, 98, 95, 60, 0, 45, 45, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5, 5, 0, 255, 20, 20, 29, 255, 9, 9, 2, 255, 21, 21, 156, 255, 22, 22, 255, 255, 22, 22, 255, 255, 20, 20, 193, 191, 12, 12, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 4, 255, 128, 40, 4, 255, 255, 40, 4, 255, 255, 39, 3, 255, 182, 210, 9, 61, 35, 255, 22, 22, 242, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 206, 255, 13, 13, 4, 255, 20, 20, 38, 166, 45, 19, 2, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 57, 142, 85, 255, 248, 251, 249, 255, 98, 165, 120, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 98, 165, 120, 255, 248, 251, 249, 255, 57, 142, 85, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 203, 233, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 223, 244, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 96, 183, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 254, 254, 255, 174, 218, 211, 255, 81, 176, 160, 255, 70, 171, 154, 255, 69, 170, 153, 255, 81, 176, 160, 255, 175, 219, 212, 255, 252, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 183, 169, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 61, 61, 0, 182, 182, 182, 15, 153, 153, 153, 102, 245, 245, 245, 171, 245, 245, 245, 202, 245, 245, 245, 201, 245, 245, 245, 171, 153, 153, 153, 101, 182, 182, 182, 15, 61, 61, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 83, 255, 255, 255, 79, 62, 62, 62, 0, 39, 39, 39, 0, 184, 184, 184, 30, 191, 191, 191, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 43, 64, 0, 42, 86, 128, 0, 80, 168, 255, 19, 88, 173, 255, 54, 87, 172, 255, 53, 80, 168, 255, 19, 40, 88, 121, 0, 21, 43, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 58, 0, 194, 191, 118, 140, 196, 192, 120, 153, 196, 192, 120, 153, 196, 192, 120, 153, 196, 192, 120, 153, 196, 192, 120, 153, 196, 192, 120, 153, 196, 192, 120, 153, 196, 192, 120, 153, 195, 191, 120, 153, 188, 184, 112, 80, 48, 47, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 7, 191, 191, 191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 16, 16, 18, 255, 21, 21, 215, 255, 22, 22, 255, 255, 22, 22, 255, 255, 21, 21, 214, 255, 20, 20, 76, 191, 3, 3, 3, 128, 10, 10, 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, 0, 0, 0, 0, 0, 0, 0, 9, 0, 64, 0, 38, 3, 255, 131, 40, 4, 255, 255, 40, 4, 255, 255, 75, 6, 216, 210, 255, 22, 22, 229, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 245, 255, 11, 11, 52, 64, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 56, 141, 85, 255, 248, 251, 249, 255, 97, 165, 120, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 97, 165, 120, 255, 248, 251, 249, 255, 56, 141, 85, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 163, 215, 242, 255, 252, 254, 255, 255, 231, 245, 252, 255, 182, 224, 244, 255, 174, 220, 243, 255, 174, 220, 243, 255, 183, 224, 244, 255, 245, 250, 253, 255, 255, 255, 255, 255, 222, 241, 250, 255, 192, 228, 246, 255, 189, 227, 245, 255, 187, 226, 245, 255, 187, 226, 245, 255, 187, 226, 245, 255, 214, 237, 249, 255, 254, 255, 255, 255, 233, 246, 252, 255, 146, 208, 239, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 96, 183, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 249, 247, 255, 96, 182, 168, 255, 94, 182, 167, 255, 241, 249, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 183, 169, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 225, 167, 177, 255, 250, 239, 241, 255, 250, 239, 241, 255, 225, 167, 177, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 225, 167, 177, 255, 250, 239, 241, 255, 250, 239, 241, 255, 225, 167, 177, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 225, 167, 177, 255, 250, 239, 241, 255, 250, 239, 241, 255, 225, 167, 177, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 114, 114, 114, 0, 244, 244, 244, 102, 246, 246, 246, 233, 244, 244, 244, 167, 244, 244, 244, 92, 245, 245, 245, 55, 245, 245, 245, 55, 244, 244, 244, 92, 244, 244, 244, 168, 245, 245, 245, 232, 244, 244, 244, 100, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 199, 251, 251, 251, 247, 106, 106, 106, 180, 96, 96, 96, 179, 241, 241, 241, 234, 255, 255, 255, 202, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 21, 191, 0, 86, 172, 255, 84, 89, 174, 255, 201, 89, 174, 255, 255, 85, 179, 242, 255, 50, 226, 111, 255, 40, 240, 71, 255, 63, 208, 159, 203, 87, 171, 255, 83, 11, 21, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 97, 60, 0, 218, 219, 152, 252, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 239, 242, 181, 255, 204, 203, 132, 254, 193, 191, 119, 93, 49, 47, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 67, 255, 255, 255, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 14, 14, 26, 255, 20, 20, 197, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 21, 21, 230, 255, 21, 21, 172, 255, 13, 13, 117, 255, 20, 20, 63, 255, 20, 20, 42, 255, 20, 20, 26, 191, 14, 14, 10, 128, 10, 10, 0, 255, 19, 19, 20, 255, 21, 21, 34, 228, 17, 49, 51, 71, 5, 221, 187, 40, 4, 255, 255, 40, 4, 255, 255, 130, 11, 157, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 236, 255, 17, 17, 67, 64, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 24, 123, 57, 255, 144, 192, 160, 255, 39, 132, 70, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 39, 132, 70, 255, 144, 192, 160, 255, 23, 123, 56, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 185, 225, 245, 255, 255, 255, 255, 255, 152, 211, 240, 255, 136, 204, 238, 255, 136, 204, 238, 255, 138, 205, 238, 255, 226, 243, 251, 255, 250, 253, 254, 255, 173, 220, 243, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 165, 216, 242, 255, 250, 253, 254, 255, 234, 246, 252, 255, 146, 208, 239, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 96, 183, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 193, 181, 255, 118, 193, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 183, 169, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 216, 137, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 137, 150, 255, 204, 102, 119, 255, 204, 102, 119, 255, 216, 137, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 137, 150, 255, 204, 102, 119, 255, 204, 102, 119, 255, 216, 137, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 137, 150, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 114, 114, 114, 0, 237, 237, 237, 144, 246, 246, 246, 209, 242, 242, 242, 41, 120, 120, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 120, 120, 0, 242, 242, 242, 42, 246, 246, 246, 210, 235, 235, 235, 142, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 168, 255, 255, 255, 255, 241, 241, 241, 217, 243, 243, 243, 221, 255, 255, 255, 255, 255, 255, 255, 152, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 96, 128, 0, 64, 191, 255, 31, 66, 191, 255, 71, 65, 192, 255, 61, 47, 144, 191, 11, 32, 96, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 128, 191, 9, 85, 171, 255, 170, 89, 174, 255, 255, 89, 174, 255, 255, 89, 174, 255, 255, 59, 215, 141, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 255, 32, 255, 75, 192, 204, 255, 88, 173, 255, 168, 61, 128, 191, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 97, 60, 0, 218, 219, 152, 252, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 239, 242, 181, 255, 217, 218, 151, 255, 212, 212, 143, 254, 194, 190, 115, 87, 48, 48, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 137, 255, 255, 255, 143, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 11, 11, 5, 255, 20, 20, 110, 255, 22, 22, 235, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 93, 8, 197, 255, 40, 4, 255, 255, 40, 4, 255, 255, 157, 13, 127, 255, 255, 22, 22, 254, 255, 19, 19, 166, 191, 15, 15, 29, 64, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 211, 236, 249, 255, 244, 250, 253, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 181, 223, 244, 255, 255, 255, 255, 255, 178, 222, 244, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 156, 212, 241, 255, 250, 253, 254, 255, 234, 246, 252, 255, 146, 208, 239, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 96, 183, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 193, 181, 255, 118, 193, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 183, 169, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 227, 170, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 170, 179, 255, 204, 102, 119, 255, 204, 102, 119, 255, 227, 170, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 170, 179, 255, 204, 102, 119, 255, 204, 102, 119, 255, 227, 170, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 170, 179, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 61, 61, 61, 0, 245, 245, 245, 106, 245, 245, 245, 207, 183, 183, 183, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, 184, 184, 13, 245, 245, 245, 208, 245, 245, 245, 104, 61, 61, 61, 0, 191, 191, 191, 49, 255, 255, 255, 124, 255, 255, 255, 102, 255, 255, 255, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 225, 101, 165, 165, 165, 26, 165, 165, 165, 26, 126, 126, 126, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 47, 64, 0, 64, 191, 255, 50, 66, 193, 255, 196, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 247, 66, 192, 255, 145, 47, 143, 191, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 101, 191, 1, 87, 172, 255, 171, 86, 179, 243, 255, 63, 209, 158, 255, 63, 209, 159, 255, 86, 178, 244, 255, 53, 222, 121, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 254, 34, 255, 65, 206, 167, 255, 89, 174, 255, 255, 85, 171, 255, 169, 49, 100, 191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 98, 97, 60, 0, 218, 219, 152, 252, 240, 243, 187, 255, 231, 235, 187, 255, 231, 235, 187, 255, 231, 235, 187, 255, 231, 235, 187, 255, 231, 235, 187, 255, 231, 235, 187, 255, 239, 243, 187, 255, 243, 247, 187, 255, 230, 231, 168, 255, 229, 230, 167, 255, 201, 199, 128, 179, 97, 96, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 207, 255, 255, 255, 225, 191, 191, 191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5, 5, 0, 191, 13, 13, 8, 255, 21, 21, 90, 255, 21, 21, 179, 255, 22, 22, 242, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 255, 22, 22, 255, 66, 6, 226, 255, 40, 4, 255, 255, 40, 4, 255, 255, 157, 12, 127, 158, 255, 19, 19, 39, 128, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 31, 127, 63, 255, 194, 220, 203, 255, 55, 140, 83, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 55, 141, 84, 255, 194, 220, 203, 255, 31, 127, 63, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 159, 214, 241, 255, 160, 214, 241, 255, 160, 214, 241, 255, 160, 214, 241, 255, 163, 216, 242, 255, 193, 228, 246, 255, 253, 254, 255, 255, 205, 234, 248, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 228, 244, 251, 255, 232, 245, 252, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 161, 215, 242, 255, 214, 237, 249, 255, 146, 208, 239, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 96, 183, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 193, 181, 255, 118, 193, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 183, 169, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 216, 137, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 137, 150, 255, 204, 102, 119, 255, 204, 102, 119, 255, 216, 137, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 137, 150, 255, 204, 102, 119, 255, 204, 102, 119, 255, 216, 137, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 137, 150, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 184, 184, 184, 20, 246, 246, 246, 234, 238, 238, 238, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 239, 239, 239, 37, 246, 246, 246, 234, 248, 248, 248, 19, 255, 255, 255, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 231, 231, 255, 192, 192, 192, 93, 255, 255, 255, 160, 255, 255, 255, 255, 253, 253, 253, 255, 244, 244, 244, 255, 235, 235, 235, 255, 169, 169, 169, 194, 84, 84, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 48, 64, 0, 63, 189, 255, 63, 67, 193, 255, 246, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 66, 192, 255, 200, 38, 133, 191, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 39, 64, 0, 84, 166, 255, 89, 89, 174, 255, 255, 42, 237, 81, 255, 30, 255, 32, 255, 30, 255, 32, 255, 43, 236, 83, 255, 43, 236, 83, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 254, 34, 255, 81, 183, 228, 255, 89, 174, 255, 255, 89, 174, 255, 255, 87, 171, 255, 87, 21, 43, 64, 0, 0, 0, 0, 0, 98, 97, 60, 0, 218, 219, 152, 252, 230, 233, 186, 255, 197, 197, 185, 255, 197, 197, 185, 255, 197, 197, 185, 255, 197, 197, 185, 255, 197, 197, 185, 255, 197, 197, 185, 255, 210, 212, 186, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 204, 203, 133, 178, 97, 96, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 23, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 10, 10, 0, 191, 12, 12, 4, 255, 20, 20, 49, 255, 21, 21, 89, 255, 21, 21, 123, 255, 21, 21, 147, 255, 21, 21, 153, 255, 20, 20, 155, 255, 21, 21, 153, 255, 19, 19, 145, 180, 14, 102, 133, 41, 4, 254, 255, 40, 4, 255, 255, 40, 4, 255, 252, 19, 0, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 57, 142, 85, 255, 248, 251, 249, 255, 98, 165, 120, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 98, 165, 120, 255, 248, 251, 249, 255, 57, 142, 85, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 176, 221, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 239, 250, 255, 142, 207, 239, 255, 136, 204, 238, 255, 136, 204, 238, 255, 138, 205, 238, 255, 254, 254, 255, 255, 197, 230, 247, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 96, 183, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 193, 181, 255, 118, 193, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 183, 169, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 225, 167, 177, 255, 250, 239, 241, 255, 250, 239, 241, 255, 225, 167, 177, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 225, 167, 177, 255, 250, 239, 241, 255, 250, 239, 241, 255, 225, 167, 177, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 225, 167, 177, 255, 250, 239, 241, 255, 250, 239, 241, 255, 225, 167, 177, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 243, 243, 243, 114, 243, 243, 243, 156, 119, 119, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, 119, 0, 244, 244, 244, 157, 241, 241, 241, 112, 189, 189, 189, 3, 234, 234, 234, 108, 255, 255, 255, 241, 255, 255, 255, 255, 154, 154, 154, 245, 68, 68, 68, 8, 190, 190, 190, 5, 250, 250, 250, 254, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 203, 172, 172, 172, 208, 84, 84, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 143, 191, 10, 66, 193, 255, 228, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 50, 176, 255, 140, 16, 80, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 86, 128, 0, 88, 174, 255, 208, 87, 176, 248, 255, 30, 255, 33, 255, 30, 255, 32, 255, 30, 255, 32, 255, 29, 255, 32, 255, 30, 255, 32, 255, 30, 255, 32, 255, 29, 255, 31, 255, 29, 255, 31, 255, 34, 250, 46, 255, 50, 227, 109, 255, 85, 180, 239, 255, 88, 173, 255, 206, 43, 86, 128, 0, 0, 0, 0, 0, 98, 97, 60, 0, 218, 219, 152, 252, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 204, 203, 133, 178, 97, 96, 59, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 91, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 191, 191, 191, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 10, 10, 0, 128, 10, 74, 0, 128, 9, 9, 0, 128, 10, 10, 0, 128, 8, 72, 0, 24, 2, 255, 96, 40, 4, 255, 255, 40, 4, 255, 255, 39, 3, 255, 199, 14, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 57, 142, 85, 255, 248, 251, 249, 255, 98, 165, 120, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 98, 165, 120, 255, 248, 251, 249, 255, 57, 142, 85, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 159, 214, 241, 255, 160, 214, 241, 255, 160, 214, 241, 255, 160, 214, 241, 255, 160, 214, 241, 255, 150, 210, 240, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 151, 210, 240, 255, 255, 255, 255, 255, 182, 224, 245, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 83, 177, 161, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 193, 181, 255, 118, 193, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 84, 177, 162, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 245, 245, 245, 186, 243, 243, 243, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 244, 244, 77, 246, 246, 246, 184, 0, 0, 0, 167, 0, 0, 0, 210, 167, 167, 167, 245, 255, 255, 255, 255, 197, 197, 197, 253, 137, 137, 137, 13, 255, 255, 255, 73, 255, 255, 255, 255, 243, 243, 243, 251, 251, 251, 251, 62, 170, 170, 170, 8, 169, 169, 169, 208, 84, 84, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 41, 120, 255, 94, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 106, 206, 255, 255, 76, 196, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 66, 193, 255, 242, 45, 141, 191, 8, 0, 0, 0, 0, 0, 0, 0, 0, 87, 171, 255, 29, 89, 174, 255, 255, 89, 174, 255, 255, 52, 225, 115, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 254, 33, 255, 30, 255, 32, 255, 30, 255, 32, 255, 29, 255, 32, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 255, 32, 255, 49, 228, 104, 255, 89, 174, 255, 255, 85, 173, 255, 27, 0, 0, 0, 0, 98, 97, 60, 0, 218, 219, 152, 252, 241, 245, 187, 255, 237, 241, 187, 255, 237, 241, 187, 255, 237, 241, 187, 255, 237, 241, 187, 255, 237, 241, 187, 255, 237, 241, 187, 255, 237, 241, 187, 255, 237, 241, 187, 255, 237, 241, 187, 255, 241, 245, 187, 255, 204, 203, 133, 178, 161, 160, 123, 0, 255, 255, 255, 31, 255, 255, 255, 162, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 255, 255, 255, 179, 255, 255, 255, 182, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 197, 255, 255, 255, 40, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 191, 14, 19, 1, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 191, 0, 39, 3, 255, 200, 40, 4, 255, 255, 40, 4, 255, 255, 38, 2, 255, 106, 9, 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, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 56, 141, 85, 255, 248, 251, 249, 255, 97, 165, 120, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 97, 165, 120, 255, 248, 251, 249, 255, 56, 141, 85, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 176, 221, 244, 255, 255, 255, 255, 255, 160, 215, 241, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 184, 223, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 193, 181, 255, 118, 193, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 223, 216, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 246, 246, 246, 219, 244, 244, 244, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 244, 244, 37, 246, 246, 246, 216, 0, 0, 0, 188, 168, 168, 168, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 254, 255, 255, 255, 38, 153, 153, 153, 8, 169, 169, 169, 208, 159, 159, 159, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 64, 0, 0, 0, 0, 0, 31, 94, 128, 0, 64, 191, 255, 149, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 160, 224, 255, 255, 255, 255, 255, 255, 231, 247, 255, 255, 69, 194, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 65, 192, 255, 49, 0, 0, 0, 0, 0, 0, 0, 0, 88, 173, 255, 64, 89, 174, 255, 255, 89, 174, 255, 255, 67, 203, 173, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 255, 33, 255, 30, 255, 32, 255, 31, 253, 37, 255, 88, 175, 251, 255, 88, 173, 255, 61, 0, 0, 0, 0, 98, 97, 60, 0, 218, 219, 152, 252, 226, 229, 186, 255, 191, 191, 185, 255, 191, 191, 185, 255, 191, 191, 185, 255, 191, 191, 185, 255, 191, 191, 185, 255, 191, 191, 185, 255, 191, 191, 185, 255, 191, 191, 185, 255, 191, 191, 185, 255, 229, 233, 186, 255, 204, 203, 133, 178, 97, 96, 59, 0, 64, 64, 64, 0, 191, 191, 191, 25, 255, 255, 255, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 191, 191, 191, 17, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 191, 7, 39, 3, 255, 189, 40, 3, 255, 93, 0, 0, 0, 0, 9, 0, 64, 0, 38, 2, 255, 97, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 238, 27, 0, 191, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 24, 123, 57, 255, 144, 192, 160, 255, 39, 132, 70, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 39, 132, 70, 255, 144, 192, 160, 255, 23, 123, 56, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 143, 207, 239, 255, 237, 247, 252, 255, 239, 248, 253, 255, 139, 205, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 69, 170, 154, 255, 136, 201, 190, 255, 236, 246, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 193, 181, 255, 118, 193, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 246, 244, 255, 136, 201, 190, 255, 69, 170, 154, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 246, 246, 246, 224, 245, 245, 245, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, 245, 245, 32, 245, 245, 245, 221, 3, 3, 3, 188, 246, 246, 246, 232, 255, 255, 255, 245, 168, 168, 168, 243, 238, 238, 238, 243, 255, 255, 255, 255, 255, 255, 255, 230, 244, 244, 244, 253, 255, 255, 255, 255, 255, 255, 255, 192, 196, 196, 196, 9, 169, 169, 169, 208, 255, 255, 255, 156, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 113, 64, 64, 64, 0, 31, 96, 128, 0, 65, 192, 255, 156, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 210, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 202, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 66, 192, 255, 56, 0, 0, 0, 0, 0, 0, 0, 0, 87, 172, 255, 66, 89, 174, 255, 255, 89, 174, 255, 255, 49, 228, 107, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 255, 32, 255, 31, 254, 35, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 255, 33, 255, 34, 249, 49, 255, 89, 174, 255, 255, 88, 173, 255, 64, 0, 0, 0, 0, 98, 97, 60, 0, 218, 219, 152, 252, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 204, 203, 133, 178, 97, 96, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 90, 255, 255, 255, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 255, 255, 255, 102, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 191, 2, 37, 3, 255, 170, 40, 4, 255, 255, 36, 2, 255, 130, 24, 0, 191, 4, 38, 2, 255, 106, 40, 4, 255, 250, 40, 4, 255, 255, 40, 4, 255, 255, 38, 2, 255, 116, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 21, 121, 54, 255, 51, 139, 80, 255, 24, 123, 57, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 24, 123, 57, 255, 51, 139, 80, 255, 21, 121, 54, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 137, 204, 238, 255, 159, 214, 241, 255, 160, 214, 241, 255, 160, 214, 241, 255, 160, 214, 241, 255, 160, 214, 241, 255, 165, 216, 242, 255, 189, 227, 245, 255, 241, 249, 253, 255, 253, 254, 255, 255, 164, 216, 242, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 76, 174, 158, 255, 165, 214, 206, 255, 249, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 193, 181, 255, 118, 193, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 252, 252, 255, 165, 214, 206, 255, 76, 174, 158, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 245, 245, 245, 196, 214, 214, 214, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 64, 245, 245, 245, 194, 0, 0, 0, 188, 108, 108, 108, 64, 170, 170, 170, 14, 0, 0, 0, 215, 197, 197, 197, 219, 255, 255, 255, 255, 240, 240, 240, 126, 90, 90, 90, 218, 215, 215, 215, 234, 255, 255, 255, 141, 183, 183, 183, 8, 169, 169, 169, 208, 255, 255, 255, 221, 255, 255, 255, 26, 255, 255, 255, 50, 255, 255, 255, 188, 128, 128, 128, 0, 14, 46, 64, 0, 61, 188, 255, 115, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 252, 50, 187, 255, 19, 0, 0, 0, 0, 0, 0, 0, 0, 87, 171, 255, 34, 89, 174, 255, 255, 89, 174, 255, 255, 54, 221, 125, 255, 30, 255, 32, 255, 30, 255, 32, 255, 30, 254, 33, 255, 30, 254, 34, 255, 72, 197, 191, 255, 66, 205, 168, 255, 30, 255, 33, 255, 30, 255, 32, 255, 30, 255, 32, 255, 63, 209, 158, 255, 89, 174, 255, 255, 86, 171, 255, 32, 0, 0, 0, 0, 98, 97, 60, 0, 218, 219, 152, 252, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 204, 203, 133, 178, 97, 96, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 191, 191, 191, 23, 255, 255, 255, 218, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 255, 255, 255, 44, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 128, 0, 29, 2, 255, 149, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 237, 40, 4, 255, 242, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 39, 3, 255, 191, 24, 0, 191, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 43, 134, 73, 255, 220, 235, 225, 255, 255, 255, 255, 255, 233, 242, 236, 255, 63, 145, 91, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 64, 146, 91, 255, 233, 242, 236, 255, 255, 255, 255, 255, 220, 235, 225, 255, 43, 134, 73, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 177, 222, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 245, 252, 255, 160, 214, 241, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 91, 181, 166, 255, 193, 227, 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 193, 181, 255, 118, 193, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 226, 220, 255, 91, 181, 166, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 245, 245, 245, 130, 183, 183, 183, 136, 60, 60, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 92, 0, 215, 215, 215, 138, 224, 224, 224, 128, 0, 0, 0, 188, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 215, 153, 153, 153, 208, 255, 255, 255, 255, 211, 211, 211, 44, 77, 77, 77, 215, 168, 168, 168, 215, 159, 159, 159, 0, 153, 153, 153, 8, 169, 169, 169, 208, 255, 255, 255, 218, 128, 128, 128, 0, 255, 255, 255, 28, 255, 255, 255, 188, 128, 128, 128, 0, 0, 0, 0, 0, 51, 186, 255, 29, 67, 193, 255, 247, 67, 193, 255, 255, 67, 193, 255, 255, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 65, 191, 255, 177, 28, 93, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 86, 128, 0, 89, 174, 255, 217, 89, 174, 255, 255, 80, 185, 223, 255, 34, 250, 46, 255, 30, 255, 32, 255, 30, 255, 32, 255, 39, 242, 68, 255, 88, 176, 250, 255, 47, 231, 98, 255, 30, 255, 32, 255, 30, 255, 32, 255, 41, 239, 76, 255, 89, 174, 255, 255, 88, 174, 255, 215, 43, 86, 128, 0, 0, 0, 0, 0, 98, 97, 60, 0, 218, 219, 152, 252, 224, 227, 186, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 228, 231, 186, 255, 204, 203, 133, 178, 97, 96, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 8, 255, 255, 255, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 64, 0, 39, 3, 255, 125, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 39, 3, 255, 201, 28, 1, 191, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 152, 196, 167, 255, 245, 250, 247, 255, 114, 174, 134, 255, 230, 240, 233, 255, 187, 216, 197, 255, 39, 131, 70, 255, 149, 194, 164, 255, 155, 198, 169, 255, 155, 198, 169, 255, 140, 189, 157, 255, 19, 120, 53, 255, 39, 131, 70, 255, 149, 194, 164, 255, 155, 198, 169, 255, 155, 198, 169, 255, 140, 189, 157, 255, 19, 120, 53, 255, 39, 131, 70, 255, 149, 194, 164, 255, 155, 198, 169, 255, 155, 198, 169, 255, 140, 189, 157, 255, 19, 120, 53, 255, 187, 216, 197, 255, 230, 240, 233, 255, 115, 175, 135, 255, 245, 250, 247, 255, 152, 196, 167, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 137, 204, 238, 255, 159, 214, 241, 255, 160, 214, 241, 255, 160, 214, 241, 255, 160, 214, 241, 255, 160, 214, 241, 255, 160, 214, 241, 255, 146, 208, 239, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 114, 191, 178, 255, 220, 239, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 193, 181, 255, 118, 193, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 239, 235, 255, 113, 191, 178, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 241, 241, 241, 36, 246, 246, 246, 233, 183, 183, 183, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, 183, 183, 19, 246, 246, 246, 234, 180, 180, 180, 35, 0, 0, 0, 188, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 215, 87, 87, 87, 208, 181, 181, 181, 56, 102, 102, 102, 0, 77, 77, 77, 215, 168, 168, 168, 215, 84, 84, 84, 0, 153, 153, 153, 8, 169, 169, 169, 208, 255, 255, 255, 218, 128, 128, 128, 0, 255, 255, 255, 28, 255, 255, 255, 188, 128, 128, 128, 0, 0, 0, 0, 0, 13, 47, 64, 0, 66, 192, 255, 115, 67, 193, 255, 255, 67, 193, 255, 255, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 255, 67, 193, 255, 237, 32, 180, 255, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 42, 64, 0, 88, 170, 255, 101, 89, 174, 255, 255, 89, 174, 255, 255, 82, 183, 230, 255, 60, 213, 148, 255, 61, 211, 152, 255, 85, 180, 239, 255, 89, 174, 255, 255, 33, 250, 44, 255, 30, 255, 32, 255, 30, 254, 33, 255, 30, 255, 33, 255, 84, 180, 239, 255, 85, 173, 255, 100, 20, 43, 64, 0, 0, 0, 0, 0, 98, 97, 60, 0, 218, 219, 152, 252, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 204, 203, 133, 178, 97, 96, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 64, 0, 37, 3, 255, 102, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 248, 39, 3, 255, 141, 29, 0, 191, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 161, 201, 174, 255, 240, 246, 242, 255, 77, 153, 102, 255, 218, 234, 224, 255, 196, 221, 204, 255, 62, 145, 90, 255, 227, 239, 231, 255, 236, 244, 239, 255, 236, 244, 239, 255, 210, 229, 216, 255, 25, 124, 58, 255, 62, 145, 90, 255, 227, 239, 231, 255, 236, 244, 239, 255, 236, 244, 239, 255, 210, 229, 216, 255, 25, 124, 58, 255, 62, 145, 90, 255, 227, 239, 231, 255, 236, 244, 239, 255, 236, 244, 239, 255, 210, 229, 216, 255, 25, 124, 58, 255, 196, 221, 204, 255, 218, 234, 224, 255, 77, 153, 102, 255, 240, 246, 242, 255, 161, 201, 174, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 70, 171, 154, 255, 141, 203, 193, 255, 239, 248, 246, 255, 119, 193, 181, 255, 118, 193, 180, 255, 239, 248, 246, 255, 141, 203, 193, 255, 70, 171, 154, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 111, 111, 111, 0, 235, 235, 235, 141, 245, 245, 245, 176, 166, 166, 166, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 172, 172, 2, 245, 245, 245, 177, 235, 235, 235, 139, 111, 111, 111, 0, 0, 0, 0, 188, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 215, 77, 77, 77, 208, 68, 68, 68, 8, 39, 39, 39, 0, 77, 77, 77, 215, 168, 168, 168, 215, 84, 84, 84, 0, 153, 153, 153, 8, 169, 169, 169, 208, 255, 255, 255, 218, 128, 128, 128, 0, 255, 255, 255, 28, 255, 255, 255, 188, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 48, 64, 0, 66, 192, 255, 112, 67, 193, 255, 245, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 66, 193, 255, 213, 61, 181, 255, 45, 7, 43, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 123, 191, 4, 88, 173, 255, 187, 89, 174, 255, 255, 89, 174, 255, 255, 89, 174, 255, 255, 89, 174, 255, 255, 89, 174, 255, 255, 89, 174, 255, 255, 48, 230, 101, 255, 30, 255, 32, 255, 30, 255, 32, 255, 36, 245, 58, 255, 86, 174, 252, 186, 63, 128, 191, 3, 0, 0, 0, 0, 0, 0, 0, 0, 98, 97, 60, 0, 218, 219, 152, 252, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 204, 203, 133, 178, 97, 96, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 161, 255, 255, 255, 255, 255, 255, 255, 204, 191, 191, 191, 30, 191, 191, 191, 12, 255, 255, 255, 161, 255, 255, 255, 255, 255, 255, 255, 233, 191, 191, 191, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 191, 3, 29, 2, 255, 145, 40, 4, 255, 243, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 40, 4, 255, 255, 39, 3, 255, 112, 32, 2, 255, 22, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 59, 143, 87, 255, 240, 246, 242, 255, 255, 255, 255, 255, 248, 251, 249, 255, 85, 157, 109, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 85, 157, 109, 255, 248, 251, 249, 255, 255, 255, 255, 255, 239, 246, 242, 255, 59, 143, 87, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 78, 175, 159, 255, 84, 177, 162, 255, 84, 177, 162, 255, 78, 175, 159, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 177, 177, 177, 5, 245, 245, 245, 187, 244, 244, 244, 171, 183, 183, 183, 12, 59, 59, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 60, 60, 0, 183, 183, 183, 13, 245, 245, 245, 172, 244, 244, 244, 186, 176, 176, 176, 5, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 215, 77, 77, 77, 208, 68, 68, 68, 8, 39, 39, 39, 0, 77, 77, 77, 215, 168, 168, 168, 215, 84, 84, 84, 0, 153, 153, 153, 8, 169, 169, 169, 208, 255, 255, 255, 218, 128, 128, 128, 0, 255, 255, 255, 28, 255, 255, 255, 188, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 40, 64, 0, 57, 167, 255, 23, 237, 249, 255, 215, 255, 255, 255, 255, 255, 255, 255, 255, 155, 222, 255, 99, 44, 134, 191, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 129, 191, 16, 87, 173, 255, 189, 89, 174, 255, 255, 89, 174, 255, 255, 89, 174, 255, 255, 89, 174, 255, 255, 89, 174, 255, 255, 85, 179, 240, 255, 57, 217, 137, 255, 51, 225, 115, 255, 76, 187, 217, 188, 64, 129, 191, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 97, 60, 0, 218, 219, 152, 252, 224, 227, 186, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 228, 231, 186, 255, 204, 203, 133, 178, 97, 96, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 5, 255, 255, 255, 238, 255, 255, 255, 162, 191, 191, 191, 9, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 91, 255, 255, 255, 242, 255, 255, 255, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 128, 0, 29, 0, 191, 15, 38, 2, 255, 113, 39, 4, 255, 222, 40, 4, 255, 255, 40, 4, 255, 255, 38, 3, 255, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 36, 130, 68, 255, 86, 158, 110, 255, 45, 135, 75, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 45, 135, 75, 255, 86, 158, 110, 255, 36, 130, 68, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 181, 181, 181, 6, 240, 240, 240, 151, 246, 246, 246, 229, 242, 242, 242, 118, 244, 244, 244, 42, 183, 183, 183, 6, 183, 183, 183, 6, 245, 245, 245, 42, 243, 243, 243, 119, 246, 246, 246, 230, 239, 239, 239, 149, 180, 180, 180, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 215, 77, 77, 77, 208, 69, 69, 69, 8, 58, 58, 58, 0, 77, 77, 77, 215, 168, 168, 168, 215, 126, 126, 126, 0, 155, 155, 155, 8, 169, 169, 169, 208, 255, 255, 255, 218, 191, 191, 191, 0, 255, 255, 255, 28, 255, 255, 255, 188, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 128, 191, 4, 87, 172, 255, 107, 88, 173, 255, 224, 89, 174, 255, 255, 89, 174, 255, 255, 89, 174, 255, 255, 89, 174, 255, 255, 88, 174, 255, 223, 88, 171, 255, 106, 55, 123, 191, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 97, 60, 0, 218, 219, 152, 252, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 243, 247, 187, 255, 204, 203, 133, 178, 97, 96, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 66, 255, 255, 255, 111, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 34, 255, 255, 255, 121, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 64, 0, 20, 0, 191, 3, 39, 3, 255, 79, 39, 3, 255, 189, 34, 3, 255, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 117, 117, 0, 240, 240, 240, 48, 243, 243, 243, 150, 246, 246, 246, 221, 246, 246, 246, 251, 246, 246, 246, 250, 246, 246, 246, 220, 243, 243, 243, 150, 240, 240, 240, 47, 115, 115, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 230, 0, 0, 0, 230, 0, 0, 0, 198, 77, 77, 77, 162, 78, 78, 78, 230, 78, 78, 78, 230, 77, 77, 77, 180, 168, 168, 168, 180, 169, 169, 169, 230, 169, 169, 169, 230, 167, 167, 167, 162, 255, 255, 255, 199, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 143, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 43, 64, 0, 44, 86, 128, 0, 86, 171, 255, 41, 88, 173, 255, 76, 88, 173, 255, 76, 87, 172, 255, 40, 44, 86, 128, 0, 22, 42, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 97, 61, 0, 205, 203, 134, 220, 215, 215, 148, 235, 215, 215, 148, 235, 215, 215, 148, 235, 215, 215, 148, 235, 215, 215, 148, 235, 215, 215, 148, 235, 215, 215, 148, 235, 215, 215, 148, 235, 215, 215, 148, 235, 215, 215, 148, 235, 215, 215, 148, 235, 199, 196, 125, 155, 97, 95, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 7, 64, 64, 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, 0, 0, 0, 0, 0, 191, 191, 191, 2, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 128, 0, 18, 0, 255, 10, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 17, 119, 51, 255, 136, 204, 238, 253, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 136, 204, 238, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 68, 170, 153, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 204, 102, 119, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 120, 120, 0, 123, 123, 123, 0, 123, 123, 123, 0, 123, 123, 123, 0, 123, 123, 123, 0, 120, 120, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 38, 38, 0, 39, 39, 39, 0, 39, 39, 39, 0, 38, 38, 38, 0, 83, 83, 83, 0, 84, 84, 84, 0, 84, 84, 84, 0, 83, 83, 83, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 97, 61, 0, 98, 97, 61, 0, 98, 97, 61, 0, 98, 97, 61, 0, 98, 97, 61, 0, 98, 97, 61, 0, 98, 97, 61, 0, 98, 97, 61, 0, 98, 97, 61, 0, 98, 97, 61, 0, 98, 97, 61, 0, 98, 97, 61, 0, 98, 96, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 55, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 65, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 9, 60, 26, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 68, 102, 119, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 34, 85, 77, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 102, 51, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 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, 0, 128, 128, 128, 0, 255, 255, 255, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 52, 255, 255, 255, 116, 255, 255, 255, 116, 255, 255, 255, 116, 255, 255, 255, 116, 255, 255, 255, 116, 255, 255, 255, 116, 255, 255, 255, 116, 255, 255, 255, 116, 255, 255, 255, 116, 255, 255, 255, 116, 255, 255, 255, 116, 255, 255, 255, 116, 255, 255, 255, 68, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 101, 0, 0, 0, 133, 0, 0, 0, 153, 0, 0, 0, 123, 0, 0, 0, 67, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 195, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 223, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 31, 191, 191, 191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 138, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 132, 128, 128, 128, 0, 0, 0, 0, 0, 255, 255, 255, 54, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 167, 191, 0, 252, 254, 255, 197, 255, 255, 255, 255, 255, 255, 255, 255, 217, 242, 255, 45, 16, 48, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 88, 255, 255, 255, 145, 255, 255, 255, 83, 255, 255, 255, 83, 255, 255, 255, 83, 255, 255, 255, 83, 255, 255, 255, 83, 255, 255, 255, 83, 255, 255, 255, 83, 255, 255, 255, 83, 255, 255, 255, 83, 255, 255, 255, 83, 255, 255, 255, 138, 255, 255, 255, 111, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, 253, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 207, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 255, 25, 25, 25, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 15, 15, 15, 255, 62, 62, 62, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 57, 57, 57, 255, 20, 20, 20, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 23, 23, 23, 255, 55, 55, 55, 255, 42, 42, 42, 255, 0, 0, 0, 255, 0, 0, 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 125, 255, 255, 255, 199, 255, 255, 255, 50, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 128, 128, 128, 0, 0, 0, 0, 0, 255, 255, 255, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 46, 64, 0, 58, 185, 255, 44, 66, 192, 255, 188, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 202, 255, 243, 66, 192, 255, 137, 49, 142, 191, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 88, 255, 255, 255, 124, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 109, 255, 255, 255, 111, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 255, 50, 50, 50, 255, 169, 169, 169, 255, 209, 209, 209, 255, 230, 230, 230, 255, 195, 195, 195, 255, 111, 111, 111, 255, 2, 2, 2, 255, 0, 0, 0, 213, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 0, 0, 0, 255, 207, 207, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 50, 50, 50, 255, 208, 208, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 190, 190, 255, 68, 68, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 75, 75, 75, 255, 183, 183, 183, 255, 247, 247, 247, 255, 17, 17, 17, 255, 0, 0, 0, 255, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 123, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 147, 191, 191, 191, 16, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 128, 128, 128, 0, 0, 0, 0, 0, 255, 255, 255, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 46, 64, 0, 54, 188, 255, 58, 67, 193, 255, 243, 67, 193, 255, 255, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 255, 66, 191, 255, 194, 49, 142, 191, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 88, 255, 255, 255, 124, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 109, 255, 255, 255, 111, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 13, 13, 13, 255, 237, 237, 237, 255, 255, 255, 255, 255, 237, 237, 237, 255, 224, 224, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 120, 120, 255, 0, 0, 0, 255, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 50, 50, 50, 255, 208, 208, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 190, 190, 255, 68, 68, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 75, 75, 75, 255, 183, 183, 183, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 255, 255, 255, 93, 191, 191, 191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 128, 128, 128, 0, 0, 0, 0, 0, 255, 255, 255, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 141, 191, 9, 67, 193, 255, 226, 67, 193, 255, 255, 67, 193, 255, 255, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 66, 192, 255, 135, 17, 48, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 88, 255, 255, 255, 124, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 109, 255, 255, 255, 111, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 59, 59, 59, 255, 255, 255, 255, 255, 217, 217, 217, 255, 13, 13, 13, 255, 2, 2, 2, 255, 163, 163, 163, 255, 255, 255, 255, 255, 186, 186, 186, 255, 0, 0, 0, 255, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 50, 50, 50, 255, 208, 208, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 190, 190, 255, 68, 68, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 75, 75, 75, 255, 183, 183, 183, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 255, 255, 255, 43, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 128, 128, 128, 0, 0, 0, 0, 0, 255, 255, 255, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 191, 255, 91, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 241, 45, 140, 191, 7, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 88, 255, 255, 255, 124, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 109, 255, 255, 255, 111, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 252, 77, 77, 77, 255, 255, 255, 255, 255, 178, 178, 178, 255, 0, 0, 0, 255, 0, 0, 0, 255, 113, 113, 113, 255, 255, 255, 255, 255, 187, 187, 187, 255, 0, 0, 0, 255, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 166, 166, 166, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 43, 43, 43, 255, 147, 147, 147, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 138, 138, 138, 255, 62, 62, 62, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 67, 67, 67, 255, 134, 134, 134, 255, 179, 179, 179, 255, 28, 28, 28, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 255, 255, 255, 139, 191, 191, 191, 12, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 128, 128, 128, 0, 0, 0, 0, 0, 255, 255, 255, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 32, 93, 128, 0, 65, 190, 255, 148, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 65, 192, 255, 49, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 88, 255, 255, 255, 124, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 109, 255, 255, 255, 111, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 49, 49, 49, 255, 255, 255, 255, 255, 253, 253, 253, 255, 138, 138, 138, 255, 114, 114, 114, 255, 236, 236, 236, 255, 255, 255, 255, 255, 152, 152, 152, 255, 0, 0, 0, 255, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 71, 71, 71, 255, 51, 51, 51, 255, 14, 14, 14, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 17, 17, 17, 255, 49, 49, 49, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 59, 59, 59, 255, 7, 7, 7, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 12, 12, 12, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 255, 255, 255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 128, 128, 128, 0, 0, 0, 0, 0, 255, 255, 255, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 32, 95, 128, 0, 65, 192, 255, 155, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 66, 192, 255, 58, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 88, 255, 255, 255, 124, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 109, 255, 255, 255, 111, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 12, 12, 12, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 90, 90, 255, 0, 0, 0, 254, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 170, 170, 170, 255, 48, 48, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 55, 55, 255, 163, 163, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 198, 198, 255, 23, 23, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 255, 255, 255, 40, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 128, 128, 128, 0, 0, 0, 0, 0, 255, 255, 255, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 16, 48, 64, 0, 65, 192, 255, 117, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 253, 61, 181, 255, 21, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 88, 255, 255, 255, 124, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 109, 255, 255, 255, 111, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 148, 0, 0, 0, 255, 196, 196, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 246, 246, 255, 17, 17, 17, 255, 0, 0, 0, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 170, 170, 170, 255, 48, 48, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 55, 55, 255, 163, 163, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 198, 198, 255, 23, 23, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 255, 255, 255, 72, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 128, 128, 128, 0, 0, 0, 0, 0, 255, 255, 255, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 189, 255, 31, 67, 193, 255, 249, 67, 193, 255, 255, 67, 193, 255, 255, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 65, 192, 255, 181, 31, 93, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 88, 255, 255, 255, 124, 191, 191, 191, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 191, 191, 191, 0, 255, 255, 255, 109, 255, 255, 255, 111, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 245, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 120, 120, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 161, 161, 161, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 243, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 170, 170, 170, 255, 48, 48, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 55, 55, 255, 163, 163, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 198, 198, 255, 23, 23, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 255, 255, 255, 109, 191, 191, 191, 4, 64, 64, 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, 0, 128, 128, 128, 0, 255, 255, 255, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 128, 128, 128, 0, 0, 0, 0, 0, 255, 255, 255, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 47, 64, 0, 66, 192, 255, 121, 67, 193, 255, 255, 67, 193, 255, 255, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 255, 67, 193, 255, 240, 58, 172, 255, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 88, 255, 255, 255, 158, 255, 255, 255, 133, 255, 255, 255, 133, 255, 255, 255, 133, 255, 255, 255, 133, 255, 255, 255, 133, 255, 255, 255, 133, 255, 255, 255, 133, 255, 255, 255, 133, 255, 255, 255, 133, 255, 255, 255, 133, 255, 255, 255, 155, 255, 255, 255, 111, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 255, 40, 40, 40, 255, 51, 51, 51, 255, 51, 51, 51, 255, 8, 8, 8, 255, 38, 38, 38, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 56, 56, 56, 255, 2, 2, 2, 255, 25, 25, 25, 255, 26, 26, 26, 255, 23, 23, 23, 255, 0, 0, 0, 255, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 170, 170, 170, 255, 48, 48, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 55, 55, 255, 163, 163, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 198, 198, 255, 23, 23, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 103, 255, 255, 255, 255, 255, 255, 255, 251, 255, 255, 255, 145, 191, 191, 191, 18, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 128, 128, 128, 0, 0, 0, 0, 0, 255, 255, 255, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 191, 1, 66, 192, 255, 120, 67, 193, 255, 248, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 219, 37, 180, 255, 50, 13, 42, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 88, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 111, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 234, 2, 2, 2, 255, 237, 237, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 113, 113, 113, 255, 0, 0, 0, 255, 190, 190, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 183, 183, 255, 0, 0, 0, 255, 101, 101, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 250, 250, 255, 9, 9, 9, 255, 0, 0, 0, 245, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 119, 119, 119, 255, 85, 85, 85, 255, 24, 24, 24, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 28, 28, 28, 255, 81, 81, 81, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 99, 99, 99, 255, 11, 11, 11, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 20, 20, 20, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 100, 255, 255, 255, 182, 255, 255, 255, 41, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 138, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 132, 128, 128, 128, 0, 0, 0, 0, 0, 255, 255, 255, 54, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 48, 64, 0, 88, 199, 255, 28, 237, 249, 255, 217, 255, 255, 255, 255, 255, 255, 255, 255, 154, 221, 255, 107, 48, 143, 191, 5, 0, 43, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 88, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 111, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 255, 51, 51, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 214, 214, 255, 1, 1, 1, 255, 90, 90, 90, 255, 255, 255, 255, 255, 254, 254, 254, 255, 53, 53, 53, 255, 7, 7, 7, 255, 225, 225, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, 60, 60, 255, 0, 0, 0, 255, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 119, 119, 119, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 15, 15, 15, 255, 95, 95, 95, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 85, 85, 85, 255, 24, 24, 24, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 28, 28, 28, 255, 81, 81, 81, 255, 128, 128, 128, 255, 23, 23, 23, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 11, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 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, 0, 128, 128, 128, 0, 255, 255, 255, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 72, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 95, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 255, 64, 64, 64, 255, 153, 153, 153, 255, 178, 178, 178, 255, 179, 179, 179, 255, 202, 202, 202, 255, 43, 43, 43, 255, 7, 7, 7, 255, 230, 230, 230, 255, 172, 172, 172, 255, 0, 0, 0, 255, 107, 107, 107, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 116, 116, 116, 255, 0, 0, 0, 255, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 30, 30, 255, 190, 190, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 170, 170, 255, 48, 48, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 55, 55, 255, 163, 163, 163, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, 0, 0, 0, 255, 118, 118, 118, 255, 151, 151, 151, 255, 128, 128, 128, 255, 127, 127, 127, 255, 102, 102, 102, 255, 81, 81, 81, 255, 0, 0, 0, 255, 109, 109, 109, 255, 32, 32, 32, 255, 6, 6, 6, 255, 38, 38, 38, 255, 78, 78, 78, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 171, 171, 255, 0, 0, 0, 255, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 30, 30, 255, 190, 190, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 170, 170, 255, 48, 48, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 55, 55, 255, 163, 163, 163, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 244, 7, 7, 7, 255, 246, 246, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 255, 141, 141, 141, 255, 120, 120, 120, 255, 167, 167, 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 228, 228, 255, 0, 0, 0, 255, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 30, 30, 255, 190, 190, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 170, 170, 255, 48, 48, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 55, 55, 255, 163, 163, 163, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 10, 10, 0, 128, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 255, 65, 65, 65, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 156, 156, 255, 0, 0, 0, 255, 42, 42, 42, 255, 239, 239, 239, 255, 48, 48, 48, 255, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 29, 29, 29, 255, 0, 0, 0, 255, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 30, 30, 255, 190, 190, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 170, 170, 255, 48, 48, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 55, 55, 255, 163, 163, 163, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 2, 2, 0, 255, 20, 20, 179, 255, 21, 21, 143, 128, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 167, 191, 0, 254, 255, 255, 196, 255, 255, 255, 255, 255, 255, 255, 255, 221, 243, 255, 43, 16, 48, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 255, 132, 132, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 248, 248, 255, 26, 26, 26, 255, 188, 188, 188, 255, 146, 146, 146, 255, 141, 141, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 85, 85, 255, 0, 0, 0, 255, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 95, 95, 95, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 12, 12, 12, 255, 76, 76, 76, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 68, 68, 68, 255, 19, 19, 19, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 22, 22, 22, 255, 65, 65, 65, 255, 102, 102, 102, 255, 16, 16, 16, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5, 5, 0, 255, 21, 21, 84, 255, 22, 22, 255, 255, 22, 22, 253, 255, 19, 19, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 44, 64, 0, 53, 181, 255, 38, 66, 192, 255, 180, 211, 240, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 96, 202, 255, 238, 65, 192, 255, 128, 49, 142, 191, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, 255, 200, 200, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 203, 203, 255, 252, 252, 252, 255, 49, 49, 49, 255, 241, 241, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 141, 141, 141, 255, 0, 0, 0, 255, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 143, 143, 143, 255, 117, 117, 117, 255, 14, 14, 14, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 148, 148, 148, 255, 152, 152, 152, 255, 153, 153, 153, 255, 153, 153, 153, 255, 48, 48, 48, 255, 83, 83, 83, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 134, 134, 134, 255, 0, 0, 0, 255, 152, 152, 152, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 24, 24, 24, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 12, 12, 8, 255, 21, 21, 223, 247, 112, 29, 255, 250, 76, 26, 255, 255, 21, 21, 188, 128, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 48, 64, 0, 61, 189, 255, 53, 67, 193, 255, 240, 67, 193, 255, 255, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 255, 65, 192, 255, 188, 49, 142, 191, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 250, 15, 15, 15, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 228, 228, 255, 57, 57, 57, 255, 94, 94, 94, 255, 208, 208, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 197, 197, 255, 0, 0, 0, 255, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 195, 195, 195, 255, 23, 23, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 80, 80, 255, 138, 138, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 223, 223, 255, 0, 0, 0, 255, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 2, 2, 0, 255, 20, 20, 123, 254, 35, 23, 255, 242, 167, 33, 255, 242, 163, 33, 255, 255, 23, 22, 255, 255, 12, 12, 76, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 143, 191, 7, 66, 192, 255, 222, 67, 193, 255, 255, 67, 193, 255, 255, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 65, 192, 255, 130, 16, 48, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 255, 79, 79, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 193, 193, 255, 77, 77, 77, 255, 70, 70, 70, 255, 183, 183, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 247, 247, 255, 6, 6, 6, 255, 0, 0, 0, 242, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 195, 195, 195, 255, 23, 23, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 80, 80, 255, 138, 138, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 223, 223, 255, 0, 0, 0, 255, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 9, 9, 27, 255, 22, 22, 243, 244, 148, 32, 255, 250, 85, 28, 255, 247, 121, 31, 255, 248, 104, 28, 255, 255, 21, 21, 215, 191, 12, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 191, 255, 88, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 66, 192, 255, 239, 44, 140, 191, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 255, 146, 146, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 248, 248, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 191, 191, 191, 255, 83, 83, 83, 255, 51, 51, 51, 255, 150, 150, 150, 255, 225, 225, 225, 255, 46, 46, 46, 255, 0, 0, 0, 255, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 195, 195, 195, 255, 23, 23, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 80, 80, 255, 138, 138, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 223, 223, 255, 0, 0, 0, 255, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 9, 9, 0, 255, 20, 20, 162, 252, 55, 24, 255, 236, 249, 40, 255, 250, 85, 28, 255, 247, 121, 31, 255, 237, 227, 39, 255, 254, 30, 23, 255, 255, 21, 21, 111, 64, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 95, 128, 0, 66, 191, 255, 146, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 211, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 203, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 64, 191, 255, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 195, 195, 195, 255, 23, 23, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 80, 80, 255, 138, 138, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 223, 223, 255, 0, 0, 0, 255, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 19, 19, 56, 255, 22, 22, 254, 241, 184, 35, 255, 235, 255, 41, 255, 250, 85, 28, 255, 247, 121, 31, 255, 235, 255, 41, 255, 245, 138, 31, 255, 255, 22, 22, 239, 191, 13, 13, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 95, 128, 0, 67, 192, 255, 157, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 191, 234, 255, 255, 255, 255, 255, 255, 251, 254, 255, 255, 81, 198, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 66, 192, 255, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 242, 0, 0, 0, 230, 0, 0, 0, 230, 0, 0, 0, 230, 0, 0, 0, 230, 0, 0, 0, 230, 0, 0, 0, 230, 0, 0, 0, 230, 0, 0, 0, 230, 0, 0, 0, 230, 0, 0, 0, 230, 0, 0, 0, 230, 0, 0, 0, 230, 0, 0, 0, 230, 0, 0, 0, 205, 0, 0, 0, 204, 0, 0, 0, 204, 0, 0, 0, 204, 0, 0, 0, 204, 0, 0, 0, 192, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 48, 48, 48, 255, 39, 39, 39, 255, 5, 5, 5, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 16, 16, 16, 255, 28, 28, 28, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 45, 45, 45, 255, 0, 0, 0, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 8, 8, 8, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 2, 2, 2, 255, 21, 21, 203, 249, 88, 27, 255, 235, 255, 41, 255, 235, 255, 41, 255, 249, 95, 29, 255, 245, 132, 31, 255, 235, 255, 41, 255, 236, 246, 40, 255, 253, 49, 24, 255, 255, 16, 16, 152, 128, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 48, 64, 0, 65, 192, 255, 120, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 94, 202, 255, 255, 181, 230, 255, 255, 132, 214, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 253, 63, 191, 255, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 190, 190, 190, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 44, 44, 44, 255, 132, 132, 132, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 156, 156, 156, 255, 18, 18, 18, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 66, 66, 66, 255, 110, 110, 110, 255, 204, 204, 204, 255, 32, 32, 32, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 4, 4, 0, 255, 19, 19, 100, 255, 27, 22, 255, 238, 218, 38, 255, 235, 255, 41, 255, 235, 255, 41, 255, 237, 234, 39, 255, 236, 247, 40, 255, 235, 255, 41, 255, 235, 255, 41, 255, 242, 174, 34, 255, 255, 22, 22, 252, 255, 19, 19, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 187, 255, 34, 67, 193, 255, 250, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 65, 192, 255, 185, 32, 96, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 55, 55, 255, 165, 165, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 195, 195, 255, 23, 23, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 83, 83, 255, 138, 138, 138, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 13, 13, 16, 255, 22, 22, 234, 246, 127, 30, 255, 235, 255, 41, 255, 235, 255, 41, 255, 235, 255, 41, 255, 246, 130, 31, 255, 242, 171, 35, 255, 235, 255, 41, 255, 235, 255, 41, 255, 235, 255, 41, 255, 250, 77, 26, 255, 255, 21, 21, 192, 191, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 47, 64, 0, 66, 192, 255, 128, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 242, 64, 191, 255, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 255, 238, 238, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 55, 55, 255, 165, 165, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 195, 195, 255, 23, 23, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 83, 83, 255, 138, 138, 138, 255, 255, 255, 255, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 5, 5, 0, 255, 15, 15, 142, 255, 24, 22, 255, 244, 149, 32, 255, 243, 162, 33, 255, 243, 162, 33, 255, 243, 162, 33, 255, 244, 154, 32, 255, 243, 162, 33, 255, 243, 162, 33, 255, 243, 162, 33, 255, 243, 162, 33, 255, 247, 119, 29, 255, 255, 22, 22, 255, 255, 21, 21, 84, 64, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 128, 191, 2, 66, 192, 255, 128, 67, 193, 255, 251, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 255, 67, 193, 255, 224, 51, 186, 255, 56, 15, 47, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 0, 0, 0, 255, 221, 221, 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 55, 55, 255, 165, 165, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 195, 195, 255, 23, 23, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 83, 83, 255, 138, 138, 138, 255, 254, 254, 254, 255, 25, 25, 25, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 10, 10, 0, 255, 20, 20, 158, 255, 22, 22, 230, 255, 22, 22, 230, 255, 22, 22, 230, 255, 22, 22, 230, 255, 22, 22, 230, 255, 22, 22, 230, 255, 22, 22, 230, 255, 22, 22, 230, 255, 22, 22, 230, 255, 22, 22, 230, 255, 22, 22, 230, 255, 22, 22, 230, 255, 15, 15, 114, 128, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 47, 64, 0, 60, 187, 255, 34, 63, 190, 255, 120, 66, 191, 255, 155, 65, 191, 255, 149, 65, 191, 255, 91, 46, 140, 191, 8, 9, 46, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 255, 50, 50, 50, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 28, 28, 28, 255, 83, 83, 83, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 98, 98, 98, 255, 11, 11, 11, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, 255, 41, 41, 41, 255, 69, 69, 69, 255, 79, 79, 79, 255, 0, 0, 0, 255, 0, 0, 0, 227, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 10, 10, 0, 128, 11, 11, 0, 128, 11, 11, 0, 128, 11, 11, 0, 128, 11, 11, 0, 128, 11, 11, 0, 128, 11, 11, 0, 128, 11, 11, 0, 128, 11, 11, 0, 128, 11, 11, 0, 128, 11, 11, 0, 128, 11, 11, 0, 128, 11, 11, 0, 128, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 46, 64, 0, 33, 95, 128, 0, 31, 94, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 226, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 244, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 99, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 111, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 191, 20, 20, 5, 128, 75, 75, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 77, 77, 0, 191, 17, 17, 5, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 4, 191, 191, 191, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 7, 255, 255, 255, 83, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 173, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 124, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 172, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 131, 255, 243, 243, 179, 255, 45, 45, 222, 255, 123, 123, 195, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 133, 133, 192, 255, 38, 38, 225, 255, 240, 240, 179, 255, 255, 255, 138, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 4, 255, 255, 255, 167, 255, 255, 255, 186, 191, 191, 191, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 95, 255, 255, 255, 255, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 193, 255, 255, 255, 224, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 192, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 178, 255, 255, 255, 247, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 233, 255, 255, 255, 245, 128, 128, 128, 0, 128, 128, 128, 0, 255, 244, 244, 188, 255, 62, 62, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 126, 126, 232, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 135, 135, 229, 255, 1, 1, 255, 255, 0, 0, 255, 255, 56, 56, 255, 255, 241, 241, 198, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 3, 255, 255, 255, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 191, 191, 191, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 149, 255, 255, 255, 164, 191, 191, 191, 1, 64, 64, 64, 0, 128, 128, 128, 0, 191, 191, 191, 10, 255, 255, 255, 126, 255, 255, 255, 255, 255, 255, 255, 24, 128, 128, 128, 0, 64, 64, 64, 0, 0, 0, 0, 0, 191, 191, 191, 19, 255, 255, 255, 160, 255, 255, 255, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 193, 255, 255, 255, 178, 191, 191, 191, 0, 128, 128, 128, 0, 128, 128, 128, 0, 51, 255, 32, 26, 26, 255, 0, 204, 26, 255, 0, 204, 53, 255, 32, 90, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 98, 255, 255, 255, 255, 255, 255, 255, 18, 64, 64, 64, 0, 255, 255, 255, 66, 255, 255, 255, 102, 255, 255, 255, 102, 255, 255, 255, 209, 255, 255, 255, 213, 191, 191, 191, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 191, 191, 191, 0, 255, 255, 255, 145, 255, 255, 255, 245, 128, 128, 128, 0, 191, 22, 22, 9, 255, 53, 53, 224, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 21, 21, 110, 191, 128, 128, 0, 191, 128, 128, 0, 255, 21, 21, 102, 255, 0, 0, 254, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 48, 48, 230, 191, 21, 21, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 3, 255, 255, 255, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 191, 191, 191, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 93, 255, 255, 255, 255, 255, 255, 255, 122, 255, 255, 255, 100, 255, 255, 255, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 255, 255, 255, 130, 255, 255, 255, 31, 255, 255, 255, 191, 255, 255, 255, 241, 255, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 193, 255, 255, 255, 178, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 255, 0, 33, 26, 255, 0, 255, 26, 255, 0, 255, 24, 255, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 98, 255, 255, 255, 255, 255, 255, 255, 18, 128, 128, 128, 0, 255, 255, 255, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 145, 255, 255, 255, 245, 128, 128, 128, 0, 191, 29, 29, 3, 255, 80, 80, 215, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 108, 255, 0, 0, 99, 255, 0, 0, 254, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 73, 73, 223, 191, 28, 28, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 3, 255, 255, 255, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 191, 191, 191, 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, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 255, 255, 255, 112, 255, 255, 255, 76, 255, 255, 255, 72, 255, 255, 255, 101, 255, 255, 255, 164, 255, 255, 255, 249, 255, 255, 255, 251, 255, 255, 255, 253, 255, 255, 255, 74, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 193, 255, 255, 255, 178, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 255, 0, 33, 26, 255, 0, 255, 26, 255, 0, 255, 24, 255, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 98, 255, 255, 255, 255, 255, 255, 255, 18, 128, 128, 128, 0, 255, 255, 255, 165, 255, 255, 255, 231, 255, 255, 255, 51, 255, 255, 255, 193, 255, 255, 255, 213, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 145, 255, 255, 255, 245, 128, 128, 128, 0, 128, 128, 128, 0, 255, 252, 252, 188, 255, 81, 81, 247, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 254, 255, 0, 0, 253, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 73, 73, 248, 255, 250, 250, 198, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 3, 255, 255, 255, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 191, 191, 191, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 42, 255, 255, 255, 238, 255, 255, 255, 226, 255, 255, 255, 56, 128, 128, 128, 0, 191, 191, 191, 31, 255, 255, 255, 159, 255, 255, 255, 172, 255, 255, 255, 66, 191, 191, 191, 0, 255, 255, 255, 24, 255, 255, 255, 187, 255, 255, 255, 254, 255, 255, 255, 96, 64, 64, 64, 0, 191, 191, 191, 3, 255, 255, 255, 15, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 6, 191, 191, 191, 10, 128, 128, 128, 0, 255, 255, 255, 193, 255, 255, 255, 178, 53, 255, 32, 52, 25, 255, 0, 77, 25, 255, 0, 77, 24, 255, 0, 99, 26, 255, 0, 255, 26, 255, 0, 255, 25, 255, 0, 155, 25, 255, 0, 77, 25, 255, 0, 77, 25, 255, 0, 76, 226, 255, 223, 98, 255, 255, 255, 255, 255, 255, 255, 18, 128, 128, 128, 0, 255, 255, 255, 165, 255, 255, 255, 225, 255, 255, 255, 0, 255, 255, 255, 178, 255, 255, 255, 213, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 145, 255, 255, 255, 245, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 188, 255, 246, 246, 180, 255, 0, 0, 170, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 178, 255, 239, 239, 172, 255, 255, 255, 198, 128, 128, 128, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 112, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 131, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 1, 255, 255, 255, 195, 255, 255, 255, 226, 191, 191, 191, 23, 64, 64, 64, 0, 191, 191, 191, 0, 255, 255, 255, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 255, 255, 255, 33, 0, 0, 0, 0, 191, 191, 191, 4, 255, 255, 255, 176, 255, 255, 255, 240, 255, 255, 255, 26, 255, 255, 255, 32, 255, 255, 255, 254, 255, 255, 255, 92, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 26, 255, 255, 255, 230, 255, 255, 255, 111, 128, 128, 128, 0, 255, 255, 255, 193, 255, 255, 255, 178, 26, 255, 0, 173, 26, 255, 0, 255, 26, 255, 0, 255, 26, 255, 0, 255, 26, 255, 0, 255, 26, 255, 0, 255, 26, 255, 0, 255, 26, 255, 0, 255, 26, 255, 0, 255, 26, 255, 0, 253, 198, 255, 191, 98, 255, 255, 255, 255, 255, 255, 255, 18, 128, 128, 128, 0, 255, 255, 255, 165, 255, 255, 255, 225, 255, 255, 255, 0, 255, 255, 255, 178, 255, 255, 255, 213, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 145, 255, 255, 255, 245, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 188, 255, 255, 255, 178, 255, 85, 85, 5, 255, 0, 0, 173, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 181, 255, 85, 85, 7, 255, 255, 255, 168, 255, 255, 255, 198, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 191, 191, 191, 0, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 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, 0, 128, 128, 128, 0, 255, 255, 255, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 45, 255, 255, 255, 255, 255, 255, 255, 111, 128, 128, 128, 0, 0, 0, 0, 0, 255, 255, 255, 20, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 41, 255, 255, 255, 255, 255, 255, 255, 115, 191, 191, 191, 1, 255, 255, 255, 160, 255, 255, 255, 250, 255, 255, 255, 78, 64, 64, 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, 0, 0, 0, 0, 0, 191, 191, 191, 15, 255, 255, 255, 198, 255, 255, 255, 229, 191, 191, 191, 24, 128, 128, 128, 0, 255, 255, 255, 193, 255, 255, 255, 178, 26, 255, 0, 173, 26, 255, 0, 255, 26, 255, 0, 255, 26, 255, 0, 255, 26, 255, 0, 255, 26, 255, 0, 255, 26, 255, 0, 255, 26, 255, 0, 255, 26, 255, 0, 255, 26, 255, 0, 253, 198, 255, 191, 98, 255, 255, 255, 255, 255, 255, 255, 18, 128, 128, 128, 0, 255, 255, 255, 165, 255, 255, 255, 225, 255, 255, 255, 0, 255, 255, 255, 178, 255, 255, 255, 213, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 145, 255, 255, 255, 245, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 188, 255, 255, 255, 178, 191, 128, 128, 0, 255, 0, 0, 94, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 104, 191, 128, 128, 0, 255, 255, 255, 168, 255, 255, 255, 198, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 191, 191, 191, 0, 255, 255, 255, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 5, 255, 255, 255, 209, 255, 255, 255, 215, 191, 191, 191, 13, 0, 0, 0, 0, 191, 191, 191, 1, 255, 255, 255, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 41, 0, 0, 0, 0, 191, 191, 191, 1, 255, 255, 255, 158, 255, 255, 255, 247, 255, 255, 255, 36, 0, 0, 0, 0, 191, 191, 191, 5, 255, 255, 255, 184, 255, 255, 255, 253, 255, 255, 255, 137, 191, 191, 191, 18, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 191, 191, 191, 0, 255, 255, 255, 66, 255, 255, 255, 219, 255, 255, 255, 251, 255, 255, 255, 61, 64, 64, 64, 0, 128, 128, 128, 0, 255, 255, 255, 193, 255, 255, 255, 178, 52, 255, 32, 35, 25, 255, 0, 51, 25, 255, 0, 51, 24, 255, 0, 77, 26, 255, 0, 255, 26, 255, 0, 255, 25, 255, 0, 141, 25, 255, 0, 51, 25, 255, 0, 51, 25, 255, 0, 51, 226, 255, 223, 98, 255, 255, 255, 255, 255, 255, 255, 18, 128, 128, 128, 0, 255, 255, 255, 165, 255, 255, 255, 225, 255, 255, 255, 0, 255, 255, 255, 178, 255, 255, 255, 213, 191, 191, 191, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 191, 191, 191, 0, 255, 255, 255, 145, 255, 255, 255, 245, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 188, 255, 255, 255, 178, 255, 21, 21, 86, 255, 0, 0, 252, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 253, 255, 21, 21, 95, 255, 255, 255, 168, 255, 255, 255, 198, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 95, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 143, 191, 191, 191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 55, 255, 255, 255, 247, 255, 255, 255, 211, 255, 255, 255, 35, 191, 191, 191, 0, 255, 255, 255, 45, 255, 255, 255, 183, 255, 255, 255, 197, 255, 255, 255, 87, 128, 128, 128, 0, 191, 191, 191, 11, 255, 255, 255, 165, 255, 255, 255, 255, 255, 255, 255, 116, 64, 64, 64, 0, 0, 0, 0, 0, 191, 191, 191, 10, 255, 255, 255, 205, 255, 255, 255, 237, 255, 255, 255, 252, 255, 255, 255, 249, 255, 255, 255, 186, 255, 255, 255, 152, 255, 255, 255, 142, 255, 255, 255, 168, 255, 255, 255, 220, 255, 255, 255, 255, 255, 255, 255, 222, 255, 255, 255, 252, 255, 255, 255, 149, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 193, 255, 255, 255, 178, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 255, 0, 33, 26, 255, 0, 255, 26, 255, 0, 255, 24, 255, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 98, 255, 255, 255, 255, 255, 255, 255, 18, 128, 128, 128, 0, 255, 255, 255, 165, 255, 255, 255, 225, 255, 255, 255, 0, 255, 255, 255, 178, 255, 255, 255, 238, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 211, 255, 255, 255, 245, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 188, 255, 157, 157, 221, 255, 0, 0, 251, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 253, 255, 145, 145, 220, 255, 255, 255, 198, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 1, 255, 255, 255, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 191, 191, 191, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 54, 255, 255, 255, 230, 255, 255, 255, 251, 255, 255, 255, 169, 255, 255, 255, 87, 255, 255, 255, 52, 255, 255, 255, 41, 255, 255, 255, 77, 255, 255, 255, 140, 255, 255, 255, 238, 255, 255, 255, 250, 255, 255, 255, 103, 64, 64, 64, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 149, 255, 255, 255, 244, 255, 255, 255, 47, 255, 255, 255, 29, 255, 255, 255, 126, 255, 255, 255, 184, 255, 255, 255, 225, 255, 255, 255, 255, 255, 255, 255, 196, 255, 255, 255, 163, 255, 255, 255, 74, 191, 191, 191, 3, 255, 255, 255, 102, 255, 255, 255, 255, 255, 255, 255, 66, 128, 128, 128, 0, 255, 255, 255, 193, 255, 255, 255, 178, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 255, 0, 33, 26, 255, 0, 255, 26, 255, 0, 255, 24, 255, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 98, 255, 255, 255, 255, 255, 255, 255, 18, 128, 128, 128, 0, 255, 255, 255, 165, 255, 255, 255, 225, 255, 255, 255, 0, 255, 255, 255, 160, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 251, 255, 255, 255, 244, 255, 255, 255, 230, 255, 255, 255, 221, 128, 128, 128, 0, 128, 86, 86, 0, 255, 167, 167, 193, 255, 5, 5, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 189, 255, 0, 0, 182, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 3, 3, 255, 255, 160, 160, 204, 128, 85, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 1, 255, 255, 255, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 191, 191, 191, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 191, 191, 191, 21, 255, 255, 255, 125, 255, 255, 255, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 255, 255, 255, 155, 255, 255, 255, 44, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 83, 255, 255, 255, 63, 64, 64, 64, 0, 0, 0, 0, 0, 64, 64, 64, 0, 128, 128, 128, 0, 255, 255, 255, 92, 255, 255, 255, 255, 255, 255, 255, 10, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 255, 255, 255, 53, 191, 191, 191, 21, 128, 128, 128, 0, 255, 255, 255, 193, 255, 255, 255, 178, 191, 191, 191, 0, 128, 128, 128, 0, 128, 128, 128, 0, 51, 255, 32, 23, 26, 255, 0, 179, 26, 255, 0, 179, 53, 255, 32, 79, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 98, 255, 255, 255, 255, 255, 255, 255, 18, 128, 128, 128, 0, 255, 255, 255, 165, 255, 255, 255, 225, 191, 191, 191, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 228, 255, 255, 255, 160, 191, 191, 191, 0, 128, 128, 128, 0, 0, 0, 0, 0, 255, 0, 0, 12, 255, 11, 11, 243, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 192, 191, 0, 0, 11, 191, 0, 0, 8, 255, 0, 0, 185, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 10, 10, 248, 255, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 1, 255, 255, 255, 147, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 191, 191, 191, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 191, 191, 191, 2, 255, 255, 255, 34, 255, 255, 255, 67, 255, 255, 255, 74, 255, 255, 255, 41, 191, 191, 191, 9, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 44, 255, 255, 255, 200, 191, 191, 191, 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, 128, 128, 128, 0, 255, 255, 255, 193, 255, 255, 255, 232, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 208, 255, 255, 255, 255, 255, 255, 255, 18, 128, 128, 128, 0, 255, 255, 255, 165, 255, 255, 255, 243, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 244, 255, 255, 255, 160, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 93, 93, 0, 255, 198, 198, 189, 255, 15, 15, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 53, 53, 239, 255, 149, 149, 114, 255, 255, 255, 102, 255, 255, 255, 102, 255, 149, 149, 111, 255, 58, 58, 236, 255, 0, 0, 255, 255, 0, 0, 255, 255, 12, 12, 255, 255, 190, 190, 200, 128, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 1, 255, 255, 255, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 191, 191, 191, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 0, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 154, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 204, 255, 255, 255, 14, 128, 128, 128, 0, 255, 255, 255, 149, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 230, 255, 255, 255, 144, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 188, 255, 199, 199, 255, 255, 14, 14, 255, 255, 58, 58, 255, 255, 242, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 245, 255, 255, 65, 65, 255, 255, 11, 11, 255, 255, 192, 192, 255, 255, 255, 255, 198, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 1, 255, 255, 255, 148, 255, 255, 255, 197, 191, 191, 191, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 64, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 94, 94, 0, 255, 0, 0, 52, 191, 25, 25, 14, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 191, 27, 27, 11, 255, 0, 0, 55, 128, 93, 93, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 1, 191, 191, 191, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 2, 101, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 2, 2, 92, 3, 3, 3, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 5, 178, 3, 0, 107, 254, 2, 0, 84, 255, 0, 0, 2, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 188, 151, 151, 151, 254, 37, 37, 37, 225, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 27, 29, 29, 29, 220, 25, 25, 25, 213, 1, 1, 1, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 3, 0, 107, 254, 5, 0, 173, 255, 5, 0, 173, 255, 2, 0, 72, 255, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 176, 251, 251, 251, 255, 207, 207, 207, 254, 9, 9, 9, 180, 0, 0, 0, 24, 27, 27, 27, 215, 220, 220, 220, 255, 185, 185, 185, 255, 2, 2, 2, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 90, 2, 0, 76, 254, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 170, 255, 1, 0, 61, 253, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 223, 223, 223, 255, 255, 255, 255, 255, 152, 152, 152, 255, 23, 23, 23, 236, 216, 216, 216, 255, 255, 255, 255, 255, 124, 124, 124, 254, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 138, 71, 71, 71, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 69, 69, 69, 255, 61, 61, 61, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 3, 3, 3, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 1, 0, 47, 244, 5, 0, 171, 255, 5, 0, 173, 255, 5, 0, 158, 255, 1, 0, 42, 242, 0, 0, 1, 86, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 94, 0, 0, 0, 80, 0, 0, 0, 77, 1, 1, 1, 160, 190, 190, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 62, 62, 240, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 235, 235, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 213, 213, 255, 62, 62, 62, 239, 4, 4, 4, 177, 0, 0, 0, 165, 39, 39, 39, 227, 176, 176, 176, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 8, 8, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 1, 0, 25, 227, 5, 0, 162, 255, 5, 0, 173, 255, 4, 0, 136, 254, 1, 0, 19, 219, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 71, 105, 105, 105, 254, 157, 157, 157, 255, 153, 153, 153, 255, 149, 149, 149, 250, 238, 238, 238, 255, 252, 252, 252, 255, 190, 190, 190, 255, 196, 196, 196, 255, 254, 254, 254, 255, 255, 255, 255, 255, 22, 22, 22, 236, 0, 0, 0, 161, 0, 0, 0, 136, 6, 6, 6, 114, 0, 0, 0, 16, 0, 0, 0, 155, 235, 235, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 217, 217, 255, 10, 10, 10, 196, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 1, 1, 150, 160, 160, 160, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 8, 8, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 18, 18, 18, 224, 28, 27, 46, 255, 4, 1, 130, 255, 3, 0, 106, 254, 0, 0, 5, 180, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 116, 124, 124, 124, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 73, 73, 244, 0, 0, 0, 122, 1, 1, 1, 133, 101, 101, 101, 251, 255, 255, 255, 255, 255, 255, 255, 255, 237, 237, 237, 255, 212, 212, 212, 255, 131, 131, 131, 255, 2, 2, 2, 93, 0, 0, 0, 155, 235, 235, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 72, 72, 244, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 19, 19, 204, 244, 244, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 8, 8, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 7, 7, 198, 148, 148, 148, 255, 177, 177, 177, 255, 8, 7, 18, 254, 0, 0, 0, 130, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 97, 46, 46, 46, 233, 197, 197, 197, 254, 255, 255, 255, 255, 218, 218, 218, 255, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 171, 243, 243, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 234, 234, 255, 107, 107, 107, 254, 3, 3, 3, 110, 0, 0, 0, 155, 235, 235, 235, 255, 255, 255, 255, 255, 251, 251, 251, 255, 9, 9, 9, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 123, 198, 198, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 8, 8, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 162, 12, 12, 12, 239, 14, 14, 14, 255, 45, 45, 45, 255, 170, 170, 170, 255, 49, 49, 49, 253, 1, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 3, 3, 220, 231, 231, 231, 255, 235, 235, 235, 255, 5, 5, 5, 182, 0, 0, 0, 2, 0, 0, 0, 6, 18, 18, 18, 206, 250, 250, 250, 255, 228, 228, 228, 255, 101, 101, 101, 254, 8, 8, 8, 181, 1, 1, 1, 69, 1, 1, 1, 0, 0, 0, 0, 155, 235, 235, 235, 255, 255, 255, 255, 255, 244, 244, 244, 255, 1, 1, 1, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 105, 179, 179, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 8, 8, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 53, 25, 0, 0, 239, 77, 0, 0, 255, 32, 11, 11, 255, 47, 47, 47, 255, 35, 35, 35, 255, 8, 8, 8, 237, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 134, 134, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 163, 163, 163, 254, 33, 33, 33, 218, 39, 39, 39, 224, 182, 182, 182, 254, 255, 255, 255, 255, 175, 175, 175, 254, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 235, 235, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 37, 37, 37, 221, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 229, 229, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 8, 8, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 207, 235, 0, 0, 255, 255, 0, 0, 255, 239, 0, 0, 255, 50, 4, 4, 255, 44, 44, 44, 255, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 73, 92, 92, 92, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 75, 75, 75, 247, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 235, 235, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 161, 161, 161, 254, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 63, 96, 96, 96, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 8, 8, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 87, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 178, 0, 0, 255, 8, 8, 8, 254, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 164, 208, 208, 208, 255, 221, 221, 221, 255, 127, 127, 127, 254, 42, 42, 42, 245, 201, 201, 201, 255, 255, 255, 255, 255, 252, 252, 252, 255, 119, 119, 119, 254, 213, 213, 213, 255, 255, 255, 255, 255, 226, 226, 226, 255, 14, 14, 14, 193, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 155, 235, 235, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 128, 128, 128, 255, 3, 3, 3, 169, 1, 1, 1, 81, 0, 0, 0, 69, 2, 2, 2, 137, 79, 79, 79, 248, 242, 242, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 8, 8, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 121, 0, 0, 255, 255, 0, 0, 255, 226, 0, 0, 255, 204, 0, 0, 255, 159, 0, 0, 255, 1, 0, 0, 189, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 18, 18, 18, 213, 0, 0, 0, 156, 0, 0, 0, 63, 0, 0, 0, 66, 138, 138, 138, 253, 255, 255, 255, 255, 189, 189, 189, 255, 1, 1, 1, 148, 3, 3, 3, 160, 92, 92, 92, 252, 186, 186, 186, 255, 21, 21, 21, 210, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 155, 165, 165, 165, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 141, 141, 141, 255, 76, 76, 76, 254, 64, 64, 64, 253, 121, 121, 121, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 5, 5, 5, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 128, 0, 0, 255, 84, 0, 0, 254, 0, 0, 0, 178, 0, 0, 0, 128, 1, 0, 0, 115, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 90, 90, 90, 254, 255, 255, 255, 255, 104, 104, 104, 254, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 40, 1, 1, 1, 142, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 49, 11, 11, 11, 107, 11, 11, 11, 107, 11, 11, 11, 107, 11, 11, 11, 107, 11, 11, 11, 107, 11, 11, 11, 107, 11, 11, 11, 107, 11, 11, 11, 107, 11, 11, 11, 107, 11, 11, 11, 107, 11, 11, 11, 107, 11, 11, 11, 107, 11, 11, 11, 107, 11, 11, 11, 107, 5, 5, 5, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 9, 0, 0, 251, 1, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 31, 31, 31, 221, 176, 176, 176, 255, 22, 22, 22, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 81, 1, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 1, 1, 1, 101, 3, 3, 3, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 167, 0, 0, 0, 221, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 0, 0, 0, 225, 0, 0, 0, 174, 0, 0, 27, 70, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 166, 1, 1, 1, 220, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 226, 0, 0, 0, 174, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 165, 0, 0, 0, 218, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 0, 0, 0, 226, 0, 0, 0, 175, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 163, 1, 1, 1, 218, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 228, 0, 0, 0, 176, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 162, 0, 0, 0, 217, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 0, 0, 0, 228, 0, 0, 0, 177, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 160, 1, 1, 1, 216, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 229, 0, 0, 0, 178, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 158, 0, 0, 0, 215, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 0, 0, 0, 230, 0, 0, 0, 179, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 157, 1, 1, 1, 214, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 231, 0, 0, 0, 180, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 2, 2, 2, 248, 52, 52, 52, 253, 85, 85, 85, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 33, 31, 112, 254, 2, 0, 82, 255, 0, 0, 8, 255, 0, 0, 22, 136, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 101, 3, 3, 3, 247, 92, 92, 92, 253, 153, 153, 153, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 128, 127, 166, 253, 19, 15, 160, 255, 7, 4, 132, 255, 5, 4, 26, 252, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 2, 2, 2, 246, 50, 50, 50, 253, 84, 84, 84, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 88, 88, 88, 253, 58, 58, 58, 253, 5, 5, 5, 252, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 3, 3, 3, 246, 89, 89, 89, 253, 151, 151, 151, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 159, 159, 159, 253, 107, 107, 107, 253, 10, 10, 10, 253, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 1, 1, 1, 244, 48, 48, 48, 253, 83, 83, 83, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 88, 88, 88, 253, 60, 60, 60, 253, 6, 6, 6, 253, 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 2, 2, 2, 244, 85, 85, 85, 253, 149, 149, 149, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 161, 161, 161, 253, 110, 110, 110, 253, 11, 11, 11, 254, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 1, 1, 1, 242, 46, 46, 46, 253, 82, 82, 82, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 95, 95, 95, 253, 89, 89, 89, 253, 61, 61, 61, 253, 7, 7, 7, 253, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 1, 1, 1, 241, 81, 81, 81, 253, 148, 148, 148, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 173, 173, 173, 253, 162, 162, 162, 253, 112, 112, 112, 253, 14, 14, 14, 254, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 48, 2, 2, 2, 248, 89, 89, 89, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 90, 89, 132, 253, 5, 0, 173, 255, 5, 0, 173, 255, 4, 0, 141, 255, 0, 0, 9, 255, 0, 0, 38, 86, 0, 0, 0, 45, 4, 4, 4, 247, 159, 159, 159, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 210, 210, 214, 252, 40, 36, 180, 254, 5, 0, 173, 255, 5, 0, 173, 255, 12, 7, 163, 255, 5, 4, 32, 253, 0, 0, 0, 70, 0, 0, 0, 42, 1, 1, 1, 245, 86, 86, 86, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 99, 99, 99, 252, 7, 7, 7, 253, 0, 0, 0, 74, 0, 0, 0, 39, 2, 2, 2, 244, 152, 152, 152, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 182, 182, 182, 252, 14, 14, 14, 254, 0, 0, 0, 78, 0, 0, 0, 35, 1, 1, 1, 242, 82, 82, 82, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 102, 102, 102, 252, 8, 8, 8, 253, 0, 0, 0, 83, 0, 0, 0, 33, 1, 1, 1, 241, 145, 145, 145, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 17, 17, 17, 254, 0, 0, 0, 87, 0, 0, 0, 30, 0, 0, 0, 239, 78, 78, 78, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 104, 104, 104, 252, 10, 10, 10, 253, 0, 0, 0, 92, 0, 0, 0, 27, 1, 1, 1, 238, 138, 138, 138, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 190, 190, 190, 252, 21, 21, 21, 254, 0, 0, 0, 97, 0, 0, 0, 169, 53, 53, 53, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 115, 115, 121, 252, 21, 17, 165, 254, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 2, 0, 92, 255, 0, 0, 2, 193, 0, 0, 0, 166, 92, 92, 92, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 111, 109, 194, 253, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 22, 20, 110, 254, 1, 1, 1, 197, 0, 0, 0, 161, 49, 49, 49, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 67, 67, 67, 253, 0, 0, 0, 200, 0, 0, 0, 157, 84, 84, 84, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 126, 126, 126, 253, 1, 1, 1, 205, 0, 0, 0, 152, 44, 44, 44, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 72, 72, 72, 253, 0, 0, 0, 209, 0, 0, 0, 147, 77, 77, 77, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 134, 134, 134, 253, 1, 1, 1, 214, 0, 0, 0, 142, 41, 41, 41, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 121, 114, 125, 252, 159, 93, 142, 253, 167, 88, 145, 253, 132, 106, 132, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 76, 76, 76, 253, 0, 0, 0, 219, 0, 0, 0, 137, 69, 69, 69, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 207, 201, 210, 252, 205, 140, 188, 253, 205, 125, 182, 253, 201, 173, 200, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 141, 141, 141, 253, 1, 1, 1, 225, 0, 0, 0, 223, 86, 86, 86, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 58, 56, 147, 254, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 4, 0, 141, 255, 0, 0, 4, 245, 1, 1, 1, 219, 152, 152, 152, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 181, 180, 208, 252, 11, 6, 174, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 40, 37, 163, 254, 1, 1, 1, 244, 0, 0, 0, 214, 82, 82, 82, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 101, 101, 101, 252, 1, 1, 1, 247, 1, 1, 1, 210, 146, 146, 146, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 249, 0, 0, 0, 205, 78, 78, 78, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 115, 115, 115, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 105, 105, 105, 252, 1, 1, 1, 250, 1, 1, 1, 203, 138, 138, 138, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 194, 194, 194, 252, 1, 1, 1, 252, 0, 0, 0, 200, 74, 74, 74, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 133, 105, 129, 253, 199, 72, 160, 255, 215, 67, 161, 255, 215, 67, 161, 255, 212, 68, 161, 255, 142, 100, 138, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 110, 110, 110, 252, 1, 1, 1, 253, 1, 1, 1, 198, 130, 130, 130, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 204, 178, 201, 253, 204, 77, 165, 255, 215, 67, 161, 255, 215, 67, 161, 255, 212, 68, 161, 255, 198, 154, 194, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 201, 201, 201, 252, 2, 2, 2, 253, 1, 1, 1, 253, 103, 103, 103, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 97, 97, 129, 252, 7, 2, 172, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 164, 255, 0, 0, 1, 254, 1, 1, 1, 249, 183, 183, 183, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 214, 214, 215, 252, 53, 50, 182, 254, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 32, 28, 177, 254, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 175, 175, 175, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 214, 214, 214, 252, 3, 3, 3, 254, 0, 0, 0, 240, 94, 94, 94, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 115, 115, 115, 252, 51, 51, 51, 253, 2, 2, 2, 255, 3, 3, 3, 255, 38, 38, 38, 253, 111, 111, 111, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 237, 166, 166, 166, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 95, 95, 95, 253, 4, 4, 4, 255, 4, 4, 4, 255, 67, 67, 67, 253, 199, 199, 199, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 9, 9, 9, 254, 0, 0, 0, 235, 90, 90, 90, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 151, 97, 138, 253, 213, 67, 161, 255, 214, 66, 160, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 208, 68, 161, 255, 132, 107, 131, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 7, 7, 7, 253, 1, 1, 1, 233, 159, 159, 159, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 204, 153, 192, 253, 213, 67, 161, 255, 214, 66, 160, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 209, 69, 162, 255, 202, 175, 200, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 17, 17, 17, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 117, 117, 119, 252, 28, 24, 162, 254, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 49, 46, 143, 253, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 128, 126, 197, 253, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 20, 15, 176, 255, 169, 168, 201, 253, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 166, 78, 78, 253, 223, 28, 28, 254, 150, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 228, 144, 144, 253, 245, 50, 50, 254, 224, 163, 163, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 112, 112, 112, 252, 28, 28, 28, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 25, 25, 25, 254, 114, 114, 114, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 204, 204, 204, 252, 54, 54, 54, 254, 1, 1, 1, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 42, 42, 42, 254, 204, 204, 204, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 167, 88, 147, 253, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 200, 71, 160, 255, 124, 112, 127, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 202, 125, 183, 253, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 204, 74, 164, 255, 204, 191, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 67, 66, 143, 253, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 51, 48, 150, 254, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 192, 191, 210, 252, 17, 12, 175, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 18, 13, 175, 255, 172, 172, 206, 253, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 175, 69, 69, 253, 254, 1, 1, 255, 255, 0, 0, 255, 182, 63, 63, 253, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 231, 129, 129, 253, 255, 2, 2, 255, 255, 0, 0, 255, 234, 110, 110, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 115, 115, 115, 252, 100, 100, 100, 252, 117, 117, 117, 252, 108, 108, 108, 252, 23, 23, 23, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 51, 51, 51, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 181, 181, 181, 252, 210, 210, 210, 252, 197, 197, 197, 252, 44, 44, 44, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 88, 88, 88, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 121, 116, 121, 252, 183, 80, 150, 254, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 214, 66, 160, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 190, 76, 156, 254, 120, 116, 123, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 212, 209, 213, 252, 206, 105, 174, 254, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 203, 87, 169, 254, 208, 204, 211, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 104, 103, 126, 252, 10, 5, 171, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 49, 46, 151, 254, 118, 118, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 69, 66, 185, 254, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 16, 12, 175, 255, 170, 169, 205, 253, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 182, 64, 64, 253, 255, 0, 0, 255, 255, 0, 0, 255, 225, 26, 26, 254, 127, 112, 112, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 233, 119, 119, 253, 255, 1, 1, 255, 255, 0, 0, 255, 246, 45, 45, 254, 218, 200, 200, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 93, 93, 93, 253, 14, 14, 14, 254, 3, 3, 3, 255, 17, 17, 17, 254, 18, 18, 18, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 9, 9, 9, 255, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 171, 171, 171, 253, 27, 27, 27, 254, 6, 6, 6, 255, 30, 30, 30, 254, 34, 34, 34, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 12, 12, 12, 255, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 122, 114, 125, 252, 193, 75, 154, 254, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 214, 66, 160, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 175, 82, 152, 254, 119, 118, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 207, 200, 210, 252, 208, 92, 170, 254, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 214, 66, 160, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 198, 102, 174, 254, 214, 213, 214, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 119, 119, 119, 252, 140, 101, 101, 252, 129, 111, 111, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 35, 32, 157, 254, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 46, 44, 152, 254, 118, 118, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 145, 144, 201, 253, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 15, 11, 175, 255, 167, 166, 205, 253, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 188, 58, 58, 253, 255, 0, 0, 255, 255, 0, 0, 255, 220, 30, 30, 254, 125, 113, 113, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 234, 109, 109, 253, 255, 0, 0, 255, 255, 0, 0, 255, 245, 52, 52, 254, 217, 203, 203, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 116, 116, 116, 252, 13, 13, 13, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 12, 12, 12, 254, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 211, 211, 211, 252, 25, 25, 25, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 19, 19, 19, 254, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 127, 110, 128, 253, 195, 73, 158, 254, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 158, 89, 148, 254, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 204, 188, 206, 253, 204, 84, 168, 254, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 214, 66, 160, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 193, 121, 182, 254, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 211, 44, 44, 254, 252, 11, 11, 255, 249, 14, 14, 255, 151, 92, 92, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 141, 141, 153, 253, 114, 112, 181, 255, 17, 13, 174, 255, 5, 0, 173, 255, 5, 0, 173, 255, 44, 42, 153, 254, 118, 118, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 222, 176, 176, 253, 245, 59, 59, 254, 245, 62, 62, 254, 222, 174, 174, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 204, 204, 210, 252, 69, 66, 180, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 14, 9, 175, 255, 164, 163, 204, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 194, 53, 53, 253, 255, 0, 0, 255, 255, 0, 0, 255, 215, 35, 35, 254, 123, 115, 115, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 237, 99, 99, 253, 255, 0, 0, 255, 255, 0, 0, 255, 244, 60, 60, 254, 217, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 101, 101, 101, 252, 3, 3, 3, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 1, 1, 1, 255, 65, 65, 65, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 187, 187, 187, 252, 6, 6, 6, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 2, 2, 2, 255, 114, 114, 114, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 99, 114, 134, 253, 65, 98, 176, 255, 199, 70, 163, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 214, 66, 160, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 137, 102, 135, 253, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 174, 188, 207, 253, 72, 106, 185, 255, 197, 70, 163, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 214, 66, 160, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 198, 161, 196, 253, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 138, 103, 103, 252, 255, 9, 9, 255, 254, 10, 10, 255, 255, 9, 9, 255, 208, 47, 47, 254, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 127, 127, 132, 252, 184, 184, 187, 255, 188, 188, 188, 255, 129, 128, 182, 255, 5, 0, 173, 255, 43, 40, 154, 254, 117, 117, 120, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 247, 47, 47, 254, 255, 9, 9, 255, 255, 12, 12, 255, 248, 46, 46, 254, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 193, 254, 188, 188, 188, 255, 102, 100, 180, 255, 5, 0, 173, 255, 14, 9, 175, 255, 162, 161, 203, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 120, 118, 118, 252, 200, 47, 47, 254, 255, 0, 0, 255, 255, 0, 0, 255, 210, 39, 39, 254, 122, 116, 116, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 214, 214, 252, 238, 89, 89, 254, 255, 0, 0, 255, 255, 0, 0, 255, 242, 68, 68, 254, 216, 210, 210, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 117, 117, 117, 252, 20, 20, 20, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 1, 1, 1, 255, 50, 50, 50, 253, 118, 118, 118, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 212, 212, 212, 252, 39, 39, 39, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 2, 2, 2, 255, 87, 87, 87, 253, 214, 214, 214, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 89, 112, 143, 253, 41, 101, 183, 255, 39, 101, 185, 255, 81, 92, 178, 255, 214, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 214, 66, 160, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 172, 84, 151, 254, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 152, 174, 204, 253, 44, 104, 186, 255, 39, 101, 185, 255, 79, 93, 179, 255, 214, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 214, 66, 160, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 196, 107, 176, 254, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 126, 113, 113, 252, 247, 15, 15, 255, 255, 9, 9, 255, 255, 9, 9, 255, 187, 63, 63, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 120, 120, 120, 252, 169, 169, 174, 254, 188, 188, 188, 255, 188, 188, 188, 255, 187, 187, 188, 255, 59, 57, 157, 254, 117, 117, 120, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 249, 36, 36, 254, 255, 9, 9, 255, 255, 9, 9, 255, 250, 34, 34, 254, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 196, 196, 202, 253, 188, 188, 188, 255, 188, 188, 188, 255, 185, 185, 188, 255, 31, 27, 175, 255, 160, 159, 203, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 121, 117, 117, 252, 206, 42, 42, 254, 255, 0, 0, 255, 255, 0, 0, 255, 204, 44, 44, 254, 121, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 212, 212, 252, 240, 80, 80, 254, 255, 0, 0, 255, 255, 0, 0, 255, 240, 76, 76, 254, 216, 212, 212, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 61, 61, 61, 253, 8, 8, 8, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 1, 1, 1, 255, 61, 61, 61, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 115, 115, 115, 253, 15, 15, 15, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 2, 2, 2, 255, 107, 107, 107, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 119, 119, 252, 77, 109, 153, 253, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 116, 85, 173, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 166, 88, 146, 253, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 214, 214, 215, 252, 125, 157, 199, 253, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 112, 86, 174, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 202, 122, 181, 253, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 148, 95, 95, 253, 206, 48, 48, 254, 185, 64, 64, 253, 123, 116, 116, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 146, 145, 151, 253, 188, 188, 188, 255, 188, 188, 188, 255, 188, 188, 188, 255, 165, 165, 173, 254, 120, 120, 123, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 227, 151, 151, 253, 252, 22, 22, 255, 252, 22, 22, 255, 227, 149, 149, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 207, 207, 211, 252, 184, 184, 188, 255, 188, 188, 188, 255, 188, 188, 188, 255, 186, 186, 188, 255, 184, 183, 203, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 122, 116, 116, 252, 211, 38, 38, 254, 255, 0, 0, 255, 255, 0, 0, 255, 199, 49, 49, 254, 120, 118, 118, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 216, 210, 210, 252, 241, 71, 71, 254, 255, 0, 0, 255, 255, 0, 0, 255, 238, 85, 85, 254, 215, 213, 213, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 68, 68, 68, 253, 81, 81, 81, 253, 94, 94, 94, 253, 6, 6, 6, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 71, 71, 71, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 125, 125, 125, 253, 143, 143, 143, 253, 173, 173, 173, 253, 14, 14, 14, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 1, 1, 1, 255, 126, 126, 126, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 116, 118, 121, 252, 65, 106, 163, 254, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 148, 79, 169, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 199, 71, 160, 255, 124, 112, 127, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 211, 214, 252, 99, 140, 195, 254, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 145, 80, 170, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 204, 75, 164, 255, 204, 192, 207, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 106, 106, 106, 253, 79, 79, 79, 254, 60, 60, 60, 255, 59, 59, 59, 255, 115, 115, 116, 255, 186, 186, 187, 255, 188, 188, 188, 255, 166, 166, 174, 254, 120, 120, 123, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 215, 215, 215, 252, 215, 214, 214, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 130, 130, 130, 253, 121, 121, 121, 254, 156, 156, 159, 254, 188, 188, 188, 255, 188, 188, 188, 255, 187, 187, 188, 255, 192, 192, 202, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 124, 115, 115, 252, 216, 33, 33, 254, 255, 0, 0, 255, 255, 0, 0, 255, 193, 54, 54, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 216, 208, 208, 252, 243, 63, 63, 254, 255, 0, 0, 255, 255, 0, 0, 255, 237, 95, 95, 253, 215, 214, 214, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 60, 60, 60, 253, 88, 88, 88, 253, 119, 119, 119, 252, 119, 119, 119, 252, 87, 87, 87, 253, 2, 2, 2, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 1, 1, 1, 255, 81, 81, 81, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 112, 112, 112, 253, 157, 157, 157, 253, 215, 215, 215, 252, 215, 215, 215, 252, 159, 159, 159, 253, 6, 6, 6, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 2, 2, 2, 255, 143, 143, 143, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 111, 117, 125, 252, 55, 104, 171, 254, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 40, 101, 185, 255, 171, 75, 166, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 198, 72, 157, 254, 125, 112, 128, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 199, 205, 212, 252, 76, 125, 191, 254, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 100, 184, 255, 169, 75, 167, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 207, 79, 166, 254, 204, 190, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 117, 93, 93, 253, 127, 40, 40, 255, 93, 49, 49, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 116, 115, 121, 255, 167, 167, 175, 254, 120, 120, 124, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 208, 208, 208, 252, 105, 105, 105, 254, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 61, 61, 61, 255, 140, 140, 144, 255, 187, 187, 188, 255, 191, 191, 202, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 126, 113, 113, 252, 221, 29, 29, 254, 255, 0, 0, 255, 255, 0, 0, 255, 186, 60, 60, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 217, 205, 205, 252, 244, 55, 55, 254, 255, 0, 0, 255, 255, 0, 0, 255, 235, 105, 105, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 117, 117, 117, 252, 55, 55, 55, 253, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 79, 79, 79, 253, 1, 1, 1, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 63, 63, 63, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 212, 212, 212, 252, 101, 101, 101, 254, 170, 170, 170, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 146, 146, 146, 253, 2, 2, 2, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 111, 111, 111, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 104, 115, 130, 253, 48, 103, 177, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 50, 98, 183, 255, 189, 71, 164, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 190, 77, 153, 254, 124, 114, 124, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 184, 195, 209, 252, 60, 115, 189, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 48, 99, 183, 255, 187, 71, 164, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 209, 94, 170, 254, 209, 197, 209, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 151, 89, 89, 253, 246, 4, 4, 255, 255, 0, 0, 255, 254, 0, 0, 255, 173, 25, 25, 255, 60, 59, 59, 255, 59, 59, 59, 255, 70, 70, 70, 255, 120, 120, 124, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 216, 210, 210, 252, 210, 68, 68, 254, 240, 4, 4, 255, 217, 11, 11, 255, 115, 42, 42, 255, 59, 59, 59, 255, 59, 59, 59, 255, 67, 67, 68, 255, 192, 192, 200, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 128, 111, 111, 252, 226, 25, 25, 254, 255, 0, 0, 255, 255, 0, 0, 255, 180, 66, 66, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 218, 202, 202, 252, 246, 48, 48, 254, 255, 0, 0, 255, 255, 0, 0, 255, 233, 115, 115, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 115, 115, 115, 252, 51, 51, 51, 253, 102, 102, 102, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 117, 117, 117, 252, 33, 33, 33, 253, 1, 1, 1, 255, 0, 0, 0, 255, 0, 0, 0, 255, 6, 6, 6, 254, 102, 102, 102, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 93, 93, 93, 253, 182, 182, 182, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 212, 212, 212, 252, 64, 64, 64, 253, 2, 2, 2, 255, 0, 0, 0, 255, 0, 0, 0, 255, 10, 10, 10, 254, 181, 181, 181, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 95, 113, 139, 253, 43, 102, 182, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 66, 95, 181, 255, 206, 69, 162, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 179, 83, 149, 254, 119, 117, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 164, 182, 206, 253, 48, 107, 186, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 64, 96, 181, 255, 204, 69, 162, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 206, 108, 176, 254, 213, 210, 213, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 235, 17, 17, 254, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 151, 31, 31, 255, 59, 59, 59, 255, 65, 65, 65, 255, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 235, 103, 103, 254, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 253, 1, 1, 255, 117, 41, 41, 255, 59, 59, 59, 255, 59, 59, 59, 255, 210, 210, 210, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 131, 108, 108, 252, 230, 21, 21, 254, 255, 0, 0, 255, 254, 1, 1, 255, 173, 71, 71, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 218, 197, 197, 252, 247, 41, 41, 254, 255, 0, 0, 255, 255, 1, 1, 255, 232, 125, 125, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 112, 112, 112, 252, 56, 44, 44, 253, 125, 93, 93, 253, 137, 105, 105, 253, 137, 105, 105, 253, 137, 105, 105, 253, 137, 105, 105, 253, 137, 105, 105, 253, 131, 102, 102, 253, 51, 50, 50, 253, 102, 102, 102, 252, 72, 72, 72, 253, 14, 14, 14, 254, 26, 26, 26, 254, 93, 93, 93, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 203, 203, 203, 252, 89, 77, 77, 253, 190, 159, 159, 253, 214, 182, 182, 253, 214, 182, 182, 253, 214, 182, 182, 253, 214, 182, 182, 253, 214, 182, 182, 253, 207, 177, 177, 253, 92, 92, 92, 253, 183, 183, 183, 252, 133, 133, 133, 253, 27, 27, 27, 254, 46, 46, 46, 254, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 83, 110, 148, 253, 40, 101, 184, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 82, 91, 178, 255, 213, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 161, 90, 144, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 215, 215, 215, 252, 139, 166, 202, 253, 41, 102, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 80, 92, 178, 255, 213, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 215, 67, 161, 255, 201, 129, 184, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 144, 98, 98, 253, 197, 56, 56, 253, 180, 69, 69, 253, 122, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 141, 99, 99, 252, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 245, 3, 3, 255, 71, 55, 55, 255, 72, 72, 72, 254, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 215, 215, 215, 252, 222, 176, 176, 252, 222, 177, 177, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 213, 213, 252, 251, 16, 16, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 239, 5, 5, 255, 67, 57, 57, 255, 64, 64, 64, 255, 213, 213, 213, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 134, 106, 106, 252, 234, 18, 18, 254, 255, 0, 0, 255, 253, 2, 2, 255, 168, 76, 76, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 219, 193, 193, 252, 249, 35, 35, 254, 255, 0, 0, 255, 255, 3, 3, 255, 230, 135, 135, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 107, 107, 107, 252, 70, 34, 34, 254, 198, 50, 50, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 197, 50, 50, 255, 69, 34, 34, 254, 108, 107, 107, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 195, 195, 195, 252, 88, 53, 53, 254, 197, 49, 49, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 198, 50, 50, 255, 88, 52, 52, 254, 193, 192, 192, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 73, 108, 156, 253, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 96, 89, 176, 255, 214, 67, 161, 255, 205, 69, 161, 255, 143, 101, 134, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 118, 152, 198, 253, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 93, 90, 176, 255, 213, 67, 161, 255, 207, 70, 162, 255, 204, 160, 195, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 125, 114, 114, 252, 245, 17, 17, 255, 252, 10, 10, 255, 255, 9, 9, 255, 185, 65, 65, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 155, 78, 78, 253, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 129, 38, 38, 255, 86, 86, 86, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 235, 111, 111, 253, 255, 9, 9, 255, 254, 13, 13, 255, 235, 110, 110, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 218, 188, 188, 252, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 131, 37, 37, 255, 94, 94, 94, 254, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 137, 103, 103, 252, 238, 15, 15, 255, 255, 0, 0, 255, 252, 3, 3, 255, 162, 81, 81, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 220, 188, 188, 252, 249, 29, 29, 255, 255, 0, 0, 255, 254, 5, 5, 255, 228, 143, 143, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 102, 101, 101, 252, 77, 32, 32, 254, 204, 51, 51, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 189, 47, 47, 255, 66, 37, 37, 254, 112, 112, 112, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 185, 185, 252, 90, 47, 47, 254, 203, 51, 51, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 191, 48, 48, 255, 88, 58, 58, 254, 201, 201, 201, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 101, 115, 133, 252, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 116, 89, 167, 254, 128, 109, 129, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 180, 192, 209, 252, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 124, 99, 178, 255, 203, 183, 204, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 139, 102, 102, 252, 255, 9, 9, 255, 254, 9, 9, 255, 255, 9, 9, 255, 208, 47, 47, 254, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 174, 65, 65, 253, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 166, 27, 27, 255, 110, 110, 110, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 250, 30, 30, 255, 255, 9, 9, 255, 255, 10, 10, 255, 251, 27, 27, 255, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 211, 150, 150, 253, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 183, 22, 22, 255, 143, 143, 143, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 141, 100, 100, 252, 241, 12, 12, 255, 255, 0, 0, 255, 250, 4, 4, 255, 157, 86, 86, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 221, 183, 183, 252, 251, 24, 24, 255, 255, 0, 0, 255, 254, 7, 7, 255, 227, 152, 152, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 96, 95, 95, 253, 88, 30, 30, 254, 208, 52, 52, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 179, 45, 45, 255, 64, 42, 42, 254, 115, 115, 115, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 175, 173, 173, 253, 96, 41, 41, 254, 207, 52, 52, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 181, 47, 47, 255, 91, 68, 68, 254, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 91, 112, 141, 253, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 58, 105, 168, 254, 113, 118, 124, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 158, 178, 205, 253, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 79, 127, 191, 254, 200, 206, 212, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 120, 118, 118, 252, 216, 40, 40, 254, 255, 9, 9, 255, 251, 12, 12, 255, 155, 89, 89, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 185, 56, 56, 253, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 179, 55, 55, 254, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 243, 68, 68, 254, 255, 9, 9, 255, 255, 9, 9, 255, 244, 66, 66, 254, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 212, 124, 124, 253, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 209, 32, 32, 255, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 144, 96, 96, 253, 244, 10, 10, 255, 255, 0, 0, 255, 248, 6, 6, 255, 152, 90, 90, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 222, 176, 176, 253, 251, 19, 19, 255, 255, 0, 0, 255, 253, 10, 10, 255, 225, 159, 159, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 89, 88, 88, 253, 102, 30, 30, 254, 210, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 167, 43, 43, 255, 64, 49, 49, 254, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 162, 161, 161, 253, 106, 36, 36, 254, 210, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 170, 44, 44, 255, 98, 82, 82, 254, 211, 211, 211, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 111, 117, 125, 252, 43, 102, 182, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 68, 107, 159, 254, 117, 118, 121, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 201, 206, 213, 252, 48, 107, 186, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 102, 141, 195, 254, 210, 212, 214, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 121, 118, 118, 252, 146, 96, 96, 252, 132, 108, 108, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 191, 47, 47, 254, 255, 0, 0, 255, 255, 0, 0, 255, 230, 13, 13, 254, 200, 46, 46, 254, 201, 48, 48, 254, 178, 66, 66, 253, 126, 113, 113, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 218, 201, 201, 252, 235, 109, 109, 253, 235, 109, 109, 253, 218, 200, 200, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 218, 115, 115, 253, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 249, 22, 22, 254, 226, 149, 149, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 148, 93, 93, 253, 246, 8, 8, 255, 255, 0, 0, 255, 246, 8, 8, 255, 147, 93, 93, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 223, 170, 170, 253, 252, 15, 15, 255, 255, 0, 0, 255, 252, 13, 13, 255, 223, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 99, 97, 97, 252, 106, 30, 30, 254, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 154, 39, 39, 255, 66, 58, 58, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 180, 179, 179, 252, 106, 33, 33, 254, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 158, 41, 41, 255, 108, 99, 99, 253, 214, 214, 214, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 91, 112, 141, 253, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 184, 255, 80, 110, 150, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 157, 177, 205, 253, 40, 102, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 40, 102, 185, 255, 128, 159, 200, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 197, 38, 38, 254, 255, 0, 0, 255, 174, 56, 56, 253, 119, 118, 118, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 227, 109, 109, 253, 255, 0, 0, 255, 240, 17, 17, 255, 214, 133, 133, 253, 216, 206, 206, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 153, 89, 89, 253, 248, 6, 6, 255, 255, 0, 0, 255, 243, 11, 11, 255, 144, 97, 97, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 224, 163, 163, 253, 253, 12, 12, 255, 255, 0, 0, 255, 252, 17, 17, 255, 222, 173, 173, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 64, 52, 52, 253, 209, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 141, 36, 36, 255, 70, 67, 67, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 104, 95, 95, 253, 208, 52, 52, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 144, 38, 38, 255, 121, 117, 117, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 79, 109, 151, 253, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 42, 102, 182, 255, 93, 113, 140, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 215, 215, 215, 252, 130, 160, 200, 253, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 45, 105, 186, 255, 155, 176, 204, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 136, 105, 105, 252, 134, 107, 107, 252, 119, 119, 119, 252, 204, 30, 30, 254, 178, 53, 53, 254, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 230, 97, 97, 254, 240, 18, 18, 255, 210, 180, 180, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 158, 84, 84, 253, 250, 4, 4, 255, 255, 0, 0, 255, 240, 13, 13, 255, 140, 101, 101, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 226, 156, 156, 253, 253, 8, 8, 255, 255, 0, 0, 255, 251, 22, 22, 255, 221, 180, 180, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 72, 47, 47, 253, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 127, 33, 33, 255, 78, 76, 76, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 105, 83, 83, 253, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 131, 35, 35, 255, 135, 134, 134, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 66, 106, 161, 254, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 47, 102, 178, 255, 102, 114, 132, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 102, 142, 195, 254, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 55, 112, 188, 255, 176, 190, 208, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 188, 63, 63, 253, 252, 11, 11, 255, 254, 10, 10, 255, 171, 76, 76, 253, 175, 45, 45, 253, 119, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 184, 184, 184, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 219, 194, 194, 252, 243, 71, 71, 254, 246, 54, 54, 254, 227, 151, 151, 253, 223, 79, 79, 253, 211, 160, 160, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 163, 80, 80, 253, 252, 3, 3, 255, 255, 0, 0, 255, 237, 16, 16, 255, 137, 104, 104, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 176, 176, 176, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 227, 148, 148, 253, 254, 6, 6, 255, 255, 0, 0, 255, 250, 27, 27, 255, 221, 185, 185, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 73, 71, 71, 253, 170, 43, 43, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 111, 31, 31, 254, 85, 83, 83, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 133, 131, 131, 253, 168, 43, 43, 255, 211, 53, 53, 255, 211, 53, 53, 255, 211, 53, 53, 255, 117, 34, 34, 254, 150, 148, 148, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 116, 118, 121, 252, 56, 104, 170, 254, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 53, 104, 172, 254, 110, 117, 126, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 161, 161, 161, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 210, 212, 214, 252, 79, 126, 191, 254, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 69, 121, 190, 254, 194, 201, 211, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 1, 1, 1, 253, 104, 104, 104, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 249, 13, 13, 255, 253, 10, 10, 255, 255, 9, 9, 255, 232, 27, 27, 254, 126, 107, 107, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 113, 113, 252, 1, 1, 1, 253, 1, 1, 1, 249, 183, 183, 183, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 240, 84, 84, 254, 255, 9, 9, 255, 254, 12, 12, 255, 253, 17, 17, 255, 202, 138, 138, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 1, 1, 1, 253, 1, 1, 1, 245, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 149, 93, 93, 253, 253, 2, 2, 255, 255, 0, 0, 255, 233, 19, 19, 254, 133, 107, 107, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 1, 1, 1, 253, 1, 1, 1, 242, 175, 175, 175, 253, 215, 215, 215, 252, 215, 215, 215, 252, 224, 170, 170, 252, 254, 4, 4, 255, 255, 0, 0, 255, 249, 32, 32, 254, 219, 191, 191, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 3, 3, 3, 254, 0, 0, 0, 241, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 65, 53, 53, 253, 110, 29, 29, 255, 131, 36, 36, 255, 76, 33, 33, 254, 94, 92, 92, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 4, 4, 4, 253, 1, 1, 1, 238, 167, 167, 167, 253, 215, 215, 215, 252, 215, 215, 215, 252, 213, 213, 213, 252, 106, 95, 95, 253, 111, 30, 30, 255, 134, 39, 39, 255, 92, 47, 47, 254, 165, 164, 164, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 10, 10, 10, 254, 0, 0, 0, 235, 91, 91, 91, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 111, 117, 125, 252, 48, 103, 177, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 62, 106, 164, 254, 115, 118, 122, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 8, 8, 8, 253, 1, 1, 1, 234, 160, 160, 160, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 200, 205, 212, 252, 61, 115, 189, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 90, 134, 193, 254, 206, 209, 213, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 18, 18, 18, 254, 0, 0, 0, 228, 90, 90, 90, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 230, 29, 29, 254, 255, 9, 9, 255, 255, 9, 9, 255, 212, 43, 43, 254, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 99, 99, 99, 252, 0, 0, 0, 246, 1, 1, 1, 225, 158, 158, 158, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 243, 73, 73, 254, 255, 9, 9, 255, 255, 9, 9, 255, 255, 10, 10, 255, 218, 202, 202, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 184, 184, 184, 252, 1, 1, 1, 248, 0, 0, 0, 222, 85, 85, 85, 253, 119, 119, 119, 252, 119, 119, 119, 252, 171, 73, 73, 253, 255, 0, 0, 255, 229, 22, 22, 254, 130, 109, 109, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 104, 104, 104, 252, 1, 1, 1, 250, 1, 1, 1, 218, 150, 150, 150, 253, 215, 215, 215, 252, 215, 215, 215, 252, 230, 135, 135, 253, 255, 0, 0, 255, 248, 38, 38, 254, 219, 196, 196, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 192, 192, 192, 252, 1, 1, 1, 251, 0, 0, 0, 213, 81, 81, 81, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 111, 111, 111, 252, 102, 102, 102, 252, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 109, 109, 109, 252, 1, 1, 1, 252, 1, 1, 1, 210, 143, 143, 143, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 201, 201, 201, 252, 183, 183, 183, 252, 212, 212, 212, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 199, 199, 199, 252, 2, 2, 2, 253, 0, 0, 0, 207, 77, 77, 77, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 103, 115, 130, 253, 43, 102, 181, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 74, 108, 155, 254, 118, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 112, 112, 112, 252, 1, 1, 1, 253, 1, 1, 1, 206, 135, 135, 135, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 184, 195, 209, 252, 50, 108, 187, 255, 39, 101, 185, 255, 39, 101, 185, 255, 39, 101, 185, 255, 114, 149, 197, 254, 213, 214, 214, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 205, 205, 205, 252, 3, 3, 3, 253, 0, 0, 0, 178, 60, 60, 60, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 136, 105, 105, 252, 201, 51, 51, 253, 195, 57, 57, 253, 130, 110, 110, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 69, 69, 69, 253, 0, 0, 0, 199, 0, 0, 0, 173, 105, 105, 105, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 222, 176, 176, 253, 250, 34, 34, 254, 254, 14, 14, 255, 233, 120, 120, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 130, 130, 130, 253, 1, 1, 1, 203, 0, 0, 0, 168, 56, 56, 56, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 146, 95, 95, 253, 122, 116, 116, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 74, 74, 74, 253, 0, 0, 0, 208, 0, 0, 0, 164, 97, 97, 97, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 223, 172, 172, 253, 216, 209, 209, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 137, 137, 137, 253, 1, 1, 1, 213, 0, 0, 0, 160, 51, 51, 51, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 78, 78, 78, 253, 0, 0, 0, 218, 0, 0, 0, 156, 89, 89, 89, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 145, 145, 145, 253, 1, 1, 1, 223, 0, 0, 0, 151, 47, 47, 47, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 106, 116, 129, 252, 69, 107, 159, 254, 65, 106, 163, 254, 96, 114, 137, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 83, 83, 83, 253, 0, 0, 0, 227, 0, 0, 0, 146, 81, 81, 81, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 189, 198, 210, 252, 108, 145, 196, 254, 97, 139, 195, 254, 164, 182, 206, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 153, 153, 153, 253, 1, 1, 1, 231, 0, 0, 0, 65, 5, 5, 5, 252, 99, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 105, 105, 105, 252, 9, 9, 9, 253, 0, 0, 0, 84, 0, 0, 0, 61, 8, 8, 8, 252, 176, 176, 176, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 214, 214, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 192, 192, 192, 252, 18, 18, 18, 254, 0, 0, 0, 89, 0, 0, 0, 57, 4, 4, 4, 251, 96, 96, 96, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 107, 107, 107, 252, 11, 11, 11, 253, 0, 0, 0, 94, 0, 0, 0, 53, 5, 5, 5, 250, 172, 172, 172, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 196, 196, 196, 252, 22, 22, 22, 254, 0, 0, 0, 98, 0, 0, 0, 50, 2, 2, 2, 248, 93, 93, 93, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 109, 109, 109, 252, 13, 13, 13, 253, 0, 0, 0, 103, 0, 0, 0, 47, 4, 4, 4, 248, 166, 166, 166, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 199, 199, 199, 252, 27, 27, 27, 254, 0, 0, 0, 108, 0, 0, 0, 43, 1, 1, 1, 246, 90, 90, 90, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 111, 111, 111, 252, 16, 16, 16, 253, 0, 0, 0, 112, 0, 0, 0, 40, 3, 3, 3, 245, 159, 159, 159, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 202, 202, 202, 252, 31, 31, 31, 254, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 130, 6, 6, 6, 253, 66, 66, 66, 253, 99, 99, 99, 252, 118, 118, 118, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 101, 101, 101, 252, 70, 70, 70, 253, 9, 9, 9, 253, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 10, 10, 10, 253, 118, 118, 118, 253, 177, 177, 177, 252, 213, 213, 213, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 183, 183, 183, 252, 128, 128, 128, 253, 18, 18, 18, 254, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 5, 5, 5, 252, 64, 64, 64, 253, 98, 98, 98, 252, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 102, 102, 102, 252, 72, 72, 72, 253, 10, 10, 10, 253, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 9, 9, 9, 252, 114, 114, 114, 253, 176, 176, 176, 252, 212, 212, 212, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 184, 184, 184, 252, 132, 132, 132, 253, 20, 20, 20, 254, 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 4, 4, 4, 252, 62, 62, 62, 253, 97, 97, 97, 252, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 103, 103, 103, 252, 74, 74, 74, 253, 12, 12, 12, 253, 0, 0, 0, 168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 110, 7, 7, 7, 252, 110, 110, 110, 253, 174, 174, 174, 252, 211, 211, 211, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 135, 135, 135, 253, 23, 23, 23, 254, 0, 0, 0, 173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 105, 3, 3, 3, 251, 60, 60, 60, 253, 96, 96, 96, 252, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 103, 103, 103, 252, 75, 75, 75, 253, 14, 14, 14, 253, 0, 0, 0, 177, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 101, 5, 5, 5, 250, 106, 106, 106, 253, 173, 173, 173, 252, 210, 210, 210, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 188, 188, 188, 252, 138, 138, 138, 253, 27, 27, 27, 254, 0, 0, 0, 181, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 198, 0, 0, 0, 245, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 247, 0, 0, 0, 203, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 1, 1, 197, 1, 1, 1, 245, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 248, 1, 1, 1, 204, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 195, 0, 0, 0, 244, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 248, 0, 0, 0, 205, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 1, 1, 194, 1, 1, 1, 244, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 249, 1, 1, 1, 206, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 192, 0, 0, 0, 243, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 249, 0, 0, 0, 206, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 191, 1, 1, 1, 243, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 250, 1, 1, 1, 208, 0, 0, 0, 102, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 189, 0, 0, 0, 242, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 250, 0, 0, 0, 208, 0, 0, 0, 105, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 188, 1, 1, 1, 242, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 251, 1, 1, 1, 210, 0, 0, 0, 107, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 119, 0, 0, 0, 177, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 196, 0, 0, 0, 146, 0, 0, 7, 58, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 117, 0, 0, 0, 176, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 213, 1, 1, 1, 197, 0, 0, 0, 147, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 183, 0, 0, 0, 235, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 0, 0, 0, 229, 0, 0, 0, 176, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 183, 1, 1, 1, 234, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 254, 1, 1, 1, 230, 0, 0, 0, 177, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 218, 25, 25, 25, 253, 64, 64, 64, 253, 82, 82, 82, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 84, 84, 84, 253, 44, 43, 88, 253, 2, 0, 70, 255, 0, 0, 7, 255, 0, 0, 22, 140, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 217, 44, 44, 44, 254, 114, 114, 114, 253, 148, 148, 148, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 151, 151, 151, 253, 139, 139, 148, 253, 22, 19, 135, 254, 4, 1, 112, 255, 4, 3, 27, 251, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 6, 6, 6, 253, 62, 62, 62, 253, 92, 92, 92, 253, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 104, 104, 104, 252, 105, 105, 105, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 88, 88, 88, 253, 55, 55, 55, 253, 2, 2, 2, 249, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 10, 10, 10, 253, 110, 110, 110, 253, 165, 165, 165, 253, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 193, 193, 193, 252, 186, 186, 186, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 161, 161, 161, 253, 101, 101, 101, 253, 5, 5, 5, 250, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 217, 54, 54, 54, 253, 118, 118, 118, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 111, 111, 123, 252, 15, 11, 168, 255, 5, 0, 173, 255, 4, 0, 141, 255, 0, 0, 14, 255, 0, 0, 28, 104, 0, 0, 0, 9, 0, 0, 0, 214, 95, 95, 95, 253, 212, 212, 212, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 92, 89, 190, 254, 5, 0, 173, 255, 5, 0, 173, 255, 11, 7, 164, 255, 6, 5, 38, 254, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 7, 7, 7, 253, 101, 101, 101, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 31, 31, 31, 254, 56, 56, 56, 254, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 90, 90, 90, 253, 2, 2, 2, 248, 0, 0, 0, 48, 0, 0, 0, 72, 12, 12, 12, 253, 180, 180, 180, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 86, 86, 86, 254, 71, 71, 71, 254, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 167, 167, 167, 253, 5, 5, 5, 250, 0, 0, 0, 52, 0, 0, 0, 113, 25, 25, 25, 253, 118, 118, 118, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 48, 45, 152, 254, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 3, 0, 110, 255, 0, 0, 5, 231, 0, 0, 1, 109, 42, 42, 42, 254, 212, 212, 212, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 166, 166, 205, 253, 6, 1, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 25, 21, 137, 254, 1, 1, 1, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 68, 68, 68, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 51, 51, 51, 253, 0, 0, 0, 255, 73, 73, 73, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 52, 52, 52, 253, 0, 0, 0, 167, 1, 1, 1, 195, 119, 119, 119, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 124, 124, 124, 253, 0, 0, 0, 255, 95, 95, 95, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 99, 99, 99, 253, 0, 0, 0, 171, 0, 0, 0, 170, 62, 62, 62, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 89, 88, 133, 253, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 165, 255, 0, 0, 3, 254, 0, 0, 0, 183, 109, 109, 109, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 210, 210, 214, 252, 39, 35, 179, 254, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 28, 24, 175, 254, 5, 5, 5, 253, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 1, 1, 1, 246, 101, 101, 101, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 117, 117, 117, 252, 49, 49, 49, 253, 17, 17, 17, 255, 68, 68, 68, 255, 2, 2, 2, 255, 96, 96, 96, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 85, 85, 85, 253, 0, 0, 0, 218, 1, 1, 1, 243, 177, 177, 177, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 114, 114, 114, 253, 8, 8, 8, 255, 79, 79, 79, 255, 0, 0, 0, 255, 154, 154, 154, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 156, 156, 156, 253, 1, 1, 1, 223, 0, 0, 0, 206, 81, 81, 81, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 115, 115, 121, 252, 20, 16, 165, 254, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 1, 0, 21, 254, 1, 1, 1, 229, 143, 143, 143, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 109, 107, 194, 253, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 27, 27, 36, 254, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 116, 116, 116, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 103, 103, 103, 252, 23, 23, 23, 254, 54, 54, 54, 255, 195, 195, 195, 255, 211, 211, 211, 255, 45, 45, 45, 255, 17, 17, 17, 254, 115, 115, 115, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 206, 206, 206, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 199, 199, 199, 252, 59, 59, 59, 254, 37, 37, 37, 255, 181, 181, 181, 255, 215, 215, 215, 255, 70, 70, 70, 255, 11, 11, 11, 255, 189, 189, 189, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 185, 185, 185, 252, 1, 1, 1, 253, 0, 0, 0, 208, 83, 83, 83, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 57, 54, 147, 254, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 24, 21, 163, 254, 13, 13, 17, 254, 1, 1, 1, 230, 146, 146, 146, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 180, 179, 208, 252, 10, 5, 174, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 122, 120, 196, 253, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 80, 80, 80, 253, 6, 6, 6, 255, 105, 105, 105, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 191, 191, 191, 255, 15, 15, 15, 255, 37, 37, 37, 254, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 165, 165, 165, 253, 21, 21, 21, 254, 80, 80, 80, 255, 210, 210, 210, 255, 215, 215, 215, 255, 215, 215, 215, 255, 205, 205, 205, 255, 33, 33, 33, 255, 46, 46, 46, 254, 213, 213, 213, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 83, 83, 83, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 97, 96, 129, 253, 7, 2, 172, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 23, 19, 163, 254, 109, 109, 124, 252, 16, 16, 16, 254, 1, 1, 1, 230, 146, 146, 146, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 213, 213, 215, 252, 52, 48, 182, 254, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 120, 118, 196, 253, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 117, 117, 117, 252, 47, 47, 47, 254, 18, 18, 18, 255, 161, 161, 161, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 153, 153, 153, 255, 0, 0, 0, 255, 71, 71, 71, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 112, 112, 112, 253, 8, 8, 8, 255, 140, 140, 140, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 177, 177, 177, 255, 6, 6, 6, 255, 89, 89, 89, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 83, 83, 83, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 117, 117, 120, 252, 27, 23, 162, 254, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 22, 18, 164, 254, 108, 108, 124, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 146, 146, 146, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 126, 124, 197, 253, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 115, 113, 195, 253, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 101, 101, 101, 252, 21, 21, 21, 254, 56, 56, 56, 255, 196, 196, 196, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 104, 104, 104, 255, 1, 1, 1, 255, 94, 94, 94, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 196, 196, 196, 252, 55, 55, 55, 254, 39, 39, 39, 255, 182, 182, 182, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 136, 136, 136, 255, 0, 0, 0, 255, 147, 147, 147, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 83, 83, 83, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 66, 65, 143, 253, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 21, 17, 165, 255, 107, 107, 125, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 146, 146, 146, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 191, 190, 210, 252, 16, 11, 175, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 111, 109, 194, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 78, 78, 78, 253, 5, 5, 5, 255, 112, 112, 112, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 213, 213, 213, 255, 52, 52, 52, 255, 15, 15, 15, 254, 113, 113, 113, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 161, 161, 161, 253, 18, 18, 18, 254, 86, 86, 86, 255, 212, 212, 212, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 79, 79, 79, 255, 9, 9, 9, 255, 185, 185, 185, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 83, 83, 83, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 129, 129, 135, 253, 105, 103, 179, 255, 17, 12, 174, 255, 5, 0, 173, 255, 5, 0, 173, 255, 20, 16, 166, 255, 107, 106, 125, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 146, 146, 146, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 90, 87, 185, 254, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 5, 0, 173, 255, 107, 105, 193, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 116, 116, 116, 252, 44, 44, 44, 254, 21, 21, 21, 255, 164, 164, 164, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 197, 197, 197, 255, 19, 19, 19, 255, 34, 34, 34, 254, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 105, 105, 105, 253, 10, 10, 10, 255, 145, 145, 145, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 209, 209, 209, 255, 39, 39, 39, 255, 41, 41, 41, 254, 210, 210, 210, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 83, 83, 83, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 121, 121, 121, 252, 173, 173, 179, 254, 188, 188, 188, 255, 146, 146, 184, 255, 5, 1, 173, 255, 19, 15, 166, 255, 105, 105, 125, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 146, 146, 146, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 191, 191, 200, 253, 188, 188, 188, 255, 111, 109, 181, 255, 5, 0, 173, 255, 5, 0, 173, 255, 103, 101, 192, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 100, 100, 100, 252, 20, 20, 20, 254, 58, 58, 58, 255, 199, 199, 199, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 161, 161, 161, 255, 1, 1, 1, 255, 66, 66, 66, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 195, 195, 195, 252, 54, 54, 54, 254, 42, 42, 42, 255, 186, 186, 186, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 183, 183, 183, 255, 8, 8, 8, 255, 82, 82, 82, 254, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 83, 83, 83, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 149, 149, 157, 254, 188, 188, 188, 255, 188, 188, 188, 255, 188, 188, 188, 255, 60, 57, 170, 255, 104, 104, 126, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 146, 146, 146, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 204, 204, 209, 252, 184, 184, 188, 255, 188, 188, 188, 255, 188, 188, 188, 255, 43, 40, 176, 255, 99, 96, 192, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 77, 77, 77, 253, 5, 5, 5, 255, 114, 114, 114, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 113, 113, 113, 255, 1, 1, 1, 255, 90, 90, 90, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 160, 160, 160, 253, 16, 16, 16, 254, 88, 88, 88, 255, 212, 212, 212, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 145, 145, 145, 255, 0, 0, 0, 255, 139, 139, 139, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 83, 83, 83, 253, 167, 83, 83, 253, 235, 31, 31, 254, 220, 43, 43, 254, 145, 99, 99, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 128, 128, 133, 253, 185, 185, 187, 255, 188, 188, 188, 255, 188, 188, 188, 255, 179, 179, 185, 255, 126, 126, 133, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 146, 146, 146, 253, 230, 140, 140, 253, 249, 44, 44, 254, 244, 70, 70, 254, 222, 181, 181, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 187, 187, 192, 254, 188, 188, 188, 255, 188, 188, 188, 255, 188, 188, 188, 255, 159, 158, 193, 254, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 13, 13, 13, 254, 110, 110, 110, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 58, 58, 58, 255, 12, 12, 12, 255, 110, 110, 110, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 58, 58, 58, 254, 81, 81, 81, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 86, 86, 86, 255, 7, 7, 7, 255, 179, 179, 179, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 89, 78, 78, 253, 247, 23, 23, 255, 255, 17, 17, 255, 255, 17, 17, 255, 216, 46, 46, 254, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 115, 115, 115, 252, 92, 92, 92, 253, 72, 72, 72, 254, 71, 71, 71, 254, 111, 111, 111, 254, 186, 186, 187, 255, 188, 188, 188, 255, 179, 179, 186, 255, 128, 128, 134, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 148, 134, 134, 253, 253, 25, 25, 255, 255, 17, 17, 255, 255, 17, 17, 255, 242, 80, 80, 254, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 209, 209, 209, 252, 162, 162, 162, 253, 152, 152, 152, 253, 163, 163, 169, 253, 188, 188, 188, 255, 188, 188, 188, 255, 188, 188, 188, 255, 181, 181, 193, 254, 214, 214, 214, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 87, 87, 87, 253, 12, 12, 12, 255, 189, 189, 189, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 202, 202, 202, 255, 23, 23, 23, 255, 30, 30, 30, 254, 118, 118, 118, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 179, 179, 179, 252, 7, 7, 7, 255, 169, 169, 169, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 212, 212, 212, 255, 44, 44, 44, 255, 35, 35, 35, 254, 206, 206, 206, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 114, 59, 59, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 249, 20, 20, 255, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 112, 111, 111, 252, 102, 55, 55, 255, 80, 53, 53, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 107, 107, 109, 255, 180, 180, 186, 255, 128, 128, 135, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 156, 93, 93, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 252, 31, 31, 255, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 148, 148, 148, 253, 69, 69, 69, 255, 59, 59, 59, 255, 59, 59, 59, 255, 60, 60, 60, 255, 136, 136, 139, 255, 188, 188, 188, 255, 181, 181, 193, 254, 213, 213, 214, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 54, 54, 54, 253, 47, 47, 47, 255, 214, 214, 214, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 167, 167, 167, 255, 1, 1, 1, 255, 59, 59, 59, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 134, 134, 134, 253, 26, 26, 26, 255, 203, 203, 203, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 187, 187, 187, 255, 10, 10, 10, 255, 73, 73, 73, 254, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 113, 60, 60, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 251, 20, 20, 255, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 130, 110, 110, 252, 222, 21, 21, 254, 255, 0, 0, 255, 252, 1, 1, 255, 172, 25, 25, 255, 61, 58, 58, 255, 59, 59, 59, 255, 59, 59, 59, 255, 125, 125, 130, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 156, 94, 94, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 252, 29, 29, 255, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 207, 131, 131, 253, 206, 15, 15, 255, 201, 16, 16, 255, 110, 44, 44, 255, 59, 59, 59, 255, 59, 59, 59, 255, 61, 61, 61, 255, 175, 175, 186, 253, 213, 213, 214, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 27, 27, 27, 254, 40, 49, 122, 255, 65, 84, 237, 255, 65, 84, 237, 255, 57, 78, 238, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 236, 255, 17, 22, 66, 255, 1, 1, 1, 255, 87, 87, 87, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 74, 74, 74, 254, 22, 30, 94, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 43, 65, 240, 255, 21, 29, 93, 255, 0, 0, 0, 255, 128, 128, 128, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 112, 61, 61, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 252, 19, 19, 255, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 202, 45, 45, 254, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 165, 27, 27, 255, 59, 59, 59, 255, 59, 59, 59, 255, 114, 114, 114, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 155, 96, 96, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 253, 27, 27, 255, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 225, 159, 159, 253, 254, 1, 1, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 128, 38, 38, 255, 59, 59, 59, 255, 59, 59, 59, 255, 182, 182, 182, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 105, 105, 105, 252, 7, 7, 12, 254, 0, 22, 195, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 25, 220, 255, 0, 6, 57, 255, 33, 33, 33, 254, 44, 44, 44, 254, 55, 55, 55, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 207, 207, 207, 252, 31, 31, 31, 254, 0, 19, 165, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 26, 232, 255, 0, 10, 79, 255, 43, 43, 43, 254, 97, 97, 97, 253, 69, 69, 69, 254, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 110, 62, 62, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 254, 17, 17, 255, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 120, 118, 118, 252, 247, 6, 6, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 253, 1, 1, 255, 86, 51, 51, 255, 61, 61, 61, 255, 118, 118, 118, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 155, 98, 98, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 253, 25, 25, 255, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 243, 62, 62, 254, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 248, 2, 2, 255, 78, 53, 53, 255, 59, 59, 59, 255, 187, 187, 187, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 84, 84, 84, 253, 0, 4, 33, 255, 0, 26, 232, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 20, 175, 255, 1, 3, 20, 255, 64, 64, 64, 253, 119, 119, 119, 252, 117, 117, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 174, 174, 174, 252, 4, 5, 19, 255, 0, 24, 214, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 22, 196, 255, 0, 4, 33, 255, 90, 90, 90, 253, 212, 212, 212, 252, 213, 213, 214, 252, 214, 214, 214, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 103, 68, 68, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 128, 111, 111, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 132, 105, 105, 252, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 156, 30, 30, 255, 73, 73, 73, 254, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 153, 110, 110, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 216, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 246, 12, 12, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 157, 29, 29, 255, 64, 64, 64, 255, 212, 212, 212, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 50, 50, 50, 253, 0, 9, 82, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 242, 255, 0, 13, 115, 255, 13, 13, 14, 254, 92, 92, 92, 253, 119, 119, 119, 252, 119, 119, 119, 252, 63, 79, 187, 253, 116, 117, 122, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 127, 127, 127, 253, 0, 6, 52, 254, 0, 27, 241, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 16, 142, 255, 11, 12, 16, 255, 149, 149, 149, 253, 215, 215, 215, 252, 215, 215, 215, 252, 127, 141, 232, 253, 194, 197, 219, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 88, 79, 79, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 147, 97, 97, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 145, 86, 86, 253, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 198, 17, 17, 255, 95, 95, 95, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 148, 132, 132, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 222, 181, 181, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 216, 204, 204, 252, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 213, 13, 13, 255, 106, 106, 106, 254, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 24, 24, 24, 254, 0, 16, 145, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 25, 219, 255, 0, 6, 55, 255, 34, 34, 34, 254, 112, 112, 112, 252, 119, 119, 119, 252, 119, 119, 119, 252, 113, 114, 127, 252, 13, 45, 250, 255, 83, 94, 162, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 67, 67, 67, 254, 0, 12, 111, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 26, 231, 255, 0, 9, 78, 255, 45, 45, 45, 254, 188, 188, 188, 252, 215, 215, 215, 252, 215, 215, 215, 252, 214, 214, 215, 252, 35, 63, 250, 254, 119, 134, 233, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 83, 83, 83, 253, 238, 29, 29, 254, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 179, 73, 73, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 155, 74, 74, 253, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 206, 28, 28, 254, 118, 118, 118, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 146, 145, 145, 253, 251, 34, 34, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 231, 133, 133, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 207, 167, 167, 252, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 232, 7, 7, 255, 182, 182, 182, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 103, 103, 103, 252, 5, 6, 13, 255, 0, 23, 201, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 20, 173, 255, 1, 3, 19, 255, 66, 66, 66, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 77, 89, 170, 253, 9, 42, 255, 255, 42, 65, 213, 254, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 204, 204, 204, 252, 27, 27, 28, 254, 0, 20, 173, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 22, 195, 255, 0, 4, 32, 255, 93, 93, 93, 253, 213, 213, 213, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 166, 174, 225, 252, 9, 42, 255, 255, 42, 70, 248, 254, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 83, 83, 83, 253, 205, 55, 55, 254, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 230, 35, 35, 254, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 164, 68, 68, 253, 255, 0, 0, 255, 255, 0, 0, 255, 250, 2, 2, 255, 223, 19, 19, 254, 213, 32, 32, 254, 204, 44, 44, 254, 142, 98, 98, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 146, 146, 146, 253, 242, 83, 83, 254, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 246, 59, 59, 254, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 201, 145, 145, 253, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 254, 1, 1, 255, 232, 92, 92, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 80, 80, 80, 253, 0, 4, 37, 255, 0, 27, 235, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 242, 255, 0, 13, 113, 255, 14, 14, 14, 254, 93, 93, 93, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 39, 63, 217, 254, 9, 42, 255, 255, 11, 43, 253, 255, 109, 112, 130, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 170, 170, 170, 253, 2, 4, 21, 255, 0, 25, 219, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 16, 139, 255, 12, 13, 17, 255, 151, 151, 151, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 95, 114, 238, 253, 9, 42, 255, 255, 9, 42, 255, 255, 172, 179, 224, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 83, 83, 83, 253, 163, 86, 86, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 170, 80, 80, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 175, 64, 64, 253, 255, 0, 0, 255, 214, 27, 27, 254, 128, 103, 103, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 146, 146, 146, 253, 229, 143, 143, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 228, 147, 147, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 204, 134, 134, 253, 255, 0, 0, 255, 252, 1, 1, 255, 223, 84, 84, 253, 211, 156, 156, 253, 221, 185, 185, 252, 218, 201, 201, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 47, 47, 47, 254, 0, 10, 89, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 25, 217, 255, 0, 6, 54, 255, 35, 35, 35, 254, 112, 112, 112, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 15, 46, 247, 255, 9, 42, 255, 255, 9, 42, 255, 255, 87, 97, 158, 253, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 119, 119, 120, 253, 0, 6, 57, 255, 0, 28, 242, 255, 0, 28, 246, 255, 0, 28, 246, 255, 0, 26, 230, 255, 0, 9, 76, 255, 47, 47, 47, 254, 189, 189, 189, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 50, 76, 247, 254, 9, 42, 255, 255, 9, 42, 255, 255, 126, 141, 232, 253, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 83, 83, 83, 253, 121, 118, 118, 252, 236, 30, 30, 254, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 249, 21, 21, 255, 152, 93, 93, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 185, 59, 59, 253, 217, 24, 24, 254, 122, 114, 114, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 146, 146, 146, 253, 216, 211, 211, 252, 251, 38, 38, 254, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 253, 29, 29, 255, 224, 171, 171, 253, 215, 215, 215, 252, 215, 215, 215, 252, 210, 124, 124, 253, 251, 1, 1, 255, 213, 131, 131, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 117, 117, 117, 252, 22, 22, 22, 254, 0, 17, 153, 255, 0, 28, 246, 255, 0, 19, 171, 255, 1, 3, 19, 255, 67, 67, 67, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 12, 44, 251, 255, 9, 42, 255, 255, 9, 42, 255, 255, 85, 95, 161, 253, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 62, 62, 62, 254, 0, 13, 118, 255, 0, 28, 246, 255, 0, 22, 193, 255, 0, 4, 31, 255, 95, 95, 95, 253, 214, 214, 214, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 43, 70, 248, 254, 9, 42, 255, 255, 9, 42, 255, 255, 123, 137, 233, 253, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 83, 83, 83, 253, 119, 119, 119, 252, 167, 82, 82, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 251, 20, 20, 255, 175, 76, 76, 253, 120, 118, 118, 252, 119, 119, 119, 252, 180, 54, 54, 253, 130, 103, 103, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 146, 146, 146, 253, 215, 215, 215, 252, 231, 137, 137, 253, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 254, 24, 24, 255, 230, 137, 137, 253, 215, 214, 214, 252, 217, 117, 117, 253, 215, 98, 98, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 117, 117, 117, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 101, 101, 101, 252, 4, 5, 14, 255, 0, 11, 96, 255, 15, 15, 15, 254, 94, 94, 94, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 57, 75, 195, 253, 11, 44, 252, 255, 31, 57, 227, 254, 113, 115, 126, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 200, 200, 200, 252, 22, 22, 24, 254, 0, 11, 100, 255, 13, 14, 18, 254, 154, 154, 154, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 126, 140, 232, 253, 16, 48, 253, 255, 36, 64, 250, 254, 189, 193, 220, 252, 215, 215, 215, 252, 215, 215, 215, 252, 186, 186, 186, 252, 1, 1, 1, 253, 0, 0, 0, 208, 83, 83, 83, 253, 119, 119, 119, 252, 119, 119, 119, 252, 204, 54, 54, 254, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 229, 36, 36, 254, 144, 100, 100, 253, 128, 99, 99, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 16, 16, 16, 254, 1, 1, 1, 230, 146, 146, 146, 253, 215, 215, 215, 252, 215, 215, 215, 252, 241, 83, 83, 254, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 247, 58, 58, 254, 217, 106, 106, 253, 214, 212, 212, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 33, 33, 33, 254, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1, 1, 253, 116, 116, 116, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 87, 87, 87, 253, 49, 49, 49, 253, 113, 113, 113, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 121, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 100, 100, 100, 252, 1, 1, 1, 249, 1, 1, 1, 253, 207, 207, 207, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 169, 169, 169, 253, 86, 86, 86, 253, 190, 190, 190, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 212, 213, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 185, 185, 185, 252, 1, 1, 1, 253, 0, 0, 0, 190, 72, 72, 72, 253, 119, 119, 119, 252, 119, 119, 119, 252, 125, 115, 115, 252, 216, 45, 45, 254, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 240, 28, 28, 255, 130, 111, 111, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 7, 7, 7, 253, 1, 1, 1, 210, 127, 127, 127, 253, 215, 215, 215, 252, 215, 215, 215, 252, 217, 205, 205, 252, 244, 67, 67, 254, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 250, 41, 41, 254, 218, 202, 202, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 214, 214, 214, 252, 15, 15, 15, 254, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 1, 1, 247, 102, 102, 102, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 86, 86, 86, 253, 0, 0, 0, 222, 1, 1, 1, 246, 179, 179, 179, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 159, 159, 159, 253, 1, 1, 1, 226, 0, 0, 0, 141, 45, 45, 45, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 121, 117, 117, 252, 201, 57, 57, 254, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 152, 94, 94, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 97, 97, 97, 252, 0, 0, 0, 246, 0, 0, 0, 140, 78, 78, 78, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 216, 210, 210, 252, 240, 89, 89, 254, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 255, 17, 17, 255, 223, 173, 173, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 180, 180, 180, 252, 1, 1, 1, 248, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 71, 71, 71, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 55, 55, 55, 253, 0, 0, 0, 170, 1, 1, 1, 198, 124, 124, 124, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 103, 103, 103, 253, 0, 0, 0, 176, 0, 0, 0, 47, 2, 2, 2, 248, 94, 94, 94, 253, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 158, 89, 89, 253, 235, 32, 32, 254, 255, 17, 17, 255, 255, 17, 17, 255, 242, 26, 26, 255, 130, 110, 110, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 118, 118, 118, 252, 30, 30, 30, 253, 0, 0, 0, 153, 0, 0, 0, 44, 3, 3, 3, 247, 168, 168, 168, 253, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 227, 152, 152, 253, 249, 43, 43, 254, 255, 17, 17, 255, 255, 17, 17, 255, 251, 38, 38, 255, 217, 203, 203, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 214, 214, 214, 252, 59, 59, 59, 254, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 9, 9, 9, 253, 105, 105, 105, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 95, 95, 95, 253, 3, 3, 3, 250, 0, 0, 0, 55, 0, 0, 0, 80, 14, 14, 14, 254, 187, 187, 187, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 174, 174, 174, 253, 7, 7, 7, 251, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 119, 7, 7, 7, 253, 72, 72, 72, 253, 111, 111, 111, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 122, 117, 117, 252, 163, 85, 85, 253, 181, 72, 72, 253, 132, 109, 109, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 119, 119, 119, 252, 117, 117, 117, 252, 95, 95, 95, 252, 30, 30, 30, 253, 0, 0, 0, 216, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 115, 13, 13, 13, 254, 128, 128, 128, 253, 200, 200, 200, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 216, 209, 209, 252, 228, 149, 149, 253, 233, 124, 124, 253, 218, 199, 199, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 215, 215, 215, 252, 213, 213, 213, 252, 173, 173, 173, 252, 57, 57, 57, 254, 1, 1, 1, 219, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 8, 8, 8, 253, 67, 67, 67, 253, 97, 97, 97, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 107, 107, 107, 252, 94, 94, 94, 252, 60, 60, 60, 253, 4, 4, 4, 251, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 14, 14, 14, 254, 120, 120, 120, 253, 174, 174, 174, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 194, 194, 194, 252, 170, 170, 170, 252, 111, 111, 111, 253, 9, 9, 9, 252, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 222, 1, 1, 1, 253, 11, 11, 11, 253, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 12, 12, 12, 254, 5, 5, 5, 253, 0, 0, 0, 245, 0, 0, 0, 153, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 1, 1, 1, 220, 1, 1, 1, 253, 21, 21, 21, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 23, 23, 23, 254, 10, 10, 10, 254, 1, 1, 1, 245, 0, 0, 0, 156, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 195, 0, 0, 0, 244, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 0, 0, 0, 240, 0, 0, 0, 186, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 1, 1, 1, 195, 1, 1, 1, 243, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 241, 0, 0, 0, 188, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0 ), +"format": "RGBA8", +"height": 256, +"mipmaps": false, +"width": 256 +} + +[sub_resource type="ImageTexture" id=3] +image = SubResource( 2 ) +size = Vector2( 256, 256 ) + +[sub_resource type="GDScript" id=1] +script/source = "tool +extends ProxyTexture + +func _init(): + if Directory.new().file_exists(\"res://addons/mat_maker_gd/icons/icons.svg\"): + var t : ImageTexture = ImageTexture.new() + t.load(\"res://addons/mat_maker_gd/icons/icons.svg\") + base = t +" + +[resource] +flags = 7 +base = SubResource( 3 ) +script = SubResource( 1 ) diff --git a/game/addons/mat_maker_gd/icons/link.tres b/game/addons/mat_maker_gd/icons/link.tres new file mode 100644 index 0000000..0e95109 --- /dev/null +++ b/game/addons/mat_maker_gd/icons/link.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/icons/icons.tres" type="Texture" id=1] + +[resource] +flags = 7 +atlas = ExtResource( 1 ) +region = Rect2( 16, 0, 16, 15 ) diff --git a/game/addons/mat_maker_gd/icons/minimize.tres b/game/addons/mat_maker_gd/icons/minimize.tres new file mode 100644 index 0000000..7d367b4 --- /dev/null +++ b/game/addons/mat_maker_gd/icons/minimize.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/icons/icons.tres" type="Texture" id=1] + +[resource] +flags = 7 +atlas = ExtResource( 1 ) +region = Rect2( 48, 96, 16, 16 ) diff --git a/game/addons/mat_maker_gd/icons/output_preview.tres b/game/addons/mat_maker_gd/icons/output_preview.tres new file mode 100644 index 0000000..c84be54 --- /dev/null +++ b/game/addons/mat_maker_gd/icons/output_preview.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/icons/icons.tres" type="Texture" id=1] + +[resource] +flags = 7 +atlas = ExtResource( 1 ) +region = Rect2( 0, 80, 16, 16 ) diff --git a/game/addons/mat_maker_gd/icons/port_group_0.tres b/game/addons/mat_maker_gd/icons/port_group_0.tres new file mode 100644 index 0000000..ae29b24 --- /dev/null +++ b/game/addons/mat_maker_gd/icons/port_group_0.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/icons/icons.tres" type="Texture" id=1] + +[resource] +flags = 7 +atlas = ExtResource( 1 ) +region = Rect2( 32, 64, 16, 16 ) diff --git a/game/addons/mat_maker_gd/icons/port_group_1.tres b/game/addons/mat_maker_gd/icons/port_group_1.tres new file mode 100644 index 0000000..56412cc --- /dev/null +++ b/game/addons/mat_maker_gd/icons/port_group_1.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/icons/icons.tres" type="Texture" id=1] + +[resource] +flags = 7 +atlas = ExtResource( 1 ) +region = Rect2( 32, 80, 16, 16 ) diff --git a/game/addons/mat_maker_gd/icons/port_group_2.tres b/game/addons/mat_maker_gd/icons/port_group_2.tres new file mode 100644 index 0000000..dd08018 --- /dev/null +++ b/game/addons/mat_maker_gd/icons/port_group_2.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/icons/icons.tres" type="Texture" id=1] + +[resource] +flags = 4 +atlas = ExtResource( 1 ) +region = Rect2( 32, 96, 16, 16 ) diff --git a/game/addons/mat_maker_gd/icons/port_group_3.tres b/game/addons/mat_maker_gd/icons/port_group_3.tres new file mode 100644 index 0000000..2943001 --- /dev/null +++ b/game/addons/mat_maker_gd/icons/port_group_3.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/icons/icons.tres" type="Texture" id=1] + +[resource] +flags = 7 +atlas = ExtResource( 1 ) +region = Rect2( 32, 112, 16, 16 ) diff --git a/game/addons/mat_maker_gd/icons/randomness_locked.tres b/game/addons/mat_maker_gd/icons/randomness_locked.tres new file mode 100644 index 0000000..48fcc12 --- /dev/null +++ b/game/addons/mat_maker_gd/icons/randomness_locked.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/icons/icons.tres" type="Texture" id=1] + +[resource] +flags = 4 +atlas = ExtResource( 1 ) +region = Rect2( 80, 32, 16, 16 ) diff --git a/game/addons/mat_maker_gd/icons/randomness_unlocked.tres b/game/addons/mat_maker_gd/icons/randomness_unlocked.tres new file mode 100644 index 0000000..9ec871f --- /dev/null +++ b/game/addons/mat_maker_gd/icons/randomness_unlocked.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/icons/icons.tres" type="Texture" id=1] + +[resource] +flags = 7 +atlas = ExtResource( 1 ) +region = Rect2( 64, 32, 16, 16 ) diff --git a/game/addons/mat_maker_gd/icons/remove.tres b/game/addons/mat_maker_gd/icons/remove.tres new file mode 100644 index 0000000..b1f1c2f --- /dev/null +++ b/game/addons/mat_maker_gd/icons/remove.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/icons/icons.tres" type="Texture" id=1] + +[resource] +flags = 7 +atlas = ExtResource( 1 ) +region = Rect2( 32, 0, 16, 16 ) diff --git a/game/addons/mat_maker_gd/icons/up.tres b/game/addons/mat_maker_gd/icons/up.tres new file mode 100644 index 0000000..ab48648 --- /dev/null +++ b/game/addons/mat_maker_gd/icons/up.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/icons/icons.tres" type="Texture" id=1] + +[resource] +flags = 4 +atlas = ExtResource( 1 ) +region = Rect2( 16, 48, 16, 16 ) diff --git a/game/addons/mat_maker_gd/new_resource.tres b/game/addons/mat_maker_gd/new_resource.tres new file mode 100644 index 0000000..9e96b42 --- /dev/null +++ b/game/addons/mat_maker_gd/new_resource.tres @@ -0,0 +1,652 @@ +[gd_resource type="Resource" load_steps=89 format=2] + +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_material.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/adjust_hsv.gd" type="Script" id=2] +[ext_resource path="res://addons/mat_maker_gd/nodes/noise/voronoi.gd" type="Script" id=3] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/invert.gd" type="Script" id=4] +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_node_universal_property.gd" type="Script" id=5] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/combine.gd" type="Script" id=6] +[ext_resource path="res://addons/mat_maker_gd/nodes/transform/scale.gd" type="Script" id=7] +[ext_resource path="res://addons/mat_maker_gd/nodes/transform/repeat.gd" type="Script" id=8] +[ext_resource path="res://addons/mat_maker_gd/nodes/transform/shear.gd" type="Script" id=9] +[ext_resource path="res://addons/mat_maker_gd/nodes/transform/mirror.gd" type="Script" id=10] +[ext_resource path="res://addons/mat_maker_gd/nodes/transform/transform.gd" type="Script" id=11] +[ext_resource path="res://addons/mat_maker_gd/nodes/transform/circle_map.gd" type="Script" id=12] +[ext_resource path="res://addons/mat_maker_gd/nodes/transform/rotate.gd" type="Script" id=13] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/tonality.gd" type="Script" id=14] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/fill_to_position.gd" type="Script" id=15] +[ext_resource path="res://addons/mat_maker_gd/nodes/simple/shape.gd" type="Script" id=16] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/fill_to_uv.gd" type="Script" id=17] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/fill_to_random_grey.gd" type="Script" id=18] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/math.gd" type="Script" id=19] +[ext_resource path="res://addons/mat_maker_gd/nodes/transform/color_tiler.gd" type="Script" id=20] + +[sub_resource type="Resource" id=1] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=3] +script = ExtResource( 5 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=4] +script = ExtResource( 2 ) +graph_position = Vector2( 140, 0 ) +image = SubResource( 1 ) +input = SubResource( 3 ) +hue = 0.0 +saturation = 1.0 +value = 1.0 + +[sub_resource type="Resource" id=5] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=6] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=7] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=2] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=8] +script = ExtResource( 3 ) +graph_position = Vector2( -160, 40 ) +out_nodes = SubResource( 7 ) +out_borders = SubResource( 5 ) +out_random_color = SubResource( 2 ) +out_fill = SubResource( 6 ) +scale = Vector2( 13.6, 18.9 ) +stretch = Vector2( 2.13, 2.13 ) +intensity = 1.07 +randomness = 0.89 + +[sub_resource type="Resource" id=9] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=10] +script = ExtResource( 5 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=11] +script = ExtResource( 4 ) +graph_position = Vector2( 380, 80 ) +image = SubResource( 9 ) +input = SubResource( 10 ) + +[sub_resource type="Resource" id=12] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=13] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=14] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 7 ) + +[sub_resource type="Resource" id=15] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 2 ) + +[sub_resource type="Resource" id=16] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 5 ) + +[sub_resource type="Resource" id=17] +script = ExtResource( 6 ) +graph_position = Vector2( 380, 380 ) +image = SubResource( 12 ) +input_r = SubResource( 16 ) +input_g = SubResource( 15 ) +input_b = SubResource( 14 ) +input_a = SubResource( 13 ) + +[sub_resource type="Resource" id=18] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=19] +script = ExtResource( 5 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 12 ) + +[sub_resource type="Resource" id=20] +script = ExtResource( 7 ) +graph_position = Vector2( 1080, 180 ) +image = SubResource( 18 ) +input = SubResource( 19 ) +center = Vector2( 1, 1 ) +scale = Vector2( 1.3, 1.3 ) + +[sub_resource type="Resource" id=21] +script = ExtResource( 5 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 12 ) + +[sub_resource type="Resource" id=22] +script = ExtResource( 8 ) +graph_position = Vector2( 560, 300 ) +input = SubResource( 21 ) + +[sub_resource type="Resource" id=23] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=24] +script = ExtResource( 5 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 21 ) + +[sub_resource type="Resource" id=25] +script = ExtResource( 9 ) +graph_position = Vector2( 860, 200 ) +image = SubResource( 23 ) +input = SubResource( 24 ) +direction = 0 +amount = 1.06 +center = 0.0 + +[sub_resource type="Resource" id=26] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=27] +script = ExtResource( 5 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 21 ) + +[sub_resource type="Resource" id=28] +script = ExtResource( 10 ) +graph_position = Vector2( 620, 460 ) +image = SubResource( 26 ) +input = SubResource( 27 ) +direction = 0 +offset = 0.32 + +[sub_resource type="Resource" id=32] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=33] +script = ExtResource( 5 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 21 ) + +[sub_resource type="Resource" id=34] +script = ExtResource( 12 ) +graph_position = Vector2( 820, 580 ) +image = SubResource( 32 ) +input = SubResource( 33 ) +radius = 1.0 +repeat = 4 + +[sub_resource type="Resource" id=35] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=36] +script = ExtResource( 5 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=37] +script = ExtResource( 13 ) +graph_position = Vector2( 1040, 560 ) +image = SubResource( 35 ) +input = SubResource( 36 ) +center = Vector2( 0.13, 0 ) +rotate = 150.0 + +[sub_resource type="Resource" id=38] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=39] +script = ExtResource( 5 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 21 ) + +[sub_resource type="Resource" id=40] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 14.5 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 32 ) + +[sub_resource type="Resource" id=41] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 1.6 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=42] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 1.1 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=43] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 4.1 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=44] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 2.2 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=45] +script = ExtResource( 11 ) +graph_position = Vector2( 1280, 560 ) +image = SubResource( 38 ) +input = SubResource( 39 ) +translate_x = SubResource( 43 ) +translate_y = SubResource( 44 ) +rotate = SubResource( 40 ) +scale_x = SubResource( 41 ) +scale_y = SubResource( 42 ) +mode = 1 + +[sub_resource type="Resource" id=46] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=47] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 23 ) + +[sub_resource type="Resource" id=48] +script = ExtResource( 14 ) +graph_position = Vector2( 620, 0 ) +points = [ 0.0, 0.0, 0.0, 1.0, 0.284455, 0.780757, 0.0, 0.0, 0.735577, 0.159306, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0 ] +image = SubResource( 46 ) +input = SubResource( 47 ) + +[sub_resource type="Resource" id=49] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=50] +script = ExtResource( 5 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=51] +script = ExtResource( 15 ) +graph_position = Vector2( 120, 440 ) +image = SubResource( 49 ) +input = SubResource( 50 ) +axis = 2 + +[sub_resource type="Resource" id=52] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 0.1 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=53] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=54] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 1.3 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 2 ) + +[sub_resource type="Resource" id=55] +script = ExtResource( 16 ) +graph_position = Vector2( -440, 200 ) +image = SubResource( 53 ) +shape_type = 3 +sides = 7 +radius = SubResource( 54 ) +edge = SubResource( 52 ) + +[sub_resource type="Resource" id=56] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=59] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=57] +script = ExtResource( 5 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 59 ) + +[sub_resource type="Resource" id=58] +script = ExtResource( 17 ) +graph_position = Vector2( 580, 800 ) +image = SubResource( 56 ) +input = SubResource( 57 ) +mode = 0 + +[sub_resource type="Resource" id=60] +script = ExtResource( 5 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 12 ) + +[sub_resource type="Resource" id=61] +script = ExtResource( 18 ) +graph_position = Vector2( 320, 700 ) +image = SubResource( 59 ) +input = SubResource( 60 ) +edge_color = 0.9 + +[sub_resource type="Resource" id=63] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 5 ) + +[sub_resource type="Resource" id=64] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 53 ) + +[sub_resource type="Resource" id=65] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=62] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=66] +script = ExtResource( 19 ) +graph_position = Vector2( -720, 280 ) +image = SubResource( 65 ) +a = SubResource( 63 ) +b = SubResource( 64 ) +output = SubResource( 62 ) +operation = 3 +clamp_result = true + +[sub_resource type="Resource" id=67] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=68] +script = ExtResource( 5 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=69] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=70] +script = ExtResource( 5 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=71] +script = ExtResource( 20 ) +graph_position = Vector2( -1060, 280 ) +input = SubResource( 68 ) +in_mask = SubResource( 67 ) +output = SubResource( 70 ) +instance_map = SubResource( 69 ) +tile = Vector2( 4, 4 ) +overlap = 1.0 +select_inputs = 0 +scale = Vector2( 0.5, 0.5 ) +fixed_offset = 0.0 +rnd_offset = 0.28 +rnd_rotate = 100.0 +rnd_scale = 0.2 +rnd_opacity = 0.0 +variations = false + +[resource] +script = ExtResource( 1 ) +image_size = Vector2( 128, 128 ) +nodes = [ SubResource( 4 ), SubResource( 8 ), SubResource( 11 ), SubResource( 17 ), SubResource( 20 ), SubResource( 22 ), SubResource( 25 ), SubResource( 28 ), SubResource( 34 ), SubResource( 37 ), SubResource( 45 ), SubResource( 48 ), SubResource( 51 ), SubResource( 55 ), SubResource( 58 ), SubResource( 61 ), SubResource( 66 ), SubResource( 71 ) ] diff --git a/game/addons/mat_maker_gd/nodes/bases/curve_base.gd b/game/addons/mat_maker_gd/nodes/bases/curve_base.gd new file mode 100644 index 0000000..76daea5 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/bases/curve_base.gd @@ -0,0 +1,118 @@ +tool +extends MMNode + +class Point: + var p : Vector2 + var ls : float + var rs : float + func _init(x : float, y : float, nls : float, nrs : float) -> void: + p = Vector2(x, y) + ls = nls + rs = nrs + +export(PoolRealArray) var points + +func init_points_01(): + if points.size() == 0: + points = [ 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0 ] + +func init_points_11(): + if points.size() == 0: + points = [ 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0 ] + +func to_string() -> String: + var rv = PoolStringArray() + for p in points: + rv.append("("+str(p.x)+","+str(p.y)+","+str(p.ls)+","+str(p.rs)+")") + + return rv.join(",") + +func clear() -> void: + points.clear() + curve_changed() + +func add_point(x : float, y : float, ls : float = INF, rs : float = INF) -> void: + var indx : int = points.size() / 4 + + for i in indx: + var ii : int = i * 4 + if x < points[ii]: + if ls == INF: + ls == 0 + if rs == INF: + rs == 0 + + points.insert(ii, x) + points.insert(ii + 1, y) + points.insert(ii + 2, ls) + points.insert(ii + 3, rs) + + curve_changed() + return + + points.append(x) + points.append(y) + points.append(ls) + points.append(rs) + + curve_changed() + +func remove_point(i : int) -> bool: + var index : int = i * 4 + + if index <= 0 or index >= points.size() - 1: + return false + else: + points.remove(index) + points.remove(index) + points.remove(index) + points.remove(index) + + curve_changed() + return true + +func get_point_count() -> int: + return points.size() / 4 + +func set_point(i : int, v : Point) -> void: + var indx : int = i * 4 + + points[indx + 0] = v.p.x + points[indx + 1] = v.p.y + points[indx + 2] = v.ls + points[indx + 3] = v.rs + + curve_changed() + +func get_point(i : int) -> Point: + var indx : int = i * 4 + + return Point.new(points[indx + 0], points[indx + 1], points[indx + 2], points[indx + 3]) + +func get_points() -> Array: + var arr : Array = Array() + + var c : int = get_point_count() + + for i in range(c): + arr.append(get_point(i)) + + return arr + +func set_points(arr : Array, notify : bool = true) -> void: + points.resize(0) + + for p in arr: + points.append(p.p.x) + points.append(p.p.y) + points.append(p.ls) + points.append(p.rs) + + if notify: + curve_changed() + +func curve_changed() -> void: + _curve_changed() + +func _curve_changed() -> void: + emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/bases/gradient_base.gd b/game/addons/mat_maker_gd/nodes/bases/gradient_base.gd new file mode 100644 index 0000000..369614f --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/bases/gradient_base.gd @@ -0,0 +1,64 @@ +tool +extends MMNode + +#var Gradients = preload("res://addons/mat_maker_gd/nodes/common/gradients.gd") + +export(int) var interpolation_type : int = 1 setget set_interpolation_type, get_interpolation_type +export(PoolRealArray) var points : PoolRealArray = PoolRealArray() + +func get_gradient_color(x : float) -> Color: +# if interpolation_type == 0: +# return Gradients.gradient_type_1(x, points) +# elif interpolation_type == 1: +# return Gradients.gradient_type_2(x, points) +# elif interpolation_type == 2: +# return Gradients.gradient_type_3(x, points) +# elif interpolation_type == 3: +# return Gradients.gradient_type_4(x, points) + + return Color(1, 1, 1, 1) + +func get_interpolation_type() -> int: + return interpolation_type + +func set_interpolation_type(val : int) -> void: + interpolation_type = val + + set_dirty(true) + +func get_points() -> PoolRealArray: + return points + +func set_points(val : PoolRealArray) -> void: + points = val + + set_dirty(true) + +func get_point_value(index : int) -> float: + return points[index * 5] + +func get_point_color(index : int) -> Color: + var indx : int = index * 5 + + return Color(points[indx + 1], points[indx + 2], points[indx + 3], points[indx + 4]) + +func add_point(val : float, color : Color) -> void: + var s : int = points.size() + points.resize(s + 5) + + points[s] = val + + points[s + 1] = color.r + points[s + 2] = color.g + points[s + 3] = color.b + points[s + 4] = color.a + + set_dirty(true) + +func get_point_count() -> int: + return points.size() / 5 + +func clear() -> void: + points.resize(0) + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/bases/polygon_base.gd b/game/addons/mat_maker_gd/nodes/bases/polygon_base.gd new file mode 100644 index 0000000..a740455 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/bases/polygon_base.gd @@ -0,0 +1,73 @@ +tool +extends MMNode + +export(PoolVector2Array) var points : PoolVector2Array = [Vector2(0.2, 0.2), Vector2(0.7, 0.4), Vector2(0.4, 0.7)] + +func clear() -> void: + points.resize(0) + + _polygon_changed() + +func add_point(x : float, y : float, closed : bool = true) -> void: + var p : Vector2 = Vector2(x, y) + var points_count = points.size() + + if points_count < 3: + points.append(p) + _polygon_changed() + return + + var min_length : float = (p-Geometry.get_closest_point_to_segment_2d(p, points[0], points[points_count-1])).length() + var insert_point = 0 + + for i in points_count-1: + var length = (p - Geometry.get_closest_point_to_segment_2d(p, points[i], points[i+1])).length() + if length < min_length: + min_length = length + insert_point = i+1 + + if !closed and insert_point == 0 and (points[0]-p).length() > (points[points_count-1]-p).length(): + insert_point = points_count + + points.insert(insert_point, p) + + _polygon_changed() + +func remove_point(index : int) -> bool: + var s = points.size() + if s < 4 or index < 0 or index >= s: + return false + else: + points.remove(index) + _polygon_changed() + + return true + +func get_point_count() -> int: + return points.size() + +func get_point(i : int) -> Vector2: + return points[i] + +func set_point(i : int, v : Vector2) -> void: + points[i] = v + + _polygon_changed() + +func set_points(v : PoolVector2Array) -> void: + points = v + + _polygon_changed() + +func polygon_changed() -> void: + _polygon_changed() + +func _polygon_changed() -> void: + emit_changed() + +func to_string() -> String: + var rv = PoolStringArray() + for p in points: + rv.append("("+str(p.x)+","+str(p.y)+")") + + return rv.join(",") diff --git a/game/addons/mat_maker_gd/nodes/common/blur.gd b/game/addons/mat_maker_gd/nodes/common/blur.gd new file mode 100644 index 0000000..2aa637e --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/blur.gd @@ -0,0 +1,1172 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#---------------------- +#directional_blur.mmg + +#{ +# "connections": [ +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "buffer", +# "to_port": 0 +# }, +# { +# "from": "buffer", +# "from_port": 0, +# "to": "edge_detect_3_3_2", +# "to_port": 0 +# }, +# { +# "from": "edge_detect_3_3_2", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 1, +# "to": "edge_detect_3_3_2", +# "to_port": 1 +# } +# ], +# "label": "Directional Blur", +# "longdesc": "Applies a directional gaussian blur to its input", +# "name": "directional_blur", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "nodes": [ +# { +# "name": "buffer", +# "node_position": { +# "x": -381.25, +# "y": -270.75 +# }, +# "parameters": { +# "lod": 0, +# "size": 9 +# }, +# "type": "buffer" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": -436.666626, +# "y": -413.666656 +# }, +# "parameters": { +# "param0": 9, +# "param1": 50, +# "param2": 45 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "Grid size:", +# "linked_widgets": [ +# { +# "node": "buffer", +# "widget": "size" +# }, +# { +# "node": "edge_detect_3_3_2", +# "widget": "size" +# } +# ], +# "longdesc": "The resolution of the input", +# "name": "param0", +# "shortdesc": "Size", +# "type": "linked_control" +# }, +# { +# "label": "Sigma", +# "linked_widgets": [ +# { +# "node": "edge_detect_3_3_2", +# "widget": "sigma" +# } +# ], +# "longdesc": "The strength of the blur filter", +# "name": "param1", +# "shortdesc": "Sigma", +# "type": "linked_control" +# }, +# { +# "label": "Angle", +# "linked_widgets": [ +# { +# "node": "edge_detect_3_3_2", +# "widget": "angle" +# } +# ], +# "longdesc": "The angle of the directional blur effect", +# "name": "param2", +# "shortdesc": "Angle", +# "type": "linked_control" +# } +# ] +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -779.666626, +# "y": -247.392853 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# }, +# { +# "group_size": 0, +# "longdesc": "A map that controls the strength of the blur filter", +# "name": "amount", +# "shortdesc": "Strength map", +# "type": "f" +# } +# ], +# "seed_value": 91624, +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": -45.452393, +# "y": -195.392853 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "Shows the generated blurred image", +# "name": "port0", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "edge_detect_3_3_2", +# "node_position": { +# "x": -376.725464, +# "y": -184.178955 +# }, +# "parameters": { +# "angle": 45, +# "sigma": 50, +# "size": 9 +# }, +# "seed_value": -47470, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "vec4(1.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgba" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "Label", +# "name": "amount", +# "type": "f" +# } +# ], +# "instance": "vec4 $(name)_fct(vec2 uv) {\n\tvec2 e = vec2(cos($angle*0.01745329251), -sin($angle*0.01745329251))/$size;\n\tvec4 rv = vec4(0.0);\n\tfloat sum = 0.0;\n\tfloat sigma = $sigma*$amount(uv);\n\tfor (float i = -50.0; i <= 50.0; i += 1.0) {\n\t\tfloat coef = exp(-0.5*(pow(i/sigma, 2.0)))/(6.28318530718*sigma*sigma);\n\t\trv += $in(uv+i*e)*coef;\n\t\tsum += coef;\n\t}\n\treturn rv/sum;\n}", +# "name": "Directional Blur", +# "outputs": [ +# { +# "rgba": "$(name)_fct($uv)", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 4, +# "label": "Size", +# "last": 12, +# "name": "size", +# "type": "size" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "Sigma", +# "max": 50, +# "min": 0, +# "name": "sigma", +# "step": 0.1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Angle", +# "max": 180, +# "min": -180, +# "name": "angle", +# "step": 0.1, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +# } +# ], +# "parameters": { +# "param0": 9, +# "param1": 50, +# "param2": 45 +# }, +# "shortdesc": "Directional blur", +# "type": "graph" +#} + +#---------------------- +#fast_blur.mmg + +#{ +# "connections": [ +# { +# "from": "buffer_2", +# "from_port": 0, +# "to": "fast_blur_shader", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "buffer_2", +# "to_port": 0 +# }, +# { +# "from": "fast_blur_shader", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# } +# ], +# "label": "Fast Blur", +# "longdesc": "", +# "name": "fast_blur", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "nodes": [ +# { +# "name": "fast_blur_shader", +# "node_position": { +# "x": -168, +# "y": 120 +# }, +# "parameters": { +# "quality": 1, +# "sigma": 100 +# }, +# "type": "fast_blur_shader" +# }, +# { +# "name": "buffer_2", +# "node_position": { +# "x": -187, +# "y": 61.5 +# }, +# "parameters": { +# "size": 11 +# }, +# "type": "buffer", +# "version": 1 +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -602, +# "y": 91.75 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The input image", +# "name": "input", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": 88, +# "y": 61.75 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The generated blurred image", +# "name": "output", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": -254.5, +# "y": -122.5 +# }, +# "parameters": { +# "param0": 11, +# "param1": 100, +# "param2": 1 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "Resolution", +# "linked_widgets": [ +# { +# "node": "buffer_2", +# "widget": "size" +# } +# ], +# "longdesc": "The resolution used to sample the input image", +# "name": "param0", +# "shortdesc": "Resolution", +# "type": "linked_control" +# }, +# { +# "label": "Sigma", +# "linked_widgets": [ +# { +# "node": "fast_blur_shader", +# "widget": "sigma" +# } +# ], +# "longdesc": "The standard deviation of the gaussian distribution", +# "name": "param1", +# "shortdesc": "Sigma", +# "type": "linked_control" +# }, +# { +# "label": "Quality", +# "linked_widgets": [ +# { +# "node": "fast_blur_shader", +# "widget": "quality" +# } +# ], +# "longdesc": "The quality of the effect (increasing quality increases compute time)", +# "name": "param2", +# "shortdesc": "Quality", +# "type": "linked_control" +# } +# ] +# } +# ], +# "parameters": { +# "param0": 11, +# "param1": 100, +# "param2": 1 +# }, +# "shortdesc": "", +# "type": "graph" +#} + +#---------------------- +#fast_blur_shader.mmg + +#{ +# "name": "fast_blur_shader", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "parameters": { +# "quality": 1, +# "sigma": 100 +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "vec4(1.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgba" +# } +# ], +# "instance": "vec4 $(name)_blur(vec2 uv, vec2 scale, float sigma, int quality) {\n vec4 O = vec4(0.0);\n\tfloat samples = sigma * 4.0; \n\tint LOD = max(0, int(log2(float(samples)))-quality-2);\n\tint sLOD = 1 << LOD;\n int s = max(1, int(samples/float(sLOD)));\n\tfloat sum = 0.0;\n for (int i = 0; i < s*s; i++) {\n vec2 d = vec2(float(i%s), float(i/s))*float(sLOD) - 0.5*float(samples);\n\t\tvec2 dd = d / sigma;\n\t\tfloat g = exp(-.5*dot(dd,dd))/(6.28*sigma*sigma);\n O += g * textureLod($in.texture, uv + scale * d, float(LOD));\n\t\tsum += g;\n }\n \n return O / sum;\n}\n", +# "name": "Fast Blur", +# "outputs": [ +# { +# "rgba": "$(name)_blur($uv, vec2(1.0)/$in.size, max(1.0, floor($sigma*$in.size/2048.0)), int($quality))", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 1, +# "label": "", +# "max": 256, +# "min": 1, +# "name": "sigma", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "", +# "max": 3, +# "min": 0, +# "name": "quality", +# "step": 1, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +#} + +#---------------------- +#gaussian_blur.mmg + +#{ +# "connections": [ +# { +# "from": "switch", +# "from_port": 0, +# "to": "buffer_2", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "buffer", +# "to_port": 0 +# }, +# { +# "from": "switch", +# "from_port": 0, +# "to": "switch_2", +# "to_port": 1 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "switch", +# "to_port": 1 +# }, +# { +# "from": "buffer", +# "from_port": 0, +# "to": "gaussian_blur_x", +# "to_port": 0 +# }, +# { +# "from": "gaussian_blur_x", +# "from_port": 0, +# "to": "switch", +# "to_port": 0 +# }, +# { +# "from": "gaussian_blur_y", +# "from_port": 0, +# "to": "switch_2", +# "to_port": 0 +# }, +# { +# "from": "buffer_2", +# "from_port": 0, +# "to": "gaussian_blur_y", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 1, +# "to": "gaussian_blur_x", +# "to_port": 1 +# }, +# { +# "from": "gen_inputs", +# "from_port": 1, +# "to": "gaussian_blur_y", +# "to_port": 1 +# }, +# { +# "from": "buffer_3", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# }, +# { +# "from": "switch_2", +# "from_port": 0, +# "to": "buffer_3", +# "to_port": 0 +# } +# ], +# "label": "Gaussian Blur", +# "longdesc": "Applys a gaussian blur on its input", +# "name": "gaussian_blur", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "nodes": [ +# { +# "name": "buffer_2", +# "node_position": { +# "x": -399.875, +# "y": -43.625 +# }, +# "parameters": { +# "lod": 0, +# "size": 9 +# }, +# "type": "buffer" +# }, +# { +# "name": "switch", +# "node_position": { +# "x": -496.452393, +# "y": -130.166656 +# }, +# "parameters": { +# "choices": 2, +# "outputs": 1, +# "source": 0 +# }, +# "type": "switch" +# }, +# { +# "name": "switch_2", +# "node_position": { +# "x": -240.452393, +# "y": -133.666656 +# }, +# "parameters": { +# "choices": 2, +# "outputs": 1, +# "source": 0 +# }, +# "type": "switch" +# }, +# { +# "name": "buffer", +# "node_position": { +# "x": -402.25, +# "y": -315.75 +# }, +# "parameters": { +# "lod": 0, +# "size": 9 +# }, +# "type": "buffer" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": -439.666626, +# "y": -456.666656 +# }, +# "parameters": { +# "param0": 9, +# "param1": 50, +# "param2": 0 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "Grid size:", +# "linked_widgets": [ +# { +# "node": "buffer", +# "widget": "size" +# }, +# { +# "node": "buffer_2", +# "widget": "size" +# }, +# { +# "node": "gaussian_blur_x", +# "widget": "size" +# }, +# { +# "node": "gaussian_blur_y", +# "widget": "size" +# }, +# { +# "node": "buffer_3", +# "widget": "size" +# } +# ], +# "longdesc": "The resolution of the input image", +# "name": "param0", +# "shortdesc": "Size", +# "type": "linked_control" +# }, +# { +# "label": "Sigma:", +# "linked_widgets": [ +# { +# "node": "gaussian_blur_x", +# "widget": "sigma" +# }, +# { +# "node": "gaussian_blur_y", +# "widget": "sigma" +# } +# ], +# "longdesc": "The strength of the blur filter", +# "name": "param1", +# "shortdesc": "Sigma", +# "type": "linked_control" +# }, +# { +# "configurations": { +# "Both": [ +# { +# "node": "switch", +# "value": 0, +# "widget": "source" +# }, +# { +# "node": "switch_2", +# "value": 0, +# "widget": "source" +# } +# ], +# "X": [ +# { +# "node": "switch", +# "value": 0, +# "widget": "source" +# }, +# { +# "node": "switch_2", +# "value": 1, +# "widget": "source" +# } +# ], +# "Y": [ +# { +# "node": "switch", +# "value": 1, +# "widget": "source" +# }, +# { +# "node": "switch_2", +# "value": 0, +# "widget": "source" +# } +# ] +# }, +# "label": "Direction:", +# "linked_widgets": [ +# { +# "node": "switch", +# "widget": "source" +# }, +# { +# "node": "switch_2", +# "widget": "source" +# } +# ], +# "longdesc": "Apply the blur filter horizontally, vertically of in both directions", +# "name": "param2", +# "shortdesc": "Direction", +# "type": "config_control" +# } +# ] +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -928.666626, +# "y": -188.392853 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The input image", +# "name": "input", +# "shortdesc": "Input", +# "type": "rgba" +# }, +# { +# "group_size": 0, +# "longdesc": "A map that controls the strength of the blur filter", +# "name": "amount", +# "shortdesc": "Strength map", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": 193.547607, +# "y": -135.392853 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "Shows the generated blurred image", +# "name": "port0", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "seed_value": 77778, +# "type": "ios" +# }, +# { +# "name": "gaussian_blur_x", +# "node_position": { +# "x": -412.993408, +# "y": -221.281738 +# }, +# "parameters": { +# "sigma": 50, +# "size": 9 +# }, +# "type": "gaussian_blur_x" +# }, +# { +# "name": "gaussian_blur_y", +# "node_position": { +# "x": -405.993408, +# "y": 38.718262 +# }, +# "parameters": { +# "sigma": 50, +# "size": 9 +# }, +# "seed_value": 12279, +# "type": "gaussian_blur_y" +# }, +# { +# "name": "buffer_3", +# "node_position": { +# "x": -50.246796, +# "y": -133.96936 +# }, +# "parameters": { +# "lod": 0, +# "size": 9 +# }, +# "type": "buffer" +# } +# ], +# "parameters": { +# "param0": 9, +# "param1": 50, +# "param2": 0 +# }, +# "shortdesc": "Gaussian blur", +# "type": "graph" +#} + +#---------------------- +#gaussian_blur_x.mmg + +#{ +# "name": "gaussian_blur_x", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "parameters": { +# "sigma": 35.700001, +# "size": 9 +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "vec4(1.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgba" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "", +# "name": "amount", +# "type": "f" +# } +# ], +# "instance": "vec4 $(name)_fct(vec2 uv) {\n\tfloat e = 1.0/$size;\n\tvec4 rv = vec4(0.0);\n\tfloat sum = 0.0;\n\tfloat sigma = max(0.000001, $sigma*$amount(uv));\n\tfor (float i = -50.0; i <= 50.0; i += 1.0) {\n\t\tfloat coef = exp(-0.5*(pow(i/sigma, 2.0)))/(6.28318530718*sigma*sigma);\n\t\trv += $in(uv+vec2(i*e, 0.0))*coef;\n\t\tsum += coef;\n\t}\n\treturn rv/sum;\n}", +# "name": "Gaussian blur X", +# "outputs": [ +# { +# "rgba": "$(name)_fct($uv)", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 4, +# "label": "Size", +# "last": 12, +# "name": "size", +# "type": "size" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "Sigma", +# "max": 50, +# "min": 0, +# "name": "sigma", +# "step": 0.1, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +#} + +#---------------------- +#gaussian_blur_y.mmg + +#{ +# "name": "gaussian_blur_y", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "parameters": { +# "sigma": 35.700001, +# "size": 9 +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "vec4(1.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgba" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "", +# "name": "amount", +# "type": "f" +# } +# ], +# "instance": "vec4 $(name)_fct(vec2 uv) {\n\tfloat e = 1.0/$size;\n\tvec4 rv = vec4(0.0);\n\tfloat sum = 0.0;\n\tfloat sigma = max(0.000001, $sigma*$amount(uv));\n\tfor (float i = -50.0; i <= 50.0; i += 1.0) {\n\t\tfloat coef = exp(-0.5*(pow(i/sigma, 2.0)))/(6.28318530718*sigma*sigma);\n\t\trv += $in(uv+vec2(0.0, i*e))*coef;\n\t\tsum += coef;\n\t}\n\treturn rv/sum;\n}", +# "name": "Gaussian blur Y", +# "outputs": [ +# { +# "rgba": "$(name)_fct($uv)", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 4, +# "label": "Size", +# "last": 12, +# "name": "size", +# "type": "size" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "Sigma", +# "max": 50, +# "min": 0, +# "name": "sigma", +# "step": 0.1, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +#} + + +#---------------------- +#slope_blur.mmg + +#{ +# "connections": [ +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "buffer", +# "to_port": 0 +# }, +# { +# "from": "buffer", +# "from_port": 0, +# "to": "edge_detect_3_3_2", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 1, +# "to": "edge_detect_3_3_2", +# "to_port": 1 +# }, +# { +# "from": "edge_detect_3_3_2", +# "from_port": 0, +# "to": "buffer_2", +# "to_port": 0 +# }, +# { +# "from": "buffer_2", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# } +# ], +# "label": "Slope Blur", +# "longdesc": "Applys a blur effect on its input, following slopes of an input height map", +# "name": "slope_blur", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "nodes": [ +# { +# "name": "buffer", +# "node_position": { +# "x": -395.25, +# "y": -274.75 +# }, +# "parameters": { +# "lod": 0, +# "size": 10 +# }, +# "type": "buffer" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": -462.666626, +# "y": -397.666656 +# }, +# "parameters": { +# "param0": 10, +# "param1": 30 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "Grid size:", +# "linked_widgets": [ +# { +# "node": "buffer", +# "widget": "size" +# }, +# { +# "node": "edge_detect_3_3_2", +# "widget": "size" +# }, +# { +# "node": "buffer_2", +# "widget": "size" +# } +# ], +# "longdesc": "The resolution of the input image", +# "name": "param0", +# "shortdesc": "Size", +# "type": "linked_control" +# }, +# { +# "label": "Sigma", +# "linked_widgets": [ +# { +# "node": "edge_detect_3_3_2", +# "widget": "sigma" +# } +# ], +# "longdesc": "The strength of the blur filter", +# "name": "param1", +# "shortdesc": "Sigma", +# "type": "linked_control" +# } +# ] +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -872.666626, +# "y": -243.392853 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# }, +# { +# "group_size": 0, +# "longdesc": "A height map whose slopes control the strength and direction of the blur filter", +# "name": "heightmap", +# "shortdesc": "Height map", +# "type": "f" +# } +# ], +# "seed_value": 91624, +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": -45.452393, +# "y": -195.392853 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "Shows the generated blurred image", +# "name": "port0", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "edge_detect_3_3_2", +# "node_position": { +# "x": -401.725464, +# "y": -199.178955 +# }, +# "parameters": { +# "sigma": 30, +# "size": 10 +# }, +# "seed_value": -47470, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "vec4(1.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgba" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "", +# "name": "heightmap", +# "type": "f" +# } +# ], +# "instance": "vec4 $(name)_fct(vec2 uv) {\n\tfloat dx = 1.0/$size;\n float v = $heightmap(uv);\n\tvec2 slope = vec2($heightmap(uv+vec2(dx, 0.0))-v, $heightmap(uv+vec2(0.0, dx))-v);\n\tfloat slope_strength = length(slope)*$size;\n vec2 norm_slope = (slope_strength == 0.0) ? vec2(0.0, 1.0) : normalize(slope);\n vec2 e = dx*norm_slope;\n\tvec4 rv = vec4(0.0);\n\tfloat sum = 0.0;\n\tfloat sigma = max($sigma*slope_strength, 0.0001);\n\tfor (float i = 0.0; i <= 50.0; i += 1.0) {\n\t\tfloat coef = exp(-0.5*(pow(i/sigma, 2.0)))/(6.28318530718*sigma*sigma);\n\t\trv += $in(uv+i*e)*coef;\n\t\tsum += coef;\n\t}\n\treturn rv/sum;\n}", +# "name": "Slope Blur", +# "outputs": [ +# { +# "rgba": "$(name)_fct($uv)", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 4, +# "label": "Size", +# "last": 12, +# "name": "size", +# "type": "size" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "Sigma", +# "max": 50, +# "min": 0, +# "name": "sigma", +# "step": 0.1, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "buffer_2", +# "node_position": { +# "x": -392.952209, +# "y": -115.576294 +# }, +# "parameters": { +# "lod": 0, +# "size": 10 +# }, +# "type": "buffer" +# } +# ], +# "parameters": { +# "param0": 10, +# "param1": 30 +# }, +# "shortdesc": "Slope blur", +# "type": "graph" +#} + diff --git a/game/addons/mat_maker_gd/nodes/common/commons.gd b/game/addons/mat_maker_gd/nodes/common/commons.gd new file mode 100644 index 0000000..d6f6cf1 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/commons.gd @@ -0,0 +1,393 @@ +tool +extends Reference + +#pattern.mmg + +#---------------------- +#hlsl_defs.tmpl + +##define hlsl_atan(x,y) atan2(x, y) +##define mod(x,y) ((x)-(y)*floor((x)/(y))) +#inline float4 textureLod(sampler2D tex, float2 uv, float lod) { +# return tex2D(tex, uv); +#} +#inline float2 tofloat2(float x) { +# return float2(x, x); +#} +#inline float2 tofloat2(float x, float y) { +# return float2(x, y); +#} +#inline float3 tofloat3(float x) { +# return float3(x, x, x); +#} +#inline float3 tofloat3(float x, float y, float z) { +# return float3(x, y, z); +#} +#inline float3 tofloat3(float2 xy, float z) { +# return float3(xy.x, xy.y, z); +#} +#inline float3 tofloat3(float x, float2 yz) { +# return float3(x, yz.x, yz.y); +#} +#inline float4 tofloat4(float x, float y, float z, float w) { +# return float4(x, y, z, w); +#} +#inline float4 tofloat4(float x) { +# return float4(x, x, x, x); +#} +#inline float4 tofloat4(float x, float3 yzw) { +# return float4(x, yzw.x, yzw.y, yzw.z); +#} +#inline float4 tofloat4(float2 xy, float2 zw) { +# return float4(xy.x, xy.y, zw.x, zw.y); +#} +#inline float4 tofloat4(float3 xyz, float w) { +# return float4(xyz.x, xyz.y, xyz.z, w); +#} +#inline float2x2 tofloat2x2(float2 v1, float2 v2) { +# return float2x2(v1.x, v1.y, v2.x, v2.y); +#} + +#---------------------- +#glsl_defs.tmpl + +#float rand(vec2 x) { +# return fract(cos(mod(dot(x, vec2(13.9898, 8.141)), 3.14)) * 43758.5453); +#} + +#vec2 rand2(vec2 x) { +# return fract(cos(mod(vec2(dot(x, vec2(13.9898, 8.141)), +# dot(x, vec2(3.4562, 17.398))), vec2(3.14))) * 43758.5453); +#} + +#vec3 rand3(vec2 x) { +# return fract(cos(mod(vec3(dot(x, vec2(13.9898, 8.141)), +# dot(x, vec2(3.4562, 17.398)), +# dot(x, vec2(13.254, 5.867))), vec3(3.14))) * 43758.5453); +#} + +#float param_rnd(float minimum, float maximum, float seed) { +# return minimum+(maximum-minimum)*rand(vec2(seed)); +#} + +#vec3 rgb2hsv(vec3 c) { +# vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); +# vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy); +# vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx); +# +# float d = q.x - min(q.w, q.y); +# float e = 1.0e-10; +# return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +#} + +#vec3 hsv2rgb(vec3 c) { +# vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); +# vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); +# return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +#} + +#---------------------- + +static func clampv3(v : Vector3, mi : Vector3, ma : Vector3) -> Vector3: + v.x = clamp(v.x, mi.x, ma.x) + v.y = clamp(v.y, mi.y, ma.y) + v.z = clamp(v.z, mi.z, ma.z) + + return v + +static func floorc(a : Color) -> Color: + var v : Color = Color() + + v.r = floor(a.r) + v.g = floor(a.g) + v.b = floor(a.b) + v.a = floor(a.a) + + return v + +static func floorv2(a : Vector2) -> Vector2: + var v : Vector2 = Vector2() + + v.x = floor(a.x) + v.y = floor(a.y) + + return v + +static func floorv3(a : Vector3) -> Vector3: + var v : Vector3 = Vector3() + + v.x = floor(a.x) + v.y = floor(a.y) + v.z = floor(a.z) + + return v + +static func smoothstepv2(a : float, b : float, c : Vector2) -> Vector2: + var v : Vector2 = Vector2() + + v.x = smoothstep(a, b, c.x) + v.y = smoothstep(a, b, c.y) + + return v + +static func maxv2(a : Vector2, b : Vector2) -> Vector2: + var v : Vector2 = Vector2() + + v.x = max(a.x, b.x) + v.y = max(a.y, b.y) + + return v + +static func maxv3(a : Vector3, b : Vector3) -> Vector3: + var v : Vector3 = Vector3() + + v.x = max(a.x, b.x) + v.y = max(a.y, b.y) + v.z = max(a.z, b.z) + + return v + +static func absv2(v : Vector2) -> Vector2: + v.x = abs(v.x) + v.y = abs(v.y) + + return v + +static func absv3(v : Vector3) -> Vector3: + v.x = abs(v.x) + v.y = abs(v.y) + v.z = abs(v.z) + + return v + +static func cosv2(v : Vector2) -> Vector2: + v.x = cos(v.x) + v.y = cos(v.y) + + return v + +static func cosv3(v : Vector3) -> Vector3: + v.x = cos(v.x) + v.y = cos(v.y) + v.z = cos(v.z) + + return v + +static func powv2(x : Vector2, y : Vector2) -> Vector2: + x.x = pow(x.x, y.x) + x.y = pow(x.y, y.y) + + return x + +static func modv3(a : Vector3, b : Vector3) -> Vector3: + var v : Vector3 = Vector3() + + v.x = modf(a.x, b.x) + v.y = modf(a.y, b.y) + v.z = modf(a.z, b.z) + + return v + + +static func modv2(a : Vector2, b : Vector2) -> Vector2: + var v : Vector2 = Vector2() + + v.x = modf(a.x, b.x) + v.y = modf(a.y, b.y) + + return v + +static func modf(x : float, y : float) -> float: + return x - y * floor(x / y) + +static func fractv2(v : Vector2) -> Vector2: + v.x = v.x - floor(v.x) + v.y = v.y - floor(v.y) + + return v + +static func fractv3(v : Vector3) -> Vector3: + v.x = v.x - floor(v.x) + v.y = v.y - floor(v.y) + v.z = v.z - floor(v.z) + + return v + +static func fract(f : float) -> float: + return f - floor(f) + +static func clampv2(v : Vector2, pmin : Vector2, pmax : Vector2) -> Vector2: + v.x = clamp(v.x, pmin.x, pmax.x) + v.y = clamp(v.y, pmin.y, pmax.y) + + return v + +static func minv2(v1 : Vector2, v2 : Vector2) -> Vector2: + v1.x = min(v1.x, v2.x) + v1.y = min(v1.y, v2.y) + + return v1 + +static func minv3(v1 : Vector3, v2 : Vector3) -> Vector3: + v1.x = min(v1.x, v2.x) + v1.y = min(v1.y, v2.y) + v1.z = min(v1.z, v2.z) + + return v1 + +static func rand(x : Vector2) -> float: + return fract(cos(x.dot(Vector2(13.9898, 8.141))) * 43758.5453); + +static func rand2(x : Vector2) -> Vector2: + return fractv2(cosv2(Vector2(x.dot(Vector2(13.9898, 8.141)), + x.dot(Vector2(3.4562, 17.398)))) * 43758.5453); + +static func rand3(x : Vector2) -> Vector3: + return fractv3(cosv3(Vector3(x.dot(Vector2(13.9898, 8.141)), + x.dot(Vector2(3.4562, 17.398)), + x.dot(Vector2(13.254, 5.867)))) * 43758.5453); + +static func step(edge : float, x : float) -> float: + if x < edge: + return 0.0 + else: + return 1.0 + +static func stepv2(edge : Vector2, x : Vector2) -> Vector2: + edge.x = step(edge.x, x.x) + edge.y = step(edge.y, x.y) + + return edge + +static func signv2(x : Vector2) -> Vector2: + x.x = sign(x.x) + x.y = sign(x.y) + + return x + +static func transform(uv : Vector2, translate : Vector2, rotate : float, scale : Vector2, repeat : bool) -> Vector2: + var rv : Vector2 = Vector2(); + uv -= translate; + uv -= Vector2(0.5, 0.5); + rv.x = cos(rotate)*uv.x + sin(rotate)*uv.y; + rv.y = -sin(rotate)*uv.x + cos(rotate)*uv.y; + rv /= scale; + rv += Vector2(0.5, 0.5); + + if (repeat): + return fractv2(rv); + else: + return clampv2(rv, Vector2(0, 0), Vector2(1, 1)); + +static func fractf(x : float) -> float: + return x - floor(x) + +#float mix_mul(float x, float y) { +# return x*y; +#} + +static func mix_mul(x : float, y : float) -> float: + return x*y; + +#float mix_add(float x, float y) { +# return min(x+y, 1.0); +#} + +static func mix_add(x : float, y : float) -> float: + return min(x+y, 1.0); + +#float mix_max(float x, float y) { +# return max(x, y); +#} + +static func mix_max(x : float, y : float) -> float: + return max(x, y); + +#float mix_min(float x, float y) { +# return min(x, y); +#} + +static func mix_min(x : float, y : float) -> float: + return min(x, y); + +#float mix_xor(float x, float y) { +# return min(x+y, 2.0-x-y); +#} + +static func mix_xor(x : float, y : float) -> float: + return min(x+y, 2.0-x-y); + +#float mix_pow(float x, float y) { +# return pow(x, y); +#} + +static func mix_pow(x : float, y : float) -> float: + return pow(x, y); + + +#float wave_constant(float x) { +# return 1.0; +#} + +static func wave_constant(x : float) -> float: + return 1.0; + +#float wave_sine(float x) { +# return 0.5-0.5*cos(3.14159265359*2.0*x); +#} + +static func wave_sine(x : float) -> float: + return 0.5-0.5*cos(3.14159265359*2.0*x); + +#float wave_triangle(float x) { +# x = fract(x); +# return min(2.0*x, 2.0-2.0*x); +#} + +static func wave_triangle(x : float) -> float: + x = fractf(x); + return min(2.0*x, 2.0-2.0*x); + +#float wave_sawtooth(float x) { +# return fract(x); +#} + +static func wave_sawtooth(x : float) -> float: + return fractf(x); + +#float wave_square(float x) { +# return (fract(x) < 0.5) ? 0.0 : 1.0; +#} + +static func wave_square(x : float) -> float: + if (fractf(x) < 0.5): + return 0.0 + else: + return 1.0 + +#float wave_bounce(float x) { +# x = 2.0*(fract(x)-0.5); +# return sqrt(1.0-x*x); +#} + +static func wave_bounce(x : float) -> float: + x = 2.0*(fractf(x)-0.5); + return sqrt(1.0-x*x); + +static func sinewave(uv : Vector2, amplitude : float, frequency : float, phase : float) -> Color: + var f : float = 1.0- abs(2.0 * (uv.y-0.5) - amplitude * sin((frequency* uv.x + phase) * 6.28318530718)); + + return Color(f, f, f, 1) + +#from runes.mmg (old) + +static func ThickLine(uv : Vector2, posA : Vector2, posB : Vector2, radiusInv : float) -> float: + var dir : Vector2 = posA - posB; + var dirLen : float = dir.length() + var dirN : Vector2 = dir.normalized() + var dotTemp : float = clamp((uv - posB).dot(dirN), 0.0, dirLen); + var proj : Vector2 = dotTemp * dirN + posB; + var d1 : float = (uv - proj).length() + var finalGray : float = clamp(1.0 - d1 * radiusInv, 0.0, 1.0); + + return finalGray; diff --git a/game/addons/mat_maker_gd/nodes/common/curves.gd b/game/addons/mat_maker_gd/nodes/common/curves.gd new file mode 100644 index 0000000..71fdfca --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/curves.gd @@ -0,0 +1,85 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#Based on MaterialMaker's curve.gd + +#Curve PoolRealArray: p.x, p.y, ls, rs, p.x, p.y .... + +#class Point: +# var p : Vector2 +# var ls : float +# var rs : float + +#func get_shader(name) -> String: +# var shader +# shader = "float "+name+"_curve_fct(float x) {\n" +# for i in range(points.size()-1): +# if i < points.size()-2: +# shader += "if (x <= p_"+name+"_"+str(i+1)+"_x) " +# +# shader += "{\n" +# shader += "float dx = x - p_"+name+"_"+str(i)+"_x;\n" +# shader += "float d = p_"+name+"_"+str(i+1)+"_x - p_"+name+"_"+str(i)+"_x;\n" +# shader += "float t = dx/d;\n" +# shader += "float omt = (1.0 - t);\n" +# shader += "float omt2 = omt * omt;\n" +# shader += "float omt3 = omt2 * omt;\n" +# shader += "float t2 = t * t;\n" +# shader += "float t3 = t2 * t;\n" +# shader += "d /= 3.0;\n" +# shader += "float y1 = p_"+name+"_"+str(i)+"_y;\n" +# shader += "float yac = p_"+name+"_"+str(i)+"_y + d*p_"+name+"_"+str(i)+"_rs;\n" +# shader += "float ybc = p_"+name+"_"+str(i+1)+"_y - d*p_"+name+"_"+str(i+1)+"_ls;\n" +# shader += "float y2 = p_"+name+"_"+str(i+1)+"_y;\n" +# shader += "return y1*omt3 + yac*omt2*t*3.0 + ybc*omt*t2*3.0 + y2*t3;\n" +# shader += "}\n" +# +# shader += "}\n" +# return shader + +static func curve(x : float, points : PoolRealArray) -> float: + if points.size() % 4 != 0 || points.size() < 8: + return 0.0 + + var ps : int = points.size() / 4 + + for i in range(ps - 1): + var pi : int = i * 4 + var pip1 : int = (i + 1) * 4 + + if i < ps - 2: + # if (x <= p_"+name+"_"+str(i+1)+"_x) + if x > points[pip1]: + continue + + #float dx = x - p_"+name+"_"+str(i)+"_x; + var dx : float = x - points[pi]; + + #var d : float = p_"+name+"_"+str(i+1)+"_x - p_"+name+"_"+str(i)+"_x; + var d : float = points[pip1] - points[pi]; + + var t : float = dx / d + var omt : float = (1.0 - t) + var omt2 : float = omt * omt + var omt3 : float = omt2 * omt + var t2 : float = t * t + var t3 : float = t2 * t + d /= 3.0 + +# var y1 : float = p_"+name+"_"+str(i)+"_y + var y1 : float = points[pi + 1] + +# var yac : float = p_"+name+"_"+str(i)+"_y + d*p_"+name+"_"+str(i)+"_rs + var yac : float = points[pi + 1] + d * points[pi + 3] + +# var ybc : float = p_"+name+"_"+str(i+1)+"_y - d*p_"+name+"_"+str(i+1)+"_ls + var ybc : float = points[pip1 + 1] - d * points[pip1 + 2] + +# var y2 : float = p_"+name+"_"+str(i+1)+"_y + var y2 : float = points[pip1 + 1] + + return y1 * omt3 + yac * omt2 * t * 3.0 + ybc * omt * t2 * 3.0 + y2 * t3; + + return 0.0 diff --git a/game/addons/mat_maker_gd/nodes/common/dilate.gd b/game/addons/mat_maker_gd/nodes/common/dilate.gd new file mode 100644 index 0000000..9bbe8e8 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/dilate.gd @@ -0,0 +1,521 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#---------------------- +#dilate.mmg + +#{ +# "connections": [ +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "buffer", +# "to_port": 0 +# }, +# { +# "from": "buffer", +# "from_port": 0, +# "to": "dilate_pass_1", +# "to_port": 0 +# }, +# { +# "from": "dilate_pass_1", +# "from_port": 0, +# "to": "buffer_2", +# "to_port": 0 +# }, +# { +# "from": "buffer_2", +# "from_port": 0, +# "to": "dilate_pass_4", +# "to_port": 0 +# }, +# { +# "from": "dilate_pass_3", +# "from_port": 0, +# "to": "buffer_2_3", +# "to_port": 0 +# }, +# { +# "from": "buffer_2_3", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# }, +# { +# "from": "buffer_2_2", +# "from_port": 0, +# "to": "dilate_pass_3", +# "to_port": 1 +# }, +# { +# "from": "dilate_pass_4", +# "from_port": 0, +# "to": "dilate_pass_3", +# "to_port": 0 +# }, +# { +# "from": "default_color", +# "from_port": 0, +# "to": "buffer_2_2", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 1, +# "to": "default_color", +# "to_port": 0 +# } +# ], +# "label": "Dilate", +# "longdesc": "Dilates the white areas of a mask, using the colors of an optional input", +# "name": "dilate", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "nodes": [ +# { +# "name": "buffer", +# "node_position": { +# "x": -473.691315, +# "y": -200.988342 +# }, +# "parameters": { +# "lod": 0, +# "size": 9 +# }, +# "type": "buffer" +# }, +# { +# "name": "buffer_2", +# "node_position": { +# "x": -255.691315, +# "y": -123.988342 +# }, +# "parameters": { +# "lod": 0, +# "size": 9 +# }, +# "type": "buffer" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": -140.306458, +# "y": -377.953613 +# }, +# "parameters": { +# "param0": 9, +# "param1": 0.1, +# "param2": 0, +# "param3": 0 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "", +# "linked_widgets": [ +# { +# "node": "buffer", +# "widget": "size" +# }, +# { +# "node": "buffer_2", +# "widget": "size" +# }, +# { +# "node": "buffer_2_2", +# "widget": "size" +# }, +# { +# "node": "dilate_pass_1", +# "widget": "s" +# }, +# { +# "node": "dilate_pass_4", +# "widget": "s" +# }, +# { +# "node": "buffer_2_3", +# "widget": "size" +# } +# ], +# "longdesc": "The resolution of the input images", +# "name": "param0", +# "shortdesc": "Size", +# "type": "linked_control" +# }, +# { +# "label": "", +# "linked_widgets": [ +# { +# "node": "dilate_pass_1", +# "widget": "d" +# }, +# { +# "node": "dilate_pass_4", +# "widget": "d" +# } +# ], +# "longdesc": "The length of the dilate effect", +# "name": "param1", +# "shortdesc": "Length", +# "type": "linked_control" +# }, +# { +# "label": "", +# "linked_widgets": [ +# { +# "node": "dilate_pass_3", +# "widget": "amount" +# } +# ], +# "longdesc": "0 to generate a gradient to black while dilating, 1 to fill with input color", +# "name": "param2", +# "shortdesc": "Fill", +# "type": "linked_control" +# }, +# { +# "label": "", +# "linked_widgets": [ +# { +# "node": "dilate_pass_4", +# "widget": "distance" +# } +# ], +# "name": "param3", +# "shortdesc": "Distance function", +# "type": "linked_control" +# } +# ] +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -872.306458, +# "y": -171.4814 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The input mask whose white areas will be dilated", +# "name": "mask", +# "shortdesc": "Mask", +# "type": "f" +# }, +# { +# "group_size": 0, +# "longdesc": "The optional source for colors", +# "name": "source", +# "shortdesc": "Source", +# "type": "rgb" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": 254.21106, +# "y": -64.4814 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "Shows the dilated image", +# "name": "out", +# "shortdesc": "Output", +# "type": "rgb" +# } +# ], +# "seed_value": -14401, +# "type": "ios" +# }, +# { +# "name": "buffer_2_2", +# "node_position": { +# "x": -255.323547, +# "y": -44.695679 +# }, +# "parameters": { +# "lod": 0, +# "size": 9 +# }, +# "type": "buffer" +# }, +# { +# "name": "dilate_pass_1", +# "node_position": { +# "x": -252.698792, +# "y": -201.368988 +# }, +# "parameters": { +# "d": 0.1, +# "s": 9 +# }, +# "seed_value": 71939, +# "type": "dilate_pass_1" +# }, +# { +# "name": "dilate_pass_3", +# "node_position": { +# "x": -31.698792, +# "y": -72.368988 +# }, +# "parameters": { +# "amount": 0 +# }, +# "type": "dilate_pass_3" +# }, +# { +# "name": "dilate_pass_4", +# "node_position": { +# "x": -31.689392, +# "y": -186.577301 +# }, +# "parameters": { +# "d": 0.1, +# "distance": 0, +# "s": 9 +# }, +# "type": "dilate_pass_2" +# }, +# { +# "name": "buffer_2_3", +# "node_position": { +# "x": -46.966125, +# "y": -0.711548 +# }, +# "parameters": { +# "lod": 0, +# "size": 9 +# }, +# "type": "buffer" +# }, +# { +# "name": "default_color", +# "node_position": { +# "x": -469.868713, +# "y": -98.02066 +# }, +# "parameters": { +# "default": { +# "a": 1, +# "b": 1, +# "g": 1, +# "r": 1, +# "type": "Color" +# } +# }, +# "type": "default_color" +# } +# ], +# "parameters": { +# "param0": 9, +# "param1": 0.1, +# "param2": 0, +# "param3": 0 +# }, +# "shortdesc": "Dilate", +# "type": "graph" +#} + +#---------------------- +#dilate_pass_1.mmg + +#{ +# "name": "distance_pass_1", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "parameters": { +# "d": 0.1, +# "s": 9 +# }, +# "seed_value": 8258, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "0.0", +# "function": true, +# "label": "", +# "name": "in", +# "type": "f" +# } +# ], +# "instance": "vec3 $(name)_distance_h(vec2 uv) {\n\tvec2 e = vec2(1.0/$s, 0.0);\n\tint steps = int($s*$d);\n\tfloat rv = 0.0;\n\tvec2 source_uv;\n\tfor (int i = 0; i < steps; ++i) {\n\t\tsource_uv = uv+float(i)*e;\n\t\tif ($in(source_uv) > 0.5) {\n\t\t\trv = 1.0-float(i)*e.x/$d;\n\t\t\tbreak;\n\t\t}\n\t\tsource_uv = uv-float(i)*e;\n\t\tif ($in(source_uv) > 0.5) {\n\t\t\trv = 1.0-float(i)*e.x/$d;\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn vec3(rv, source_uv);\n}\n", +# "name": "Distance pass 1", +# "outputs": [ +# { +# "rgb": "$(name)_distance_h($uv)", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 6, +# "label": "", +# "last": 12, +# "name": "s", +# "type": "size" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "", +# "max": 1, +# "min": 0, +# "name": "d", +# "step": 0.01, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +#} + +#---------------------- +#dilate_pass_2.mmg + +#{ +# "name": "dilate_pass_2", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "parameters": { +# "d": 0.25, +# "distance": 0, +# "s": 9 +# }, +# "seed_value": 44978, +# "shader_model": { +# "code": "", +# "global": "float dilate_distance_euclidian(float x, float y, float d) {\n\treturn 1.0-sqrt((1.0-x)*(1.0-x)+y*y/d/d);\n}\n\nfloat dilate_distance_manhattan(float x, float y, float d) {\n\treturn 1.0-(abs(1.0-x)+abs(y)/d);\n}\n\nfloat dilate_distance_chebyshev(float x, float y, float d) {\n\treturn 1.0-max(abs(1.0-x), abs(y)/d);\n}\n\n", +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgb" +# } +# ], +# "instance": "vec3 $(name)_distance_v(vec2 uv) {\n\tvec2 e = vec2(0.0, 1.0/$s);\n\tint steps = int($s*$d);\n\tvec3 p = $in(uv);\n\tfor (int i = 0; i < steps; ++i) {\n\t\tvec2 dx = float(i)*e;\n\t\tvec3 p2 = $in(uv+dx);\n\t\tif (p2.x > p.x) {\n\t\t\tp2.x = dilate_distance_$distance(p2.x, dx.y, $d);\n\t\t\tp = mix(p, p2, step(p.x, p2.x));\n\t\t}\n\t\tp2 = $in(uv-dx);\n\t\tif (p2.x > p.x) {\n\t\t\tp2.x = dilate_distance_$distance(p2.x, dx.y, $d);\n\t\t\tp = mix(p, p2, step(p.x, p2.x));\n\t\t}\n\t}\n\treturn p;\n}\n", +# "name": "Distance pass 2", +# "outputs": [ +# { +# "rgb": "$(name)_distance_v($uv)", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 6, +# "label": "", +# "last": 12, +# "name": "s", +# "type": "size" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "", +# "max": 1, +# "min": 0, +# "name": "d", +# "step": 0.01, +# "type": "float" +# }, +# { +# "default": 2, +# "label": "", +# "name": "distance", +# "type": "enum", +# "values": [ +# { +# "name": "Euclidian", +# "value": "euclidian" +# }, +# { +# "name": "Manhattan", +# "value": "manhattan" +# }, +# { +# "name": "Chebyshev", +# "value": "chebyshev" +# } +# ] +# } +# ] +# }, +# "type": "shader" +#} + +#---------------------- +#dilate_pass_3.mmg + +#{ +# "name": "distance_pass_3", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "parameters": { +# "amount": 0 +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "label": "", +# "name": "distance", +# "type": "rgb" +# }, +# { +# "default": "vec3(1.0)", +# "label": "", +# "name": "source", +# "type": "rgb" +# } +# ], +# "instance": "", +# "name": "Distance pass 3", +# "outputs": [ +# { +# "rgb": "$source($distance($uv).yz)*mix($distance($uv).x, 1.0, $amount)", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0, +# "label": "", +# "max": 1, +# "min": 0, +# "name": "amount", +# "step": 0.01, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +#} + diff --git a/game/addons/mat_maker_gd/nodes/common/edge_detect.gd b/game/addons/mat_maker_gd/nodes/common/edge_detect.gd new file mode 100644 index 0000000..a4fc754 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/edge_detect.gd @@ -0,0 +1,223 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#---------------------- +#edge_detect.mmg +#An edge detect filter that detects edges along all directions and draws them in white on a black background + +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "function": true, +# "label": "", +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgb" +# } +# ], +# "instance": "float $(name)_fct(vec2 uv) {\n\tvec3 e_base = vec3(1.0/$size, -1.0/$size, 0);\n\tvec3 ref = $in(uv);\n\tvec3 e = vec3(0);\n\tfloat rv = 0.0;\n\tfor (int i = 0; i < int($width); ++i) {\n\t\te += e_base;\n\t\trv += length($in(uv+e.xy)-ref);\n\t\trv += length($in(uv-e.xy)-ref);\n\t\trv += length($in(uv+e.xx)-ref);\n\t\trv += length($in(uv-e.xx)-ref);\n\t\trv += length($in(uv+e.xz)-ref);\n\t\trv += length($in(uv-e.xz)-ref);\n\t\trv += length($in(uv+e.zx)-ref);\n\t\trv += length($in(uv-e.zx)-ref);\n\t\trv *= 2.0;\n\t}\n\treturn rv*pow(2.0, -$width);\n}", +# "outputs": [ +# { +# "f": "clamp(100.0*($(name)_fct($uv)-$threshold), 0.0, 1.0)", +# "longdesc": "Shows the generated outlines", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 4, +# "label": "Size", +# "last": 12, +# "longdesc": "The resolution of the input image", +# "name": "size", +# "shortdesc": "Size", +# "type": "size" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Width", +# "max": 5, +# "min": 1, +# "name": "width", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "Threshold", +# "max": 1, +# "min": 0, +# "name": "threshold", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#edge_detect_1.mmg +#An edge detect filter that detects edges along all directions and draws them in white on a black background + +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "function": true, +# "label": "", +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgb" +# } +# ], +# "instance": "float $(name)_fct(vec2 uv) {\n\tvec3 e = vec3(1.0/$size, -1.0/$size, 0);\n\tvec3 rv = 8.0*$in(uv);\n\trv -= $in(uv+e.xy);\n\trv -= $in(uv-e.xy);\n\trv -= $in(uv+e.xx);\n\trv -= $in(uv-e.xx);\n\trv -= $in(uv+e.xz);\n\trv -= $in(uv-e.xz);\n\trv -= $in(uv+e.zx);\n\trv -= $in(uv-e.zx);\n\trv = abs(rv);\n\treturn max(rv.x, max(rv.y ,rv.z))*$size;\n}", +# "outputs": [ +# { +# "f": "clamp($(name)_fct($uv), 0.0, 1.0)", +# "longdesc": "Shows the generated outlines", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 4, +# "label": "Size", +# "last": 12, +# "longdesc": "The resolution of the input image", +# "name": "size", +# "shortdesc": "Size", +# "type": "size" +# } +# ], + +#---------------------- +#edge_detect_2.mmg +#An edge detect filter that detects edges horizontally and vertically and draws them in white on a black background + +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "function": true, +# "label": "", +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgb" +# } +# ], +# "instance": "float $(name)_fct(vec2 uv) {\n\tvec2 e = vec2(1.0/$size, 0.0);\n\tvec3 rv = 4.0*$in(uv);\n\trv -= $in(uv+e.xy);\n\trv -= $in(uv-e.xy);\n\trv -= $in(uv+e.yx);\n\trv -= $in(uv-e.yx);\n\trv = abs(rv);\n\treturn max(rv.x, max(rv.y ,rv.z))*$size;\n}", +# "outputs": [ +# { +# "f": "clamp($(name)_fct($uv), 0.0, 1.0)", +# "longdesc": "Shows the generated outlines", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 4, +# "label": "Size", +# "last": 12, +# "longdesc": "The resolution of the input image", +# "name": "size", +# "shortdesc": "Size", +# "type": "size" +# } +# ], + +#---------------------- +#edge_detect_3.mmg +#An edge detect filter that detects edges along diagonals and draws them in white on a black background + +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "function": true, +# "label": "", +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgb" +# } +# ], +# "instance": "float $(name)_fct(vec2 uv) {\n\tvec2 e = vec2(1.0/$size, -1.0/$size);\n\tvec3 rv = 4.0*$in(uv);\n\trv -= $in(uv+e.xy);\n\trv -= $in(uv-e.xy);\n\trv -= $in(uv+e.xx);\n\trv -= $in(uv-e.xx);\n\trv = abs(rv);\n\treturn max(rv.x, max(rv.y ,rv.z))*$size;\n}", +# "outputs": [ +# { +# "f": "clamp($(name)_fct($uv), 0.0, 1.0)", +# "longdesc": "Shows the generated outlines", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 4, +# "label": "Size", +# "last": 12, +# "longdesc": "The resolution of the input image", +# "name": "size", +# "shortdesc": "Size", +# "type": "size" +# } +# ], + +#---------------------- +#mul_detect.mmg + +# "code": "float $(name_uv)_d = ($in($uv)-$v)/$t;", +# "global": "", +# "inputs": [ +# { +# "default": "1.0", +# "label": "", +# "name": "mul", +# "type": "f" +# }, +# { +# "default": "0.0", +# "label": "", +# "name": "in", +# "type": "f" +# } +# ], +# "instance": "", +# "name": "MulDetect", +# "outputs": [ +# { +# "f": "$mul($uv)*clamp(1.0-$(name_uv)_d*$(name_uv)_d, 0.0, 1.0)", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0.5, +# "label": "Value", +# "max": 1, +# "min": 0, +# "name": "v", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.1, +# "label": "Tolerance", +# "max": 1, +# "min": 0.01, +# "name": "t", +# "step": 0.001, +# "type": "float" +# } +# ] + diff --git a/game/addons/mat_maker_gd/nodes/common/fills.gd b/game/addons/mat_maker_gd/nodes/common/fills.gd new file mode 100644 index 0000000..d636208 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/fills.gd @@ -0,0 +1,559 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#---------------------- +#fill.mmg +#Fills areas defined by white outlines of its input + +#{ +# "connections": [ +# { +# "from": "iterate_buffer", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# }, +# { +# "from": "iterate_buffer", +# "from_port": 1, +# "to": "fill_iterate", +# "to_port": 0 +# }, +# { +# "from": "fill_iterate", +# "from_port": 0, +# "to": "iterate_buffer", +# "to_port": 1 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "fill_preprocess", +# "to_port": 0 +# }, +# { +# "from": "fill_preprocess", +# "from_port": 0, +# "to": "iterate_buffer", +# "to_port": 0 +# } +# ], +# "nodes": [ +# { +# "name": "iterate_buffer", +# "node_position": { +# "x": -129.307083, +# "y": -370.480591 +# }, +# "parameters": { +# "iterations": 10, +# "size": 8 +# }, +# "seed_value": 29168, +# "type": "iterate_buffer" +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -542.307068, +# "y": -370.662445 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The input image whose white outlines must be filled", +# "name": "port0", +# "shortdesc": "Input", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": 198.267258, +# "y": -362.662445 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "Generates fill data, to be connected to a fill companion node", +# "name": "port0", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": -171.110138, +# "y": -541.509705 +# }, +# "parameters": { +# "param0": 8, +# "param1": 10 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "", +# "linked_widgets": [ +# { +# "node": "iterate_buffer", +# "widget": "size" +# }, +# { +# "node": "fill_preprocess", +# "widget": "s" +# }, +# { +# "node": "fill_iterate", +# "widget": "s" +# } +# ], +# "longdesc": "The resolution of the inptu image", +# "name": "param0", +# "shortdesc": "Size", +# "type": "linked_control" +# }, +# { +# "label": "", +# "linked_widgets": [ +# { +# "node": "iterate_buffer", +# "widget": "iterations" +# } +# ], +# "longdesc": "The number of iterations of the algorithm. The optimal value depends a lot on the input image.", +# "name": "param1", +# "shortdesc": "Iterations", +# "type": "linked_control" +# } +# ] +# }, +# { +# "name": "fill_iterate", +# "node_position": { +# "x": -92.913391, +# "y": -290.886963 +# }, +# "parameters": { +# "s": 8 +# }, +# "type": "fill_iterate" +# }, +# { +# "name": "fill_preprocess", +# "node_position": { +# "x": -110.443481, +# "y": -427.202026 +# }, +# "parameters": { +# "s": 8 +# }, +# "type": "fill_preprocess" +# } +# ], +# "parameters": { +# "param0": 8, +# "param1": 10 +# }, +# "shortdesc": "Fill", +# "type": "graph" +#} + +#---------------------- +#fill_iterate.mmg + +# "inputs": [ +# { +# "default": "0.0", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgba" +# } +# ], +# "instance": "vec4 $(name)_fill(vec2 uv) {\n\tfloat size = $s;\n\tint iterations = min(int(size), 256);\n\tvec4 color = $in(fract(uv));\n\tif (color.z+color.w < 1.0/size) {\n\t\treturn vec4(0.0);\n\t}\n\tvec2 offsets[8] = { vec2(1.0, 0.0), vec2(-1.0, 0.0), vec2(0.0, 1.0), vec2(0.0, -1.0), vec2(1.0, 1.0), vec2(-1.0, 1.0), vec2(-1.0, 1.0), vec2(-1.0, -1.0) };\n\tfor (int o = 0; o < 8; ++o) {\n\t\tvec2 uv2 = uv;\n\t\tvec2 offset = offsets[o]/size;\n\t\tfor (int i = 1; i < iterations; i += 1) {\n\t\t\tuv2 += offset;\n\t\t\tvec4 color2 = $in(fract(uv2));\n\t\t\tif (color2.z+color2.w == 0.0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvec2 p1 = color.xy+floor(uv-color.xy);\n\t\t\tvec2 p2 = color2.xy+floor(uv2-color2.xy);\n\t\t\tvec2 p = min(p1, p2);\n\t\t\tvec2 s = max(p1+color.zw, p2+color2.zw)-p;\n\t\t\tcolor = mix(vec4(0.0, 0.0, 1.0, 1.0), vec4(fract(p), s), step(s.xyxy, vec4(1.0)));\n\t\t}\n\t}\n\treturn floor(color*size)/size;\n}\n", +# "outputs": [ +# { +# "rgba": "$(name)_fill($uv)", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 6, +# "label": "", +# "last": 12, +# "name": "s", +# "type": "size" +# } +# ] + +#---------------------- +#fill_preprocess.mmg + +# "inputs": [ +# { +# "default": "0.0", +# "function": true, +# "label": "", +# "name": "in", +# "type": "f" +# } +# ], +# "outputs": [ +# { +# "rgba": "flood_fill_preprocess($uv, $in($uv), $s)", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": 10, +# "first": 0, +# "label": "", +# "last": 12, +# "name": "s", +# "type": "size" +# } +# ] + + + + +#---------------------- +#fill_to_color.mmg +#A fill companion node that fills each area with a color taken from a color map image + +# "code": "vec4 $(name_uv)_bb = $in($uv);", +# "inputs": [ +# { +# "default": "vec4(0.0)", +# "label": "", +# "longdesc": "The input fill data, to be connected to the output of a Fill node", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# }, +# { +# "default": "vec4(1.0)", +# "label": "", +# "longdesc": "The image from which colors are taken", +# "name": "map", +# "shortdesc": "Color map", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The generated output image", +# "rgba": "mix($edgecolor, $map(fract($(name_uv)_bb.xy+0.5*$(name_uv)_bb.zw)), step(0.0000001, dot($(name_uv)_bb.zw, vec2(1.0))))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": { +# "a": 1, +# "b": 1, +# "g": 1, +# "r": 1 +# }, +# "label": "Edge Color", +# "longdesc": "The color used to draw outlines", +# "name": "edgecolor", +# "shortdesc": "Outline color", +# "type": "color" +# } +# ], + +#---------------------- +#fill_to_position.mmg +#A fill companion node that fills each area with a greyscale value that depends on its position + +# "code": "vec2 $(name_uv)_c = fract($in($uv).xy+0.5*$in($uv).zw);", +# "inputs": [ +# { +# "default": "vec4(0.0)", +# "label": "", +# "longdesc": "The input fill data, to be connected to the output of a Fill node", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "f": "$axis", +# "longdesc": "The generated output image", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": 2, +# "label": "", +# "longdesc": "The position value to be used:\n- X for horizontal axis\n- Y for vertical axis\n- Radial for distance to center", +# "name": "axis", +# "shortdesc": "Position", +# "type": "enum", +# "values": [ +# { +# "name": "X", +# "value": "$(name_uv)_c.x" +# }, +# { +# "name": "Y", +# "value": "$(name_uv)_c.y" +# }, +# { +# "name": "Radial", +# "value": "length($(name_uv)_c-vec2(0.5))" +# } +# ] +# } +# ], + +#---------------------- +#fill_to_random_color.mmg +#A fill companion node that fills each area with a random color + +# "code": "vec4 $(name_uv)_bb = $in($uv);", +# "inputs": [ +# { +# "default": "vec4(0.0)", +# "label": "", +# "longdesc": "The input fill data, to be connected to the output of a Fill node", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The generated output image", +# "rgb": "mix($edgecolor.rgb, rand3(vec2(float($seed), rand(vec2(rand($(name_uv)_bb.xy), rand($(name_uv)_bb.zw))))), step(0.0000001, dot($(name_uv)_bb.zw, vec2(1.0))))", +# "shortdesc": "Output", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "default": { +# "a": 1, +# "b": 1, +# "g": 1, +# "r": 1 +# }, +# "label": "Edge Color", +# "longdesc": "The color used for outlines", +# "name": "edgecolor", +# "shortdesc": "Outline color", +# "type": "color" +# } +# ], + +#---------------------- +#fill_to_random_grey.mmg +#A fill companion node that fills each area with a random greyscale value + +# "code": "vec4 $(name_uv)_bb = $in($uv);", +# "inputs": [ +# { +# "default": "vec4(0.0)", +# "label": "", +# "longdesc": "The input fill data, to be connected to the output of a Fill node", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "f": "mix($edgecolor, rand(vec2(float($seed), rand(vec2(rand($(name_uv)_bb.xy), rand($(name_uv)_bb.zw))))), step(0.0000001, dot($(name_uv)_bb.zw, vec2(1.0))))", +# "longdesc": "The generated output image", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 1, +# "label": "Edge color", +# "longdesc": "The value used for the outlines", +# "max": 1, +# "min": 0, +# "name": "edgecolor", +# "shortdesc": "Outline color", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#fill_to_size.mmg +#A fill companion node that fills each area with a greyscale value that depends on its size + +# "code": "vec4 $(name_uv)_bb = $in($uv);", +# "inputs": [ +# { +# "default": "vec4(0.0)", +# "label": "", +# "longdesc": "The input fill data, to be connected to the output of a Fill node", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "f": "$formula", +# "longdesc": "The generated output image", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": 0, +# "label": "", +# "longdesc": "The size value to be used (area, width, height or maximum between width and height)", +# "name": "formula", +# "shortdesc": "Size", +# "type": "enum", +# "values": [ +# { +# "name": "Area", +# "value": "sqrt($(name_uv)_bb.z*$(name_uv)_bb.w)" +# }, +# { +# "name": "Width", +# "value": "$(name_uv)_bb.z" +# }, +# { +# "name": "Height", +# "value": "$(name_uv)_bb.w" +# }, +# { +# "name": "max(W, H)", +# "value": "max($(name_uv)_bb.z, $(name_uv)_bb.w)" +# } +# ] +# } +# ], + +#---------------------- +#fill_to_uv.mmg +#A fill companion node that generated an UV map that follows each filled area + +# "code": "vec4 $(name_uv)_bb = $in($uv);", +# "inputs": [ +# { +# "default": "vec4(0.0)", +# "label": "", +# "longdesc": "The input fill data, to be connected to the output of a Fill node", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The generated output UV map, to be connected to a Custom UV node", +# "rgb": "fill_to_uv_$mode($uv, $(name_uv)_bb, float($seed))", +# "shortdesc": "Output", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "default": 0, +# "label": "", +# "longdesc": "The mode decides how the UVs are layed out on each bounding box:\n- Stretch mode where the UV layout is stretched to the bounding box. \n- Square mode where the UV layout is even and centerered based on the longest axis of the bounding box.", +# "name": "mode", +# "shortdesc": "Mode", +# "type": "enum", +# "values": [ +# { +# "name": "Stretch", +# "value": "stretch" +# }, +# { +# "name": "Square", +# "value": "square" +# } +# ] +# } +# ], + +#vec4 flood_fill_preprocess(vec2 uv, float c, float s) { +# if (c > 0.5) { +# return vec4(0.0); +# } else { +# return vec4(floor(uv*s)/s, vec2(1.0/s)); +# } +#} + +static func flood_fill_preprocess(uv : Vector2, c : float, s : float) -> Color: + if (c > 0.5): + return Color(0, 0, 0, 0) + else: + uv = Commons.floorv2(uv * s) / s + var f : float = 1.0 / s + return Color(uv.x, uv.y, f, f) + +#vec3 fill_to_uv_stretch(vec2 coord, vec4 bb, float seed) { +# vec2 uv_islands = fract(coord-bb.xy)/bb.zw; +# float random_value = rand(vec2(seed)+bb.xy+bb.zw); +# return vec3(uv_islands, random_value); +#} + +static func fill_to_uv_stretch(coord : Vector2, bb : Color, pseed : float) -> Vector3: + var uv_islands : Vector2 = Commons.fractv2(coord - Vector2(bb.r, bb.g)) / Vector2(bb.b, bb.a) + var random_value : float = Commons.rand(Vector2(pseed, pseed) + Vector2(bb.r, bb.g) + Vector2(bb.b, bb.a)) + return Vector3(uv_islands.x, uv_islands.y, random_value) + +#vec3 fill_to_uv_square(vec2 coord, vec4 bb, float seed) { +# vec2 uv_islands; +# +# if (bb.z > bb.w) { +# vec2 adjusted_coord = coord + vec2(0.0, (bb.z - bb.w) / 2.0); +# uv_islands = fract(adjusted_coord-bb.xy)/bb.zz; +# } else { +# vec2 adjusted_coord = coord + vec2((bb.w - bb.z) / 2.0, 0.0); +# uv_islands = fract(adjusted_coord-bb.xy)/bb.ww; +# } +# +# float random_value = rand(vec2(seed)+bb.xy+bb.zw); +# return vec3(uv_islands, random_value); +#} + +static func fill_to_uv_square(coord : Vector2, bb : Color, pseed : float) -> Vector3: + var uv_islands : Vector2 = Vector2() + + if (bb.b > bb.a): + var adjusted_coord : Vector2 = coord + Vector2(0.0, (bb.b - bb.a) / 2.0); + uv_islands = Commons.fractv2(adjusted_coord - Vector2(bb.r, bb.g)) / Vector2(bb.b, bb.b) + else: + var adjusted_coord : Vector2 = coord + Vector2((bb.a - bb.b) / 2.0, 0.0); + uv_islands = Commons.fractv2(adjusted_coord - Vector2(bb.r, bb.g)) / Vector2(bb.a, bb.a) + + var random_value : float = Commons.rand(Vector2(pseed, pseed) + Vector2(bb.r, bb.g) + Vector2(bb.b, bb.a)) + return Vector3(uv_islands.x, uv_islands.y, random_value) diff --git a/game/addons/mat_maker_gd/nodes/common/filter.gd b/game/addons/mat_maker_gd/nodes/common/filter.gd new file mode 100644 index 0000000..59b8055 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/filter.gd @@ -0,0 +1,4442 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#adjust_hsv.mmg +#brightness_contrast.mmg +#greyscale.mmg + +#main node methods: adjust_hsv, brightness_contrast + +#---------------------- +#colorize.mmg +#Remaps a greyscale image to a custom gradient + +#Inputs: +#input, float, $uv.x - The input greyscale image - (Image input) + +#Outputs: +#output (rgba) $gradient($input($uv)) - Image output + +#Parameters: +#gradient, Gradient + +#---------------------- +#default_color.mmg + +# "inputs": [ +# { +# "default": "$default", +# "label": "", +# "name": "in", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "rgba": "$in($uv)", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": { +# "a": 1, +# "b": 1, +# "g": 1, +# "r": 1 +# }, +# "label": "", +# "name": "default", +# "type": "color" +# } +# ] + +#---------------------- +#decompose.mmg +#Decomposes an RGBA input into 4 greyscale images + +# "inputs": [ +# { +# "default": "vec4(1.0)", +# "label": "", +# "longdesc": "The RGBA input image", +# "name": "i", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "f": "$i($uv).r", +# "longdesc": "Shows the Red channel of the input", +# "shortdesc": "Red", +# "type": "f" +# }, +# { +# "f": "$i($uv).g", +# "longdesc": "Shows the Green channel of the input", +# "shortdesc": "Green", +# "type": "f" +# }, +# { +# "f": "$i($uv).b", +# "longdesc": "Shows the Blue channel of the input", +# "shortdesc": "Blue", +# "type": "f" +# }, +# { +# "f": "$i($uv).a", +# "longdesc": "Shows the Alpha channel of the input", +# "shortdesc": "Alpha", +# "type": "f" +# } +# ], + +#---------------------- +#auto_tones.mmg + +#{ +# "connections": [ +# { +# "from": "graph", +# "from_port": 0, +# "to": "tones_map", +# "to_port": 1 +# }, +# { +# "from": "graph", +# "from_port": 1, +# "to": "tones_map", +# "to_port": 2 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "graph", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "tones_map", +# "to_port": 0 +# }, +# { +# "from": "tones_map", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# } +# ], +# "label": "Auto Tones", +# "longdesc": "Finds the minimum and maximum values in the input texture and tone maps it to the full 0.0 - 1.0 range.", +# "name": "auto_tones", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "nodes": [ +# { +# "connections": [ +# { +# "from": "combine", +# "from_port": 0, +# "to": "iterate_buffer", +# "to_port": 0 +# }, +# { +# "from": "decompose", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# }, +# { +# "from": "decompose", +# "from_port": 1, +# "to": "gen_outputs", +# "to_port": 1 +# }, +# { +# "from": "iterate_buffer", +# "from_port": 0, +# "to": "decompose", +# "to_port": 0 +# }, +# { +# "from": "iterate_buffer", +# "from_port": 1, +# "to": "14423", +# "to_port": 0 +# }, +# { +# "from": "14423", +# "from_port": 0, +# "to": "iterate_buffer", +# "to_port": 1 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "combine", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "combine", +# "to_port": 1 +# } +# ], +# "label": "Find Min Max", +# "longdesc": "", +# "name": "graph", +# "node_position": { +# "x": 1105.399902, +# "y": -179.398849 +# }, +# "nodes": [ +# { +# "name": "14423", +# "node_position": { +# "x": 344, +# "y": 217 +# }, +# "parameters": { +# "size": 10 +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgb" +# } +# ], +# "instance": "vec3 $(name)_compare(vec2 uv, float size) {\n\tfloat iter = $in(uv).b;\n\tsize = size / pow(2.0, (iter * 100.0) );\n\titer += 0.01;\n\tfloat pixel_offset = 1.0 / size;\n\tvec2 half_res_uv = floor(uv * size / 2.0) / size * 2.0 + pixel_offset / 2.0;\n\tvec3 values[4];\n\tvalues[0] = $in(half_res_uv);\n\tvalues[1] = $in(half_res_uv + vec2(pixel_offset, 0.0));\n\tvalues[2] = $in(half_res_uv + vec2(0.0, pixel_offset));\n\tvalues[3] = $in(half_res_uv + vec2(pixel_offset, pixel_offset));\n\t\n\tfloat lowest = 1.0;\n\tfloat highest = 0.0;\n\t\n\tfor (int i = 0; i < 4; i++) {\n\t\tlowest = values[i].r < lowest ? values[i].r : lowest;\n\t\thighest = values[i].g > highest ? values[i].g : highest;\n\t}\n\t\n\treturn vec3( lowest, highest , iter);\n}", +# "name": "Compare Neighbor", +# "outputs": [ +# { +# "rgb": "$(name)_compare($uv, $size)", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "default": 10, +# "first": 1, +# "label": "", +# "last": 13, +# "name": "size", +# "type": "size" +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "iterate_buffer", +# "node_position": { +# "x": 328, +# "y": 63 +# }, +# "parameters": { +# "filter": false, +# "iterations": 13, +# "mipmap": false, +# "size": 10 +# }, +# "seed_value": 29168, +# "type": "iterate_buffer" +# }, +# { +# "name": "combine", +# "node_position": { +# "x": 376, +# "y": -75 +# }, +# "parameters": { +# +# }, +# "type": "combine" +# }, +# { +# "name": "decompose", +# "node_position": { +# "x": 605, +# "y": 64 +# }, +# "parameters": { +# +# }, +# "type": "decompose" +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -199, +# "y": 23 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "", +# "name": "in", +# "shortdesc": "In", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": 831, +# "y": 42 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "", +# "name": "min", +# "shortdesc": "Min", +# "type": "f" +# }, +# { +# "group_size": 0, +# "longdesc": "", +# "name": "max", +# "shortdesc": "Max", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": 248.399994, +# "y": -292 +# }, +# "parameters": { +# "param0": 10 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "Size", +# "linked_widgets": [ +# { +# "node": "iterate_buffer", +# "widget": "size" +# }, +# { +# "node": "14423", +# "widget": "size" +# } +# ], +# "name": "param0", +# "type": "linked_control" +# } +# ] +# } +# ], +# "parameters": { +# "param0": 10 +# }, +# "shortdesc": "", +# "type": "graph" +# }, +# { +# "name": "tones_map", +# "node_position": { +# "x": 1142.528442, +# "y": -88.26989 +# }, +# "parameters": { +# +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "vec4(0.5 ,0.5, 0.5, 1.0)", +# "label": "", +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "f" +# }, +# { +# "default": "0.0", +# "label": "", +# "name": "in_min", +# "type": "f" +# }, +# { +# "default": "1.0", +# "label": "", +# "name": "in_max", +# "type": "f" +# } +# ], +# "instance": "", +# "longdesc": "Maps linearly an input tones interval to an output tones interval.", +# "name": "Mapping", +# "outputs": [ +# { +# "f": "($in($uv)-$in_min($uv))/($in_max($uv)-$in_min($uv))", +# "longdesc": "Shows the generated remapped image", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# +# ], +# "shortdesc": "Tones map" +# }, +# "type": "shader" +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": 665.528564, +# "y": -136.535721 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": 1425.400024, +# "y": -135.535721 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "Shows the generated remapped image", +# "name": "out", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": 1024.664307, +# "y": -298.400757 +# }, +# "parameters": { +# "param0": 10 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "", +# "linked_widgets": [ +# { +# "node": "graph", +# "widget": "param0" +# } +# ], +# "longdesc": "Buffers are used to find the mininum and maximum values for the input image. If the input has small details a higher resolution buffer might be needed to capture precise min and max values.\n\nNote: The output itself will not be buffered.", +# "name": "param0", +# "shortdesc": "Size", +# "type": "linked_control" +# } +# ] +# } +# ], +# "parameters": { +# "param0": 10 +# }, +# "shortdesc": "Auto Tones", +# "type": "graph" +#} + +#---------------------- +#blend.mmg +#Blends its input, using an optional mask + +#Outputs: + +#Output - (color) +#vec4 $(name_uv)_s1 = $s1($uv); +#vec4 $(name_uv)_s2 = $s2($uv); +#float $(name_uv)_a = $amount*$a($uv); +#vec4(blend_$blend_type($uv, $(name_uv)_s1.rgb, $(name_uv)_s2.rgb, $(name_uv)_a*$(name_uv)_s1.a), min(1.0, $(name_uv)_s2.a+$(name_uv)_a*$(name_uv)_s1.a)) + +#Inputs: +#in1, color, default vec4($uv.x, 1.0, 1.0, 1.0) +#in2, color, default vec4($uv.x, 1.0, 1.0, 1.0) +#blend_type, enum, default: 0, Normal,Dissolve,Multiply,Screen,Overlay,Hard Light,Soft Light,Burn,Dodge,Lighten,Darken,Difference +#opactiy, float, min: 0, max: 1, default: 0.5, step: 0.01 (input float) + +#---------------------- +#combine.mmg +#Combines 4 greyscale inputs into an RGBA image + +# "inputs": [ +# { +# "default": "0.0", +# "label": "R", +# "longdesc": "The greyscale input for the red channel", +# "name": "r", +# "shortdesc": "Red", +# "type": "f" +# }, +# { +# "default": "0.0", +# "label": "G", +# "longdesc": "The greyscale input for the green channel", +# "name": "g", +# "shortdesc": "Green", +# "type": "f" +# }, +# { +# "default": "0.0", +# "label": "B", +# "longdesc": "The greyscale input for the blue channel", +# "name": "b", +# "shortdesc": "Blue", +# "type": "f" +# }, +# { +# "default": "1.0", +# "label": "A", +# "longdesc": "The greyscale input for the alpha channel", +# "name": "a", +# "shortdesc": "Alpha", +# "type": "f" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the combined RGBA image", +# "rgba": "vec4($r($uv), $g($uv), $b($uv), $a($uv))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], + +#---------------------- +#emboss.mmg +#Creates highlights and shadows from an input heightmap + +#float $(name)_fct(vec2 uv) { +# float pixels = max(1.0, $width); +# float e = 1.0/$size; +# float rv = 0.0; +# +# for (float dx = -pixels; dx <= pixels; dx += 1.0) { +# for (float dy = -pixels; dy <= pixels; dy += 1.0) { +# if (abs(dx) > 0.5 || abs(dy) > 0.5) { +# rv += $in(uv+e*vec2(dx, dy))*cos(atan(dy, dx)-$angle*3.14159265359/180.0)/length(vec2(dx, dy)); +# } +# } +# } +# +# return $amount*rv/pixels+0.5; +#} + +#Outputs: + +#Output - (float) +#$(name)_fct($uv) + +#Inputs: +#input, float, default 0 +#size, int (image size) +#angle, float, min: -180, max: 180, default: 0, step: 0.1 +#amount, float, min: 0, max: 10, default: 1, step: 0.1 +#width, float, min: 1, max: 5, default: 1, step: 1 + +#---------------------- +#invert.mmg +#A filter that inverts the R, G, and B channels of its input while keeping the A channel unchanged + +#Outputs: + +#Output - (rgba) +#vec4(vec3(1.0)-$in($uv).rgb, $in($uv).a) + +#Inputs: +#input, rgba, default vec4(1.0, 1.0, 1.0, 1.0) + +#---------------------- +#normal_map.mmg + +#{ +# "connections": [ +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "buffer", +# "to_port": 0 +# }, +# { +# "from": "buffer", +# "from_port": 0, +# "to": "switch", +# "to_port": 1 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "switch", +# "to_port": 0 +# }, +# { +# "from": "edge_detect_1", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# }, +# { +# "from": "switch", +# "from_port": 0, +# "to": "edge_detect_1", +# "to_port": 0 +# } +# ], +# "label": "Normal Map", +# "longdesc": "Generates a normal map from a height map", +# "name": "normal_map", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "nodes": [ +# { +# "name": "buffer", +# "node_position": { +# "x": -695.663818, +# "y": 34.60614 +# }, +# "parameters": { +# "lod": 0, +# "size": 10 +# }, +# "type": "buffer" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": -731.910156, +# "y": -131.916687 +# }, +# "parameters": { +# "param0": 10, +# "param1": 1, +# "param2": 0, +# "param4": 1 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "", +# "linked_widgets": [ +# { +# "node": "edge_detect_1", +# "widget": "format" +# } +# ], +# "longdesc": "The format of the generated normal map\nIn most cases this should be set to default", +# "name": "param2", +# "shortdesc": "Format", +# "type": "linked_control" +# }, +# { +# "label": "", +# "linked_widgets": [ +# { +# "node": "buffer", +# "widget": "size" +# }, +# { +# "node": "edge_detect_1", +# "widget": "size" +# } +# ], +# "longdesc": "The resolution of the generated normal map", +# "name": "param0", +# "shortdesc": "Resolution", +# "type": "linked_control" +# }, +# { +# "label": "", +# "linked_widgets": [ +# { +# "node": "edge_detect_1", +# "widget": "amount" +# } +# ], +# "longdesc": "The strength of the normal map filter", +# "name": "param1", +# "shortdesc": "Strength", +# "type": "linked_control" +# }, +# { +# "configurations": { +# "False": [ +# { +# "node": "switch", +# "value": 0, +# "widget": "source" +# } +# ], +# "True": [ +# { +# "node": "switch", +# "value": 1, +# "widget": "source" +# } +# ] +# }, +# "label": "Buffer", +# "linked_widgets": [ +# { +# "node": "switch", +# "widget": "source" +# } +# ], +# "longdesc": "When set, a buffer is used to sample the input before the normal map filter", +# "name": "param4", +# "shortdesc": "Buffer", +# "type": "config_control" +# } +# ] +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": -445.663818, +# "y": 75.047363 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "Shows the generated normal map", +# "name": "Normal", +# "shortdesc": "Output", +# "type": "rgb" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -1094.910156, +# "y": 74.047363 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The input height map", +# "name": "Bump", +# "shortdesc": "Input", +# "type": "f" +# } +# ], +# "seed_value": 12483, +# "type": "ios" +# }, +# { +# "name": "switch", +# "node_position": { +# "x": -673.5, +# "y": 113.297363 +# }, +# "parameters": { +# "choices": 2, +# "outputs": 1, +# "source": 1 +# }, +# "type": "switch" +# }, +# { +# "name": "edge_detect_1", +# "node_position": { +# "x": -676.092529, +# "y": 193.868774 +# }, +# "parameters": { +# "amount": 1, +# "format": 0, +# "size": 10 +# }, +# "shader_model": { +# "code": "", +# "global": "vec3 process_normal_default(vec3 v, float multiplier) {\n\treturn 0.5*normalize(v.xyz*multiplier+vec3(0.0, 0.0, -1.0))+vec3(0.5);\n}\n\nvec3 process_normal_opengl(vec3 v, float multiplier) {\n\treturn 0.5*normalize(v.xyz*multiplier+vec3(0.0, 0.0, 1.0))+vec3(0.5);\n}\n\nvec3 process_normal_directx(vec3 v, float multiplier) {\n\treturn 0.5*normalize(v.xyz*vec3(1.0, -1.0, 1.0)*multiplier+vec3(0.0, 0.0, 1.0))+vec3(0.5);\n}\n", +# "inputs": [ +# { +# "default": "0.0", +# "function": true, +# "label": "", +# "name": "in", +# "type": "f" +# } +# ], +# "instance": "vec3 $(name)_fct(vec2 uv) {\n\tvec3 e = vec3(1.0/$size, -1.0/$size, 0);\n\tvec2 rv = vec2(1.0, -1.0)*$in(uv+e.xy);\n\trv += vec2(-1.0, 1.0)*$in(uv-e.xy);\n\trv += vec2(1.0, 1.0)*$in(uv+e.xx);\n\trv += vec2(-1.0, -1.0)*$in(uv-e.xx);\n\trv += vec2(2.0, 0.0)*$in(uv+e.xz);\n\trv += vec2(-2.0, 0.0)*$in(uv-e.xz);\n\trv += vec2(0.0, 2.0)*$in(uv+e.zx);\n\trv += vec2(0.0, -2.0)*$in(uv-e.zx);\n\treturn vec3(rv, 0.0);\n}", +# "name": "Normal map", +# "outputs": [ +# { +# "rgb": "process_normal_$format($(name)_fct($uv), $amount*$size/128.0)", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "default": 0, +# "label": "", +# "name": "format", +# "type": "enum", +# "values": [ +# { +# "name": "Default", +# "value": "default" +# }, +# { +# "name": "OpenGL", +# "value": "opengl" +# }, +# { +# "name": "DirectX", +# "value": "directx" +# } +# ] +# }, +# { +# "default": 9, +# "first": 4, +# "label": "", +# "last": 12, +# "name": "size", +# "type": "size" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "", +# "max": 2, +# "min": 0, +# "name": "amount", +# "step": 0.01, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +# } +# ], +# "parameters": { +# "param0": 10, +# "param1": 1, +# "param2": 0, +# "param4": 1 +# }, +# "shortdesc": "Normal map", +# "type": "graph" +#} + +#---------------------- +#sharpen.mmg +#Sharpens it input image + +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "function": true, +# "label": "", +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgb" +# } +# ], +# "instance": "vec3 $(name)_fct(vec2 uv) {\n\tvec2 e = vec2(1.0/$size, 0.0);\n\tvec3 rv = 5.0*$in(uv);\n\trv -= $in(uv+e.xy);\n\trv -= $in(uv-e.xy);\n\trv -= $in(uv+e.yx);\n\trv -= $in(uv-e.yx);\n\treturn rv;\n}", +# "outputs": [ +# { +# "longdesc": "Shows the generated sharpened image", +# "rgb": "$(name)_fct($uv)", +# "shortdesc": "Output", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 4, +# "label": "Size", +# "last": 12, +# "longdesc": "The resolution of the input image", +# "name": "size", +# "shortdesc": "Size", +# "type": "size" +# } +# ], + +#---------------------- +#tones.mmg + +# "inputs": [ +# { +# "default": "vec4(1.0)", +# "label": "", +# "name": "input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "rgba": "adjust_levels($input($uv), $in_min, $in_mid, $in_max, $out_min, $out_max)", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": { +# "a": 0, +# "b": 0, +# "g": 0, +# "r": 0 +# }, +# "label": "", +# "name": "in_min", +# "type": "color" +# }, +# { +# "default": { +# "a": 0.498039, +# "b": 0.498039, +# "g": 0.498039, +# "r": 0.498039 +# }, +# "label": "", +# "name": "in_mid", +# "type": "color" +# }, +# { +# "default": { +# "a": 1, +# "b": 1, +# "g": 1, +# "r": 1 +# }, +# "label": "", +# "name": "in_max", +# "type": "color" +# }, +# { +# "default": { +# "a": 1, +# "b": 0, +# "g": 0, +# "r": 0 +# }, +# "label": "", +# "name": "out_min", +# "type": "color" +# }, +# { +# "default": { +# "a": 1, +# "b": 1, +# "g": 1, +# "r": 1 +# }, +# "label": "", +# "name": "out_max", +# "type": "color" +# } +# ] +# }, + +#---------------------- +#tones_map.mmg +#Maps linearly an input tones interval to an output tones interval. + +# "inputs": [ +# { +# "default": "vec4(0.5 ,0.5, 0.5, 1.0)", +# "label": "", +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the generated remapped image", +# "rgba": "vec4(vec3($out_min)+($in($uv).rgb-vec3($in_min))*vec3(($out_max-$out_min)/($in_max-$in_min)), $in($uv).a)", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0.5, +# "label": "Input min", +# "longdesc": "The minimum value of the input interval", +# "max": 1, +# "min": 0, +# "name": "in_min", +# "shortdesc": "InputMin", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "Input max", +# "longdesc": "The maximum value of the input interval", +# "max": 1, +# "min": 0, +# "name": "in_max", +# "shortdesc": "InputMax", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Output min", +# "longdesc": "The minimum value of the output interval", +# "max": 1, +# "min": 0, +# "name": "out_min", +# "shortdesc": "OutputMin", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "Output max", +# "longdesc": "The maximum value of the output interval", +# "max": 1, +# "min": 0, +# "name": "out_max", +# "shortdesc": "OutputMax", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#make_tileable.mmg +#Creates a tileable version of its input image by moving different parts around to hide seams. + +#vec4 make_tileable_$(name)(vec2 uv, float w) { +# vec4 a = $in(uv); +# vec4 b = $in(fract(uv+vec2(0.5))); +# float coef_ab = sin(1.57079632679*clamp((length(uv-vec2(0.5))-0.5+w)/w, 0.0, 1.0)); +# vec4 c = $in(fract(uv+vec2(0.25))); +# float coef_abc = sin(1.57079632679*clamp((min(min(length(uv-vec2(0.0, 0.5)), length(uv-vec2(0.5, 0.0))), min(length(uv-vec2(1.0, 0.5)), length(uv-vec2(0.5, 1.0))))-w)/w, 0.0, 1.0)); +# return mix(c, mix(a, b, coef_ab), coef_abc); +#} + +#Inputs: +#input, rgba, default: vec4(1.0) +#width, float, min:0, max: 1: default: 0.1, step: 0.01 + +#Outputs: +#output (rgba) +#make_tileable_$(name)($uv, 0.5*$w) + +#---------------------- +#occlusion.mmg + +#{ +# "connections": [ +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "buffer", +# "to_port": 0 +# }, +# { +# "from": "blend", +# "from_port": 0, +# "to": "colorize", +# "to_port": 0 +# }, +# { +# "from": "buffer", +# "from_port": 0, +# "to": "blend", +# "to_port": 0 +# }, +# { +# "from": "colorize", +# "from_port": 0, +# "to": "_2", +# "to_port": 0 +# }, +# { +# "from": "_2", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# }, +# { +# "from": "buffer", +# "from_port": 0, +# "to": "gaussian_blur_x", +# "to_port": 0 +# }, +# { +# "from": "gaussian_blur_x", +# "from_port": 0, +# "to": "buffer_2", +# "to_port": 0 +# }, +# { +# "from": "buffer_2", +# "from_port": 0, +# "to": "gaussian_blur_y", +# "to_port": 0 +# }, +# { +# "from": "gaussian_blur_y", +# "from_port": 0, +# "to": "blend", +# "to_port": 1 +# } +# ], +# "label": "Occlusion", +# "longdesc": "Generates an ambient occlusion map from a height map", +# "name": "occlusion", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "nodes": [ +# { +# "name": "buffer_2", +# "node_position": { +# "x": -409.875, +# "y": -112.625 +# }, +# "parameters": { +# "lod": 0, +# "size": 8 +# }, +# "seed_value": 61344, +# "type": "buffer" +# }, +# { +# "name": "buffer", +# "node_position": { +# "x": -408.25, +# "y": -265.75 +# }, +# "parameters": { +# "lod": 0, +# "size": 8 +# }, +# "seed_value": 53030, +# "type": "buffer" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": -463.666626, +# "y": -384.666656 +# }, +# "parameters": { +# "param0": 8, +# "param2": 1.5 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "Grid size:", +# "linked_widgets": [ +# { +# "node": "buffer", +# "widget": "size" +# }, +# { +# "node": "buffer_2", +# "widget": "size" +# }, +# { +# "node": "gaussian_blur_x", +# "widget": "size" +# }, +# { +# "node": "gaussian_blur_y", +# "widget": "size" +# } +# ], +# "longdesc": "The resolution of the input height map", +# "name": "param0", +# "shortdesc": "Size", +# "type": "linked_control" +# }, +# { +# "label": "Strength", +# "linked_widgets": [ +# { +# "node": "_2", +# "widget": "g" +# } +# ], +# "longdesc": "The strength of the occlusion map effect", +# "name": "param2", +# "shortdesc": "Strength", +# "type": "linked_control" +# } +# ] +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -824.666626, +# "y": -116.392853 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The input heightmap", +# "name": "port0", +# "shortdesc": "Input", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": 33.547607, +# "y": -132.392853 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The generated occlusion map", +# "name": "port0", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "blend", +# "node_position": { +# "x": -422.79895, +# "y": 63.16272 +# }, +# "parameters": { +# "amount": 1, +# "blend_type": 11 +# }, +# "type": "blend" +# }, +# { +# "name": "colorize", +# "node_position": { +# "x": -167.79895, +# "y": -178.83728 +# }, +# "parameters": { +# "gradient": { +# "interpolation": 1, +# "points": [ +# { +# "a": 1, +# "b": 1, +# "g": 1, +# "pos": 0, +# "r": 1 +# }, +# { +# "a": 1, +# "b": 0, +# "g": 0, +# "pos": 1, +# "r": 0 +# } +# ], +# "type": "Gradient" +# } +# }, +# "seed_value": 33856, +# "type": "colorize" +# }, +# { +# "name": "_2", +# "node_position": { +# "x": -145.403687, +# "y": -112.29187 +# }, +# "parameters": { +# "g": 1.5 +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "0.0", +# "label": "", +# "name": "in", +# "type": "f" +# } +# ], +# "instance": "", +# "name": "", +# "outputs": [ +# { +# "f": "pow($in($uv), $g)", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": 1, +# "label": "", +# "max": 2, +# "min": 0, +# "name": "g", +# "step": 0.1, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "gaussian_blur_x", +# "node_position": { +# "x": -413.053711, +# "y": -189.016876 +# }, +# "parameters": { +# "sigma": 50, +# "size": 8 +# }, +# "type": "gaussian_blur_x" +# }, +# { +# "name": "gaussian_blur_y", +# "node_position": { +# "x": -405.053711, +# "y": -21.016876 +# }, +# "parameters": { +# "sigma": 50, +# "size": 8 +# }, +# "type": "gaussian_blur_y" +# } +# ], +# "parameters": { +# "param0": 8, +# "param2": 1.5 +# }, +# "shortdesc": "Occlusion", +# "type": "graph" +#} + +#---------------------- +#occlusion2.mmg + +#{ +# "connections": [ +# { +# "from": "colorize", +# "from_port": 0, +# "to": "_2", +# "to_port": 0 +# }, +# { +# "from": "_2", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "fast_blur", +# "to_port": 0 +# }, +# { +# "from": "fast_blur", +# "from_port": 0, +# "to": "blend", +# "to_port": 1 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "blend", +# "to_port": 0 +# }, +# { +# "from": "blend", +# "from_port": 0, +# "to": "colorize", +# "to_port": 0 +# } +# ], +# "label": "Occlusion", +# "longdesc": "Generates an ambient occlusion map from a height map", +# "name": "occlusion2", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "nodes": [ +# { +# "name": "gen_parameters", +# "node_position": { +# "x": -522.866638, +# "y": -383.867035 +# }, +# "parameters": { +# "param0": 11, +# "param1": 20, +# "param2": 1.5, +# "param3": 1 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "Resolution", +# "linked_widgets": [ +# { +# "node": "fast_blur", +# "widget": "param0" +# } +# ], +# "longdesc": "The resolution of the input height map", +# "name": "param0", +# "shortdesc": "Resolution", +# "type": "linked_control" +# }, +# { +# "label": "Strength", +# "linked_widgets": [ +# { +# "node": "_2", +# "widget": "g" +# } +# ], +# "longdesc": "The strength of the occlusion map effect", +# "name": "param2", +# "shortdesc": "Strength", +# "type": "linked_control" +# }, +# { +# "label": "Radius", +# "linked_widgets": [ +# { +# "node": "fast_blur", +# "widget": "param1" +# } +# ], +# "longdesc": "The radius of the blur used for the occlusion effect", +# "name": "param1", +# "shortdesc": "Radius", +# "type": "linked_control" +# }, +# { +# "label": "Quality", +# "linked_widgets": [ +# { +# "node": "fast_blur", +# "widget": "param2" +# } +# ], +# "longdesc": "The quality of the blur operation used for the occlusion effect", +# "name": "param3", +# "shortdesc": "Quality", +# "type": "linked_control" +# } +# ] +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -842.266602, +# "y": -108.396729 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The input heightmap", +# "name": "port0", +# "shortdesc": "Input", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": 77.5476, +# "y": -86.015305 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The generated occlusion map", +# "name": "port0", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "blend", +# "node_position": { +# "x": -422.79895, +# "y": 11.18788 +# }, +# "parameters": { +# "amount": 1, +# "blend_type": 11 +# }, +# "type": "blend" +# }, +# { +# "name": "colorize", +# "node_position": { +# "x": -124.598953, +# "y": -131.660126 +# }, +# "parameters": { +# "gradient": { +# "interpolation": 1, +# "points": [ +# { +# "a": 1, +# "b": 1, +# "g": 1, +# "pos": 0, +# "r": 1 +# }, +# { +# "a": 1, +# "b": 0, +# "g": 0, +# "pos": 1, +# "r": 0 +# } +# ], +# "type": "Gradient" +# } +# }, +# "seed_value": 33856, +# "type": "colorize" +# }, +# { +# "name": "_2", +# "node_position": { +# "x": -104.603699, +# "y": -57.918201 +# }, +# "parameters": { +# "g": 1.5 +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "0.0", +# "label": "", +# "name": "in", +# "type": "f" +# } +# ], +# "instance": "", +# "name": "", +# "outputs": [ +# { +# "f": "pow($in(fract($uv)), $g)", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 1, +# "label": "", +# "max": 2, +# "min": 0, +# "name": "g", +# "step": 0.1, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "connections": [ +# { +# "from": "buffer_2", +# "from_port": 0, +# "to": "fast_blur_shader", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "buffer_2", +# "to_port": 0 +# }, +# { +# "from": "fast_blur_shader", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# } +# ], +# "label": "Fast Blur", +# "longdesc": "", +# "name": "fast_blur", +# "node_position": { +# "x": -435.552002, +# "y": -135.436234 +# }, +# "nodes": [ +# { +# "name": "fast_blur_shader", +# "node_position": { +# "x": -161.600006, +# "y": 143.188766 +# }, +# "parameters": { +# "quality": 1, +# "sigma": 20 +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "vec4(1.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgba" +# } +# ], +# "instance": "vec4 $(name)_blur(vec2 uv, vec2 scale, float sigma, int quality) {\n vec4 O = vec4(0.0);\n\tfloat samples = sigma * 4.0; \n\tint LOD = max(0, int(log2(float(samples)))-quality-2);\n\tint sLOD = 1 << LOD;\n int s = max(1, int(samples/float(sLOD)));\n\tfloat sum = 0.0;\n for (int i = 0; i < s*s; i++) {\n vec2 d = vec2(float(i%s), float(i/s))*float(sLOD) - 0.5*float(samples);\n\t\tvec2 dd = d / sigma;\n\t\tfloat g = exp(-.5*dot(dd,dd))/(6.28*sigma*sigma);\n O += g * textureLod($in.texture, uv + scale * d, float(LOD));\n\t\tsum += g;\n }\n \n return O / sum;\n}\n", +# "name": "Fast Blur", +# "outputs": [ +# { +# "rgba": "$(name)_blur($uv, vec2(1.0)/$in.size, max(1.0, floor($sigma*$in.size/2048.0)), int($quality))", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 1, +# "label": "", +# "max": 256, +# "min": 1, +# "name": "sigma", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "", +# "max": 3, +# "min": 0, +# "name": "quality", +# "step": 1, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "buffer_2", +# "node_position": { +# "x": -187, +# "y": 61.5 +# }, +# "parameters": { +# "size": 11 +# }, +# "type": "buffer", +# "version": 1 +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -602, +# "y": 91.75 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "name": "port0", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": 88, +# "y": 61.75 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "name": "port0", +# "type": "rgba" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": -254.5, +# "y": -122.5 +# }, +# "parameters": { +# "param0": 11, +# "param1": 20, +# "param2": 1 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "Resolution", +# "linked_widgets": [ +# { +# "node": "buffer_2", +# "widget": "size" +# } +# ], +# "name": "param0", +# "type": "linked_control" +# }, +# { +# "label": "Sigma", +# "linked_widgets": [ +# { +# "node": "fast_blur_shader", +# "widget": "sigma" +# } +# ], +# "name": "param1", +# "type": "linked_control" +# }, +# { +# "label": "Quality", +# "linked_widgets": [ +# { +# "node": "fast_blur_shader", +# "widget": "quality" +# } +# ], +# "name": "param2", +# "type": "linked_control" +# } +# ] +# } +# ], +# "parameters": { +# "param0": 11, +# "param1": 20, +# "param2": 1 +# }, +# "shortdesc": "", +# "type": "graph" +# } +# ], +# "parameters": { +# "param0": 11, +# "param1": 20, +# "param2": 1.5, +# "param3": 1 +# }, +# "shortdesc": "Occlusion", +# "type": "graph" +#} + +#---------------------- +#pixelize.mmg +#Creates a pixelated image from its input, and also quantifies the colors with optional dithering. + +# "code": "vec2 $(name_uv)_uv = floor(($uv*vec2($x, $y)))+vec2(0.5);\nvec3 $(name_uv)_dither = fract(vec3(dot(vec2(171.0, 231.0), $(name_uv)_uv))/vec3(103.0, 71.0, 97.0));\n", +# "inputs": [ +# { +# "default": "vec3(1.0)", +# "label": "", +# "longdesc": "The image to be pixelated", +# "name": "i", +# "shortdesc": "Input", +# "type": "rgb" +# } +# ], +# "outputs": [ +# { +# "longdesc": "A pixelated version of the input image", +# "rgb": "floor($i($(name_uv)_uv/vec2($x, $y))*$c+$d*($(name_uv)_dither-vec3(0.5)))/$c", +# "shortdesc": "Output", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 4, +# "label": "Columns:", +# "longdesc": "Number of pixel columns of the output", +# "max": 256, +# "min": 1, +# "name": "x", +# "shortdesc": "Columns", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 4, +# "label": "Rows:", +# "longdesc": "Number of pixel rows of the output", +# "max": 256, +# "min": 1, +# "name": "y", +# "shortdesc": "Rows", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 4, +# "label": "Levels:", +# "longdesc": "Number of color levels for each channel", +# "max": 32, +# "min": 2, +# "name": "c", +# "shortdesc": "Levels", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "Dither:", +# "longdesc": "Amount of dithering in the output image", +# "max": 1, +# "min": 0, +# "name": "d", +# "shortdesc": "Dithering", +# "step": 0.01, +# "type": "float" +# } +# ] + +#---------------------- +#quantize.mmg +#Quantizes the red, green and blue channels of its input + +# "inputs": [ +# { +# "default": "vec4(2.0*vec3(length($uv-vec2(0.5))), 1.0)", +# "label": "", +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The quantized image", +# "rgba": "vec4(floor($in($uv).rgb*$steps)/$steps, $in($uv).a)", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 4, +# "label": "", +# "longdesc": "The number of quantization steps", +# "max": 32, +# "min": 2, +# "name": "steps", +# "shortdesc": "Steps", +# "step": 1, +# "type": "float" +# } +# ], + +#---------------------- +#skew.mmg + +# "global": "vec2 uvskew_h(vec2 uv, float amount) {\n\treturn vec2(uv.x+amount*(uv.y-0.5), uv.y);\n}\nvec2 uvskew_v(vec2 uv, float amount) {\n\treturn vec2(uv.x, uv.y+amount*(uv.x-0.5));\n}", +# "inputs": [ +# { +# "default": "vec4($uv, 0, 1)", +# "label": "", +# "name": "i", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "rgba": "$i(uvskew_$direction($uv, $amount))", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": 0, +# "label": "", +# "name": "direction", +# "type": "enum", +# "values": [ +# { +# "name": "Horizontal", +# "value": "h" +# }, +# { +# "name": "Vertical", +# "value": "v" +# } +# ] +# }, +# { +# "default": 0, +# "label": "", +# "max": 3, +# "min": -3, +# "name": "amount", +# "step": 0.005, +# "type": "float", +# "widget": "spinbox" +# } +# ] + +#---------------------- +#tonality.mmg +#Remaps a greyscale image tonality using a curve + +# "inputs": [ +# { +# "default": "$uv.x", +# "label": "", +# "longdesc": "The input greyscale image", +# "name": "input", +# "shortdesc": "Input", +# "type": "f" +# } +# ], +# "outputs": [ +# { +# "f": "$curve($input($uv))", +# "longdesc": "The remapped greyscale image", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": { +# "points": [ +# { +# "ls": 0, +# "rs": 1, +# "x": 0, +# "y": 0 +# }, +# { +# "ls": 1, +# "rs": 0, +# "x": 1, +# "y": 1 +# } +# ], +# "type": "Curve" +# }, +# "label": "", +# "longdesc": "The tonality curve to which the input is remapped", +# "name": "curve", +# "shortdesc": "Curve", +# "type": "curve" +# } +# ], + +#---------------------- +#tones_range.mmg +#Outputs the tone range around a specified value + +# "code": "float $(name_uv)_step = clamp(($in($uv) - ($value))/max(0.0001, $width)+0.5, 0.0, 1.0);\nfloat $(name_uv)_false = clamp((min($(name_uv)_step, 1.0-$(name_uv)_step) * 2.0) / (1.0 - $contrast), 0.0, 1.0);\nfloat $(name_uv)_true = 1.0-$(name_uv)_false;", +# "inputs": [ +# { +# "default": "($uv.x + $uv.y) / 2.0", +# "label": "", +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "f" +# } +# ], +# "outputs": [ +# { +# "f": "$(name_uv)_$invert", +# "longdesc": "Shows the generated high contrast image", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0.5, +# "label": "Value", +# "longdesc": "The center value of the selection", +# "max": 1, +# "min": 0, +# "name": "value", +# "shortdesc": "Value", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.25, +# "label": "Width", +# "longdesc": "The width (in tones space) of the selection area", +# "max": 1, +# "min": 0, +# "name": "width", +# "shortdesc": "Width", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "Contrast", +# "longdesc": "Adjusts the falloff of the output", +# "max": 1, +# "min": 0, +# "name": "contrast", +# "shortdesc": "Contrast", +# "step": 0.01, +# "type": "float" +# }, +# { +# "default": false, +# "label": "Invert", +# "longdesc": "Invert the generated image if set", +# "name": "invert", +# "shortdesc": "Invert", +# "type": "boolean" +# } +# ], + +#---------------------- +#tones_step.mmg +#Emphasizes dark and light tones around a specified value + +# "code": "vec3 $(name_uv)_false = clamp(($in($uv).rgb-vec3($value))/max(0.0001, $width)+vec3(0.5), vec3(0.0), vec3(1.0));\nvec3 $(name_uv)_true = vec3(1.0)-$(name_uv)_false;", +# "inputs": [ +# { +# "default": "vec4(0.5 ,0.5, 0.5, 1.0)", +# "label": "", +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the generated high contrast image", +# "rgba": "vec4($(name_uv)_$invert, $in($uv).a)", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0.5, +# "label": "Value", +# "longdesc": "The value of the input that separate dark and light zones of the result", +# "max": 1, +# "min": 0, +# "name": "value", +# "shortdesc": "Value", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Width", +# "longdesc": "The width (in tones space) of the transition area", +# "max": 1, +# "min": 0, +# "name": "width", +# "shortdesc": "width", +# "step": 0.01, +# "type": "float" +# }, +# { +# "default": false, +# "label": "Invert", +# "longdesc": "Invert the generated image if set", +# "name": "invert", +# "shortdesc": "Invert", +# "type": "boolean" +# } +# ], + +#---------------------- +#math.mmg +#Performs a math operation using its inputs or parameter values + +# "code": "float $(name_uv)_clamp_false = $op;\nfloat $(name_uv)_clamp_true = clamp($(name_uv)_clamp_false, 0.0, 1.0);\n", +# "inputs": [ +# { +# "default": "$default_in1", +# "label": "2:A", +# "longdesc": "The A operand", +# "name": "in1", +# "shortdesc": "A", +# "type": "f" +# }, +# { +# "default": "$default_in2", +# "label": "B", +# "longdesc": "The B operand", +# "name": "in2", +# "shortdesc": "B", +# "type": "f" +# } +# ], +# "outputs": [ +# { +# "f": "$(name_uv)_clamp_$clamp", +# "longdesc": "Shows a greyscale image of the result", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": 19, +# "label": "", +# "longdesc": "The operation to be performed", +# "name": "op", +# "shortdesc": "Operation", +# "type": "enum", +# "values": [ +# { +# "name": "A+B", +# "value": "$in1($uv)+$in2($uv)" +# }, +# { +# "name": "A-B", +# "value": "$in1($uv)-$in2($uv)" +# }, +# { +# "name": "A*B", +# "value": "$in1($uv)*$in2($uv)" +# }, +# { +# "name": "A/B", +# "value": "$in1($uv)/$in2($uv)" +# }, +# { +# "name": "log(A)", +# "value": "log($in1($uv))" +# }, +# { +# "name": "log2(A)", +# "value": "log2($in1($uv))" +# }, +# { +# "name": "pow(A, B)", +# "value": "pow($in1($uv),$in2($uv))" +# }, +# { +# "name": "abs(A)", +# "value": "abs($in1($uv))" +# }, +# { +# "name": "round(A)", +# "value": "round($in1($uv))" +# }, +# { +# "name": "floor(A)", +# "value": "floor($in1($uv))" +# }, +# { +# "name": "ceil(A)", +# "value": "ceil($in1($uv))" +# }, +# { +# "name": "trunc(A)", +# "value": "trunc($in1($uv))" +# }, +# { +# "name": "fract(A)", +# "value": "fract($in1($uv))" +# }, +# { +# "name": "min(A, B)", +# "value": "min($in1($uv),$in2($uv))" +# }, +# { +# "name": "max(A, B)", +# "value": "max($in1($uv),$in2($uv))" +# }, +# { +# "name": "A 0.5 || abs(dy) > 0.5) {\n\t\t\t\trv += $in(uv+e*vec2(dx, dy)).xy*cos(vec2(atan(dy, dx))-vec2(0.0, 0.5)*3.14159265359)/length(vec2(dx, dy));\n\t\t\t}\n\t\t}\n\t}\n\treturn $amount*rv/pixels+0.5;\n}", +# "name": "Curvature", +# "outputs": [ +# { +# "f": "0.5*($(name_uv)_emboss.x+$(name_uv)_emboss.y)", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 6, +# "label": "Size", +# "last": 12, +# "name": "size", +# "type": "size" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Amount", +# "max": 10, +# "min": 0, +# "name": "amount", +# "step": 0.1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Width", +# "max": 5, +# "min": 1, +# "name": "width", +# "step": 1, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "598_2", +# "node_position": { +# "x": -100.207932, +# "y": 638.757874 +# }, +# "parameters": { +# "amount": 1, +# "size": 11, +# "width": 2 +# }, +# "shader_model": { +# "code": "vec2 $(name_uv)_emboss = $(name)_fct($uv);", +# "global": "", +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgb" +# } +# ], +# "instance": "vec2 $(name)_fct(vec2 uv) {\n\tfloat pixels = max(1.0, $width);\n\tfloat e = 1.0/$size;\n\tvec2 rv = vec2(0.0);\n\tfor (float dx = -pixels; dx <= pixels; dx += 1.0) {\n\t\tfor (float dy = -pixels; dy <= pixels; dy += 1.0) {\n\t\t\tif (abs(dx) > 0.5 || abs(dy) > 0.5) {\n\t\t\t\trv += $in(uv+e*vec2(dx, dy)).xy*cos(vec2(atan(dy, dx))-vec2(0.0, 0.5)*3.14159265359)/length(vec2(dx, dy));\n\t\t\t}\n\t\t}\n\t}\n\treturn $amount*rv/pixels+0.5;\n}", +# "name": "Curvature", +# "outputs": [ +# { +# "f": "0.5*($(name_uv)_emboss.x+$(name_uv)_emboss.y)", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 6, +# "label": "Size", +# "last": 12, +# "name": "size", +# "type": "size" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Amount", +# "max": 10, +# "min": 0, +# "name": "amount", +# "step": 0.1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Width", +# "max": 5, +# "min": 1, +# "name": "width", +# "step": 1, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "598_4", +# "node_position": { +# "x": -97.532082, +# "y": 755.803345 +# }, +# "parameters": { +# "amount": 1, +# "size": 11, +# "width": 4 +# }, +# "shader_model": { +# "code": "vec2 $(name_uv)_emboss = $(name)_fct($uv);", +# "global": "", +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgb" +# } +# ], +# "instance": "vec2 $(name)_fct(vec2 uv) {\n\tfloat pixels = max(1.0, $width);\n\tfloat e = 1.0/$size;\n\tvec2 rv = vec2(0.0);\n\tfor (float dx = -pixels; dx <= pixels; dx += 1.0) {\n\t\tfor (float dy = -pixels; dy <= pixels; dy += 1.0) {\n\t\t\tif (abs(dx) > 0.5 || abs(dy) > 0.5) {\n\t\t\t\trv += $in(uv+e*vec2(dx, dy)).xy*cos(vec2(atan(dy, dx))-vec2(0.0, 0.5)*3.14159265359)/length(vec2(dx, dy));\n\t\t\t}\n\t\t}\n\t}\n\treturn $amount*rv/pixels+0.5;\n}", +# "name": "Curvature", +# "outputs": [ +# { +# "f": "0.5*($(name_uv)_emboss.x+$(name_uv)_emboss.y)", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 6, +# "label": "Size", +# "last": 12, +# "name": "size", +# "type": "size" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Amount", +# "max": 10, +# "min": 0, +# "name": "amount", +# "step": 0.1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Width", +# "max": 5, +# "min": 1, +# "name": "width", +# "step": 1, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "598_5", +# "node_position": { +# "x": -95.713867, +# "y": 877.621521 +# }, +# "parameters": { +# "amount": 1, +# "size": 11, +# "width": 8 +# }, +# "shader_model": { +# "code": "vec2 $(name_uv)_emboss = $(name)_fct($uv);", +# "global": "", +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgb" +# } +# ], +# "instance": "vec2 $(name)_fct(vec2 uv) {\n\tfloat pixels = max(1.0, $width);\n\tfloat e = 1.0/$size;\n\tvec2 rv = vec2(0.0);\n\tfor (float dx = -pixels; dx <= pixels; dx += 1.0) {\n\t\tfor (float dy = -pixels; dy <= pixels; dy += 1.0) {\n\t\t\tif (abs(dx) > 0.5 || abs(dy) > 0.5) {\n\t\t\t\trv += $in(uv+e*vec2(dx, dy)).xy*cos(vec2(atan(dy, dx))-vec2(0.0, 0.5)*3.14159265359)/length(vec2(dx, dy));\n\t\t\t}\n\t\t}\n\t}\n\treturn $amount*rv/pixels+0.5;\n}", +# "name": "Curvature", +# "outputs": [ +# { +# "f": "0.5*($(name_uv)_emboss.x+$(name_uv)_emboss.y)", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 6, +# "label": "Size", +# "last": 12, +# "name": "size", +# "type": "size" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Amount", +# "max": 10, +# "min": 0, +# "name": "amount", +# "step": 0.1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Width", +# "max": 5, +# "min": 1, +# "name": "width", +# "step": 1, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "598_6", +# "node_position": { +# "x": -92.077492, +# "y": 992.848633 +# }, +# "parameters": { +# "amount": 1, +# "size": 11, +# "width": 16 +# }, +# "shader_model": { +# "code": "vec2 $(name_uv)_emboss = $(name)_fct($uv);", +# "global": "", +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgb" +# } +# ], +# "instance": "vec2 $(name)_fct(vec2 uv) {\n\tfloat pixels = max(1.0, $width);\n\tfloat e = 1.0/$size;\n\tvec2 rv = vec2(0.0);\n\tfor (float dx = -pixels; dx <= pixels; dx += 1.0) {\n\t\tfor (float dy = -pixels; dy <= pixels; dy += 1.0) {\n\t\t\tif (abs(dx) > 0.5 || abs(dy) > 0.5) {\n\t\t\t\trv += $in(uv+e*vec2(dx, dy)).xy*cos(vec2(atan(dy, dx))-vec2(0.0, 0.5)*3.14159265359)/length(vec2(dx, dy));\n\t\t\t}\n\t\t}\n\t}\n\treturn $amount*rv/pixels+0.5;\n}", +# "name": "Curvature", +# "outputs": [ +# { +# "f": "0.5*($(name_uv)_emboss.x+$(name_uv)_emboss.y)", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": 9, +# "first": 6, +# "label": "Size", +# "last": 12, +# "name": "size", +# "type": "size" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Amount", +# "max": 10, +# "min": 0, +# "name": "amount", +# "step": 0.1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Width", +# "max": 5, +# "min": 1, +# "name": "width", +# "step": 1, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "connections": [ +# { +# "from": "buffer_2", +# "from_port": 0, +# "to": "fast_blur_shader", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "buffer_2", +# "to_port": 0 +# }, +# { +# "from": "fast_blur_shader", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# } +# ], +# "label": "Fast Blur", +# "longdesc": "", +# "name": "fast_blur", +# "node_position": { +# "x": 167.483093, +# "y": 509.757843 +# }, +# "nodes": [ +# { +# "name": "fast_blur_shader", +# "node_position": { +# "x": -168, +# "y": 120 +# }, +# "parameters": { +# "quality": 1, +# "sigma": 2 +# }, +# "type": "fast_blur_shader" +# }, +# { +# "name": "buffer_2", +# "node_position": { +# "x": -187, +# "y": 61.5 +# }, +# "parameters": { +# "size": 11 +# }, +# "type": "buffer", +# "version": 1 +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -602, +# "y": 91.75 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "name": "port0", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": 88, +# "y": 61.75 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "name": "port0", +# "type": "rgba" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": -254.5, +# "y": -122.5 +# }, +# "parameters": { +# "param0": 11, +# "param1": 2, +# "param2": 1 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "Resolution", +# "linked_widgets": [ +# { +# "node": "buffer_2", +# "widget": "size" +# } +# ], +# "name": "param0", +# "type": "linked_control" +# }, +# { +# "label": "Sigma", +# "linked_widgets": [ +# { +# "node": "fast_blur_shader", +# "widget": "sigma" +# } +# ], +# "name": "param1", +# "type": "linked_control" +# }, +# { +# "label": "Quality", +# "linked_widgets": [ +# { +# "node": "fast_blur_shader", +# "widget": "quality" +# } +# ], +# "name": "param2", +# "type": "linked_control" +# } +# ] +# } +# ], +# "parameters": { +# "param0": 11, +# "param1": 2, +# "param2": 1 +# }, +# "shortdesc": "", +# "type": "graph" +# }, +# { +# "name": "fast_blur_2", +# "node_position": { +# "x": 167.156082, +# "y": 638.560974 +# }, +# "parameters": { +# "param0": 11, +# "param1": 5, +# "param2": 1 +# }, +# "type": "fast_blur" +# }, +# { +# "name": "fast_blur_3", +# "node_position": { +# "x": 171.701691, +# "y": 756.742798 +# }, +# "parameters": { +# "param0": 11, +# "param1": 8, +# "param2": 1 +# }, +# "type": "fast_blur" +# }, +# { +# "name": "fast_blur_4", +# "node_position": { +# "x": 167.377045, +# "y": 877.651917 +# }, +# "parameters": { +# "param0": 11, +# "param1": 16, +# "param2": 1 +# }, +# "type": "fast_blur" +# }, +# { +# "name": "fast_blur_5", +# "node_position": { +# "x": 170.104279, +# "y": 992.197327 +# }, +# "parameters": { +# "param0": 11, +# "param1": 34, +# "param2": 1 +# }, +# "type": "fast_blur" +# }, +# { +# "name": "buffer_2", +# "node_position": { +# "x": -426.44928, +# "y": 678.75 +# }, +# "parameters": { +# "filter": false, +# "mipmap": false, +# "size": 11 +# }, +# "type": "buffer", +# "version": 2 +# } +# ], +# "parameters": { +# "param0": 11, +# "param2": 1 +# }, +# "shortdesc": "Smooth Curvature", +# "type": "graph" +#} + +#---------------------- +#smooth_curvature2.mmg + +#{ +# "connections": [ +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "buffer", +# "to_port": 0 +# }, +# { +# "from": "buffer", +# "from_port": 0, +# "to": "switch", +# "to_port": 1 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "switch", +# "to_port": 0 +# }, +# { +# "from": "598", +# "from_port": 0, +# "to": "buffer_2", +# "to_port": 0 +# }, +# { +# "from": "buffer_2", +# "from_port": 0, +# "to": "switch_2", +# "to_port": 1 +# }, +# { +# "from": "598", +# "from_port": 0, +# "to": "switch_2", +# "to_port": 0 +# }, +# { +# "from": "switch_2", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# }, +# { +# "from": "switch", +# "from_port": 0, +# "to": "598", +# "to_port": 0 +# } +# ], +# "label": "Smooth Curvature 2", +# "longdesc": "", +# "name": "smooth_curvature2", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "nodes": [ +# { +# "name": "buffer", +# "node_position": { +# "x": 300.603302, +# "y": -549.522034 +# }, +# "parameters": { +# "lod": 0, +# "size": 10 +# }, +# "type": "buffer" +# }, +# { +# "name": "598", +# "node_position": { +# "x": 286.999847, +# "y": -359.903259 +# }, +# "parameters": { +# "quality": 4, +# "radius": 1, +# "strength": 1 +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "0.5", +# "function": true, +# "label": "", +# "name": "in", +# "type": "f" +# } +# ], +# "instance": "float $(name)_curve( vec2 p, vec2 o ){\n\tfloat a = $in(p+o);\n\tfloat b = $in(p-o);\n\tfloat c = $in(p+o*vec2(1.0,-1.0));\n\tfloat d = $in(p-o*vec2(1.0,-1.0));\n\treturn -a - b - c - d;\n}\n\nfloat $(name)_curvature_map(vec2 p, float r, float q){\n\tfloat s = r/q;\n\tfloat H = $in(p)*4.0;\n\tfloat v = 0.0;\n\tvec2 o;\n\tfor( o.x = 0.0; o.x < q; o.x++ ){\n\t\tfor( o.y = 0.0; o.y < q; o.y++ ){\n\t\t\tfloat c = $(name)_curve(p, o*s);\n\t\t\tv += (H + c) * ((r-length(o*s)) / r);\n\t\t}\n\t}\n\treturn v/(q*q);\n}\n\nfloat $(name)_curvature(vec2 uv, float quality, float strength, float radius) {\n\tfloat c = $(name)_curvature_map(uv, 0.050 * radius, quality)*strength / radius;\n\treturn 0.5 + c;\n}", +# "name": "Smooth Curvature", +# "outputs": [ +# { +# "f": "$(name)_curvature($uv, $quality, $strength, $radius)", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 4, +# "label": "Quality", +# "longdesc": "How many times the input is sampled to generate the curvature map", +# "max": 16, +# "min": 2, +# "name": "quality", +# "shortdesc": "Quality", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Strength", +# "longdesc": "The intensity of the curvature map", +# "max": 2, +# "min": 0, +# "name": "strength", +# "shortdesc": "Strength", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Radius", +# "longdesc": "The radius of the smoothing of the curvature effect", +# "max": 2, +# "min": 0, +# "name": "radius", +# "shortdesc": "Radius", +# "step": 0.01, +# "type": "float" +# } +# ], +# "shortdesc": "Smooth Curvature" +# }, +# "type": "shader" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": 242.146149, +# "y": -788.088806 +# }, +# "parameters": { +# "param0": 10, +# "param1": 4, +# "param2": 1, +# "param3": 1, +# "param4": 1 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "Size", +# "linked_widgets": [ +# { +# "node": "buffer", +# "widget": "size" +# }, +# { +# "node": "buffer_2", +# "widget": "size" +# } +# ], +# "longdesc": "The resolution of the curvature map if buffer is used", +# "name": "param0", +# "shortdesc": "Size", +# "type": "linked_control" +# }, +# { +# "label": "Quality", +# "linked_widgets": [ +# { +# "node": "598", +# "widget": "quality" +# } +# ], +# "longdesc": "How many times the input is sampled to generate the curvature map", +# "name": "param1", +# "shortdesc": "Quality", +# "type": "linked_control" +# }, +# { +# "label": "Strength", +# "linked_widgets": [ +# { +# "node": "598", +# "widget": "strength" +# } +# ], +# "longdesc": "The intensity of the curvature map", +# "name": "param2", +# "shortdesc": "Strength", +# "type": "linked_control" +# }, +# { +# "label": "Radius", +# "linked_widgets": [ +# { +# "node": "598", +# "widget": "radius" +# } +# ], +# "longdesc": "The radius of the smoothing of the curvature effect", +# "name": "param3", +# "shortdesc": "Radius", +# "type": "linked_control" +# }, +# { +# "configurations": { +# "False": [ +# { +# "node": "switch", +# "value": 0, +# "widget": "source" +# }, +# { +# "node": "switch_2", +# "value": 0, +# "widget": "source" +# } +# ], +# "True": [ +# { +# "node": "switch", +# "value": 1, +# "widget": "source" +# }, +# { +# "node": "switch_2", +# "value": 1, +# "widget": "source" +# } +# ] +# }, +# "label": "Buffer", +# "linked_widgets": [ +# { +# "node": "switch", +# "widget": "source" +# }, +# { +# "node": "switch_2", +# "widget": "source" +# } +# ], +# "longdesc": "When set, a buffer is used to sample the input before the normal map filter", +# "name": "param4", +# "shortdesc": "Buffer", +# "type": "config_control" +# } +# ] +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -135.453888, +# "y": -518.927429 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The input height map", +# "name": "Heightmap", +# "shortdesc": "Input", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": 586.203247, +# "y": -534.919678 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "Shows the generated curvature map", +# "name": "Curvature", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "switch", +# "node_position": { +# "x": 310.739746, +# "y": -451.658417 +# }, +# "parameters": { +# "choices": 2, +# "outputs": 1, +# "source": 1 +# }, +# "type": "switch" +# }, +# { +# "name": "buffer_2", +# "node_position": { +# "x": 293.839874, +# "y": -225.201691 +# }, +# "parameters": { +# "lod": 0, +# "size": 10 +# }, +# "type": "buffer" +# }, +# { +# "name": "switch_2", +# "node_position": { +# "x": 312.239838, +# "y": -129.465912 +# }, +# "parameters": { +# "choices": 2, +# "outputs": 1, +# "source": 1 +# }, +# "type": "switch" +# }, +# { +# "name": "blend", +# "node_position": { +# "x": 802.064697, +# "y": -277.727295 +# }, +# "parameters": { +# "amount": 0.5, +# "blend_type": 0 +# }, +# "shader_model": { +# "code": "vec4 $(name_uv)_s1 = $s1($uv);\nvec4 $(name_uv)_s2 = $s2($uv);\nfloat $(name_uv)_a = $amount*$a($uv);\n", +# "global": "vec3 blend_normal(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*c1 + (1.0-opacity)*c2;\n}\n\nvec3 blend_dissolve(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\tif (rand(uv) < opacity) {\n\t\treturn c1;\n\t} else {\n\t\treturn c2;\n\t}\n}\n\nvec3 blend_multiply(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*c1*c2 + (1.0-opacity)*c2;\n}\n\nvec3 blend_screen(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*(1.0-(1.0-c1)*(1.0-c2)) + (1.0-opacity)*c2;\n}\n\nfloat blend_overlay_f(float c1, float c2) {\n\treturn (c1 < 0.5) ? (2.0*c1*c2) : (1.0-2.0*(1.0-c1)*(1.0-c2));\n}\n\nvec3 blend_overlay(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blend_overlay_f(c1.x, c2.x), blend_overlay_f(c1.y, c2.y), blend_overlay_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nvec3 blend_hard_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*0.5*(c1*c2+blend_overlay(uv, c1, c2, 1.0)) + (1.0-opacity)*c2;\n}\n\nfloat blend_soft_light_f(float c1, float c2) {\n\treturn (c2 < 0.5) ? (2.0*c1*c2+c1*c1*(1.0-2.0*c2)) : 2.0*c1*(1.0-c2)+sqrt(c1)*(2.0*c2-1.0);\n}\n\nvec3 blend_soft_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blend_soft_light_f(c1.x, c2.x), blend_soft_light_f(c1.y, c2.y), blend_soft_light_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nfloat blend_burn_f(float c1, float c2) {\n\treturn (c1==0.0)?c1:max((1.0-((1.0-c2)/c1)),0.0);\n}\n\nvec3 blend_burn(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blend_burn_f(c1.x, c2.x), blend_burn_f(c1.y, c2.y), blend_burn_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nfloat blend_dodge_f(float c1, float c2) {\n\treturn (c1==1.0)?c1:min(c2/(1.0-c1),1.0);\n}\n\nvec3 blend_dodge(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blend_dodge_f(c1.x, c2.x), blend_dodge_f(c1.y, c2.y), blend_dodge_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nvec3 blend_lighten(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*max(c1, c2) + (1.0-opacity)*c2;\n}\n\nvec3 blend_darken(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*min(c1, c2) + (1.0-opacity)*c2;\n}\n\nvec3 blend_difference(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*clamp(c2-c1, vec3(0.0), vec3(1.0)) + (1.0-opacity)*c2;\n}\n", +# "inputs": [ +# { +# "default": "vec4(round($uv.x) , 1.0, 1.0, 1.0)", +# "label": "Source1", +# "longdesc": "The foreground input", +# "name": "s1", +# "shortdesc": "Foreground", +# "type": "rgba" +# }, +# { +# "default": "vec4(1.0, $uv.y, 1.0, 1.0)", +# "label": "Source2", +# "longdesc": "The background input", +# "name": "s2", +# "shortdesc": "Background", +# "type": "rgba" +# }, +# { +# "default": "1.0", +# "label": "Opacity", +# "longdesc": "The optional opacity mask", +# "name": "a", +# "shortdesc": "Mask", +# "type": "f" +# } +# ], +# "instance": "", +# "longdesc": "Blends its input, using an optional mask", +# "name": "Blend", +# "outputs": [ +# { +# "longdesc": "Shows the result of the blend operation", +# "rgba": "vec4(blend_$blend_type($uv, $(name_uv)_s1.rgb, $(name_uv)_s2.rgb, $(name_uv)_a*$(name_uv)_s1.a), min(1.0, $(name_uv)_s2.a+$(name_uv)_a*$(name_uv)_s1.a))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": 0, +# "label": "", +# "longdesc": "The algorithm used to blend the inputs", +# "name": "blend_type", +# "shortdesc": "Blend mode", +# "type": "enum", +# "values": [ +# { +# "name": "Normal", +# "value": "normal" +# }, +# { +# "name": "Dissolve", +# "value": "dissolve" +# }, +# { +# "name": "Multiply", +# "value": "multiply" +# }, +# { +# "name": "Screen", +# "value": "screen" +# }, +# { +# "name": "Overlay", +# "value": "overlay" +# }, +# { +# "name": "Hard Light", +# "value": "hard_light" +# }, +# { +# "name": "Soft Light", +# "value": "soft_light" +# }, +# { +# "name": "Burn", +# "value": "burn" +# }, +# { +# "name": "Dodge", +# "value": "dodge" +# }, +# { +# "name": "Lighten", +# "value": "lighten" +# }, +# { +# "name": "Darken", +# "value": "darken" +# }, +# { +# "name": "Difference", +# "value": "difference" +# } +# ] +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "3:", +# "longdesc": "The opacity of the blend operation", +# "max": 1, +# "min": 0, +# "name": "amount", +# "shortdesc": "Opacity", +# "step": 0.01, +# "type": "float" +# } +# ], +# "shortdesc": "Blend" +# }, +# "type": "shader" +# } +# ], +# "parameters": { +# "param0": 10, +# "param1": 4, +# "param2": 1, +# "param3": 1, +# "param4": 1 +# }, +# "shortdesc": "Smooth Curvature", +# "type": "graph" +#} + +#---------------------- +#supersample.mmg +#A filter that samples sub-pixel details to make them visible + +# "inputs": [ +# { +# "default": "vec4(1.0, 1.0, 1.0, 1.0)", +# "function": true, +# "label": "", +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "instance": "vec4 supersample_$(name)(vec2 uv, float size, int count, float width) {\n\tvec4 rv = vec4(0.0);\n\tvec2 step_size = vec2(width)/size/float(count);\n\tuv -= vec2(0.5)/size;\n\tfor (int x = 0; x < count; ++x) {\n\t\tfor (int y = 0; y < count; ++y) {\n\t\t\trv += $in(uv+(vec2(float(x), float(y))+vec2(0.5))*step_size);\n\t\t}\n\t}\n\treturn rv/float(count*count);\n}", +# "outputs": [ +# { +# "longdesc": "Shows the supersampled image. Due to the performance cost of this node, it is recommended to connect a buffer directly to this output.", +# "rgba": "supersample_$(name)($uv, $size, int($count), $width)", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": 10, +# "first": 4, +# "label": "Size", +# "last": 12, +# "longdesc": "The resolution of the output", +# "name": "size", +# "shortdesc": "Size", +# "type": "size" +# }, +# { +# "control": "None", +# "default": 2, +# "label": "Count", +# "longdesc": "The number of samples on each axis. High values will badly impact performances.", +# "max": 5, +# "min": 2, +# "name": "count", +# "shortdesc": "Count", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Width", +# "longdesc": "The width of the sampled area. Setting this value higher than 1 will sample neighbouring pixels and antialias the result.", +# "max": 2, +# "min": 1, +# "name": "width", +# "shortdesc": "Width", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#swap_channels.mmg +#Swaps the channels of its RGBA input + +# "inputs": [ +# { +# "default": "vec4(1.0)", +# "label": "", +# "longdesc": "The input RGBA image", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The output RGBA image", +# "rgba": "vec4($out_r,$out_g,$out_b,$out_a)", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": 2, +# "label": "R", +# "longdesc": "The input channel to be assigned to the Red channel", +# "name": "out_r", +# "shortdesc": "Red", +# "type": "enum", +# "values": [ +# { +# "name": "0", +# "value": "0.0" +# }, +# { +# "name": "1", +# "value": "1.0" +# }, +# { +# "name": "R", +# "value": "$in($uv).r" +# }, +# { +# "name": "-R", +# "value": "1.0-$in($uv).r" +# }, +# { +# "name": "G", +# "value": "$in($uv).g" +# }, +# { +# "name": "-G", +# "value": "1.0-$in($uv).g" +# }, +# { +# "name": "B", +# "value": "$in($uv).b" +# }, +# { +# "name": "-B", +# "value": "1.0-$in($uv).b" +# }, +# { +# "name": "A", +# "value": "$in($uv).a" +# }, +# { +# "name": "-A", +# "value": "1.0-$in($uv).a" +# } +# ] +# }, +# { +# "default": 4, +# "label": "G", +# "longdesc": "The input channel to be assigned to the Green channel", +# "name": "out_g", +# "shortdesc": "Green", +# "type": "enum", +# "values": [ +# { +# "name": "0", +# "value": "0.0" +# }, +# { +# "name": "1", +# "value": "1.0" +# }, +# { +# "name": "R", +# "value": "$in($uv).r" +# }, +# { +# "name": "-R", +# "value": "1.0-$in($uv).r" +# }, +# { +# "name": "G", +# "value": "$in($uv).g" +# }, +# { +# "name": "-G", +# "value": "1.0-$in($uv).g" +# }, +# { +# "name": "B", +# "value": "$in($uv).b" +# }, +# { +# "name": "-B", +# "value": "1.0-$in($uv).b" +# }, +# { +# "name": "A", +# "value": "$in($uv).a" +# }, +# { +# "name": "-A", +# "value": "1.0-$in($uv).a" +# } +# ] +# }, +# { +# "default": 6, +# "label": "B", +# "longdesc": "The input channel to be assigned to the Blue channel", +# "name": "out_b", +# "shortdesc": "Blue", +# "type": "enum", +# "values": [ +# { +# "name": "0", +# "value": "0.0" +# }, +# { +# "name": "1", +# "value": "1.0" +# }, +# { +# "name": "R", +# "value": "$in($uv).r" +# }, +# { +# "name": "-R", +# "value": "1.0-$in($uv).r" +# }, +# { +# "name": "G", +# "value": "$in($uv).g" +# }, +# { +# "name": "-G", +# "value": "1.0-$in($uv).g" +# }, +# { +# "name": "B", +# "value": "$in($uv).b" +# }, +# { +# "name": "-B", +# "value": "1.0-$in($uv).b" +# }, +# { +# "name": "A", +# "value": "$in($uv).a" +# }, +# { +# "name": "-A", +# "value": "1.0-$in($uv).a" +# } +# ] +# }, +# { +# "default": 8, +# "label": "A", +# "longdesc": "The input channel to be assigned to the Alpha channel", +# "name": "out_a", +# "shortdesc": "Alpha", +# "type": "enum", +# "values": [ +# { +# "name": "0", +# "value": "0.0" +# }, +# { +# "name": "1", +# "value": "1.0" +# }, +# { +# "name": "R", +# "value": "$in($uv).r" +# }, +# { +# "name": "-R", +# "value": "1.0-$in($uv).r" +# }, +# { +# "name": "G", +# "value": "$in($uv).g" +# }, +# { +# "name": "-G", +# "value": "1.0-$in($uv).g" +# }, +# { +# "name": "B", +# "value": "$in($uv).b" +# }, +# { +# "name": "-B", +# "value": "1.0-$in($uv).b" +# }, +# { +# "name": "A", +# "value": "$in($uv).a" +# }, +# { +# "name": "-A", +# "value": "1.0-$in($uv).a" +# } +# ] +# } +# ], + +#---------------------- +#math_v3.mmg +#Performs a math operation using its inputs or parameter values + +# "code": "vec3 $(name_uv)_clamp_false = $op;\nvec3 $(name_uv)_clamp_true = clamp($(name_uv)_clamp_false, vec3(0.0), vec3(1.0));\n", +# "inputs": [ +# { +# "default": "vec3($d_in1_x, $d_in1_y, $d_in1_z)", +# "label": "2:A", +# "longdesc": "The A operand", +# "name": "in1", +# "shortdesc": "A", +# "type": "rgb" +# }, +# { +# "default": "vec3($d_in2_x, $d_in2_y, $d_in2_z)", +# "label": "B", +# "longdesc": "The B operand", +# "name": "in2", +# "shortdesc": "B", +# "type": "rgb" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows a greyscale image of the result", +# "rgb": "$(name_uv)_clamp_$clamp", +# "shortdesc": "Output", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "default": 19, +# "label": "", +# "longdesc": "The operation to be performed", +# "name": "op", +# "shortdesc": "Operation", +# "type": "enum", +# "values": [ +# { +# "name": "A+B", +# "value": "$in1($uv)+$in2($uv)" +# }, +# { +# "name": "A-B", +# "value": "$in1($uv)-$in2($uv)" +# }, +# { +# "name": "A*B", +# "value": "$in1($uv)*$in2($uv)" +# }, +# { +# "name": "A/B", +# "value": "$in1($uv)/$in2($uv)" +# }, +# { +# "name": "log(A)", +# "value": "log($in1($uv))" +# }, +# { +# "name": "log2(A)", +# "value": "log2($in1($uv))" +# }, +# { +# "name": "pow(A, B)", +# "value": "pow($in1($uv),$in2($uv))" +# }, +# { +# "name": "abs(A)", +# "value": "abs($in1($uv))" +# }, +# { +# "name": "round(A)", +# "value": "round($in1($uv))" +# }, +# { +# "name": "floor(A)", +# "value": "floor($in1($uv))" +# }, +# { +# "name": "ceil(A)", +# "value": "ceil($in1($uv))" +# }, +# { +# "name": "trunc(A)", +# "value": "trunc($in1($uv))" +# }, +# { +# "name": "fract(A)", +# "value": "fract($in1($uv))" +# }, +# { +# "name": "min(A, B)", +# "value": "min($in1($uv),$in2($uv))" +# }, +# { +# "name": "max(A, B)", +# "value": "max($in1($uv),$in2($uv))" +# }, +# { +# "name": "A Vector3: + var K : Color = Color(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + + var p : Color + + if c.y < c.z: + p = Color(c.z, c.y, K.a, K.b) + else: + p = Color(c.y, c.z, K.r, K.g); + + var q : Color + + if c.x < p.r: + q = Color(p.r, p.g, p.a, c.x) + else: + q = Color(c.x, p.g, p.b, p.r); + + var d : float = q.r - min(q.a, q.g); + var e : float = 1.0e-10; + + return Vector3(abs(q.b + (q.a - q.g) / (6.0 * d + e)), d / (q.r + e), q.r); + +#vec3 hsv_to_rgb(vec3 c) { +# vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); +# vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); +# return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +#} + +static func hsv_to_rgb(c : Vector3) -> Vector3: + var K : Color = Color(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + + var p : Vector3 = Commons.absv3(Commons.fractv3(Vector3(c.x, c.x, c.x) + Vector3(K.r, K.g, K.b)) * 6.0 - Vector3(K.a, K.a, K.a)); + + return c.z * lerp(Vector3(K.r, K.r, K.r), Commons.clampv3(p - Vector3(K.r, K.r, K.r), Vector3(), Vector3(1, 1, 1)), c.y); + +#adjust_hsv.mmg + +#vec4 $(name_uv)_rbga = $in($(uv)); +#vec3 $(name_uv)_hsv = rgb_to_hsv($(name_uv)_rbga.rgb); +#$(name_uv)_hsv.x += $(hue); +#$(name_uv)_hsv.y = clamp($(name_uv)_hsv.y*$(saturation), 0.0, 1.0); +#$(name_uv)_hsv.z = clamp($(name_uv)_hsv.z*$(value), 0.0, 1.0); + +#hue, min: -0.5, max: 0.5, step: 0, default: 0 +#saturation, min: 0, max: 2, step: 0, default: 1 +#value, min: 0, max: 2, step: 0, default: 1 + +#output: vec4(hsv_to_rgb($(name_uv)_hsv), $(name_uv)_rbga.a) + +static func adjust_hsv(color : Color, hue : float, saturation : float, value : float) -> Color: + var hsv : Vector3 = rgb_to_hsv(Vector3(color.r, color.g, color.b)); + + hsv.x += hue + hsv.y = clamp(hsv.y * saturation, 0.0, 1.0) + hsv.z = clamp(hsv.z * value, 0.0, 1.0) + + var h : Vector3 = hsv_to_rgb(hsv) + + return Color(h.x, h.y, h.z, color.a); + +#brightness, min: -1, max: 1, step: 0.01, default: 0 +#contrast, min: -1, max: 1, step: 0.01, default: 1 + +#input: default: vec4(0.5 ,0.5, 0.5, 1.0) -> img + +#output: vec4(clamp($in($uv).rgb*$contrast+vec3($brightness)+0.5-$contrast*0.5, vec3(0.0), vec3(1.0)), $in($uv).a) + +static func brightness_contrast(color : Color, brightness : float, contrast : float) -> Color: + #output: vec4(clamp( $in($uv).rgb*$contrast + vec3($brightness) + 0.5 - $contrast*0.5, vec3(0.0), vec3(1.0)), $in($uv).a) + + var cvv : Vector3 = Vector3(color.r, color.g, color.b) * contrast + + var cv : Vector3 = cvv + Vector3(brightness, brightness, brightness) + Vector3(0.5, 0.5, 0.5) - Vector3(contrast, contrast, contrast) * 0.5 + + var v : Vector3 = Commons.clampv3(cv, Vector3(), Vector3(1, 1, 1)) + + return Color(v.x, v.y, v.z, color.a); + +#greyscale + +#input: default: vec3(0.0). (Image) +#output: gs_$mode($in($uv)) +#mode: enum: Lightness, Average, Luminosity, Min, Max. default: 4 + +#float gs_min(vec3 c) { +# return min(c.r, min(c.g, c.b)); +#} + +static func grayscale_min(c : Vector3) -> float: + return min(c.x, min(c.y, c.z)); + +#float gs_max(vec3 c) { +# return max(c.r, max(c.g, c.b)); +#} + +static func grayscale_max(c : Vector3) -> float: + return max(c.x, max(c.y, c.z)); + +#float gs_lightness(vec3 c) { +# return 0.5*(max(c.r, max(c.g, c.b)) + min(c.r, min(c.g, c.b))); +#} + +static func grayscale_lightness(c : Vector3) -> float: + return 0.5*(max(c.x, max(c.y, c.z)) + min(c.x, min(c.y, c.z))); + +#float gs_average(vec3 c) { +# return 0.333333333333*(c.r + c.g + c.b); +#} + +static func grayscale_average(c : Vector3) -> float: + return 0.333333333333*(c.x + c.y + c.z); + +#float gs_luminosity(vec3 c) { +# return 0.21 * c.r + 0.72 * c.g + 0.07 * c.b; +#} + +static func grayscale_luminosity(c : Vector3) -> float: + return 0.21 * c.x + 0.72 * c.y + 0.07 * c.z; + +static func invert(color : Color) -> Color: + return Color(1.0 - color.r, 1.0 - color.g, 1.0 - color.b, color.a); + +#vec3 blend_normal(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*c1 + (1.0-opacity)*c2;\n +#} + +static func blend_normal(uv : Vector2, c1 : Vector3, c2 : Vector3, opacity : float) -> Vector3: + return opacity * c1 + (1.0 - opacity) * c2 + +#vec3 blend_dissolve(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\t +# if (rand(uv) < opacity) {\n\t\t +# return c1;\n\t +# } else {\n\t\t +# return c2;\n\t +# }\n +#} + +static func blend_dissolve(uv : Vector2, c1 : Vector3, c2 : Vector3, opacity : float) -> Vector3: + if (Commons.rand2(uv) < Vector2(opacity, opacity)): + return c1 + else: + return c2 + +#vec3 blend_multiply(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*c1*c2 + (1.0-opacity)*c2;\n +#} + +static func blend_multiply(uv : Vector2, c1 : Vector3, c2 : Vector3, opacity : float) -> Vector3: + return opacity * c1 * c2 + (1.0 - opacity) * c2 + +#vec3 blend_screen(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*(1.0-(1.0-c1)*(1.0-c2)) + (1.0-opacity)*c2;\n +#} + +static func blend_screen(uv : Vector2, c1 : Vector3, c2 : Vector3, opacity : float) -> Vector3: + return opacity * (Vector3(1, 1, 1) - (Vector3(1, 1, 1) - c1) * (Vector3(1, 1, 1) - c2)) + (1.0 - opacity) * c2 + +#float blend_overlay_f(float c1, float c2) {\n\t +# return (c1 < 0.5) ? (2.0*c1*c2) : (1.0-2.0*(1.0-c1)*(1.0-c2));\n +#} + +static func blend_overlay_f(c1 : float, c2 : float) -> float: + if (c1 < 0.5): + return (2.0 * c1 * c2) + else: + return (1.0 - 2.0 * (1.0 - c1) * (1.0 - c2)) + +#vec3 blend_overlay(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*vec3(blend_overlay_f(c1.x, c2.x), blend_overlay_f(c1.y, c2.y), blend_overlay_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n +#} + +static func blend_overlay(uv : Vector2, c1 : Vector3, c2 : Vector3, opacity : float) -> Vector3: + return opacity * Vector3(blend_overlay_f(c1.x, c2.x), blend_overlay_f(c1.y, c2.y), blend_overlay_f(c1.z, c2.z)) + (1.0 - opacity) * c2 + +#vec3 blend_hard_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*0.5*(c1*c2+blend_overlay(uv, c1, c2, 1.0)) + (1.0-opacity)*c2;\n +#} + +static func blend_hard_light(uv : Vector2, c1 : Vector3, c2 : Vector3, opacity : float) -> Vector3: + return opacity * 0.5 * (c1 * c2 + blend_overlay(uv, c1, c2, 1.0)) + (1.0 - opacity) * c2 + +#float blend_soft_light_f(float c1, float c2) {\n\t +# return (c2 < 0.5) ? (2.0*c1*c2+c1*c1*(1.0-2.0*c2)) : 2.0*c1*(1.0-c2)+sqrt(c1)*(2.0*c2-1.0);\n +#} + +static func blend_soft_light_f(c1 : float, c2 : float) -> float: + if (c2 < 0.5): + return (2.0 * c1 * c2 + c1 * c1 * (1.0 - 2.0 * c2)) + else: + return 2.0 * c1 * (1.0 - c2) + sqrt(c1) * (2.0 * c2 - 1.0) + +#vec3 blend_soft_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*vec3(blend_soft_light_f(c1.x, c2.x), blend_soft_light_f(c1.y, c2.y), blend_soft_light_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n +#} + +static func blend_soft_light(uv : Vector2, c1 : Vector3, c2 : Vector3, opacity : float) -> Vector3: + return opacity * Vector3(blend_soft_light_f(c1.x, c2.x), blend_soft_light_f(c1.y, c2.y), blend_soft_light_f(c1.z, c2.z)) + (1.0 - opacity) * c2 + +#float blend_burn_f(float c1, float c2) {\n\t +# return (c1==0.0)?c1:max((1.0-((1.0-c2)/c1)),0.0);\n +#} + +static func blend_burn_f(c1 : float, c2 : float) -> float: + if (c1 == 0.0): + return c1 + else: + return max((1.0 - ((1.0 - c2) / c1)), 0.0) + +#vec3 blend_burn(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*vec3(blend_burn_f(c1.x, c2.x), blend_burn_f(c1.y, c2.y), blend_burn_f(c1.z, c2.z)) + (1.0-opacity)*c2; +#} + +static func blend_burn(uv : Vector2, c1 : Vector3, c2 : Vector3, opacity : float) -> Vector3: + return opacity * Vector3(blend_burn_f(c1.x, c2.x), blend_burn_f(c1.y, c2.y), blend_burn_f(c1.z, c2.z)) + (1.0 - opacity) * c2 + +#float blend_dodge_f(float c1, float c2) {\n\t +# return (c1==1.0)?c1:min(c2/(1.0-c1),1.0);\n +#} + +static func blend_dodge_f(c1 : float, c2 : float) -> float: + if (c1==1.0): + return c1 + else: + return min(c2 / (1.0 - c1), 1.0) + +#vec3 blend_dodge(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*vec3(blend_dodge_f(c1.x, c2.x), blend_dodge_f(c1.y, c2.y), blend_dodge_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n +#} + +static func blend_dodge(uv : Vector2, c1 : Vector3, c2 : Vector3, opacity : float) -> Vector3: + return opacity * Vector3(blend_dodge_f(c1.x, c2.x), blend_dodge_f(c1.y, c2.y), blend_dodge_f(c1.z, c2.z)) + (1.0 - opacity) * c2 + +#vec3 blend_lighten(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*max(c1, c2) + (1.0-opacity)*c2;\n +#} + +static func blend_lighten(uv : Vector2, c1 : Vector3, c2 : Vector3, opacity : float) -> Vector3: + return opacity * Commons.maxv3(c1, c2) + (1.0 - opacity) * c2 + +#vec3 blend_darken(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*min(c1, c2) + (1.0-opacity)*c2;\n +#} + +static func blend_darken(uv : Vector2, c1 : Vector3, c2 : Vector3, opacity : float) -> Vector3: + return opacity * Commons.minv3(c1, c2) + (1.0 - opacity) * c2 + +#vec3 blend_difference(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*clamp(c2-c1, vec3(0.0), vec3(1.0)) + (1.0-opacity)*c2;\n +#} + +static func blend_difference(uv : Vector2, c1 : Vector3, c2 : Vector3, opacity : float) -> Vector3: + return opacity * Commons.clampv3(c2 - c1, Vector3(), Vector3(1, 1, 1)) + (1.0 - opacity) * c2 + +#vec4 adjust_levels(vec4 input, vec4 in_min, vec4 in_mid, vec4 in_max, vec4 out_min, vec4 out_max) {\n\t +# input = clamp((input-in_min)/(in_max-in_min), 0.0, 1.0);\n\t +# in_mid = (in_mid-in_min)/(in_max-in_min);\n\t +# vec4 dark = step(in_mid, input);\n\t +# +# input = 0.5*mix(input/(in_mid), 1.0+(input-in_mid)/(1.0-in_mid), dark);\n\t +# return out_min+input*(out_max-out_min);\n +#} + diff --git a/game/addons/mat_maker_gd/nodes/common/gradients.gd b/game/addons/mat_maker_gd/nodes/common/gradients.gd new file mode 100644 index 0000000..9c40cc6 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/gradients.gd @@ -0,0 +1,225 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#note: data : PoolRealArray -> pos, r, g, b, a, pos, r, g, b, a .... + +#gradient.mmg + +#float $(name_uv)_r = 0.5+(cos($rotate*0.01745329251)*($uv.x-0.5)+sin($rotate*0.01745329251)*($uv.y-0.5))/(cos(abs(mod($rotate, 90.0)-45.0)*0.01745329251)*1.41421356237);" + +#output: $gradient(fract($(name_uv)_r*$repeat)) + +#repeat: default: 1, min: 1, max : 32, step: 1 +#rotate: default: 0, min: -180, max: 180, step: 0.1 + +#default: "interpolation": 1, +# "points": [{"a": 1,"b": 0,"g": 0,"pos": 0,"r": 0},{"a": 1,"b": 1,"g": 1,"pos": 1,"r": 1} ], + +#radial_gradient.mmg + +#output: $gradient(fract($repeat*1.41421356237*length(fract($uv)-vec2(0.5, 0.5)))) + +#repeat: default: 1, min: 1, max : 32, step: 1 + +#circular_gradient.mmg + +#output: gradient(fract($repeat*0.15915494309*atan($uv.y-0.5, $uv.x-0.5))) + +#repeat: default: 1, min: 1, max : 32, step: 1 + +#gradient.gd + +static func radial_gradient_type_1(uv : Vector2, repeat : float, data : PoolRealArray) -> Color: + return gradient_type_1(Commons.fractf(repeat * 1.41421356237* (Commons.fractv2(uv) - Vector2(0.5, 0.5)).length()), data) + +static func radial_gradient_type_2(uv : Vector2, repeat : float, data : PoolRealArray) -> Color: + return gradient_type_2(Commons.fractf(repeat * 1.41421356237* (Commons.fractv2(uv) - Vector2(0.5, 0.5)).length()), data) + +static func radial_gradient_type_3(uv : Vector2, repeat : float, data : PoolRealArray) -> Color: + return gradient_type_3(Commons.fractf(repeat * 1.41421356237* (Commons.fractv2(uv) - Vector2(0.5, 0.5)).length()), data) + +static func radial_gradient_type_4(uv : Vector2, repeat : float, data : PoolRealArray) -> Color: + return gradient_type_4(Commons.fractf(repeat * 1.41421356237* (Commons.fractv2(uv) - Vector2(0.5, 0.5)).length()), data) + + + +static func normal_gradient_type_1(uv : Vector2, repeat : float, rotate : float, data : PoolRealArray) -> Color: + var rr : float = 0.5+(cos(rotate*0.01745329251)*(uv.x-0.5)+sin(rotate*0.01745329251)*(uv.y-0.5))/(cos(abs(Commons.modf(rotate, 90.0)-45.0)*0.01745329251)*1.41421356237); + return gradient_type_1(Commons.fractf(rr * repeat), data) + +static func normal_gradient_type_2(uv : Vector2, repeat : float, rotate : float, data : PoolRealArray) -> Color: + var rr : float = 0.5+(cos(rotate*0.01745329251)*(uv.x-0.5)+sin(rotate*0.01745329251)*(uv.y-0.5))/(cos(abs(Commons.modf(rotate, 90.0)-45.0)*0.01745329251)*1.41421356237); + return gradient_type_2(Commons.fractf(rr * repeat), data) + +static func normal_gradient_type_3(uv : Vector2, repeat : float, rotate : float, data : PoolRealArray) -> Color: + var rr : float = 0.5+(cos(rotate*0.01745329251)*(uv.x-0.5)+sin(rotate*0.01745329251)*(uv.y-0.5))/(cos(abs(Commons.modf(rotate, 90.0)-45.0)*0.01745329251)*1.41421356237); + return gradient_type_3(Commons.fractf(rr * repeat), data) + +static func normal_gradient_type_4(uv : Vector2, repeat : float, rotate : float, data : PoolRealArray) -> Color: + var rr : float = 0.5+(cos(rotate*0.01745329251)*(uv.x-0.5)+sin(rotate*0.01745329251)*(uv.y-0.5))/(cos(abs(Commons.modf(rotate, 90.0)-45.0)*0.01745329251)*1.41421356237); + return gradient_type_4(Commons.fractf(rr * repeat), data) + + + +static func circular_gradient_type_1(uv : Vector2, repeat : float, data : PoolRealArray) -> Color: + return gradient_type_1(Commons.fractf(repeat * 0.15915494309 * atan2((uv.y - 0.5), uv.x - 0.5)), data) + +static func circular_gradient_type_2(uv : Vector2, repeat : float, data : PoolRealArray) -> Color: + return gradient_type_2(Commons.fractf(repeat * 0.15915494309 * atan2((uv.y - 0.5), uv.x - 0.5)), data) + +static func circular_gradient_type_3(uv : Vector2, repeat : float, data : PoolRealArray) -> Color: + return gradient_type_3(Commons.fractf(repeat * 0.15915494309 * atan2((uv.y - 0.5), uv.x - 0.5)), data) + +static func circular_gradient_type_4(uv : Vector2, repeat : float, data : PoolRealArray) -> Color: + return gradient_type_4(Commons.fractf(repeat * 0.15915494309 * atan2((uv.y - 0.5), uv.x - 0.5)), data) + + +static func gradient_type_1(x : float, data : PoolRealArray) -> Color: + if data.size() % 5 != 0 || data.size() == 0: + return Color() + + for i in range(0, data.size() - 5, 5): + if x < 0.5 * (data[i] + data[i + 5]): + return Color(data[i + 1], data[i + 2], data[i + 3], data[i + 4]) + + var ds = data.size() - 5 + return Color(data[ds + 1], data[ds + 2], data[ds + 3], data[ds + 4]) + +static func gradient_type_2(x : float, data : PoolRealArray) -> Color: + if data.size() % 5 != 0 || data.size() == 0: + return Color() + + for i in range(0, data.size(), 5): + if x < data[i]: + if i == 0: + return Color(data[i + 1], data[i + 2], data[i + 3], data[i + 4]) + + var cprev : Color = Color(data[i - 4], data[i - 3], data[i - 2], data[i - 1]) + var ccurr : Color = Color(data[i + 1], data[i + 2], data[i + 3], data[i + 4]) + return lerp(cprev, ccurr, (x - data[i - 5]) / (data[i] - data[i - 5])); + + var ds = data.size() - 5 + return Color(data[ds + 1], data[ds + 2], data[ds + 3], data[ds + 4]) + +static func gradient_type_3(x : float, data : PoolRealArray) -> Color: + if data.size() % 5 != 0 || data.size() == 0: + return Color() + + for i in range(0, data.size(), 5): + if x < data[i]: + if i == 0: + return Color(data[i + 1], data[i + 2], data[i + 3], data[i + 4]) + + var cprev : Color = Color(data[i - 4], data[i - 3], data[i - 2], data[i - 1]) + var ccurr : Color = Color(data[i + 1], data[i + 2], data[i + 3], data[i + 4]) + return lerp(cprev, ccurr, 0.5 - 0.5 * cos(3.14159265359 * ((x - data[i - 5]) / (data[i] - data[i - 5])))) + + var ds = data.size() - 5 + return Color(data[ds + 1], data[ds + 2], data[ds + 3], data[ds + 4]) + +static func get_data_color(index : int, data : PoolRealArray) -> Color: + var i : int = index * 5 + + return Color(data[i + 1], data[i + 2],data[i + 3], data[i + 4]) + +static func get_data_pos(index : int, data : PoolRealArray) -> float: + return data[index * 5] + +static func gradient_type_4(x : float, data : PoolRealArray) -> Color: + if data.size() % 5 != 0 || data.size() == 0: + return Color() + + var ds : int = data.size() / 5 + var s : int = ds - 1 + + for i in range(0, s): + if x < get_data_pos(i, data): + if i == 0: + return get_data_color(i, data) + +# var dx : String = "(x-%s)/(%s-%s)" % [ pv(name, i), pv(name, i+1), pv(name, i) ] + var dx : float = (x - get_data_pos(i, data))/(get_data_pos(i + 1, data) - get_data_pos(i, data)) +# var b : String = "mix(%s, %s, %s)" % [ pc(name, i), pc(name, i+1), dx ] + var b : Color = lerp(get_data_color(i - 1, data), get_data_color(i - 1, data), dx) + + if i == 1: +# var c : String = "mix(%s, %s, (x-%s)/(%s-%s))" % [ pc(name, i+1), pc(name, i+2), pv(name, i+1), pv(name, i+2), pv(name, i+1) ] + var c : Color = lerp(get_data_color(i + 1, data), get_data_color(i + 2, data), (x - get_data_pos(i + 1, data))/(get_data_pos(i + 2, data) - get_data_pos(i + 1, data))) +# shader += " return mix("+c+", "+b+", 1.0-0.5*"+dx+");\n" + return lerp(c, b, 1.0 - 0.5 * dx) + +# var a : String = "mix(%s, %s, (x-%s)/(%s-%s))" % [ pc(name, i-1), pc(name, i), pv(name, i-1), pv(name, i), pv(name, i-1) ] + var a : Color = lerp(get_data_color(i - 1, data), get_data_color(i, data), (x - get_data_pos(i - 1, data)) / (get_data_pos(i, data) - get_data_pos(i - 1, data))) + +# if i < s-1: + if i < s - 1: +# var c : String = "mix(%s, %s, (x-%s)/(%s-%s))" % [ pc(name, i+1), pc(name, i+2), pv(name, i+1), pv(name, i+2), pv(name, i+1) ] + var c : Color = lerp(get_data_color(i + 1, data), get_data_color(i + 2, data), (x - get_data_pos(i + 1, data)) / (get_data_pos(i + 2, data) - get_data_pos(i + 1, data))) +# var ac : String = "mix("+a+", "+c+", 0.5-0.5*cos(3.14159265359*"+dx+"))" + var ac : Color = lerp(a, c, 0.5-0.5*cos(3.14159265359 * dx)) +# shader += " return 0.5*("+b+" + "+ac+");\n" + var dt : Color = b + ac + + dt.r *= 0.5 + dt.g *= 0.5 + dt.b *= 0.5 + dt.a = clamp(0, 1, dt.a) + + return dt +# else + else: +# shader += " return mix("+a+", "+b+", 0.5+0.5*"+dx+");\n" + return lerp(a, b, 0.5 + 0.5 * dx) + + return get_data_color(ds - 1, data) + +#todo make it selectable +static func gradient_type_5(x : float, data : PoolRealArray) -> Color: + if data.size() % 5 != 0 || data.size() == 0: + return Color() + + var ds : int = data.size() / 5 + var s : int = ds - 1 + + for i in range(0, s): + if x < get_data_pos(i, data): + if i == 0: + return get_data_color(i, data) + +# var dx : String = "(x-%s)/(%s-%s)" % [ pv(name, i), pv(name, i+1), pv(name, i) ] + var dx : float = (x - get_data_pos(i, data))/(get_data_pos(i + 1, data) - get_data_pos(i, data)) +# var b : String = "mix(%s, %s, %s)" % [ pc(name, i), pc(name, i+1), dx ] + var b : Color = lerp(get_data_color(i - 1, data), get_data_color(i - 1, data), dx) + + if i == 1: +# var c : String = "mix(%s, %s, (x-%s)/(%s-%s))" % [ pc(name, i+1), pc(name, i+2), pv(name, i+1), pv(name, i+2), pv(name, i+1) ] + var c : Color = lerp(get_data_color(i + 1, data), get_data_color(i + 2, data), (x - get_data_pos(i + 1, data))/(get_data_pos(i + 2, data) - get_data_pos(i + 1, data))) +# shader += " return mix("+c+", "+b+", 1.0-0.5*"+dx+");\n" + return lerp(c, b, 1.0 - 0.5 * dx) + +# var a : String = "mix(%s, %s, (x-%s)/(%s-%s))" % [ pc(name, i-1), pc(name, i), pv(name, i-1), pv(name, i), pv(name, i-1) ] + var a : Color = lerp(get_data_color(i - 1, data), get_data_color(i, data), (x - get_data_pos(i - 1, data)) / (get_data_pos(i, data) - get_data_pos(i - 1, data))) + +# if i < s-1: + if i < s - 1: +# var c : String = "mix(%s, %s, (x-%s)/(%s-%s))" % [ pc(name, i+1), pc(name, i+2), pv(name, i+1), pv(name, i+2), pv(name, i+1) ] + var c : Color = lerp(get_data_color(i+1, data), get_data_color(i+2, data), (x - get_data_pos(i + 1, data)) / (get_data_pos(i + 2, data) - get_data_pos(i + 1, data))) +# var ac : String = "mix("+a+", "+c+", 0.5-0.5*cos(3.14159265359*"+dx+"))" + var ac : Color = lerp(a, c, 0.5-0.5*cos(3.14159265359 * dx)) +# shader += " return 0.5*("+b+" + "+ac+");\n" + var dt : Color = b + ac + + dt.r *= 0.5 + dt.g *= 0.5 + dt.b *= 0.5 + dt.a = clamp(0, 1, dt.a) + + return dt +# else + else: +# shader += " return mix("+a+", "+b+", 0.5+0.5*"+dx+");\n" + return lerp(a, b, 0.5 + 0.5 * dx) + + return get_data_color(ds - 1, data) diff --git a/game/addons/mat_maker_gd/nodes/common/mwf.gd b/game/addons/mat_maker_gd/nodes/common/mwf.gd new file mode 100644 index 0000000..7226ea6 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/mwf.gd @@ -0,0 +1,705 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#---------------------- +#mwf_create_map.mmg +#Creates a workflow map using a heightmap and an optional seed map. The workflow map contains height information as well as orientation and a seed for random offset for the material it will be applied to. + +# "inputs": [ +# { +# "default": "1.0", +# "label": "", +# "longdesc": "The input height map", +# "name": "h", +# "shortdesc": "Height", +# "type": "f" +# }, +# { +# "default": "0.0", +# "label": "", +# "longdesc": "The input offset seed map", +# "name": "o", +# "shortdesc": "Offset", +# "type": "f" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The generated workflow map, to be connected to a MixMap or an ApplyMap node", +# "rgb": "vec3($height*$h($uv), $angle*0.00277777777+0.5, rand(vec2(float($seed)+$o($uv))))", +# "shortdesc": "Output", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 1, +# "label": "Height", +# "longdesc": "The maximum height of the workflow map, used as multiplier for the input height map", +# "max": 1, +# "min": 0, +# "name": "height", +# "shortdesc": "Height", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Angle", +# "longdesc": "The angle stored in the workflow map", +# "max": 180, +# "min": -180, +# "name": "angle", +# "shortdesc": "Angle", +# "step": 0.1, +# "type": "float" +# } +# ], + +#---------------------- +#mwf_mix_maps.mmg +#Mixes up to 4 workflow maps, to be used with the same base material + +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "label": "", +# "longdesc": "The first workflow map", +# "name": "in1", +# "shortdesc": "Input1", +# "type": "rgb" +# }, +# { +# "default": "vec3(0.0)", +# "label": "", +# "longdesc": "The second workflow map", +# "name": "in2", +# "shortdesc": "Input2", +# "type": "rgb" +# }, +# { +# "default": "vec3(0.0)", +# "label": "", +# "longdesc": "The third input map", +# "name": "in3", +# "shortdesc": "Input3", +# "type": "rgb" +# }, +# { +# "default": "vec3(0.0)", +# "label": "", +# "longdesc": "The fourth input map", +# "name": "in4", +# "shortdesc": "Input4", +# "type": "rgb" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Generates a merged workflow map", +# "rgb": "matmap_mix(matmap_mix($in1($uv), $in2($uv)), matmap_mix($in3($uv), $in4($uv)))", +# "shortdesc": "Output", +# "type": "rgb" +# } +# ], + +#---------------------- +#mwf_map.mmg +#"Applies a workflow map to a base material, and generates height information as well as PBR channels for the result.\nThe height input must be connected to a Create Map or Mix Maps node. The other inputs must be connected to a base material.\nThe outputs must be connected to the Mix or the Output node, or a workflow filter node. + +# "code": "float $(name_uv)_angle = 6.28318530718*($map($uv).y-0.5);\nvec2 $(name_uv)_uv = matmap_uv($uv, $(name_uv)_angle, $map($uv).z);\n", +# "inputs": [ +# { +# "default": "vec3(1.0, 0.5, 0.0)", +# "label": "Map", +# "longdesc": "The input workflow map", +# "name": "map", +# "shortdesc": "Map", +# "type": "rgb" +# }, +# { +# "default": "vec3(0.0)", +# "group_size": 4, +# "label": "Albedo", +# "longdesc": "The Albedo channel of the input base material", +# "name": "mat1", +# "shortdesc": "Albedo", +# "type": "rgb" +# }, +# { +# "default": "vec3(0.0)", +# "label": "ORM", +# "longdesc": "The ambient occlusion, roughness and metallic channels of the input material", +# "name": "mat2", +# "shortdesc": "ORM", +# "type": "rgb" +# }, +# { +# "default": "vec3(0.0)", +# "label": "Emission", +# "longdesc": "The emission channel of the input material", +# "name": "mat3", +# "shortdesc": "Emission", +# "type": "rgb" +# }, +# { +# "default": "vec3(0.5, 0.5, 1.0)", +# "label": "Normal", +# "longdesc": "The normal map of the input material", +# "name": "mat4", +# "shortdesc": "Normal", +# "type": "rgb" +# } +# ], +# "outputs": [ +# { +# "f": "$map($uv).x", +# "group_size": 5, +# "longdesc": "The height map of the result", +# "shortdesc": "Height", +# "type": "f" +# }, +# { +# "longdesc": "The albedo channel of the result", +# "rgb": "$mat1($(name_uv)_uv)", +# "shortdesc": "Albedo", +# "type": "rgb" +# }, +# { +# "longdesc": "The ambient occlusion, roughness and metallic channels of the result", +# "rgb": "$mat2($(name_uv)_uv)", +# "shortdesc": "ORM", +# "type": "rgb" +# }, +# { +# "longdesc": "The emission channel of the result", +# "rgb": "$mat3($(name_uv)_uv)", +# "shortdesc": "Emission", +# "type": "rgb" +# }, +# { +# "longdesc": "The normal map of the result", +# "rgb": "matmap_rotate_nm($mat4($(name_uv)_uv), -$(name_uv)_angle)", +# "shortdesc": "Normal", +# "type": "rgb" +# } +# ], + +#---------------------- +#mwf_mix.mmg +#Combines the outputs of 2 mapped base materials (keeping the \"highest\" material). + +# "code": "float $(name_uv)_a1 = step($h1($uv), $h2($uv));", +# "inputs": [ +# { +# "default": "0.0", +# "group_size": 5, +# "label": "Height 1", +# "longdesc": "The height map of the first input", +# "name": "h1", +# "shortdesc": "Height1", +# "type": "f" +# }, +# { +# "default": "vec3(0.0)", +# "label": "Albedo 1", +# "longdesc": "The albedo channel of the first input", +# "name": "c1", +# "shortdesc": "Albedo1", +# "type": "rgb" +# }, +# { +# "default": "vec3(0.0)", +# "label": "ORM 1", +# "longdesc": "The ambient occlusion, roughness and metallic channels of the first input", +# "name": "orm1", +# "shortdesc": "ORM1", +# "type": "rgb" +# }, +# { +# "default": "vec3(0.0)", +# "label": "Emission 1", +# "longdesc": "The emission channel of the first input", +# "name": "em1", +# "shortdesc": "Emission1", +# "type": "rgb" +# }, +# { +# "default": "vec3(0.5, 0.5, 1.0)", +# "label": "Normal 1", +# "longdesc": "The normal map of the first input", +# "name": "nm1", +# "shortdesc": "Normal1", +# "type": "rgb" +# }, +# { +# "default": "0.0", +# "group_size": 5, +# "label": "Height 2", +# "longdesc": "The height map of the second input", +# "name": "h2", +# "shortdesc": "Height2", +# "type": "f" +# }, +# { +# "default": "vec3(0.0)", +# "label": "Albedo 2", +# "longdesc": "The albedo channel of the second input", +# "name": "c2", +# "shortdesc": "Albedo2", +# "type": "rgb" +# }, +# { +# "default": "vec3(0.0)", +# "label": "ORM 2", +# "longdesc": "The ambient occlusion, roughness and metallic channels of the second input", +# "name": "orm2", +# "shortdesc": "ORM2", +# "type": "rgb" +# }, +# { +# "default": "vec3(0.0)", +# "label": "Emission 2", +# "longdesc": "The emission channel of the second input", +# "name": "em2", +# "shortdesc": "Emission2", +# "type": "rgb" +# }, +# { +# "default": "vec3(0.5, 0.5, 1.0)", +# "label": "Normal 2", +# "longdesc": "The normal map of the second input", +# "name": "nm2", +# "shortdesc": "Normal2", +# "type": "rgb" +# } +# ], +# "outputs": [ +# { +# "f": "max($h1($uv), $h2($uv))", +# "group_size": 5, +# "longdesc": "Generates the height of the result", +# "shortdesc": "Height", +# "type": "f" +# }, +# { +# "longdesc": "Shows the output albedo channel", +# "rgb": "mix($c1($uv), $c2($uv), $(name_uv)_a1)", +# "shortdesc": "Albedo", +# "type": "rgb" +# }, +# { +# "longdesc": "Shows the output ambient occlusion, roughness and metallic channels", +# "rgb": "mix($orm1($uv), $orm2($uv), $(name_uv)_a1)", +# "shortdesc": "ORM", +# "type": "rgb" +# }, +# { +# "longdesc": "Shows the output emission channel", +# "rgb": "mix($em1($uv), $em2($uv), $(name_uv)_a1)", +# "shortdesc": "Emission", +# "type": "rgb" +# }, +# { +# "longdesc": "Shows the output normal map", +# "rgb": "mix($nm1($uv), $nm2($uv), $(name_uv)_a1)", +# "shortdesc": "Normal", +# "type": "rgb" +# } +# ], + + +#---------------------- +#mwf_output.mmg + +#{ +# "connections": [ +# { +# "from": "colorize_3", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 6 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "colorize_3", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "occlusion", +# "to_port": 0 +# }, +# { +# "from": "occlusion", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 5 +# }, +# { +# "from": "gen_inputs", +# "from_port": 2, +# "to": "decompose", +# "to_port": 0 +# }, +# { +# "from": "decompose", +# "from_port": 1, +# "to": "gen_outputs", +# "to_port": 2 +# }, +# { +# "from": "decompose", +# "from_port": 2, +# "to": "gen_outputs", +# "to_port": 1 +# }, +# { +# "from": "blend_2", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 4 +# }, +# { +# "from": "gen_inputs", +# "from_port": 1, +# "to": "gen_outputs", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 3, +# "to": "gen_outputs", +# "to_port": 3 +# }, +# { +# "from": "brightness_contrast", +# "from_port": 0, +# "to": "blend_2", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 4, +# "to": "brightness_contrast", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "normal_map_2", +# "to_port": 0 +# }, +# { +# "from": "normal_map_2", +# "from_port": 0, +# "to": "blend_2", +# "to_port": 1 +# } +# ], +# "label": "Output", +# "longdesc": "Converts a workflow mapped material (from an Apply Map or a Mix node) for a Material node", +# "name": "mwf_output", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "nodes": [ +# { +# "name": "colorize_3", +# "node_position": { +# "x": -939.637451, +# "y": 871.842407 +# }, +# "parameters": { +# "gradient": { +# "interpolation": 1, +# "points": [ +# { +# "a": 1, +# "b": 1, +# "g": 1, +# "pos": 0, +# "r": 1 +# }, +# { +# "a": 1, +# "b": 0, +# "g": 0, +# "pos": 1, +# "r": 0 +# } +# ], +# "type": "Gradient" +# } +# }, +# "type": "colorize" +# }, +# { +# "name": "occlusion", +# "node_position": { +# "x": -994.845825, +# "y": 786.968262 +# }, +# "parameters": { +# "param0": 10, +# "param2": 1 +# }, +# "type": "occlusion" +# }, +# { +# "name": "decompose", +# "node_position": { +# "x": -924.371338, +# "y": 570.25 +# }, +# "parameters": { +# +# }, +# "type": "decompose" +# }, +# { +# "name": "blend_2", +# "node_position": { +# "x": -931.305542, +# "y": 677.328491 +# }, +# "parameters": { +# "amount": 1, +# "blend_type": 4 +# }, +# "type": "blend" +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -1626.805542, +# "y": 608.758606 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 5, +# "name": "Height", +# "type": "f" +# }, +# { +# "group_size": 0, +# "name": "Albedo", +# "type": "rgb" +# }, +# { +# "group_size": 0, +# "name": "ORM", +# "type": "rgb" +# }, +# { +# "group_size": 0, +# "name": "Emission", +# "type": "rgb" +# }, +# { +# "group_size": 0, +# "name": "Normal", +# "type": "rgb" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": -635.305542, +# "y": 597.758606 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 7, +# "longdesc": "", +# "name": "Albedo", +# "shortdesc": "Albedo", +# "type": "rgb" +# }, +# { +# "group_size": 0, +# "longdesc": "", +# "name": "Metallic", +# "shortdesc": "Metallic", +# "type": "f" +# }, +# { +# "group_size": 0, +# "longdesc": "", +# "name": "Roughness", +# "shortdesc": "Roughness", +# "type": "f" +# }, +# { +# "group_size": 0, +# "longdesc": "", +# "name": "Emission", +# "shortdesc": "Emission", +# "type": "rgb" +# }, +# { +# "group_size": 0, +# "longdesc": "", +# "name": "Normal", +# "shortdesc": "Normal", +# "type": "rgb" +# }, +# { +# "group_size": 0, +# "longdesc": "", +# "name": "Occlusion", +# "shortdesc": "Occlusion", +# "type": "f" +# }, +# { +# "group_size": 0, +# "longdesc": "", +# "name": "Depth", +# "shortdesc": "Depth", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": -1104.881836, +# "y": 425.25 +# }, +# "parameters": { +# "param0": 1, +# "param2": 1 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "Occlusion", +# "linked_widgets": [ +# { +# "node": "occlusion", +# "widget": "param2" +# } +# ], +# "longdesc": "The strength of the calculated occlusion effect", +# "name": "param2", +# "shortdesc": "Occlusion", +# "type": "linked_control" +# }, +# { +# "label": "Mat Normal", +# "linked_widgets": [ +# { +# "node": "blend_2", +# "widget": "amount" +# } +# ], +# "longdesc": "The strength of normals from the base materials (compared to the normal generated from height information))", +# "name": "param0", +# "shortdesc": "MatNormal", +# "type": "linked_control" +# } +# ] +# }, +# { +# "name": "brightness_contrast", +# "node_position": { +# "x": -1177.223877, +# "y": 677.062317 +# }, +# "parameters": { +# "brightness": 0, +# "contrast": 1 +# }, +# "type": "brightness_contrast" +# }, +# { +# "name": "normal_map_2", +# "node_position": { +# "x": -1152.5, +# "y": 544.75 +# }, +# "parameters": { +# "param0": 10, +# "param1": 1.02, +# "param2": 0, +# "param4": 1 +# }, +# "type": "normal_map" +# } +# ], +# "parameters": { +# "param0": 1, +# "param2": 1 +# }, +# "shortdesc": "Output", +# "type": "graph" +#} + +#---------------------- +#edge_detect.mmg + +#---------------------- +#edge_detect.mmg + +#---------------------- +#edge_detect.mmg + +#---------------------- +#edge_detect.mmg + +#---------------------- +#edge_detect.mmg + +#---------------------- +#edge_detect.mmg + +#---------------------- +#edge_detect.mmg + +#---------------------- +#edge_detect.mmg + +#---------------------- +#edge_detect.mmg + +#---------------------- +#edge_detect.mmg + + +#vec3 matmap_mix(vec3 in1, vec3 in2) {\n\t +# float is_in1 = step(in2.x, in1.x);\n\t +# //return vec3(max(in1.x, in2.x), in1.yz*is_in1+in2.yz*(1.0-is_in1));\n\t +# return vec3(max(in1.x, in2.x), mix(in2.yz, in1.yz, is_in1));\n +#} + +#vec2 matmap_uv(vec2 uv, float angle, float seed) {\n\t +# uv -= vec2(0.5);\n\tvec2 rv;\n\t +# rv.x = uv.x*cos(angle)+uv.y*sin(angle);\n\t +# rv.y = -uv.x*sin(angle)+uv.y*cos(angle);\n\t +# return fract(rv + rand2(vec2(seed)));\n +#} + +#vec3 matmap_rotate_nm(vec3 input, float angle) {\n\t +# vec2 uv = input.xy - vec2(0.5);\n\t +# vec2 rv;\n\t +# rv.x = uv.x*cos(angle)+uv.y*sin(angle);\n\t +# rv.y = -uv.x*sin(angle)+uv.y*cos(angle);\n\t +# return vec3(rv + vec2(0.5), input.z);\n +#} + diff --git a/game/addons/mat_maker_gd/nodes/common/noise_fbm.gd b/game/addons/mat_maker_gd/nodes/common/noise_fbm.gd new file mode 100644 index 0000000..8fb6f25 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/noise_fbm.gd @@ -0,0 +1,691 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#fbm2.mmg (and fbm.mmg) + +#Output: +#$(name)_fbm($(uv), vec2($(scale_x), $(scale_y)), int($(folds)), int($(iterations)), $(persistence), float($(seed))) + +#Instance: +#float $(name)_fbm(vec2 coord, vec2 size, int folds, int octaves, float persistence, float seed) { +# float normalize_factor = 0.0; +# float value = 0.0; +# float scale = 1.0; +# +# for (int i = 0; i < octaves; i++) { +# float noise = fbm_$noise(coord*size, size, seed); +# +# for (int f = 0; f < folds; ++f) { +# noise = abs(2.0*noise-1.0); +# } +# +# value += noise * scale; +# normalize_factor += scale; +# size *= 2.0; +# scale *= persistence; +# } +# +# return value / normalize_factor; +#} + +#Inputs: +#noise, enum, default: 2, values: Value, Perlin, Simplex, Cellular, Cellular2, Cellular3, Cellular4, Cellular5, Cellular6 +#scale, vector2, default: 4, min: 1, max: 32, step: 1 +#folds, float, default: 0, min: 0, max: 5, step: 1 +#iterations (octaves), float, default: 3, min: 1, max: 10, step: 1 +#persistence, float, default: 0.5, min: 0, max: 1, step: 0.01 + +static func fbmval(uv : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> Color: + var f : float = fbmf(uv, size, folds, octaves, persistence, pseed) + + return Color(f, f, f, 1) + +static func perlin(uv : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> Color: + var f : float = perlinf(uv, size, folds, octaves, persistence, pseed) + + return Color(f, f, f, 1) + +static func perlinabs(uv : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> Color: + var f : float = perlinf(uv, size, folds, octaves, persistence, pseed) + + return Color(f, f, f, 1) + +static func simplex(uv : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> Color: + var f : float = fbm_simplexf(uv, size, folds, octaves, persistence, pseed) + + return Color(f, f, f, 1) + +static func cellular(uv : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> Color: + var f : float = cellularf(uv, size, folds, octaves, persistence, pseed) + + return Color(f, f, f, 1) + +static func cellular2(uv : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> Color: + var f : float = cellular2f(uv, size, folds, octaves, persistence, pseed) + + return Color(f, f, f, 1) + +static func cellular3(uv : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> Color: + var f : float = cellular3f(uv, size, folds, octaves, persistence, pseed) + + return Color(f, f, f, 1) + +static func cellular4(uv : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> Color: + var f : float = cellular4f(uv, size, folds, octaves, persistence, pseed) + + return Color(f, f, f, 1) + +static func cellular5(uv : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> Color: + var f : float = cellular5f(uv, size, folds, octaves, persistence, pseed) + + return Color(f, f, f, 1) + +static func cellular6(uv : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> Color: + var f : float = cellular6f(uv, size, folds, octaves, persistence, pseed) + + return Color(f, f, f, 1) + + +static func fbmf(coord : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> float: + var normalize_factor : float = 0.0; + var value : float = 0.0; + var scale : float = 1.0; + + for i in range(octaves):# (int i = 0; i < octaves; i++) { + var noise : float = fbm_value(coord*size, size, pseed) + + for j in range(folds):# (int f = 0; f < folds; ++f) { + noise = abs(2.0*noise-1.0); + + value += noise * scale + normalize_factor += scale; + size *= 2.0; + scale *= persistence; + + return value / normalize_factor; + +static func perlinf(coord : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> float: + var normalize_factor : float = 0.0; + var value : float = 0.0; + var scale : float = 1.0; + + for i in range(octaves):# (int i = 0; i < octaves; i++) { + var noise : float = fbm_perlin(coord*size, size, pseed) + + for j in range(folds):# (int f = 0; f < folds; ++f) { + noise = abs(2.0*noise-1.0); + + value += noise * scale + normalize_factor += scale; + size *= 2.0; + scale *= persistence; + + return value / normalize_factor; + +static func perlinabsf(coord : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> float: + var normalize_factor : float = 0.0; + var value : float = 0.0; + var scale : float = 1.0; + + for i in range(octaves):# (int i = 0; i < octaves; i++) { + var noise : float = fbm_perlinabs(coord*size, size, pseed) + + for j in range(folds):# (int f = 0; f < folds; ++f) { + noise = abs(2.0*noise-1.0); + + value += noise * scale + normalize_factor += scale; + size *= 2.0; + scale *= persistence; + + return value / normalize_factor; + +static func fbm_simplexf(coord : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> float: + var normalize_factor : float = 0.0; + var value : float = 0.0; + var scale : float = 1.0; + + for i in range(octaves):# (int i = 0; i < octaves; i++) { + var noise : float = fbm_simplex(coord*size, size, pseed) + + for j in range(folds):# (int f = 0; f < folds; ++f) { + noise = abs(2.0*noise-1.0); + + value += noise * scale + normalize_factor += scale; + size *= 2.0; + scale *= persistence; + + return value / normalize_factor; + +static func cellularf(coord : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> float: + var normalize_factor : float = 0.0; + var value : float = 0.0; + var scale : float = 1.0; + + for i in range(octaves):# (int i = 0; i < octaves; i++) { + var noise : float = fbm_cellular(coord*size, size, pseed) + + for j in range(folds):# (int f = 0; f < folds; ++f) { + noise = abs(2.0*noise-1.0); + + value += noise * scale + normalize_factor += scale; + size *= 2.0; + scale *= persistence; + + return value / normalize_factor; + +static func cellular2f(coord : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> float: + var normalize_factor : float = 0.0; + var value : float = 0.0; + var scale : float = 1.0; + + for i in range(octaves):# (int i = 0; i < octaves; i++) { + var noise : float = fbm_cellular2(coord*size, size, pseed) + + for j in range(folds):# (int f = 0; f < folds; ++f) { + noise = abs(2.0*noise-1.0); + + value += noise * scale + normalize_factor += scale; + size *= 2.0; + scale *= persistence; + + return value / normalize_factor; + +static func cellular3f(coord : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> float: + var normalize_factor : float = 0.0; + var value : float = 0.0; + var scale : float = 1.0; + + for i in range(octaves):# (int i = 0; i < octaves; i++) { + var noise : float = fbm_cellular3(coord*size, size, pseed) + + for j in range(folds):# (int f = 0; f < folds; ++f) { + noise = abs(2.0*noise-1.0); + + value += noise * scale + normalize_factor += scale; + size *= 2.0; + scale *= persistence; + + return value / normalize_factor; + +static func cellular4f(coord : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> float: + var normalize_factor : float = 0.0; + var value : float = 0.0; + var scale : float = 1.0; + + for i in range(octaves):# (int i = 0; i < octaves; i++) { + var noise : float = fbm_cellular4(coord*size, size, pseed) + + for j in range(folds):# (int f = 0; f < folds; ++f) { + noise = abs(2.0*noise-1.0); + + value += noise * scale + normalize_factor += scale; + size *= 2.0; + scale *= persistence; + + return value / normalize_factor; + +static func cellular5f(coord : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> float: + var normalize_factor : float = 0.0; + var value : float = 0.0; + var scale : float = 1.0; + + for i in range(octaves):# (int i = 0; i < octaves; i++) { + var noise : float = fbm_cellular5(coord*size, size, pseed) + + for j in range(folds):# (int f = 0; f < folds; ++f) { + noise = abs(2.0*noise-1.0); + + value += noise * scale + normalize_factor += scale; + size *= 2.0; + scale *= persistence; + + return value / normalize_factor; + +static func cellular6f(coord : Vector2, size : Vector2, folds : int, octaves : int, persistence : float, pseed : float) -> float: + var normalize_factor : float = 0.0; + var value : float = 0.0; + var scale : float = 1.0; + + for i in range(octaves):# (int i = 0; i < octaves; i++) { + var noise : float = fbm_cellular6(coord*size, size, pseed) + + for j in range(folds):# (int f = 0; f < folds; ++f) { + noise = abs(2.0*noise-1.0); + + value += noise * scale + normalize_factor += scale; + size *= 2.0; + scale *= persistence; + + return value / normalize_factor; + + +#float fbm_value(vec2 coord, vec2 size, float seed) { +# vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size; +# vec2 f = fract(coord); +# +# float p00 = rand(mod(o, size)); +# float p01 = rand(mod(o + vec2(0.0, 1.0), size)); +# float p10 = rand(mod(o + vec2(1.0, 0.0), size)); +# float p11 = rand(mod(o + vec2(1.0, 1.0), size)); +# +# vec2 t = f * f * (3.0 - 2.0 * f); +# +# return mix(mix(p00, p10, t.x), mix(p01, p11, t.x), t.y); +#} + +static func fbm_value(coord : Vector2, size : Vector2, pseed : float) -> float: + var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size; + var f : Vector2 = Commons.fractv2(coord); + var p00 : float = Commons.rand(Commons.modv2(o, size)); + var p01 : float = Commons.rand(Commons.modv2(o + Vector2(0.0, 1.0), size)); + var p10 : float = Commons.rand(Commons.modv2(o + Vector2(1.0, 0.0), size)); + var p11 : float = Commons.rand(Commons.modv2(o + Vector2(1.0, 1.0), size)); + + var t : Vector2 = f * f * (Vector2(3, 3) - 2.0 * f); + return lerp(lerp(p00, p10, t.x), lerp(p01, p11, t.x), t.y); + + +#float fbm_perlin(vec2 coord, vec2 size, float seed) { +# tvec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size; +# vec2 f = fract(coord); +# +# float a00 = rand(mod(o, size)) * 6.28318530718; +# float a01 = rand(mod(o + vec2(0.0, 1.0), size)) * 6.28318530718; +# float a10 = rand(mod(o + vec2(1.0, 0.0), size)) * 6.28318530718; +# float a11 = rand(mod(o + vec2(1.0, 1.0), size)) * 6.28318530718; +# +# vec2 v00 = vec2(cos(a00), sin(a00)); +# vec2 v01 = vec2(cos(a01), sin(a01)); +# vec2 v10 = vec2(cos(a10), sin(a10)); +# vec2 v11 = vec2(cos(a11), sin(a11)); +# +# float p00 = dot(v00, f); +# float p01 = dot(v01, f - vec2(0.0, 1.0)); +# float p10 = dot(v10, f - vec2(1.0, 0.0)); +# float p11 = dot(v11, f - vec2(1.0, 1.0)); +# +# vec2 t = f * f * (3.0 - 2.0 * f); +# +# return 0.5 + mix(mix(p00, p10, t.x), mix(p01, p11, t.x), t.y); +#} + +static func fbm_perlin(coord : Vector2, size : Vector2, pseed : float) -> float: + var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size; + var f : Vector2 = Commons.fractv2(coord); + var a00 : float = Commons.rand(Commons.modv2(o, size)) * 6.28318530718; + var a01 : float = Commons.rand(Commons.modv2(o + Vector2(0.0, 1.0), size)) * 6.28318530718; + var a10 : float = Commons.rand(Commons.modv2(o + Vector2(1.0, 0.0), size)) * 6.28318530718; + var a11 : float = Commons.rand(Commons.modv2(o + Vector2(1.0, 1.0), size)) * 6.28318530718; + var v00 : Vector2 = Vector2(cos(a00), sin(a00)); + var v01 : Vector2 = Vector2(cos(a01), sin(a01)); + var v10 : Vector2 = Vector2(cos(a10), sin(a10)); + var v11 : Vector2 = Vector2(cos(a11), sin(a11)); + var p00 : float = v00.dot(f); + var p01 : float = v01.dot(f - Vector2(0.0, 1.0)); + var p10 : float = v10.dot(f - Vector2(1.0, 0.0)); + var p11 : float = v11.dot(f - Vector2(1.0, 1.0)); + + var t : Vector2 = f * f * (Vector2(3, 3) - 2.0 * f); + + return 0.5 + lerp(lerp(p00, p10, t.x), lerp(p01, p11, t.x), t.y); + +#float fbm_perlinabs(vec2 coord, vec2 size, float seed) { +# return abs(2.0*fbm_perlin(coord, size, seed)-1.0); +#} + +static func fbm_perlinabs(coord : Vector2, size : Vector2, pseed : float) -> float: + return abs(2.0*fbm_perlin(coord, size, pseed)-1.0) + +#vec2 rgrad2(vec2 p, float rot, float seed) { +# float u = rand(p + vec2(seed, 1.0-seed)); +# u = fract(u) * 6.28318530718; // 2*pi +# return vec2(cos(u), sin(u)); +#} + +static func rgrad2(p : Vector2, rot : float, pseed : float) -> Vector2: + var u : float = Commons.rand(p + Vector2(pseed, 1.0-pseed)); + u = Commons.fract(u) * 6.28318530718; # 2*pi + return Vector2(cos(u), sin(u)) + +#float fbm_simplex(vec2 coord, vec2 size, float seed) { +# coord *= 2.0; // needed for it to tile +# coord += rand2(vec2(seed, 1.0-seed)) + size; +# size *= 2.0; // needed for it to tile +# coord.y += 0.001; +# +# vec2 uv = vec2(coord.x + coord.y*0.5, coord.y); +# vec2 i0 = floor(uv); vec2 f0 = fract(uv); +# vec2 i1 = (f0.x > f0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0); +# vec2 p0 = vec2(i0.x - i0.y * 0.5, i0.y); +# vec2 p1 = vec2(p0.x + i1.x - i1.y * 0.5, p0.y + i1.y); +# vec2 p2 = vec2(p0.x + 0.5, p0.y + 1.0); +# +# i1 = i0 + i1; +# +# vec2 i2 = i0 + vec2(1.0, 1.0); +# vec2 d0 = coord - p0; +# vec2 d1 = coord - p1; +# vec2 d2 = coord - p2; +# +# vec3 xw = mod(vec3(p0.x, p1.x, p2.x), size.x); +# vec3 yw = mod(vec3(p0.y, p1.y, p2.y), size.y); +# +# vec3 iuw = xw + 0.5 * yw; +# vec3 ivw = yw; +# +# vec2 g0 = rgrad2(vec2(iuw.x, ivw.x), 0.0, seed); +# vec2 g1 = rgrad2(vec2(iuw.y, ivw.y), 0.0, seed); +# vec2 g2 = rgrad2(vec2(iuw.z, ivw.z), 0.0, seed); +# +# vec3 w = vec3(dot(g0, d0), dot(g1, d1), dot(g2, d2)); +# vec3 t = 0.8 - vec3(dot(d0, d0), dot(d1, d1), dot(d2, d2)); +# +# t = max(t, vec3(0.0)); +# vec3 t2 = t * t; +# vec3 t4 = t2 * t2; +# float n = dot(t4, w); +# +# return 0.5 + 5.5 * n; +#} + +static func fbm_simplex(coord : Vector2, size : Vector2, pseed : float) -> float: + coord *= 2.0; # needed for it to tile + coord += Commons.rand2(Vector2(pseed, 1.0-pseed)) + size; + size *= 2.0; # needed for it to tile + coord.y += 0.001; + + var uv : Vector2 = Vector2(coord.x + coord.y*0.5, coord.y); + var i0 : Vector2 = Commons.floorv2(uv); + var f0 : Vector2 = Commons.fractv2(uv); + var i1 : Vector2 + + if (f0.x > f0.y): + i1 = Vector2(1.0, 0.0) + else: + i1 = Vector2(0.0, 1.0); + + var p0 : Vector2 = Vector2(i0.x - i0.y * 0.5, i0.y); + var p1 : Vector2 = Vector2(p0.x + i1.x - i1.y * 0.5, p0.y + i1.y); + var p2 : Vector2 = Vector2(p0.x + 0.5, p0.y + 1.0); + + i1 = i0 + i1; + + var i2 : Vector2 = i0 + Vector2(1.0, 1.0); + var d0 : Vector2 = coord - p0; + var d1 : Vector2 = coord - p1; + var d2 : Vector2 = coord - p2; + + var xw : Vector3 = Commons.modv3(Vector3(p0.x, p1.x, p2.x), Vector3(size.x, size.x, size.x)); + var yw : Vector3 = Commons.modv3(Vector3(p0.y, p1.y, p2.y), Vector3(size.y, size.y, size.y)); + + var iuw : Vector3 = xw + 0.5 * yw; + var ivw : Vector3 = yw; + + var g0 : Vector2 = rgrad2(Vector2(iuw.x, ivw.x), 0.0, pseed); + var g1 : Vector2 = rgrad2(Vector2(iuw.y, ivw.y), 0.0, pseed); + var g2 : Vector2 = rgrad2(Vector2(iuw.z, ivw.z), 0.0, pseed); + + var w : Vector3 = Vector3(g0.dot(d0), g1.dot(d1), g2.dot(d2)); + var t : Vector3 = Vector3(0.8, 0.8, 0.8) - Vector3(d0.dot(d0), d1.dot(d1), d2.dot(d2)); + + t = Commons.maxv3(t, Vector3()); + var t2 : Vector3 = t * t; + var t4 : Vector3 = t2 * t2; + var n : float = t4.dot(w); + + return 0.5 + 5.5 * n; + +#float fbm_cellular(vec2 coord, vec2 size, float seed) { +# vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size; +# vec2 f = fract(coord); +# float min_dist = 2.0; +# +# for(float x = -1.0; x <= 1.0; x++) { +# for(float y = -1.0; y <= 1.0; y++) { +# vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y); +# float dist = sqrt((f - node).x * (f - node).x + (f - node).y * (f - node).y); +# min_dist = min(min_dist, dist); +# } +# } +# +# return min_dist; +#} + +static func fbm_cellular(coord : Vector2, size : Vector2, pseed : float) -> float: + var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size; + var f : Vector2 = Commons.fractv2(coord); + var min_dist : float = 2.0; + + for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) { + var x : float = xx + + for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) { + var y : float = yy + + var node : Vector2 = Commons.rand2(Commons.modv2(o + Vector2(x, y), size)) + Vector2(x, y); + var dist : float = sqrt((f - node).x * (f - node).x + (f - node).y * (f - node).y); + min_dist = min(min_dist, dist); + + return min_dist; + +#float fbm_cellular2(vec2 coord, vec2 size, float seed) { +# vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size; +# vec2 f = fract(coord); +# float min_dist1 = 2.0; +# float min_dist2 = 2.0; +# +# for(float x = -1.0; x <= 1.0; x++) { +# for(float y = -1.0; y <= 1.0; y++) { +# vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y); +# float dist = sqrt((f - node).x * (f - node).x + (f - node).y * (f - node).y); +# if (min_dist1 > dist) { +# min_dist2 = min_dist1; +# min_dist1 = dist; +# } else if (min_dist2 > dist) { +# min_dist2 = dist; +# } +# } +# } +# +# return min_dist2-min_dist1; +#} + +static func fbm_cellular2(coord : Vector2, size : Vector2, pseed : float) -> float: + var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size; + var f : Vector2 = Commons.fractv2(coord); + + var min_dist1 : float = 2.0; + var min_dist2 : float = 2.0; + + for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) { + var x : float = xx + + for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) { + var y : float = yy + + var node : Vector2 = Commons.rand2(Commons.modv2(o + Vector2(x, y), size)) + Vector2(x, y); + + var dist : float = sqrt((f - node).x * (f - node).x + (f - node).y * (f - node).y); + + if (min_dist1 > dist): + min_dist2 = min_dist1; + min_dist1 = dist; + elif (min_dist2 > dist): + min_dist2 = dist; + + return min_dist2-min_dist1; + +#float fbm_cellular3(vec2 coord, vec2 size, float seed) { +# vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size; +# vec2 f = fract(coord); +# float min_dist = 2.0; +# +# for(float x = -1.0; x <= 1.0; x++) { +# for(float y = -1.0; y <= 1.0; y++) { +# vec2 node = rand2(mod(o + vec2(x, y), size))*0.5 + vec2(x, y); +# float dist = abs((f - node).x) + abs((f - node).y); +# min_dist = min(min_dist, dist); +# } +# } +# +# return min_dist; +#} + +static func fbm_cellular3(coord : Vector2, size : Vector2, pseed : float) -> float: + var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size; + var f : Vector2 = Commons.fractv2(coord); + + var min_dist : float = 2.0; + + for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) { + var x : float = xx + + for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) { + var y : float = yy + + var node : Vector2 = Commons.rand2(Commons.modv2(o + Vector2(x, y), size))*0.5 + Vector2(x, y); + + var dist : float = abs((f - node).x) + abs((f - node).y); + + min_dist = min(min_dist, dist); + + return min_dist; + +#float fbm_cellular4(vec2 coord, vec2 size, float seed) { +# vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size; +# vec2 f = fract(coord); +# float min_dist1 = 2.0; +# float min_dist2 = 2.0; +# +# for(float x = -1.0; x <= 1.0; x++) { +# for(float y = -1.0; y <= 1.0; y++) { +# vec2 node = rand2(mod(o + vec2(x, y), size))*0.5 + vec2(x, y); +# float dist = abs((f - node).x) + abs((f - node).y); +# +# if (min_dist1 > dist) { +# min_dist2 = min_dist1; +# min_dist1 = dist; +# } else if (min_dist2 > dist) { +# min_dist2 = dist; +# } +# } +# } +# +# return min_dist2-min_dist1; +#} + +static func fbm_cellular4(coord : Vector2, size : Vector2, pseed : float) -> float: + var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size; + var f : Vector2 = Commons.fractv2(coord); + + var min_dist1 : float = 2.0; + var min_dist2 : float = 2.0; + + for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) { + var x : float = xx + + for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) { + var y : float = yy + + var node : Vector2 = Commons.rand2(Commons.modv2(o + Vector2(x, y), size))*0.5 + Vector2(x, y); + + var dist : float = abs((f - node).x) + abs((f - node).y); + + if (min_dist1 > dist): + min_dist2 = min_dist1; + min_dist1 = dist; + elif (min_dist2 > dist): + min_dist2 = dist; + + return min_dist2 - min_dist1; + +#float fbm_cellular5(vec2 coord, vec2 size, float seed) { +# vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size; +# vec2 f = fract(coord); +# float min_dist = 2.0; +# +# for(float x = -1.0; x <= 1.0; x++) { +# for(float y = -1.0; y <= 1.0; y++) { +# vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y); +# float dist = max(abs((f - node).x), abs((f - node).y)); +# min_dist = min(min_dist, dist); +# } +# } +# +# return min_dist; +#} + +static func fbm_cellular5(coord : Vector2, size : Vector2, pseed : float) -> float: + var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size; + var f : Vector2 = Commons.fractv2(coord); + + var min_dist : float = 2.0; + + for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) { + var x : float = xx + + for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) { + var y : float = yy + + var node : Vector2 = Commons.rand2(Commons.modv2(o + Vector2(x, y), size)) + Vector2(x, y); + var dist : float = max(abs((f - node).x), abs((f - node).y)); + min_dist = min(min_dist, dist); + + return min_dist; + +#float fbm_cellular6(vec2 coord, vec2 size, float seed) { +# vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size; +# vec2 f = fract(coord); +# float min_dist1 = 2.0; +# float min_dist2 = 2.0; +# +# for(float x = -1.0; x <= 1.0; x++) { +# for(float y = -1.0; y <= 1.0; y++) { +# vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y); +# float dist = max(abs((f - node).x), abs((f - node).y)); +# +# if (min_dist1 > dist) { +# min_dist2 = min_dist1; +# min_dist1 = dist; +# } else if (min_dist2 > dist) { +# min_dist2 = dist; +# } +# } +# } +# +# return min_dist2-min_dist1; +#} + +static func fbm_cellular6(coord : Vector2, size : Vector2, pseed : float) -> float: + var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size; + var f : Vector2 = Commons.fractv2(coord); + + var min_dist1 : float = 2.0; + var min_dist2 : float = 2.0; + + for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) { + var x : float = xx + + for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) { + var y : float = yy + + var node : Vector2 = Commons.rand2(Commons.modv2(o + Vector2(x, y), size)) + Vector2(x, y); + var dist : float = max(abs((f - node).x), abs((f - node).y)); + + if (min_dist1 > dist): + min_dist2 = min_dist1; + min_dist1 = dist; + elif (min_dist2 > dist): + min_dist2 = dist; + + return min_dist2 - min_dist1; diff --git a/game/addons/mat_maker_gd/nodes/common/noise_perlin.gd b/game/addons/mat_maker_gd/nodes/common/noise_perlin.gd new file mode 100644 index 0000000..aece6c1 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/noise_perlin.gd @@ -0,0 +1,157 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#---------------------- +#perlin.mmg + +#Outputs: + +#Output - (float) - Shows a greyscale value noise +#perlin($(uv), vec2($(scale_x), $(scale_y)), int($(iterations)), $(persistence), $(seed)) + +#Inputs: +#scale, vector2, default: 4, min: 1, max: 32, step: 1 +#iterations, float, min: 0, max: 10, default: 3, step:1 +#persistence, float, min: 0, max: 1, default: 0.5, step:0.05 + +#---------------------- +#perlin_color.mmg + +#Outputs: + +#Output - (rgb) - Shows a color value noise +#perlin_color($(uv), vec2($(scale_x), $(scale_y)), int($(iterations)), $(persistence), $(seed)) + +#Inputs: +#scale, vector2, default: 4, min: 1, max: 32, step: 1 +#iterations, float, min: 0, max: 10, default: 3, step:1 +#persistence, float, min: 0, max: 1, default: 0.5, step:0.05 + +static func perlinc(uv : Vector2, size : Vector2, iterations : int, persistence : float, pseed : int) -> Color: + var f : float = perlin(uv, size, iterations, persistence, pseed) + + return Color(f, f, f, 1) + + +#float perlin(vec2 uv, vec2 size, int iterations, float persistence, float seed) { +# vec2 seed2 = rand2(vec2(seed, 1.0-seed)); +# float rv = 0.0; +# float coef = 1.0; +# float acc = 0.0; +# +# for (int i = 0; i < iterations; ++i) { +# vec2 step = vec2(1.0)/size; +# vec2 xy = floor(uv*size); +# +# float f0 = rand(seed2+mod(xy, size)); +# float f1 = rand(seed2+mod(xy+vec2(1.0, 0.0), size)); +# float f2 = rand(seed2+mod(xy+vec2(0.0, 1.0), size)); +# float f3 = rand(seed2+mod(xy+vec2(1.0, 1.0), size)); +# +# vec2 mixval = smoothstep(0.0, 1.0, fract(uv*size)); +# rv += coef * mix(mix(f0, f1, mixval.x), mix(f2, f3, mixval.x), mixval.y); +# acc += coef; +# size *= 2.0; +# coef *= persistence; +# } +# +# return rv / acc; +#} + +static func perlin(uv : Vector2, size : Vector2, iterations : int, persistence : float, pseed : int) -> float: + var seed2 : Vector2 = Commons.rand2(Vector2(float(pseed), 1.0-float(pseed))); + var rv : float = 0.0; + var coef : float = 1.0; + var acc : float = 0.0; + + for i in range(iterations): + var step : Vector2 = Vector2(1, 1) / size; + var xy : Vector2 = Commons.floorv2(uv * size); + var f0 : float = Commons.rand(seed2 + Commons.modv2(xy, size)); + var f1 : float = Commons.rand(seed2 + Commons.modv2(xy + Vector2(1.0, 0.0), size)); + var f2 : float = Commons.rand(seed2 + Commons.modv2(xy + Vector2(0.0, 1.0), size)); + var f3 : float = Commons.rand(seed2 + Commons.modv2(xy + Vector2(1.0, 1.0), size)); + + var mixval : Vector2 = Commons.smoothstepv2(0.0, 1.0, Commons.fractv2(uv * size)); + + rv += coef * lerp(lerp(f0, f1, mixval.x), lerp(f2, f3, mixval.x), mixval.y); + acc += coef; + size *= 2.0; + coef *= persistence; + + return rv / acc; + +#vec3 perlin_color(vec2 uv, vec2 size, int iterations, float persistence, float seed) { +# vec2 seed2 = rand2(vec2(seed, 1.0-seed)); +# vec3 rv = vec3(0.0); +# float coef = 1.0; +# float acc = 0.0; +# +# for (int i = 0; i < iterations; ++i) { +# vec2 step = vec2(1.0)/size; +# vec2 xy = floor(uv*size); +# vec3 f0 = rand3(seed2+mod(xy, size)); +# vec3 f1 = rand3(seed2+mod(xy+vec2(1.0, 0.0), size)); +# vec3 f2 = rand3(seed2+mod(xy+vec2(0.0, 1.0), size)); +# vec3 f3 = rand3(seed2+mod(xy+vec2(1.0, 1.0), size)); +# vec2 mixval = smoothstep(0.0, 1.0, fract(uv*size)); +# +# rv += coef * mix(mix(f0, f1, mixval.x), mix(f2, f3, mixval.x), mixval.y); +# acc += coef; +# size *= 2.0; +# coef *= persistence; +# } +# +# return rv / acc; +#} + +static func perlin_color(uv : Vector2, size : Vector2, iterations : int, persistence : float, pseed : int) -> Vector3: + var seed2 : Vector2 = Commons.rand2(Vector2(float(pseed), 1.0-float(pseed))); + var rv : Vector3 = Vector3(); + var coef : float = 1.0; + var acc : float = 0.0; + + for i in range(iterations): + var step : Vector2 = Vector2(1, 1) / size; + var xy : Vector2 = Commons.floorv2(uv * size); + var f0 : Vector3 = Commons.rand3(seed2 + Commons.modv2(xy, size)); + var f1 : Vector3 = Commons.rand3(seed2 + Commons.modv2(xy + Vector2(1.0, 0.0), size)); + var f2 : Vector3 = Commons.rand3(seed2 + Commons.modv2(xy + Vector2(0.0, 1.0), size)); + var f3 : Vector3 = Commons.rand3(seed2 + Commons.modv2(xy + Vector2(1.0, 1.0), size)); + + var mixval : Vector2 = Commons.smoothstepv2(0.0, 1.0, Commons.fractv2(uv * size)); + + rv += coef * lerp(lerp(f0, f1, mixval.x), lerp(f2, f3, mixval.x), mixval.y) + acc += coef; + size *= 2.0; + coef *= persistence; + + return rv / acc; + +static func perlin_colorc(uv : Vector2, size : Vector2, iterations : int, persistence : float, pseed : int) -> Color: + var f : Vector3 = perlin_color(uv, size, iterations, persistence, pseed) + + return Color(f.x, f.y, f.z, 1) + +static func perlin_warp_1(uv : Vector2, size : Vector2, iterations : int, persistence : float, pseed : int, translate : Vector2, rotate : float, size2 : Vector2) -> Color: + var f : float = perlin(uv, size2, iterations, persistence, pseed) + var vt : Vector2 = Commons.transform(uv, Vector2(translate.x*(2.0*f-1.0), translate.y*(2.0*f-1.0)), rotate*0.01745329251*(2.0*1.0-1.0), Vector2(size.x*(2.0*1.0-1.0), size.y*(2.0*1.0-1.0)), true) + var ff : float = perlin(vt, size2, iterations, persistence, pseed) + + return Color(ff, ff, ff, 1) + +static func perlin_warp_2(uv : Vector2, size : Vector2, iterations : int, persistence : float, pseed : int, translate : Vector2, rotate : float, size2 : Vector2) -> Color: + var f = perlin(uv, size2, iterations, persistence, pseed) + var vt : Vector2 = Commons.transform(uv, Vector2(translate.x*(2.0*f-1.0), translate.y*(2.0*f-1.0)), rotate*0.01745329251*(2.0*1.0-1.0), Vector2(size.x*(2.0*1.0-1.0), size.y*(2.0*1.0-1.0)), true) + var ff : float = perlin(vt, size2, iterations, persistence, pseed) + + var rgba : Vector3 = Vector3(ff, ff, ff) + + var tf : Vector2 = Commons.transform(uv, Vector2(translate.x * (2.0 * (rgba.dot(Vector3(1, 1, 1) / 3.0) - 1.0)), translate.y*(2.0*(rgba.dot(Vector3(1, 1, 1) /3.0)-1.0))), rotate*0.01745329251*(2.0*1.0-1.0), Vector2(size.x*(2.0*1.0-1.0), size.y*(2.0*1.0-1.0)), true) + + var fff : float = perlin(tf, size2, iterations, persistence, pseed); + + return Color(fff, fff, fff, 1) + diff --git a/game/addons/mat_maker_gd/nodes/common/noise_voronoi.gd b/game/addons/mat_maker_gd/nodes/common/noise_voronoi.gd new file mode 100644 index 0000000..9952e0a --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/noise_voronoi.gd @@ -0,0 +1,141 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#voronoi.mmg + +#voronoi_1, 2, 3, 4 -> different outputs + +#Outputs: + +#vec4 $(name_uv)_xyzw = voronoi($uv, vec2($scale_x, $scale_y), vec2($stretch_y, $stretch_x), $intensity, $randomness, $seed); + +#Nodes - float - A greyscale pattern based on the distance to cell centers +#$(name_uv)_xyzw.z + +#Borders - float - A greyscale pattern based on the distance to borders +#$(name_uv)_xyzw.w + +#Random color - rgb - A color pattern that assigns a random color to each cell +#rand3(fract(floor($(name_uv)_xyzw.xy)/vec2($scale_x, $scale_y))) + +#Fill - rgba - An output that should be plugged into a Fill companion node +#vec4(fract(($(name_uv)_xyzw.xy-1.0)/vec2($scale_x, $scale_y)), vec2(2.0)/vec2($scale_x, $scale_y)) + +#Inputs: + +#scale, min: 1, max: 32, step: 1, default: 4 +#stretch, min: 0.01, max: 1, step: 0.01, default: 1 +#intensity, min: 0, max: 1, step: 0.01, default: 0.75 +#randomness, min: 0, max: 1, step: 0.01, default: 1 + +#vec4 $(name_uv)_xyzw = voronoi($uv, vec2($scale_x, $scale_y), vec2($stretch_y, $stretch_x), $intensity, $randomness, $seed); + +#note this is newer than what I have TODO + +#// Based on https://www.shadertoy.com/view/ldl3W8 +#// The MIT License +#// Copyright © 2013 Inigo Quilez +#vec3 iq_voronoi(vec2 x, vec2 size, vec2 stretch, float randomness, vec2 seed) { +# vec2 n = floor(x); +# vec2 f = fract(x); +# vec2 mg, mr, mc; +# float md = 8.0; +# +# for (int j=-1; j<=1; j++) +# for (int i=-1; i<=1; i++) { +# vec2 g = vec2(float(i),float(j)); +# vec2 o = randomness*rand2(seed + mod(n + g + size, size)); +# vec2 c = g + o; +# vec2 r = c - f; +# vec2 rr = r*stretch; +# float d = dot(rr,rr); +# if (d0.00001) +# md = min(md, dot(0.5*(mr+r)*stretch, normalize((r-mr)*stretch))); +# } +# +# return vec3(md, mc+n); +#} +# +#vec4 voronoi(vec2 uv, vec2 size, vec2 stretch, float intensity, float randomness, float seed) { +# uv *= size; +# vec3 v = iq_voronoi(uv, size, stretch, randomness, rand2(vec2(seed, 1.0-seed))); +# return vec4(v.yz, intensity*length((uv-v.yz)*stretch), v.x); +#} + +static func voronoi(uv : Vector2, size : Vector2, stretch : Vector2, intensity : float, randomness : float, pseed : int) -> Color: + var seed2 : Vector2 = Commons.rand2(Vector2(float(pseed), 1.0-float(pseed))); + uv *= size; + var best_distance0 : float = 1.0; + var best_distance1 : float = 1.0; + var point0 : Vector2; + var point1 : Vector2; + var p0 : Vector2 = Commons.floorv2(uv); + + for dx in range(-1, 2):# (int dx = -1; dx < 2; ++dx) { + for dy in range(-1, 2):# (int dy = -1; dy < 2; ++dy) { + var d : Vector2 = Vector2(float(dx), float(dy)); + var p : Vector2 = p0+d; + + p += randomness * Commons.rand2(seed2 + Commons.modv2(p, size)); + var distance : float = (stretch * (uv - p) / size).length(); + + if (best_distance0 > distance): + best_distance1 = best_distance0; + best_distance0 = distance; + point1 = point0; + point0 = p; + elif (best_distance1 > distance): + best_distance1 = distance; + point1 = p; + + var edge_distance : float = (uv - 0.5*(point0+point1)).dot((point0-point1).normalized()); + + return Color(point0.x, point0.y, best_distance0 * (size).length() * intensity, edge_distance); + +#$(name_uv)_xyzw.z + +static func voronoi_1(uv : Vector2, size : Vector2, stretch : Vector2, intensity : float, randomness : float, pseed : int) -> Color: + var c : Color = voronoi(uv, size, stretch, intensity, randomness, pseed); + + return Color(c.b, c.b, c.b, 1) + +#$(name_uv)_xyzw.w + +static func voronoi_2(uv : Vector2, size : Vector2, stretch : Vector2, intensity : float, randomness : float, pseed : int) -> Color: + var c : Color = voronoi(uv, size, stretch, intensity, randomness, pseed); + + return Color(c.a, c.a, c.a, 1) + +#rand3(fract(floor($(name_uv)_xyzw.xy)/vec2($scale_x, $scale_y))) + +static func voronoi_3(uv : Vector2, size : Vector2, stretch : Vector2, intensity : float, randomness : float, pseed : int) -> Color: + var c : Color = voronoi(uv, size, stretch, intensity, randomness, pseed); + + var vv : Vector2 = Vector2(c.r, c.g) + + var v : Vector3 = Commons.rand3(Commons.fractv2(vv)); + + return Color(v.x, v.y, v.z, 1) + +#vec4(fract(($(name_uv)_xyzw.xy-1.0)/vec2($scale_x, $scale_y)), vec2(2.0)/vec2($scale_x, $scale_y)) + +#voronoi_4 todo diff --git a/game/addons/mat_maker_gd/nodes/common/noises.gd b/game/addons/mat_maker_gd/nodes/common/noises.gd new file mode 100644 index 0000000..7e2c854 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/noises.gd @@ -0,0 +1,122 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#---------------------- +#color_noise.mmg + +#Outputs: + +#Output - (rgb) - Shows the noise pattern +#color_dots($(uv), 1.0/$(size), $(seed)) + +#Inputs: +#size, float, default: 8, min: 2, max: 12, step: 1 + +#---------------------- +#noise.mmg + +#Outputs: + +#float $(name)_f(vec2 uv) { +# return dots(uv, 1.0/$(size), $(density), $(seed)); +#} + +#Output - (float) - Shows the noise pattern +#$(name)_f($(uv)) + +#Inputs: +#grid_size, float, default: 4, min: 2, max: 12, step: 1 +#density, float, default: 0.5, min: 0, max: 1, step: 0.01 + +#---------------------- +#noise_anisotropic.mmg +#Generates x-axis interpolated value noise + +#Output: +#Output (float) - Shows a greyscale value noise +#anisotropic($(uv), vec2($(scale_x), $(scale_y)), $(seed), $(smoothness), $(interpolation)) + +#Input: +#scale, Vector2, min: 1, 1, max: 32, 1024, step: 1, 1, default 4, 256 +#smoothness, float, min: 0, max: 1, step: 0,01, default: 1 +#Interpolation, float, min: 0, max: 1, step: 0,01, default: 1 + +#float dots(vec2 uv, float size, float density, float seed) { +# vec2 seed2 = rand2(vec2(seed, 1.0-seed)); +# uv /= size; +# vec2 point_pos = floor(uv)+vec2(0.5); +# float color = step(rand(seed2+point_pos), density); +# return color; +#} + +static func dots(uv : Vector2, size : float, density : float, pseed : float) -> float: + var seed2 : Vector2 = Commons.rand2(Vector2(pseed, 1.0 - pseed)) + uv /= size + var point_pos : Vector2 = Commons.floorv2(uv) + Vector2(0.5, 0.5) + var color : float = Commons.step(Commons.rand2(seed2 + point_pos).x, density); + return color + +static func anisotropicc(uv : Vector2, size : Vector2, pseed : float, smoothness : float, interpolation : float) -> Color: + var v : float = anisotropic(uv, size, pseed, smoothness, interpolation) + + return Color(v, v, v, 1) + +#float anisotropic(vec2 uv, vec2 size, float seed, float smoothness, float interpolation) { +# vec2 seed2 = rand2(vec2(seed, 1.0-seed)); +# vec2 xy = floor(uv*size); +# vec2 offset = vec2(rand(seed2 + xy.y), 0.0); +# vec2 xy_offset = floor(uv * size + offset ); +# +# float f0 = rand(seed2+mod(xy_offset, size)); +# float f1 = rand(seed2+mod(xy_offset+vec2(1.0, 0.0), size)); +# float mixer = clamp( (fract(uv.x*size.x+offset.x) -.5) / smoothness + 0.5, 0.0, 1.0 ); +# float smooth_mix = smoothstep(0.0, 1.0, mixer); +# float linear = mix(f0, f1, mixer); +# float smoothed = mix(f0, f1, smooth_mix); +# +# return mix(linear, smoothed, interpolation); +#} + +static func anisotropic(uv : Vector2, size : Vector2, pseed : float, smoothness : float, interpolation : float) -> float: + var seed2 : Vector2 = Commons.rand2(Vector2(pseed, 1.0 - pseed)) + + var xy : Vector2 = Commons.floorv2(uv * size) + var s2xy : Vector2 = seed2 + s2xy.x += xy.y + s2xy.y += xy.y + + var offset : Vector2 = Vector2(Commons.rand(s2xy), 0.0) + var xy_offset : Vector2 = Commons.floorv2(uv * size + offset) + + var f0 : float = Commons.rand(seed2 + Commons.modv2(xy_offset, size)); + var f1 : float = Commons.rand(seed2 + Commons.modv2(xy_offset + Vector2(1.0, 0.0), size)) + var mixer : float = clamp((Commons.fract(uv.x * size.x + offset.x) - 0.5) / smoothness + 0.5, 0.0, 1.0) + var smooth_mix : float = smoothstep(0.0, 1.0, mixer) + var linear : float = lerp(f0, f1, mixer) + var smoothed : float = lerp(f0, f1, smooth_mix) + + return lerp(linear, smoothed, interpolation) + +#vec3 color_dots(vec2 uv, float size, float seed) { +# vec2 seed2 = rand2(vec2(seed, 1.0-seed)); +# uv /= size; +# vec2 point_pos = floor(uv)+vec2(0.5); +# return rand3(seed2+point_pos); +#} + +static func color_dots(uv : Vector2, size : float, pseed : float) -> Vector3: + var seed2 : Vector2 = Commons.rand2(Vector2(pseed, 1.0 - pseed)) + + uv /= size + + var point_pos : Vector2 = Commons.floorv2(uv) + Vector2(0.5, 0.5) + + return Commons.rand3(seed2 + point_pos) + +static func noise_color(uv : Vector2, size : float, pseed : float) -> Color: + var v : Vector3 = color_dots(uv, 1.0 / size, pseed) + + return Color(v.x, v.y, v.z, 1) + diff --git a/game/addons/mat_maker_gd/nodes/common/patterns.gd b/game/addons/mat_maker_gd/nodes/common/patterns.gd new file mode 100644 index 0000000..cbbd80e --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/patterns.gd @@ -0,0 +1,1170 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#---------------------- +#beehive.mmg +#Outputs: (beehive_1c, beehive_2c, beehive_3c TODO make common code parameters) +#Common +#vec2 $(name_uv)_uv = $uv*vec2($sx, $sy*1.73205080757); +#vec4 $(name_uv)_center = beehive_center($(name_uv)_uv); + +#Output (float) - Shows the greyscale pattern +#1.0-2.0*beehive_dist($(name_uv)_center.xy) + +#Random color (rgb) - Shows a random color for each hexagonal tile +#rand3(fract($(name_uv)_center.zw/vec2($sx, $sy))+vec2(float($seed))) + +#UV map (rgb) - Shows an UV map to be connected to the UV map port of the Custom UV node +#vec3(vec2(0.5)+$(name_uv)_center.xy, rand(fract($(name_uv)_center.zw/vec2($sx, $sy))+vec2(float($seed)))) + +#Inputs: +#size, vector2, default: 2, min: 1, max: 64, step: 1 + +#---------------------- +#pattern.mmg +#Outputs: $(name)_fct($(uv)) + +#Combiner, enum, default: 0, values (CombinerType): Multiply, Add, Max, Min, Xor, Pow +#Pattern_x_type, enum, default: 5, values (CombinerAxisType): Sine, Triangle, Square, Sawtooth, Constant, Bounce +#Pattern_y_type, enum, default: 5, values (CombinerAxisType): Sine, Triangle, Square, Sawtooth, Constant, Bounce +#Pattern_Repeat, vector2, min: 0, max: 32, default:4, step: 1 + +#---------------------- +#bricks.mmg + +#Outputs: + +#Common +#vec4 $(name_uv)_rect = bricks_$pattern($uv, vec2($columns, $rows), $repeat, $row_offset); +#vec4 $(name_uv) = brick($uv, $(name_uv)_rect.xy, $(name_uv)_rect.zw, $mortar*$mortar_map($uv), $round*$round_map($uv), max(0.001, $bevel*$bevel_map($uv))); + +#Bricks pattern (float) - A greyscale image that shows the bricks pattern +#$(name_uv).x + +#Random color (rgb) - A random color for each brick +#brick_random_color($(name_uv)_rect.xy, $(name_uv)_rect.zw, float($seed)) + +#Position.x (float) - The position of each brick along the X axis", +#$(name_uv).y + +#Position.y (float) - The position of each brick along the Y axis +#$(name_uv).z + +#Brick UV (rgb) - An UV map output for each brick, to be connected to the Map input of a CustomUV node +#brick_uv($uv, $(name_uv)_rect.xy, $(name_uv)_rect.zw, float($seed)) + +#Corner UV (rgb) - An UV map output for each brick corner, to be connected to the Map input of a CustomUV node +#brick_corner_uv($uv, $(name_uv)_rect.xy, $(name_uv)_rect.zw, $mortar*$mortar_map($uv), $corner, float($seed)) + +#Direction (float) - The direction of each brick (white: horizontal, black: vertical) +#0.5*(sign($(name_uv)_rect.z-$(name_uv)_rect.x-$(name_uv)_rect.w+$(name_uv)_rect.y)+1.0) + +#Inputs: +#type / Pattern, enum, default: 0, values: Running Bond,Running Bond (2),HerringBone,Basket Weave,Spanish Bond +#repeat, int, min: 1, max: 8, default: 1, step:1 +#rows, int, min: 1, max: 64, default: 6, step:1 +#columns, int, min: 1, max: 64, default: 6, step:1 +#offset, float, min: 0, max: 1, default: 0.5, step:0.01 +#mortar, float, min: 0, max: 0.5, default: 0.1, step:0.01 (universal input) +#bevel, float, min: 0, max: 0.5, default: 0.1, step:0.01 (universal input) +#round, float, min: 0, max: 0.5, default: 0.1, step:0.01 (universal input) +#corner, float, min: 0, max: 0.5, default: 0.1, step:0.01 + +#---------------------- +#bricks_uneven.mmg + +#Outputs: + +#Common +#vec4 $(name_uv)_rect = bricks_uneven($uv, int($iterations), $min_size, $randomness, float($seed)); +#vec4 $(name_uv) = brick2($uv, $(name_uv)_rect.xy, $(name_uv)_rect.zw, $mortar*$mortar_map($uv), $round*$round_map($uv), max(0.00001, $bevel*$bevel_map($uv))); + +#Bricks pattern (float) - A greyscale image that shows the bricks pattern +#$(name_uv).x + +#Random color (rgb) - A random color for each brick +#rand3(fract($(name_uv)_rect.xy)+rand2(vec2(float($seed)))) + +#Position.x (float) - The position of each brick along the X axis", +#$(name_uv).y + +#Position.y (float) - The position of each brick along the Y axis +#$(name_uv).z + +#Brick UV (rgb) - An UV map output for each brick, to be connected to the Map input of a CustomUV node +#brick_uv($uv, $(name_uv)_rect.xy, $(name_uv)_rect.zw, float($seed)) + +#Corner UV (rgb) - An UV map output for each brick corner, to be connected to the Map input of a CustomUV node +#brick_corner_uv($uv, $(name_uv)_rect.xy, $(name_uv)_rect.zw, $mortar*$mortar_map($uv), $corner, float($seed)) + +#Direction (float) - The direction of each brick (white: horizontal, black: vertical) +#0.5*(sign($(name_uv)_rect.z-$(name_uv)_rect.x-$(name_uv)_rect.w+$(name_uv)_rect.y)+1.0) + +#Inputs: +#iterations, int, min: 1, max: 16, default:8, step:1 +#min_size, float, min: 0, max: 0.5, default: 0.3, step:0.01 +#randomness, float, min: 0, max: 1, default: 0.5, step:0.01 +#mortar, float, min: 0, max: 0.5, default: 0.1, step:0.01 (universal input) +#bevel, float, min: 0, max: 0.5, default: 0.1, step:0.01 (universal input) +#round, float, min: 0, max: 0.5, default: 0.1, step:0.01 (universal input) +#corner, float, min: 0, max: 0.5, default: 0.1, step:0.01 + +#---------------------- +#runes.mmg (includes sdline.mmg) +#Generates a grid filled with random runes + +#Outputs: + +#Output (float) - A greyscale image showing random runes. +#Rune(vec2($columns, $rows)*$uv, float($seed)) + +#Inputs: +#size, vector2, default: 4, min: 2, max: 32, step: 1 + +#---------------------- +#scratches.mmg +#Draws white scratches on a black background + +#Outputs: + +#Output (float) - Shows white scratches on a black background +#scratches($uv, int($layers), vec2($length, $width), $waviness, $angle, $randomness, vec2(float($seed), 0.0)) + +#Inputs: + +#scratch_size (l, w), vector2, min: 0.1, max: 1, default: (0.25, 0.5), step:0.01 +#layers, float, min: 1, max: 10, default: 4, step:1 +#waviness, float, min: 0, max: 1, default: 0.5, step:0.01 +#angle, float, min: -180, max: 180, default: 0, step:1 +#randomness, float, min: 0, max: 1, default: 0.5, step:0.01 + +#---------------------- +#iching.mmg +#This node generates a grid of random I Ching hexagrams. + +#Outputs: + +#Output (float) - A greyscale image showing random I Ching hexagrams. +#IChing(vec2($columns, $rows)*$uv, float($seed)) + +#Inputs: +#size, vector2, default: 2, min: 2, max: 32, step: 1 + +#---------------------- +#weave.mmg + +#Outputs: + +#Output (float) - Shows the generated greyscale weave pattern. +#weave($uv, vec2($columns, $rows), $width*$width_map($uv)) + +#Inputs: +#size, vector2, default: 4, min: 2, max: 32, step: 1 +#width, float, min: 0, max: 1, default: 0.8, step:0.05 (universal input) + +#---------------------- +#weave2.mmg + +#code +#vec3 $(name_uv) = weave2($uv, vec2($columns, $rows), $stitch, $width_x*$width_map($uv), $width_y*$width_map($uv)); + +#Outputs: + +#Output (float) - Shows the generated greyscale weave pattern. +#$(name_uv).x + +#Horizontal mask (float) - Horizontal mask +#$(name_uv).y + +#Vertical mask (float) - Mask for vertical stripes +#$(name_uv).z + +#Inputs: +#size, vector2, default: 4, min: 2, max: 32, step: 1 +#width, vector2, default: 0.8, min: 0, max: 1, step: 0.05 +#stitch, float, min: 0, max: 10, default: 1, step:1 +#width_map, float, default: 1, (does not need input val (label)) (universal input) + +#---------------------- +#truchet.mmg + +#Outputs: + +#line: $shape = 1 +#circle: $shape = 2 + +#Output (float) - Shows a greyscale image of the truchet pattern. +#truchet$shape($uv*$size, vec2(float($seed))) + +#Inputs: +#shape, enum, default: 0, values: line, circle +#size, float, default: 4, min: 2, max: 64, step: 1 + +#---------------------- +#truchet_generic.mmg + +#Outputs: + +#Output (color) +#$in(truchet_generic_uv($uv*$size, vec2(float($seed)))) + +#Inputs: +#in, color, default: color(1.0) +#size, float, default: 4, min: 2, max: 64, step: 1 + +#---------------------- +#arc_pavement.mmg +#Draws a white shape on a black background + +# "code": "vec2 $(name_uv)_uv = fract($uv)*vec2($repeat, -1.0);\nvec2 $(name_uv)_seed;\nvec4 $(name_uv)_ap = arc_pavement($(name_uv)_uv, $rows, $bricks, $(name_uv)_seed);\n", +# "outputs": [ +# { +# "f": "pavement($(name_uv)_ap.zw, $bevel, 2.0*$mortar)", +# "longdesc": "A greyscale image that shows the bricks pattern", +# "shortdesc": "Bricks pattern", +# "type": "f" +# }, +# { +# "longdesc": "A random color for each brick", +# "rgb": "rand3($(name_uv)_seed)", +# "shortdesc": "Random color", +# "type": "rgb" +# }, +# { +# "longdesc": "An UV map output for each brick, to be connected to the Map input of a CustomUV node", +# "rgb": "vec3($(name_uv)_ap.zw, 0.0)", +# "shortdesc": "Brick UV", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 2, +# "label": "Repeat:", +# "longdesc": "The number of repetitions of the whole pattern", +# "max": 4, +# "min": 1, +# "name": "repeat", +# "shortdesc": "Repeat", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 8, +# "label": "Rows:", +# "longdesc": "The number of rows", +# "max": 16, +# "min": 4, +# "name": "rows", +# "shortdesc": "Rows", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 8, +# "label": "Bricks:", +# "longdesc": "The number of bricks per row", +# "max": 16, +# "min": 4, +# "name": "bricks", +# "shortdesc": "Bricks", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.1, +# "label": "Mortar:", +# "longdesc": "The width of the space between bricks", +# "max": 0.5, +# "min": 0, +# "name": "mortar", +# "shortdesc": "Mortar", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.1, +# "label": "Bevel:", +# "longdesc": "The width of the edge of each brick", +# "max": 0.5, +# "min": 0, +# "name": "bevel", +# "shortdesc": "Bevel", +# "step": 0.01, +# "type": "float" +# } +# ] + +#---------------------- +#sine_wave.mmg +#Draws a greyscale sine wave pattern + +#Outputs: +#Output, float, Shows a greyscale image of a sine wave +#1.0-abs(2.0*($uv.y-0.5)-$amplitude*sin(($frequency*$uv.x+$phase)*6.28318530718)) + +#Inputs: +#amplitude, float, min: 0, max: 1, step: 0.01, default: 0.5 +#frequency, float, min: 0, max: 16, default: 1 +#phase, float, min: 0, max: 1, step: 0.01, default: 0.5 + +enum CombinerAxisType { + SINE, + TRIANGLE, + SQUARE, + SAWTOOTH, + CONSTANT, + BOUNCE +} + +enum CombinerType { + MULTIPLY, + ADD, + MAX, + MIN, + XOR, + POW +} + +#"Sine,Triangle,Square,Sawtooth,Constant,Bounce" +#"Multiply,Add,Max,Min,Xor,Pow" + +#float $(name)_fct(vec2 uv) { +# return mix_$(mix)(wave_$(x_wave)($(x_scale)*uv.x), wave_$(y_wave)($(y_scale)*uv.y)); +#} + +static func pattern(uv : Vector2, x_scale : float, y_scale : float, ct : int, catx : int, caty : int) -> float: + var x : float = 0 + var y : float = 0 + + if catx == CombinerAxisType.SINE: + x = Commons.wave_sine(x_scale * uv.x) + elif catx == CombinerAxisType.TRIANGLE: + x = Commons.wave_triangle(x_scale * uv.x) + elif catx == CombinerAxisType.SQUARE: + x = Commons.wave_square(x_scale * uv.x) + elif catx == CombinerAxisType.SAWTOOTH: + x = Commons.wave_sawtooth(x_scale * uv.x) + elif catx == CombinerAxisType.CONSTANT: + x = Commons.wave_constant(x_scale * uv.x) + elif catx == CombinerAxisType.BOUNCE: + x = Commons.wave_bounce(x_scale * uv.x) + + if caty == CombinerAxisType.SINE: + y = Commons.wave_sine(y_scale * uv.y) + elif caty == CombinerAxisType.TRIANGLE: + y = Commons.wave_triangle(y_scale * uv.y) + elif caty == CombinerAxisType.SQUARE: + y = Commons.wave_square(y_scale * uv.y) + elif caty == CombinerAxisType.SAWTOOTH: + y = Commons.wave_sawtooth(y_scale * uv.y) + elif caty == CombinerAxisType.CONSTANT: + y = Commons.wave_constant(y_scale * uv.y) + elif caty == CombinerAxisType.BOUNCE: + y = Commons.wave_bounce(y_scale * uv.y) + + if ct == CombinerType.MULTIPLY: + return Commons.mix_mul(x, y) + elif ct == CombinerType.ADD: + return Commons.mix_add(x, y); + elif ct == CombinerType.MAX: + return Commons.mix_max(x, y); + elif ct == CombinerType.MIN: + return Commons.mix_min(x, y); + elif ct == CombinerType.XOR: + return Commons.mix_xor(x, y); + elif ct == CombinerType.POW: + return Commons.mix_pow(x, y); + + return 0.0 + + +#"Line,Circle" + +static func truchet1c(uv : Vector2, size : float, pseed : float) -> Color: + var f : float = truchet1(uv * size, Vector2(pseed, pseed)) + return Color(f, f, f, 1); + +#float truchet1(vec2 uv, vec2 seed) { +# vec2 i = floor(uv); +# vec2 f = fract(uv)-vec2(0.5); +# +# return 1.0-abs(abs((2.0*step(rand(i+seed), 0.5)-1.0)*f.x+f.y)-0.5); +#} + +static func truchet1(uv : Vector2, pseed : Vector2) -> float: + var i : Vector2 = Commons.floorv2(uv); + var f : Vector2 = Commons.fractv2(uv) - Vector2(0.5, 0.5); + + return 1.0 - abs(abs((2.0 * Commons.step(Commons.rand(i + pseed), 0.5) - 1.0) * f.x + f.y) - 0.5); + +static func truchet2c(uv : Vector2, size : float, pseed : float) -> Color: + var f : float = truchet2(uv * size, Vector2(pseed, pseed)) + return Color(f, f, f, 1); + +#float truchet2(vec2 uv, vec2 seed) { +# vec2 i = floor(uv); +# vec2 f = fract(uv); +# float random = step(rand(i+seed), 0.5); +# +# f.x *= 2.0*random-1.0; +# f.x += 1.0-random; +# +# return 1.0-min(abs(length(f)-0.5), abs(length(1.0-f)-0.5)); +#} + +static func truchet2(uv : Vector2, pseed : Vector2) -> float: + var i : Vector2 = Commons.floorv2(uv); + var f : Vector2 = Commons.fractv2(uv); + var random : float = Commons.step(Commons.rand(i + pseed), 0.5); + + f.x *= 2.0 * random - 1.0; + f.x += 1.0 - random; + + return 1.0 - min(abs(f.length() - 0.5), abs((Vector2(1, 1) - f).length() - 0.5)); + +static func weavec(uv : Vector2, count : Vector2, width : float) -> Color: + var f : float = weave(uv, count, width); + + return Color(f, f, f, 1) + +#float weave(vec2 uv, vec2 count, float width) { +# uv *= count; +# float c = (sin(3.1415926*(uv.x+floor(uv.y)))*0.5+0.5)*step(abs(fract(uv.y)-0.5), width*0.5); +# c = max(c, (sin(3.1415926*(1.0+uv.y+floor(uv.x)))*0.5+0.5)*step(abs(fract(uv.x)-0.5), width*0.5)); +# return c; +#} + +static func weave(uv : Vector2, count : Vector2, width : float) -> float: + uv *= count; + var c : float = (sin(3.1415926* (uv.x + floor(uv.y)))*0.5+0.5)*Commons.step(abs(Commons.fract(uv.y)-0.5), width*0.5); + c = max(c, (sin(3.1415926*(1.0+uv.y+floor(uv.x)))*0.5+0.5)*Commons.step(abs(Commons.fract(uv.x)-0.5), width*0.5)); + return c; + +#vec3 weave2(vec2 uv, vec2 count, float stitch, float width_x, float width_y) { +# uv *= stitch; +# uv *= count; +# float c1 = (sin(3.1415926 / stitch * (uv.x + floor(uv.y) - (stitch - 1.0))) * 0.25 + 0.75 ) *step(abs(fract(uv.y)-0.5), width_x*0.5); +# float c2 = (sin(3.1415926 / stitch * (1.0+uv.y+floor(uv.x) ))* 0.25 + 0.75 )*step(abs(fract(uv.x)-0.5), width_y*0.5); +# return vec3(max(c1, c2), 1.0-step(c1, c2), 1.0-step(c2, c1)); +#} + +static func weave2(uv : Vector2, count : Vector2, stitch : float, width_x : float, width_y : float) -> Vector3: + uv.x *= stitch + uv.y *= stitch + uv *= count + + var c1 : float = (sin(3.1415926 / stitch * (uv.x + floor(uv.y) - (stitch - 1.0))) * 0.25 + 0.75 ) * Commons.step(abs(Commons.fract(uv.y) - 0.5), width_x * 0.5); + var c2 : float = (sin(3.1415926 / stitch * (1.0 + uv.y + floor(uv.x) ))* 0.25 + 0.75 ) * Commons.step(abs(Commons.fract(uv.x)-0.5), width_y * 0.5); + + return Vector3(max(c1, c2), 1.0 - Commons.step(c1, c2), 1.0 - Commons.step(c2, c1)); + +static func sinewavec(uv : Vector2, amplitude : float, frequency : float, phase : float) -> Color: + var f : float = 1.0- abs(2.0 * (uv.y-0.5) - amplitude * sin((frequency* uv.x + phase) * 6.28318530718)); + + return Color(f, f, f, 1) + +static func sinewavef(uv : Vector2, amplitude : float, frequency : float, phase : float) -> float: + return 1.0- abs(2.0 * (uv.y-0.5) - amplitude * sin((frequency* uv.x + phase) * 6.28318530718)); + +#float scratch(vec2 uv, vec2 size, float waviness, float angle, float randomness, vec2 seed) { +# float subdivide = floor(1.0/size.x); +# float cut = size.x*subdivide; +# +# uv *= subdivide; +# +# vec2 r1 = rand2(floor(uv)+seed); +# vec2 r2 = rand2(r1); +# +# uv = fract(uv); +# vec2 border = 10.0*min(fract(uv), 1.0-fract(uv)); +# uv = 2.0*uv-vec2(1.0); +# +# float a = 6.28318530718*(angle+(r1.x-0.5)*randomness); +# float c = cos(a); +# float s = sin(a); +# +# uv = vec2(c*uv.x+s*uv.y, s*uv.x-c*uv.y); +# uv.y += 2.0*r1.y-1.0; +# uv.y += 0.5*waviness*cos(2.0*uv.x+6.28318530718*r2.y); +# uv.x /= cut; +# uv.y /= subdivide*size.y; +# +# return min(border.x, border.y)*(1.0-uv.x*uv.x)*max(0.0, 1.0-1000.0*uv.y*uv.y); +#} + +static func scratch(uv : Vector2, size : Vector2, waviness : float, angle : float, randomness : float, pseed : Vector2) -> float: + var subdivide : float = floor(1.0/size.x); + var cut : float = size.x*subdivide; + uv *= subdivide; + var r1 : Vector2 = Commons.rand2(Commons.floorv2(uv) + pseed); + var r2 : Vector2 = Commons.rand2(r1); + uv = Commons.fractv2(uv); + uv = 2.0 * uv - Vector2(1, 1); + + var a : float = 6.28*(angle+(r1.x-0.5)*randomness); + var c : float = cos(a); + var s : float = sin(a); + + uv = Vector2(c*uv.x+s*uv.y, s*uv.x-c*uv.y); + uv.y += 2.0*r1.y-1.0; + uv.y += 0.5*waviness*cos(2.0*uv.x+6.28*r2.y); + uv.x /= cut; + uv.y /= subdivide*size.y; + + return (1.0-uv.x*uv.x)*max(0.0, 1.0-1000.0*uv.y*uv.y); + +#float scratches(vec2 uv, int layers, vec2 size, float waviness, float angle, float randomness, vec2 seed) { +# float v = 0.0; +# +# for (int i = 0; i < layers; ++i) { +# seed = rand2(seed); +# v = max(v, scratch(fract(uv+seed), size, waviness, angle/360.0, randomness, seed)); +# } +# +# return v; +#} + +static func scratches(uv : Vector2, layers : int, size : Vector2, waviness : float, angle : float, randomness : float, pseed : Vector2) -> float: + var v : float = 0.0; + + for i in range(layers):# (int i = 0; i < layers; ++i) { + pseed = Commons.rand2(pseed); + v = max(v, scratch(Commons.fractv2(uv + pseed), size, waviness, angle/360.0, randomness, pseed)); + + return v; + +static func scratchesc(uv : Vector2, layers : int, size : Vector2, waviness : float, angle : float, randomness : float, pseed : Vector2) -> Color: + var f : float = scratches(uv, layers, size, waviness, angle, randomness, pseed) + + return Color(f, f, f, 1) + +static func runesc(uv : Vector2, col_row : Vector2, pseed : float) -> Color: + var f : float = rune(col_row * uv, pseed); + + return Color(f, f, f, 1) + +static func runesf(uv : Vector2, col_row : Vector2, pseed : float) -> float: + return rune(col_row * uv, pseed); + +#sdline.mmg +#vec2 sdLine(vec2 p, vec2 a, vec2 b) { +# vec2 pa = p-a, ba = b-a; +# float h = clamp(dot(pa,ba)/dot(ba,ba), 0.0, 1.0); +# +# return vec2(length(pa-ba*h), h); +#} + +#float ThickLine(vec2 uv, vec2 posA, vec2 posB, float radiusInv){ +# return clamp(1.1-20.0*sdLine(uv, posA, posB).x, 0.0, 1.0); +#} + +#// makes a rune in the 0..1 uv space. Seed is which rune to draw. +#// passes back gray in x and derivates for lighting in yz +#float Rune(vec2 uv, float s) { +# float finalLine = 0.0; +# vec2 seed = floor(uv)-rand2(vec2(s)); +# uv = fract(uv); +# +# for (int i = 0; i < 4; i++) // number of strokes +# { +# vec2 posA = rand2(floor(seed+0.5)); +# vec2 posB = rand2(floor(seed+1.5)); +# seed += 2.0; +# // expand the range and mod it to get a nicely distributed random number - hopefully. :) +# posA = fract(posA * 128.0); +# posB = fract(posB * 128.0); +# // each rune touches the edge of its box on all 4 sides +# +# if (i == 0) posA.y = 0.0; +# if (i == 1) posA.x = 0.999; +# if (i == 2) posA.x = 0.0; +# if (i == 3) posA.y = 0.999; +# +# // snap the random line endpoints to a grid 2x3 +# vec2 snaps = vec2(2.0, 3.0); +# posA = (floor(posA * snaps) + 0.5) / snaps; // + 0.5 to center it in a grid cell +# posB = (floor(posB * snaps) + 0.5) / snaps; +# +# //if (distance(posA, posB) < 0.0001) continue; +# // eliminate dots. +# // Dots (degenerate lines) are not cross-GPU safe without adding 0.001 - divide by 0 error. +# finalLine = max(finalLine, ThickLine(uv, posA, posB + 0.001, 20.0)); +# } +# +# return finalLine; +#} + +# makes a rune in the 0..1 uv space. Seed is which rune to draw. +# passes back gray in x and derivates for lighting in yz +static func rune(uv : Vector2, pseed : float) -> float: + var finalLine : float = 0.0; + var sseed : Vector2 = Commons.floorv2(uv) - Vector2(pseed, pseed); + + uv = Commons.fractv2(uv); + + for i in range(4):# (int i = 0; i < 4; i++): # // number of strokes + var posA : Vector2 = Commons.rand2(Commons.floorv2(sseed + Vector2(0.5, 0.5))); + var posB : Vector2 = Commons.rand2(Commons.floorv2(sseed + Vector2(1.5, 1.5))); + sseed.x += 2.0; + sseed.y += 2.0; + + # expand the range and mod it to get a nicely distributed random number - hopefully. :) + + posA = Commons.fractv2(posA * 128.0); + posB = Commons.fractv2(posB * 128.0); + + # each rune touches the edge of its box on all 4 sides + if (i == 0): + posA.y = 0.0; + + if (i == 1): + posA.x = 0.999; + + if (i == 2): + posA.x = 0.0; + + if (i == 3): + posA.y = 0.999; + + # snap the random line endpoints to a grid 2x3 + + var snaps : Vector2 = Vector2(2.0, 3.0); + + posA = (Commons.floorv2(posA * snaps) + Vector2(0.5, 0.5)) / snaps; # + 0.5 to center it in a grid cell + posB = (Commons.floorv2(posB * snaps) + Vector2(0.5, 0.5)) / snaps; + + #if (distance(posA, posB) < 0.0001) continue; // eliminate dots. + # Dots (degenerate lines) are not cross-GPU safe without adding 0.001 - divide by 0 error. + + finalLine = max(finalLine, Commons.ThickLine(uv, posA, posB + Vector2(0.001, 0.001), 20.0)); + + return finalLine; + +static func IChingc(uv : Vector2, row_col : Vector2, pseed : int) -> Color: + var f : float = IChing(row_col * uv, float(pseed)); + + return Color(f, f, f, 1) + +#float IChing(vec2 uv, float seed) { +# int value = int(32.0*rand(floor(uv)+vec2(seed))); +# float base = step(0.5, fract(fract(uv.y)*6.5))*step(0.04, fract(uv.y+0.02))*step(0.2, fract(uv.x+0.1)); +# int bit = int(fract(uv.y)*6.5); +# +# return base*step(0.1*step(float(bit & value), 0.5), fract(uv.x+0.55)); +#} + +static func IChing(uv : Vector2, pseed : float) -> float: + var value : int = int(32.0 * Commons.rand(Commons.floorv2(uv) + Vector2(pseed, pseed))); + var base : float = Commons.step(0.5, Commons.fract(Commons.fract(uv.y)*6.5))*Commons.step(0.04, Commons.fract(uv.y+0.02)) * Commons.step(0.2, Commons.fract(uv.x+0.1)); + var bit : int = int(Commons.fract(uv.y)*6.5); + + return base * Commons.step(0.1*Commons.step(float(bit & value), 0.5), Commons.fract(uv.x+0.55)); + +#Beehive output 1 +#Shows the greyscale pattern +#vec2 $(name_uv)_uv = $uv*vec2($sx, $sy*1.73205080757); +#vec4 $(name_uv)_center = beehive_center($(name_uv)_uv); +#1.0-2.0*beehive_dist($(name_uv)_center.xy) + +static func beehive_1c(uv : Vector2, size : Vector2, pseed : int) -> Color: + var o80035_0_uv : Vector2 = uv * Vector2(size.x, size.y * 1.73205080757); + var center : Color = beehive_center(o80035_0_uv); + + var f : float = 1.0 - 2.0 * beehive_dist(Vector2(center.r, center.g)); + + return Color(f, f, f, 1) + +#Beehive output 2 +#Shows a random color for each hexagonal tile +#vec2 $(name_uv)_uv = $uv*vec2($sx, $sy*1.73205080757); +#vec4 $(name_uv)_center = beehive_center($(name_uv)_uv); +#rand3(fract($(name_uv)_center.zw/vec2($sx, $sy))+vec2(float($seed))) + +static func beehive_2c(uv : Vector2, size : Vector2, pseed : int) -> Color: + var o80035_0_uv : Vector2 = uv * Vector2(size.x, size.y * 1.73205080757); + var center : Color = beehive_center(o80035_0_uv); + + var f : float = 1.0 - 2.0 * beehive_dist(Vector2(center.r, center.g)); + + var v : Vector3 = Commons.rand3(Commons.fractv2(Vector2(center.b, center.a) / Vector2(size.x, size.y)) + Vector2(float(pseed),float(pseed))); + + return Color(v.x, v.y, v.z, 1) + +#Beehive output 3 +#Shows an UV map to be connected to the UV map port of the Custom UV node +#vec3(vec2(0.5)+$(name_uv)_center.xy, rand(fract($(name_uv)_center.zw/vec2($sx, $sy))+vec2(float($seed)))) +#vec2 $(name_uv)_uv = $uv*vec2($sx, $sy*1.73205080757); +#vec4 $(name_uv)_center = beehive_center($(name_uv)_uv); + +static func beehive_3c(uv : Vector2, size : Vector2, pseed : int) -> Color: + var o80035_0_uv : Vector2 = uv * Vector2(size.x, size.y * 1.73205080757); + var center : Color = beehive_center(o80035_0_uv); + + #var f : float = 1.0 - 2.0 * beehive_dist(Vector2(center.r, center.g)); + + var v1 : Vector2 = Vector2(0.5, 0.5) + Vector2(center.r, center.g) + var ff : float = Commons.rand(Commons.fractv2(Vector2(center.b, center.a) / Vector2(size.x, size.y)) + Vector2(float(pseed), float(pseed))) + + var c : Color = Color(v1.x, v1.y, ff, ff); + + return c + +#float beehive_dist(vec2 p){ +# ec2 s = vec2(1.0, 1.73205080757); +# p = abs(p); +# return max(dot(p, s*.5), p.x); +#} + +static func beehive_dist(p : Vector2) -> float: + var s : Vector2 = Vector2(1.0, 1.73205080757); + + p = Commons.absv2(p); + + return max(p.dot(s*.5), p.x); + +#vec4 beehive_center(vec2 p) { +# vec2 s = vec2(1.0, 1.73205080757); +# vec4 hC = floor(vec4(p, p - vec2(.5, 1)) / vec4(s,s)) + .5; +# vec4 h = vec4(p - hC.xy*s, p - (hC.zw + .5)*s); +# return dot(h.xy, h.xy) Color: + var s : Vector2 = Vector2(1.0, 1.73205080757); + + var hC : Color = Color(p.x, p.y, p.x - 0.5, p.y - 1) / Color(s.x, s.y, s.x, s.y); + + hC = Commons.floorc(Color(p.x, p.y, p.x - 0.5, p.y - 1) / Color(s.x, s.y, s.x, s.y)) + Color(0.5, 0.5, 0.5, 0.5); + + var v1 : Vector2 = Vector2(p.x - hC.r * s.x, p.y - hC.g * s.y) + var v2 : Vector2 = Vector2(p.x - (hC.b + 0.5) * s.x, p.y - (hC.a + 0.5) * s.y) + + var h : Color = Color(v1.x, v1.y, v2.x, v2.y); + + if Vector2(h.r, h.g).dot(Vector2(h.r, h.g)) < Vector2(h.b, h.a).dot(Vector2(h.b, h.a)): + return Color(h.r, h.g, hC.r, hC.g) + else: + return Color(h.b, h.a, hC.b + 9.73, hC.a + 9.73) + + #return dot(h.xy, h.xy) < dot(h.zw, h.zw) ? Color(h.xy, hC.xy) : Color(h.zw, hC.zw + 9.73); + +#vec3 brick_corner_uv(vec2 uv, vec2 bmin, vec2 bmax, float mortar, float corner, float seed) { +# vec2 center = 0.5*(bmin + bmax); +# vec2 size = bmax - bmin; +# +# float max_size = max(size.x, size.y); +# float min_size = min(size.x, size.y); +# +# mortar *= min_size; +# corner *= min_size; +# +# return vec3(clamp((0.5*size-vec2(mortar)-abs(uv-center))/corner, vec2(0.0), vec2(1.0)), rand(fract(center)+vec2(seed)+ceil(vec2(uv-center)))); +#} + +static func brick_corner_uv(uv : Vector2, bmin : Vector2, bmax : Vector2, mortar : float, corner : float, pseed : float) -> Vector3: + var center : Vector2 = 0.5 * (bmin + bmax) + var size : Vector2 = bmax - bmin + var max_size : float = max(size.x, size.y) + var min_size : float = min(size.x, size.y) + mortar *= min_size + corner *= min_size + + var r : Vector3 = Vector3() + + r.x = clamp(((0.5 * size.x - mortar) - abs(uv.x - center.x)) / corner, 0, 1) + r.y = clamp(((0.5 * size.y - mortar) - abs(uv.y - center.y)) / corner, 0, 1) + r.z = Commons.rand(Commons.fractv2(center) + Vector2(pseed, pseed)) + + return r + +# return vec3(clamp((0.5*size-vec2(mortar)-abs(uv-center))/corner, vec2(0.0), vec2(1.0)), rand(fract(center)+vec2(seed))); + +#vec4 brick(vec2 uv, vec2 bmin, vec2 bmax, float mortar, float round, float bevel) { +# float color; +# vec2 size = bmax - bmin; +# float min_size = min(size.x, size.y); +# +# mortar *= min_size; +# bevel *= min_size; +# round *= min_size; +# vec2 center = 0.5*(bmin+bmax); +# vec2 d = abs(uv-center)-0.5*(size)+vec2(round+mortar); +# +# color = length(max(d,vec2(0))) + min(max(d.x,d.y),0.0)-round; +# color = clamp(-color/bevel, 0.0, 1.0); +# vec2 tiled_brick_pos = mod(bmin, vec2(1.0, 1.0)); +# +# return vec4(color, center, tiled_brick_pos.x+7.0*tiled_brick_pos.y); +#} + +static func brick(uv : Vector2, bmin : Vector2, bmax : Vector2, mortar : float, pround : float, bevel : float) -> Color: + var color : float + var size : Vector2 = bmax - bmin + + var min_size : float = min(size.x, size.y) + mortar *= min_size + bevel *= min_size + pround *= min_size + + var center : Vector2 = 0.5 * (bmin + bmax) + var d : Vector2 = Vector2() + + d.x = abs(uv.x - center.x) - 0.5 * (size.x) + (pround + mortar) + d.y = abs(uv.y - center.y) - 0.5 * (size.y) + (pround + mortar) + + color = Vector2(max(d.x, 0), max(d.y, 0)).length() + min(max(d.x, d.y), 0.0) - pround + + color = clamp(-color / bevel, 0.0, 1.0) + +# var tiled_brick_pos : Vector2 = Vector2(bmin.x - 1.0 * floor(bmin.x / 1.0), bmin.y - 1.0 * floor(bmin.y / 1.0)) + + var tiled_brick_pos_x : float = bmin.x - 1.0 * floor(bmin.x / 1.0) + var tiled_brick_pos_y : float = bmin.y - 1.0 * floor(bmin.y / 1.0) + + #vec2 tiled_brick_pos = mod(bmin, vec2(1.0, 1.0)); + + return Color(color, center.x, center.y, tiled_brick_pos_x + 7.0 * tiled_brick_pos_y) + +#vec3 brick_random_color(vec2 bmin, vec2 bmax, float seed) { +# vec2 center = 0.5*(bmin + bmax); +# return rand3(fract(center + vec2(seed))); +#} + +static func brick_random_color(bmin : Vector2, bmax : Vector2, pseed : float) -> Vector3: + var center : Vector2 = (bmin + bmax) + center.x *= 0.5 + center.y *= 0.5 + + return Commons.rand3(Commons.fractv2(center + Vector2(pseed, pseed))); + +#vec3 brick_uv(vec2 uv, vec2 bmin, vec2 bmax, float seed) { +# vec2 center = 0.5*(bmin + bmax); +# vec2 size = bmax - bmin; +# +# float max_size = max(size.x, size.y); +# +# return vec3(0.5+(uv-center)/max_size, rand(fract(center)+vec2(seed))); +#} + +static func brick_uv(uv : Vector2, bmin : Vector2, bmax : Vector2, pseed : float) -> Vector3: + var center : Vector2 = 0.5 * (bmin + bmax) + var size : Vector2 = bmax - bmin + var max_size : float = max(size.x, size.y) + + var x : float = 0.5+ (uv.x - center.x) / max_size + var y : float = 0.5+ (uv.y - center.y) /max_size + + return Vector3(x, y, Commons.rand(Commons.fractv2(center) + Vector2(pseed, pseed))) + +#vec4 bricks_rb(vec2 uv, vec2 count, float repeat, float offset) { +# count *= repeat;float x_offset = offset*step(0.5, fract(uv.y*count.y*0.5)); +# +# vec2 bmin = floor(vec2(uv.x*count.x-x_offset, uv.y*count.y)); +# +# bmin.x += x_offset; +# bmin /= count; +# +# return vec4(bmin, bmin+vec2(1.0)/count); +#} + +static func bricks_rb(uv : Vector2, count : Vector2, repeat : float, offset : float) -> Color: + count *= repeat + + var x_offset : float = offset * Commons.step(0.5, Commons.fractf(uv.y * count.y * 0.5)) + + var bmin : Vector2 + bmin.x = floor(uv.x * count.x - x_offset) + bmin.y = floor(uv.y * count.y) + + bmin.x += x_offset; + bmin /= count + var bmc : Vector2 = bmin + Vector2(1.0, 1.0) / count + + return Color(bmin.x, bmin.y, bmc.x, bmc.y) + +#vec4 bricks_rb2(vec2 uv, vec2 count, float repeat, float offset) { +# count *= repeat; +# +# float x_offset = offset*step(0.5, fract(uv.y*count.y*0.5)); +# count.x = count.x*(1.0+step(0.5, fract(uv.y*count.y*0.5))); +# +# vec2 bmin = floor(vec2(uv.x*count.x-x_offset, uv.y*count.y)); +# +# bmin.x += x_offset; +# bmin /= count; +# +# return vec4(bmin, bmin+vec2(1.0)/count); +#} + +static func bricks_rb2(uv : Vector2, count : Vector2, repeat : float, offset : float) -> Color: + count *= repeat + + var x_offset : float = offset * Commons.step(0.5, Commons.fractf(uv.y * count.y * 0.5)) + count.x = count.x * (1.0+Commons.step(0.5, Commons.fractf(uv.y * count.y * 0.5))) + var bmin : Vector2 = Vector2() + + bmin.x = floor(uv.x * count.x - x_offset) + bmin.y = floor(uv.y * count.y) + + bmin.x += x_offset + bmin /= count + + var b : Vector2 = bmin + Vector2(1, 1) / count + + return Color(bmin.x, bmin.y, b.x, b.y) + +#vec4 bricks_hb(vec2 uv, vec2 count, float repeat, float offset) { +# float pc = count.x+count.y; +# float c = pc*repeat; +# vec2 corner = floor(uv*c); +# float cdiff = mod(corner.x-corner.y, pc); +# +# if (cdiff < count.x) { +# return vec4((corner-vec2(cdiff, 0.0))/c, (corner-vec2(cdiff, 0.0)+vec2(count.x, 1.0))/c); +# } else { +# return vec4((corner-vec2(0.0, pc-cdiff-1.0))/c, (corner-vec2(0.0, pc-cdiff-1.0)+vec2(1.0, count.y))/c); +# } +#} + +static func bricks_hb(uv : Vector2, count : Vector2, repeat : float, offset : float) -> Color: + var pc : float = count.x + count.y + var c : float = pc * repeat + + var corner : Vector2 = Vector2(floor(uv.x * c), floor(uv.y * c)) + var cdiff : float = Commons.modf(corner.x - corner.y, pc) + + if (cdiff < count.x): + var col : Color = Color() + + col.r = (corner.x - cdiff) / c + col.g = corner.y / c + + col.b = (corner.x - cdiff + count.x) / c + col.a = (corner.y + 1.0) / c + + return col + else: + var col : Color = Color() + + col.r = corner.x / c + col.g = (corner.y - (pc - cdiff - 1.0)) / c + + col.b = (corner.x + 1.0) / c + col.a = (corner.y - (pc - cdiff - 1.0) + count.y) / c + + return col + +#vec4 bricks_bw(vec2 uv, vec2 count, float repeat, float offset) { +# vec2 c = 2.0*count*repeat; +# float mc = max(c.x, c.y); +# vec2 corner1 = floor(uv*c); +# vec2 corner2 = count*floor(repeat*2.0*uv); +# float cdiff = mod(dot(floor(repeat*2.0*uv), vec2(1.0)), 2.0); +# vec2 corner; +# vec2 size; +# +# if (cdiff == 0.0) { +# orner = vec2(corner1.x, corner2.y); +# size = vec2(1.0, count.y); +# } else { +# corner = vec2(corner2.x, corner1.y); +# size = vec2(count.x, 1.0); +# } +# +# return vec4(corner/c, (corner+size)/c); +#} + +static func bricks_bw(uv : Vector2, count : Vector2, repeat : float, offset : float) -> Color: + var c : Vector2 = 2.0 * count * repeat + var mc : float = max(c.x, c.y) + var corner1 : Vector2 = Vector2(floor(uv.x * c.x), floor(uv.y * c.y)) + var corner2 : Vector2 = Vector2(count.x * floor(repeat* 2.0 * uv.x), count.y * floor(repeat * 2.0 * uv.y)) + + var tmp : Vector2 = Vector2(floor(repeat * 2.0 * uv.x), floor(repeat * 2.0 * uv.y)) + var cdiff : float = Commons.modf(tmp.dot(Vector2(1, 1)), 2.0) + + var corner : Vector2 + var size : Vector2 + + if cdiff == 0: + corner = Vector2(corner1.x, corner2.y) + size = Vector2(1.0, count.y) + else: + corner = Vector2(corner2.x, corner1.y) + size = Vector2(count.x, 1.0) + + return Color(corner.x / c.x, corner.y / c.y, (corner.x + size.x) / c.x, (corner.y + size.y) / c.y) + +#vec4 bricks_sb(vec2 uv, vec2 count, float repeat, float offset) { +# vec2 c = (count+vec2(1.0))*repeat; +# float mc = max(c.x, c.y); +# vec2 corner1 = floor(uv*c); +# vec2 corner2 = (count+vec2(1.0))*floor(repeat*uv); +# vec2 rcorner = corner1 - corner2; +# vec2 corner; +# vec2 size; +# +# if (rcorner.x == 0.0 && rcorner.y < count.y) { +# corner = corner2; +# size = vec2(1.0, count.y); +# } else if (rcorner.y == 0.0) { +# corner = corner2+vec2(1.0, 0.0); +# size = vec2(count.x, 1.0); +# } else if (rcorner.x == count.x) { +# corner = corner2+vec2(count.x, 1.0); +# size = vec2(1.0, count.y); +# } else if (rcorner.y == count.y) { +# corner = corner2+vec2(0.0, count.y); +# size = vec2(count.x, 1.0); +# } else { +# corner = corner2+vec2(1.0); +# size = vec2(count.x-1.0, count.y-1.0); +# } +# +# return vec4(corner/c, (corner+size)/c); +#} + +static func bricks_sb(uv : Vector2, count : Vector2, repeat : float, offset : float) -> Color: + var c : Vector2 = (count + Vector2(1, 1)) * repeat + var mc : float = max(c.x, c.y) + var corner1 : Vector2 = Vector2(floor(uv.x * c.x), floor(uv.y * c.y)) + var corner2 : Vector2 = (count + Vector2(1, 1)) * Vector2(floor(repeat * uv.x), floor(repeat * uv.y)) + var rcorner : Vector2 = corner1 - corner2 + + var corner : Vector2 + var size : Vector2 + + if (rcorner.x == 0.0 && rcorner.y < count.y): + corner = corner2 + size = Vector2(1.0, count.y) + elif (rcorner.y == 0.0): + corner = corner2 + Vector2(1.0, 0.0) + size = Vector2(count.x, 1.0) + elif (rcorner.x == count.x): + corner = corner2 + Vector2(count.x, 1.0) + size = Vector2(1.0, count.y) + elif (rcorner.y == count.y): + corner = corner2 + Vector2(0.0, count.y) + size = Vector2(count.x, 1.0) + else: + corner = corner2 + Vector2(1, 1) + size = Vector2(count.x-1.0, count.y-1.0) + + return Color(corner.x / c.x, corner.y / c.y, (corner.x + size.x) / c.x, (corner.y + size.y) / c.y) + +#vec4 brick2(vec2 uv, vec2 bmin, vec2 bmax, float mortar, float round, float bevel) { +# float color; +# vec2 size = bmax - bmin; +# vec2 center = 0.5*(bmin+bmax); +# vec2 d = abs(uv-center)-0.5*(size)+vec2(round+mortar); +# +# color = length(max(d,vec2(0))) + min(max(d.x,d.y),0.0)-round; +# color = clamp(-color/bevel, 0.0, 1.0); +# +# vec2 tiled_brick_pos = mod(bmin, vec2(1.0, 1.0)); +# +# return vec4(color, center, tiled_brick_pos.x+7.0*tiled_brick_pos.y); +#} + +static func brick2(uv : Vector2, bmin : Vector2, bmax : Vector2, mortar : float, pround : float, bevel : float) -> Color: + return Color() + +#vec4 bricks_uneven(vec2 uv, int iterations, float min_size, float randomness, float seed) { +# vec2 a = vec2(0.0); +# vec2 b = vec2(1.0); +# for (int i = 0; i < iterations; ++i) { +# vec2 size = b-a; +# if (max(size.x, size.y) < min_size) { +# break; +# } +# +# float x = rand(rand2(vec2(rand(a+b), seed)))*randomness+(1.0-randomness)*0.5; +# +# if (size.x > size.y) { +# x *= size.x; +# +# if (uv.x > a.x+x) { +# a.x += x; +# } else { +# b.x = a.x + x; +# } +# } else { +# x *= size.y; +# +# if (uv.y > a.y+x) { +# a.y += x; +# } else { +# b.y = a.y + x; +# } +# } +# } +# +# return vec4(a, b); +#} + +static func bricks_uneven(uv : Vector2, iterations : int, min_size : float, randomness : float, pseed : float) -> Color: + return Color() + + +#vec2 truchet_generic_uv(vec2 uv, vec2 seed) { +# vec2 i = floor(uv); +# vec2 f = fract(uv); +# vec2 invert = step(rand2(seed+i), vec2(0.5)); +# +# return f*(vec2(1.0)-invert)+(vec2(1.0)-f)*invert; +#} + +static func truchet_generic_uv(uv : Vector2, pseed : float) -> Vector2: + return Vector2() + + +#float pavement(vec2 uv, float bevel, float mortar) {\n\t +# uv = abs(uv-vec2(0.5));\n\t +# +# return clamp((0.5*(1.0-mortar)-max(uv.x, uv.y))/max(0.0001, bevel), 0.0, 1.0); +#} + +#vec4 arc_pavement(vec2 uv, float acount, float lcount, out vec2 seed) {\n\t +# float PI = 3.141592654;\n\t +# float radius = (0.5/sqrt(2.0));\n +# float uvx = uv.x;\n +# uv.x = 0.5*fract(uv.x+0.5)+0.25;\n +# float center = (uv.x-0.5)/radius;\n +# center *= center;\n +# center = floor(acount*(uv.y-radius*sqrt(1.0-center))+0.5)/acount;\n +# +# vec2 v = uv-vec2(0.5, center);\n +# float cornerangle = 0.85/acount+0.25*PI;\n +# float acountangle = (PI-2.0*cornerangle)/(lcount+floor(mod(center*acount, 2.0)));\n +# float angle = mod(atan(v.y, v.x), 2.0*PI);\n\t +# +# float base_angle;\n\t +# float local_uvy = 0.5+acount*(length(v)-radius)*(1.54-0.71*cos(1.44*(angle-PI*0.5)));\n\t +# vec2 local_uv;\n +# +# if (angle < cornerangle) {\n +# base_angle = 0.25*PI;\n\t\t +# local_uv = vec2((angle-0.25*PI)/cornerangle*0.38*acount+0.5, 1.0-local_uvy);\n\t\t +# seed = vec2(fract(center), 0.0);\n +# } else if (angle > PI-cornerangle) {\n +# base_angle = 0.75*PI;\n\t\t +# local_uv = vec2(local_uvy, 0.5-(0.75*PI-angle)/cornerangle*0.38*acount);\n\t\t +# seed = vec2(fract(center), 0.0);\n +# } else {\n +# base_angle = cornerangle+(floor((angle-cornerangle)/acountangle)+0.5)*acountangle;\n\t\t +# local_uv = vec2((angle-base_angle)/acountangle+0.5, 1.0-local_uvy);\n\t\t +# seed = vec2(fract(center), base_angle);\n +# }\n +# +# vec2 brick_center = vec2(0.5, center)+radius*vec2(cos(base_angle), sin(base_angle));\n +# +# return vec4(brick_center.x+uvx-uv.x, brick_center.y, local_uv);\n +#} diff --git a/game/addons/mat_maker_gd/nodes/common/sdf2d.gd b/game/addons/mat_maker_gd/nodes/common/sdf2d.gd new file mode 100644 index 0000000..cf6dd2f --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/sdf2d.gd @@ -0,0 +1,2451 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#---------------------- +#sdarc.mmg +#An arc as a signed distance function + +#"outputs": [ +#{ +# "longdesc": "The arc as a signed distance function", +# "sdf2d": "sdArc($uv-vec2(0.5), mod($a1, 360.0)*0.01745329251, mod($a2, 360.0)*0.01745329251, $r1, $r2)", +# "shortdesc": "Output", +# "type": "sdf2d" +#} +#], +#"parameters": [ +#{ +# "control": "Angle1.a", +# "default": 0, +# "label": "Angle 1", +# "longdesc": "The first angle of the arc", +# "max": 180, +# "min": -180, +# "name": "a1", +# "shortdesc": "Angle1", +# "step": 1, +# "type": "float" +#}, +#{ +# "control": "Angle2.a", +# "default": 0, +# "label": "Angle 2", +# "longdesc": "The second angle of the arc", +# "max": 180, +# "min": -180, +# "name": "a2", +# "shortdesc": "Angle2", +# "step": 1, +# "type": "float" +#}, +#{ +# "control": "Radius1.r", +# "default": 0.5, +# "label": "Radius", +# "longdesc": "The radius of the arc", +# "max": 1, +# "min": 0, +# "name": "r1", +# "shortdesc": "Radius", +# "step": 0.01, +# "type": "float" +#}, +#{ +# "control": "Radius11.r", +# "default": 0.1, +# "label": "Width", +# "longdesc": "The width of the shape around the arc", +# "max": 1, +# "min": 0, +# "name": "r2", +# "shortdesc": "Width", +# "step": 0.01, +# "type": "float" +#} +#] + +#---------------------- +#sdboolean.mmg +#Performs a boolean operation (union, intersection or difference) between two shapes + +#"inputs": [ +#{ +# "default": "0.0", +# "label": "", +# "longdesc": "The first shape, defined as a signed distance function", +# "name": "in1", +# "shortdesc": "Input1", +# "type": "sdf2d" +#}, +#{ +# "default": "0.0", +# "label": "", +# "longdesc": "The second shape, defined as a signed distance function", +# "name": "in2", +# "shortdesc": "Input2", +# "type": "sdf2d" +#} +#], +#"outputs": [ +#{ +# "longdesc": "The shape generated by the boolean operation", +# "sdf2d": "$op $in1($uv), $in2($uv))", +# "shortdesc": "Output", +# "type": "sdf2d" +#} +#], +#"parameters": [ +#{ +# "default": 2, +# "label": "", +# "longdesc": "The operation performed by this node", +# "name": "op", +# "shortdesc": "Operation", +# "type": "enum", +# "values": [ +# { +# "name": "Union", +# "value": "min(" +# }, +# { +# "name": "Subtraction", +# "value": "max(-" +# }, +# { +# "name": "Intersection", +# "value": "max(" +# } +# ] +#} +#], + +#---------------------- +#sdbox.mmg +#A rectangle described as a signed distance function + +# "code": "vec2 $(name_uv)_d = abs($uv-vec2($cx+0.5, $cy+0.5))-vec2($w, $h);", +# "outputs": [ +# { +# "longdesc": "The generated signed distance function", +# "sdf2d": "length(max($(name_uv)_d,vec2(0)))+min(max($(name_uv)_d.x,$(name_uv)_d.y),0.0)", +# "shortdesc": "Output", +# "type": "sdf2d" +# } +# ], +# "parameters": [ +# { +# "control": "Rect1.x", +# "default": 0.5, +# "label": "Width", +# "longdesc": "The width of the box", +# "max": 1, +# "min": 0, +# "name": "w", +# "shortdesc": "Width", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "Rect1.y", +# "default": 1, +# "label": "Height", +# "longdesc": "The height of the box", +# "max": 1, +# "min": 0, +# "name": "h", +# "shortdesc": "Height", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "P1.x", +# "default": 0, +# "label": "Center X", +# "longdesc": "The position of the center of the box on the X axis", +# "max": 1, +# "min": -1, +# "name": "cx", +# "shortdesc": "Center.x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "P1.y", +# "default": 0, +# "label": "Center Y", +# "longdesc": "The position of the center of the box on the Y axis", +# "max": 1, +# "min": -1, +# "name": "cy", +# "shortdesc": "Center.y", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#sdcircle.mmg +#A circle described as a signed distance function + +# "outputs": [ +# { +# "longdesc": "The generated signed distance function", +# "sdf2d": "length($uv-vec2($cx+0.5, $cy+0.5))-$r", +# "shortdesc": "Output", +# "type": "sdf2d" +# } +# ], +# "parameters": [ +# { +# "control": "Radius1.r", +# "default": 0.5, +# "label": "Radius", +# "longdesc": "The radius of the circle", +# "max": 1, +# "min": 0, +# "name": "r", +# "shortdesc": "Radius", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "P1.x", +# "default": 0, +# "label": "Center X", +# "longdesc": "The position of the center on the X axis", +# "max": 1, +# "min": -1, +# "name": "cx", +# "shortdesc": "Center.x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "P1.y", +# "default": 0, +# "label": "Center Y", +# "longdesc": "The position of the center on the Y axis", +# "max": 1, +# "min": -1, +# "name": "cy", +# "shortdesc": "Center.y", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#sdcirclerepeat.mmg +#Repeats its input shape around a circle + +#Output: +#Out, sdf2d (float) (property) +#$in(circle_repeat_transform_2d($uv-vec2(0.5), $c)+vec2(0.5)) + +#Input: +#in, float (sdf2d), default : 0 +#count, int, min: 1, max: 32, default: 6 + +#---------------------- +#sdelongation.mmg + +# "inputs": [ +# { +# "default": "0.0", +# "label": "", +# "name": "in", +# "type": "sdf2d" +# } +# ], +# "outputs": [ +# { +# "sdf2d": "$in($uv-clamp($uv-vec2(0.5), -vec2($x, $y), vec2($x, $y)))", +# "type": "sdf2d" +# } +# ], +# "parameters": [ +# { +# "control": "Rect1.x", +# "default": 0, +# "label": "X", +# "max": 1, +# "min": 0, +# "name": "x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "Rect1.y", +# "default": 0, +# "label": "Y", +# "max": 1, +# "min": 0, +# "name": "y", +# "step": 0.01, +# "type": "float" +# } +# ] + +#---------------------- +#sdline.mmg +#A line or a capsule shape described as a signed distance function + +#vec2 $(name_uv)_sdl = sdLine($uv, vec2($ax+0.5, $ay+0.5), vec2($bx+0.5, $by+0.5)); + +#Outputs +#output, sdf2d (float), (output property) +#$(name_uv)_sdl.x-$r*$profile($(name_uv)_sdl.y) + +#Inputs +#A, Vector2, min: -1, max: 1, step: 0.01, default: (-0.3, -0.3) +#B, Vector2, min: -1, max: 1, step: 0.01, default: (0.3, 0.3) +#width, float, min: 0, max: 1, step: 0.01, default: 0.1 +#points (curve), default: 0, 0, 0, 1, 0, 0, 1, 1 + +#---------------------- +#sdmorph.mmg +#Morphs between 2 input shapes + +# "inputs": [ +# { +# "default": "0.0", +# "label": "", +# "longdesc": "The first shape, defined as a signed distance function", +# "name": "in1", +# "shortdesc": "Input1", +# "type": "sdf2d" +# }, +# { +# "default": "0.0", +# "label": "", +# "longdesc": "The second shape, defined as a signed distance function", +# "name": "in2", +# "shortdesc": "Input2", +# "type": "sdf2d" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The generated hybrid shape", +# "sdf2d": "mix($in1($uv), $in2($uv), $amount)", +# "shortdesc": "Output", +# "type": "sdf2d" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0.5, +# "label": "", +# "longdesc": "The amount of the second input in the result", +# "max": 1, +# "min": 0, +# "name": "amount", +# "shortdesc": "Amount", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#sdngon.mmg (inc sdrotate.mmg, sdcirclerepeat.mmg) +#An n-gon described as a signed distance function + +# "outputs": [ +# { +# "longdesc": "The n-gon as a signed distance function", +# "sdf2d": "sdNgon(sdf2d_rotate($uv-vec2($cx, $cy), $rot*0.01745329251-1.57079632679)-vec2(0.5), $r, $n)", +# "shortdesc": "Output", +# "type": "sdf2d" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 3, +# "label": "N", +# "longdesc": "The number of sides of the n-gon", +# "max": 12, +# "min": 3, +# "name": "n", +# "shortdesc": "N", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "Radius1.r", +# "default": 0.5, +# "label": "Radius", +# "longdesc": "The radius of the n-gon", +# "max": 1, +# "min": 0, +# "name": "r", +# "shortdesc": "Radius", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "Radius1.a", +# "default": 0, +# "label": "Rotation", +# "longdesc": "The rotation of the n-gon", +# "max": 180, +# "min": -180, +# "name": "rot", +# "shortdesc": "Rotation", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "P1.x", +# "default": 0, +# "label": "Center X", +# "longdesc": "The position of the center on the X axis", +# "max": 0.5, +# "min": -0.5, +# "name": "cx", +# "shortdesc": "Center.x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "P1.y", +# "default": 0, +# "label": "Center Y", +# "longdesc": "The position of the center on the Y axis", +# "max": 0.5, +# "min": -0.5, +# "name": "cy", +# "shortdesc": "Center.y", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#sdpolygon.mmg +#A polygon as a signed distance function + +#Output: +#Out, sdf2d (float) (property) +#sdPolygon_$(name)($uv) + +#Input: +#polygon points, default: 0.2, 0.2, 0.4, 0.7, 0.7, 0.4 + +#---------------------- +#sdrepeat.mmg +#Repeats its input shape on a grid.This node does not support overlapping between instances. + +#Output: +#Out, sdf2d (float) (property) +#$in(repeat_2d($uv, vec2(1.0/$rx, 1.0/$ry), float($seed), $r)) + +#Input: +#in, float (sdf2d), default : 0 +#x, int, min: 1, max: 32, default: 4 +#y, int, min: 1, max: 32, default: 4 +#random_rotation, min: 0, max: 1, step:0.01, default: 0.5 + +#---------------------- +#sdrhombus.mmg +#A rhombus described as a signed distance function + +# "outputs": [ +# { +# "longdesc": "The rhombus as a signed distance function", +# "sdf2d": "sdRhombus($uv-vec2($cx+0.5, $cy+0.5), vec2($w, $h))", +# "shortdesc": "Output", +# "type": "sdf2d" +# } +# ], +# "parameters": [ +# { +# "control": "Rect1.x", +# "default": 0.5, +# "label": "Width", +# "longdesc": "The width of the rhombus", +# "max": 1, +# "min": 0, +# "name": "w", +# "shortdesc": "Width", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "Rect1.y", +# "default": 1, +# "label": "Height", +# "longdesc": "The height of the rhombus", +# "max": 1, +# "min": 0, +# "name": "h", +# "shortdesc": "Height", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "P1.x", +# "default": 0, +# "label": "Center X", +# "longdesc": "The position of the center on the X axis", +# "max": 1, +# "min": -1, +# "name": "cx", +# "shortdesc": "Center.x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "P1.y", +# "default": 0, +# "label": "Center Y", +# "longdesc": "The position of the center on the Y axis", +# "max": 1, +# "min": -1, +# "name": "cy", +# "shortdesc": "Center.y", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#sdrotate.mmg +#Rotates its input shape described as a signed distance function + +# "inputs": [ +# { +# "default": "0.0", +# "label": "", +# "longdesc": "The input shape, defined as a signed distance function", +# "name": "in", +# "shortdesc": "Input", +# "type": "sdf2d" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The rotated shape", +# "sdf2d": "$in(sdf2d_rotate($uv, $a*0.01745329251))", +# "shortdesc": "Output", +# "type": "sdf2d" +# } +# ], +# "parameters": [ +# { +# "control": "Radius1.a", +# "default": 0, +# "label": "", +# "longdesc": "The rotation angle", +# "max": 180, +# "min": -180, +# "name": "a", +# "shortdesc": "Angle", +# "step": 1, +# "type": "float" +# } +# ], + +#---------------------- +#sdroundedshape.mmg +#Dilates an input shape into a rounded shape + +#Output: +#Out, sdf2d (float) (property) +#$in($uv)-$r + +#Input: +#in, float (sdf2d), default : 0 +#radius, min: 0, max: 1, step:0.01, default: 0 + +#---------------------- +#sdscale.mmg +#Scales its input shape described as a signed distance function + +# "inputs": [ +# { +# "default": "0.0", +# "label": "", +# "longdesc": "The input shape, defined as a signed distance function", +# "name": "in", +# "shortdesc": "Input", +# "type": "sdf2d" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The generated scaled shape", +# "sdf2d": "$in(($uv-vec2(0.5))/$s+vec2(0.5))*$s", +# "shortdesc": "Output", +# "type": "sdf2d" +# } +# ], +# "parameters": [ +# { +# "control": "Scale1.x", +# "default": 1, +# "label": "", +# "longdesc": "The scale of the transform", +# "max": 5, +# "min": 0, +# "name": "s", +# "shortdesc": "Scale", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#sdshow.mmg +#Creates a greyscale image from a shape described as a 2D Signed Distance Function + +#Output + +#Output float (color) - Shows the shape as a greyscale image +#clamp($base-$in($uv)/max($bevel, 0.00001), 0.0, 1.0) + +#Input: +#Input (sdf - shape), default: 0 - sdf2d - universal input +#bevel, float, min 0, max 1, step 0.01, default 0 +#base, float, min 0, max 1, step 0.01, default 0 + +#---------------------- +#sdsmoothboolean.mmg +#Performs a smooth boolean operation (union, intersection or difference) between two shapes + +# "inputs": [ +# { +# "default": "0.0", +# "label": "", +# "longdesc": "The first shape, defined as a signed distance function", +# "name": "in1", +# "shortdesc": "Input1", +# "type": "sdf2d" +# }, +# { +# "default": "0.0", +# "label": "", +# "longdesc": "The second shape, defined as a signed distance function", +# "name": "in2", +# "shortdesc": "Input2", +# "type": "sdf2d" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The shape generated by the boolean operation", +# "sdf2d": "sdSmooth$op($in1($uv), $in2($uv), $k)", +# "shortdesc": "Output", +# "type": "sdf2d" +# } +# ], +# "parameters": [ +# { +# "default": 0, +# "label": "", +# "longdesc": "The operation performed by this node", +# "name": "op", +# "shortdesc": "Operation", +# "type": "enum", +# "values": [ +# { +# "name": "Union", +# "value": "Union" +# }, +# { +# "name": "Subtraction", +# "value": "Subtraction" +# }, +# { +# "name": "Intersection", +# "value": "Intersection" +# } +# ] +# }, +# { +# "control": "None", +# "default": 0, +# "label": "", +# "longdesc": "The smoothness of the boolean operation", +# "max": 1, +# "min": 0, +# "name": "k", +# "shortdesc": "Smoothness", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#sdtranslate.mmg +#Translates its input shape described as signed distance function + +# "inputs": [ +# { +# "default": "0.0", +# "label": "", +# "longdesc": "The input shape, defined as a signed distance function", +# "name": "in", +# "shortdesc": "Input", +# "type": "sdf2d" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The translated shape", +# "sdf2d": "$in($uv-vec2($x, $y))", +# "shortdesc": "Output", +# "type": "sdf2d" +# } +# ], +# "parameters": [ +# { +# "control": "P1.x", +# "default": 0, +# "label": "X", +# "longdesc": "The translation along the X axis", +# "max": 1, +# "min": -1, +# "name": "x", +# "shortdesc": "Translate.x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "P1.y", +# "default": 0, +# "label": "Y", +# "longdesc": "The translation along the Y axis", +# "max": 1, +# "min": -1, +# "name": "y", +# "shortdesc": "Translate.y", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#curve.mmg + +# "code": "vec2 $(name_uv)_bezier = sdBezier($uv, vec2($ax+0.5, $ay+0.5), vec2($bx+0.5, $by+0.5), vec2($cx+0.5, $cy+0.5));\nvec2 $(name_uv)_uv = vec2($(name_uv)_bezier.x, $(name_uv)_bezier.y/$width+0.5);\nvec2 $(name_uv)_uvtest = step(vec2(0.5), abs($(name_uv)_uv-vec2(0.5)));\n$(name_uv)_uv = mix(vec2(fract($repeat*$(name_uv)_uv.x), $(name_uv)_uv.y), vec2(0.0), max($(name_uv)_uvtest.x, $(name_uv)_uvtest.y));\n", +# "inputs": [ +# { +# "default": "vec4(vec3(step(abs($uv.y-0.5), 0.4999)), 1.0)", +# "label": "", +# "longdesc": "Input pattern to be drawn along the curve", +# "name": "in", +# "shortdesc": "Pattern", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "An image showing the specified curve", +# "rgba": "$in($(name_uv)_uv)", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "control": "P1.x", +# "default": -0.3, +# "label": "AX", +# "longdesc": "Position on X axis of the first control point", +# "max": 0.5, +# "min": -0.5, +# "name": "ax", +# "shortdesc": "A.x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "P1.y", +# "default": -0.1, +# "label": "AY", +# "longdesc": "Position on Y axis of the first control point", +# "max": 0.5, +# "min": -0.5, +# "name": "ay", +# "shortdesc": "A.y", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "P3.x", +# "default": -0, +# "label": "BX", +# "longdesc": "Position on X axis of the second control point", +# "max": 0.5, +# "min": -0.5, +# "name": "bx", +# "shortdesc": "B.x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "P3.y", +# "default": 0.2, +# "label": "BY", +# "longdesc": "Position on Y axis of the second control point", +# "max": 0.5, +# "min": -0.5, +# "name": "by", +# "shortdesc": "B.y", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "P2.x", +# "default": 0.3, +# "label": "CX", +# "longdesc": "Position on X axis of the third control point", +# "max": 0.5, +# "min": -0.5, +# "name": "cx", +# "shortdesc": "C.x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "P2.y", +# "default": -0.1, +# "label": "CY", +# "longdesc": "Position on Y axis of the third control point", +# "max": 0.5, +# "min": -0.5, +# "name": "cy", +# "shortdesc": "C.y", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.1, +# "label": "Width", +# "longdesc": "Width of the curve pattern", +# "max": 0.5, +# "min": 0, +# "name": "width", +# "shortdesc": "Width", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Repeat", +# "longdesc": "Number of repetitions of the input pattern", +# "max": 16, +# "min": 1, +# "name": "repeat", +# "shortdesc": "Repeat", +# "step": 1, +# "type": "float" +# } +# ] + +#---------------------- +#sdannularshape.mmg +#Creates an annular shape from a shape described as a signed distance function + +#Output + +#Output float (color) - Shows the shape as a greyscale image +#sdRipples($in($uv), $r, int($ripples)) + +#Input: +#Input (sdf - shape), default: 0 - sdf2d - universal input +#width, float, min 0, max 1, step 0.01, default 0 +#rippples, int, min 1, max 16, default 1 + +#---------------------- +#sd_mask_to_sdf.mmg + +#{ +# "connections": [ +# { +# "from": "6520", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# }, +# { +# "from": "edge_detect", +# "from_port": 0, +# "to": "1823", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "buffer_2", +# "to_port": 0 +# }, +# { +# "from": "buffer_2", +# "from_port": 0, +# "to": "6520", +# "to_port": 1 +# }, +# { +# "from": "buffer_2", +# "from_port": 0, +# "to": "tones_step", +# "to_port": 0 +# }, +# { +# "from": "tones_step", +# "from_port": 0, +# "to": "edge_detect", +# "to_port": 0 +# }, +# { +# "from": "1823", +# "from_port": 0, +# "to": "iterate_buffer", +# "to_port": 0 +# }, +# { +# "from": "2434_8", +# "from_port": 0, +# "to": "iterate_buffer", +# "to_port": 1 +# }, +# { +# "from": "iterate_buffer", +# "from_port": 0, +# "to": "6520", +# "to_port": 0 +# }, +# { +# "from": "24282_2", +# "from_port": 0, +# "to": "2434_8", +# "to_port": 0 +# }, +# { +# "from": "iterate_buffer", +# "from_port": 1, +# "to": "24282_2", +# "to_port": 0 +# } +# ], +# "label": "Mask to SDF", +# "longdesc": "", +# "name": "sd_mask_to_sdf", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "nodes": [ +# { +# "name": "iterate_buffer", +# "node_position": { +# "x": 76.700005, +# "y": -249.817047 +# }, +# "parameters": { +# "filter": false, +# "iterations": 30, +# "mipmap": false, +# "size": 10 +# }, +# "seed_value": 29168, +# "type": "iterate_buffer" +# }, +# { +# "name": "2434_8", +# "node_position": { +# "x": 91.099991, +# "y": -9.031479 +# }, +# "parameters": { +# "distance": 0, +# "size": 10 +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "vec3(-1.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgb" +# } +# ], +# "instance": "vec3 $(name)_jump_flood(vec2 uv, float size) {\n\tivec2 int_uv = ivec2(uv * size);\n\tfloat best_distance = 9999.9;\n\tvec2 best_coord;\n\tfloat iter = $in(uv).b;\n\titer += 0.01;\n\tfloat step_width = size / 4.0 / (iter * 100.0);\n\t\n\tfor (int x = -1; x <= 1; x++) {\n\t\tfor (int y = -1; y <= 1; y++) {\n\t\t\tivec2 offsetUV = int_uv + ivec2(x, y) * int(step_width);\n\t\t\tvec2 float_uv = vec2(offsetUV) / size;\n\t\t\tvec2 offset_pos = $in(float_uv).rg;\n\t\t\t\n\t\t\tif (offset_pos.x != 0.0 && offset_pos.y != 0.0) {\n\t\t\t\tvec2 diff = offset_pos - uv;\n\t\t\t\t//float dist = dot(diff, diff);\n\t\t\t\t$distance\n\t\t\t\tif (dist < best_distance) {\n\t\t\t\t\tbest_distance = dist;\n\t\t\t\t\tbest_coord = offset_pos;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn vec3(best_coord, iter);\n}", +# "name": "Jump Flood", +# "outputs": [ +# { +# "rgb": "$(name)_jump_flood($uv, $size)", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "default": 10, +# "first": 0, +# "label": "", +# "last": 13, +# "name": "size", +# "type": "size" +# }, +# { +# "default": 0, +# "label": "", +# "name": "distance", +# "type": "enum", +# "values": [ +# { +# "name": "Euclidean", +# "value": "float dist = dot(diff, diff);" +# }, +# { +# "name": "Manhattan", +# "value": "float dist = abs(diff.x) + abs(diff.y);" +# }, +# { +# "name": "Chebyshev", +# "value": "float dist = abs(diff.x) > abs(diff.y) ? abs(diff.x) : abs(diff.y);" +# } +# ] +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "1823", +# "node_position": { +# "x": -269.899872, +# "y": -18.741766 +# }, +# "parameters": { +# +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "1.0", +# "label": "", +# "name": "in", +# "type": "f" +# } +# ], +# "instance": "", +# "name": "Mask to UV Mask", +# "outputs": [ +# { +# "rgb": "$in($uv) < .5 ? vec3(0.0) : vec3($uv, 0.0)", +# "type": "rgb" +# } +# ], +# "parameters": [ +# +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "edge_detect", +# "node_position": { +# "x": -286.951447, +# "y": -137.078964 +# }, +# "parameters": { +# "size": 10, +# "threshold": 0.4, +# "width": 1 +# }, +# "type": "edge_detect" +# }, +# { +# "name": "6520", +# "node_position": { +# "x": 364.156525, +# "y": -261.873169 +# }, +# "parameters": { +# "distance": 0, +# "tiled": false +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgb" +# }, +# { +# "default": "0.0", +# "function": true, +# "label": "", +# "name": "mask", +# "type": "f" +# } +# ], +# "instance": "float $(name)_distance(vec2 uv, bool tiled) {\n\tif (tiled) {\n\t\tuv = fract(uv);\n\t}\n\tvec2 custom_uv = $in(uv).xy;\n\tvec2 diff = custom_uv != vec2(0.0) ? custom_uv - uv : vec2(1.0);\n\t$distance\n\tif (!tiled) {\n\t\tuv = clamp(uv, 0.0, 1.0);\n\t}\n\treturn $mask(uv) < 0.5 ? distance : -distance;\n}", +# "name": "Calculate Distance", +# "outputs": [ +# { +# "sdf2d": "$(name)_distance($uv, $tiled)", +# "type": "sdf2d" +# } +# ], +# "parameters": [ +# { +# "default": false, +# "label": "Tiled", +# "name": "tiled", +# "type": "boolean" +# }, +# { +# "default": 0, +# "label": "", +# "name": "distance", +# "type": "enum", +# "values": [ +# { +# "name": "Euclidean", +# "value": "float distance = length(diff);" +# }, +# { +# "name": "Manhattan", +# "value": "float distance = abs(diff.x) + abs(diff.y);" +# }, +# { +# "name": "Chebyshev", +# "value": "float distance = abs(diff.x) > abs(diff.y) ? abs(diff.x) : abs(diff.y);" +# } +# ] +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -735.85144, +# "y": -352.006775 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The greyscale mask to be converted", +# "name": "mask", +# "shortdesc": "Mask", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": 646.256348, +# "y": -263.285461 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The genrated distance field", +# "name": "sdf", +# "shortdesc": "Output", +# "type": "sdf2d" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": -47.67952, +# "y": -541.979187 +# }, +# "parameters": { +# "param0": 10, +# "param1": 30, +# "param2": false, +# "param3": 0 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "Size", +# "linked_widgets": [ +# { +# "node": "iterate_buffer", +# "widget": "size" +# }, +# { +# "node": "2434_8", +# "widget": "size" +# }, +# { +# "node": "buffer_2", +# "widget": "size" +# }, +# { +# "node": "edge_detect", +# "widget": "size" +# } +# ], +# "longdesc": "The resolution used for the operation", +# "name": "param0", +# "shortdesc": "Size", +# "type": "linked_control" +# }, +# { +# "label": "Iterations", +# "linked_widgets": [ +# { +# "node": "iterate_buffer", +# "widget": "iterations" +# } +# ], +# "longdesc": "The number of iterations the jump flood algorithm performs to calculate the distances", +# "name": "param1", +# "shortdesc": "Iterations", +# "type": "linked_control" +# }, +# { +# "label": "Tiled", +# "linked_widgets": [ +# { +# "node": "24282_2", +# "widget": "tiled" +# }, +# { +# "node": "6520", +# "widget": "tiled" +# } +# ], +# "longdesc": "Controls whether the resulting ditance field will be tiled. Useful for patterns that extend over the texture bounds", +# "name": "param2", +# "shortdesc": "Tiled", +# "type": "linked_control" +# }, +# { +# "label": "Distance", +# "linked_widgets": [ +# { +# "node": "2434_8", +# "widget": "distance" +# }, +# { +# "node": "6520", +# "widget": "distance" +# } +# ], +# "name": "param3", +# "shortdesc": "Distance function", +# "type": "linked_control" +# } +# ] +# }, +# { +# "name": "buffer_2", +# "node_position": { +# "x": -297.702789, +# "y": -348.41391 +# }, +# "parameters": { +# "size": 10 +# }, +# "type": "buffer", +# "version": 1 +# }, +# { +# "name": "tones_step", +# "node_position": { +# "x": -294.947968, +# "y": -258.84549 +# }, +# "parameters": { +# "invert": false, +# "value": 0.5, +# "width": 0 +# }, +# "type": "tones_step" +# }, +# { +# "name": "24282_2", +# "node_position": { +# "x": 114.391708, +# "y": -90.765732 +# }, +# "parameters": { +# "tiled": false +# }, +# "shader_model": { +# "code": "vec3 $(name_uv)_in = $in(fract($uv));\nvec3 $(name_uv)_tiled = $(name_uv)_in.xy != vec2(0.0) ? $(name_uv)_in + vec3(floor($uv), 0.0) : $(name_uv)_in;", +# "global": "", +# "inputs": [ +# { +# "default": "vec3(1.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgb" +# } +# ], +# "instance": "", +# "name": "Tiling", +# "outputs": [ +# { +# "rgb": "$tiled ? $(name_uv)_tiled : $(name_uv)_in", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "default": false, +# "label": "Tiled", +# "name": "tiled", +# "type": "boolean" +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "connections": [ +# { +# "from": "edge_detect", +# "from_port": 0, +# "to": "1823", +# "to_port": 0 +# }, +# { +# "from": "tones_step", +# "from_port": 0, +# "to": "edge_detect", +# "to_port": 0 +# }, +# { +# "from": "1823", +# "from_port": 0, +# "to": "iterate_buffer", +# "to_port": 0 +# }, +# { +# "from": "2434_8", +# "from_port": 0, +# "to": "iterate_buffer", +# "to_port": 1 +# }, +# { +# "from": "iterate_buffer", +# "from_port": 0, +# "to": "6520", +# "to_port": 0 +# }, +# { +# "from": "24282_2", +# "from_port": 0, +# "to": "2434_8", +# "to_port": 0 +# }, +# { +# "from": "iterate_buffer", +# "from_port": 1, +# "to": "24282_2", +# "to_port": 0 +# }, +# { +# "from": "iterate_buffer", +# "from_port": 0, +# "to": "2153", +# "to_port": 1 +# }, +# { +# "from": "buffer_2", +# "from_port": 0, +# "to": "tones_step", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 1, +# "to": "2153", +# "to_port": 0 +# }, +# { +# "from": "2153", +# "from_port": 0, +# "to": "11582", +# "to_port": 1 +# }, +# { +# "from": "gen_inputs", +# "from_port": 1, +# "to": "11582", +# "to_port": 2 +# }, +# { +# "from": "11582", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# }, +# { +# "from": "8064", +# "from_port": 0, +# "to": "2153", +# "to_port": 2 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "8064", +# "to_port": 0 +# }, +# { +# "from": "8064", +# "from_port": 0, +# "to": "buffer_2", +# "to_port": 0 +# }, +# { +# "from": "buffer_2", +# "from_port": 0, +# "to": "6520", +# "to_port": 1 +# }, +# { +# "from": "6520", +# "from_port": 0, +# "to": "11582", +# "to_port": 0 +# } +# ], +# "label": "Dilate 2", +# "longdesc": "", +# "name": "graph_3", +# "node_position": { +# "x": 515.555786, +# "y": -545.049744 +# }, +# "nodes": [ +# { +# "name": "iterate_buffer", +# "node_position": { +# "x": 64.900002, +# "y": -259.215881 +# }, +# "parameters": { +# "filter": false, +# "iterations": 30, +# "mipmap": false, +# "size": 9 +# }, +# "seed_value": 29168, +# "type": "iterate_buffer" +# }, +# { +# "name": "2434_8", +# "node_position": { +# "x": 102.099998, +# "y": 15.367363 +# }, +# "parameters": { +# "distance": 0, +# "size": 9 +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "vec3(-1.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgb" +# } +# ], +# "instance": "vec3 $(name)_jump_flood(vec2 uv, float size) {\n\tivec2 int_uv = ivec2(uv * size);\n\tfloat best_distance = 9999.9;\n\tvec2 best_coord;\n\tfloat iter = $in(uv).b;\n\titer += 0.01;\n\tfloat step_width = size / 4.0 / (iter * 100.0);\n\t\n\tfor (int x = -1; x <= 1; x++) {\n\t\tfor (int y = -1; y <= 1; y++) {\n\t\t\tivec2 offsetUV = int_uv + ivec2(x, y) * int(step_width);\n\t\t\tvec2 float_uv = vec2(offsetUV) / size;\n\t\t\tvec2 offset_pos = $in(float_uv).rg;\n\t\t\t\n\t\t\tif (offset_pos.x != 0.0 && offset_pos.y != 0.0) {\n\t\t\t\tvec2 diff = offset_pos - uv;\n\t\t\t\t//float dist = dot(diff, diff);\n\t\t\t\t//float dist = abs(diff.x) + abs(diff.y);\n\t\t\t\t//float dist = abs(diff.x) > abs(diff.y) ? abs(diff.x) : abs(diff.y);\n\t\t\t\t$distance\n\t\t\t\tif (dist < best_distance) {\n\t\t\t\t\tbest_distance = dist;\n\t\t\t\t\tbest_coord = offset_pos;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn vec3(best_coord, iter);\n}", +# "name": "Jump Flood", +# "outputs": [ +# { +# "rgb": "$(name)_jump_flood($uv, $size)", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "default": 10, +# "first": 0, +# "label": "", +# "last": 13, +# "name": "size", +# "type": "size" +# }, +# { +# "default": 2, +# "label": "", +# "name": "distance", +# "type": "enum", +# "values": [ +# { +# "name": "Euclidean", +# "value": "float dist = dot(diff, diff);" +# }, +# { +# "name": "Manhattan", +# "value": "float dist = abs(diff.x) + abs(diff.y);" +# }, +# { +# "name": "Chebyshev", +# "value": "float dist = abs(diff.x) > abs(diff.y) ? abs(diff.x) : abs(diff.y);" +# } +# ] +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "1823", +# "node_position": { +# "x": -269.899872, +# "y": -17.741766 +# }, +# "parameters": { +# +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "1.0", +# "label": "", +# "name": "in", +# "type": "f" +# } +# ], +# "instance": "", +# "name": "Mask to UV Mask", +# "outputs": [ +# { +# "rgb": "$in($uv) < .5 ? vec3(0.0) : vec3($uv, 0.0)", +# "type": "rgb" +# } +# ], +# "parameters": [ +# +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "edge_detect", +# "node_position": { +# "x": -286.951447, +# "y": -137.078964 +# }, +# "parameters": { +# "size": 9, +# "threshold": 0.4, +# "width": 1 +# }, +# "type": "edge_detect" +# }, +# { +# "name": "6520", +# "node_position": { +# "x": 347.356567, +# "y": -346.449127 +# }, +# "parameters": { +# "distance": 0, +# "length": 0.1 +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgb" +# }, +# { +# "default": "0.0", +# "function": true, +# "label": "", +# "name": "mask", +# "type": "f" +# } +# ], +# "instance": "float $(name)_distance(vec2 uv, float length) {\n\tvec2 custom_uv = $in(fract(uv)).xy;\n\tvec2 diff = custom_uv != vec2(0.0) ? custom_uv - fract(uv) : vec2(1.0);\n\t//float distance = length(diff);\n\t//float distance = abs(diff.x) + abs(diff.y);\n\t//float distance = abs(diff.x) > abs(diff.y) ? abs(diff.x) : abs(diff.y);\n\t$distance\n\tif (length >= 0.0) {\n\t\treturn $mask(uv) < 0.5 ? clamp(1.0 - (distance / length), 0.0, 1.0) : 1.0;\n\t} else {\n\t\treturn $mask(uv) > 0.5 ? clamp((distance / -length), 0.0, 1.0) : 0.0;\n\t}\n}", +# "name": "Calculate Distance", +# "outputs": [ +# { +# "f": "$(name)_distance($uv, $length)", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0.1, +# "label": "Length", +# "max": 1, +# "min": -1, +# "name": "length", +# "step": 0.01, +# "type": "float" +# }, +# { +# "default": 2, +# "label": "", +# "name": "distance", +# "type": "enum", +# "values": [ +# { +# "name": "Euclidean", +# "value": "float distance = length(diff);" +# }, +# { +# "name": "Manhattan", +# "value": "float distance = abs(diff.x) + abs(diff.y);" +# }, +# { +# "name": "Chebyshev", +# "value": "float distance = abs(diff.x) > abs(diff.y) ? abs(diff.x) : abs(diff.y);" +# } +# ] +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -793.451477, +# "y": -236.812195 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "The greyscale mask to be converted", +# "name": "mask", +# "shortdesc": "Mask", +# "type": "f" +# }, +# { +# "group_size": 0, +# "longdesc": "", +# "name": "source", +# "shortdesc": "Source", +# "type": "rgb" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": 885.056335, +# "y": -247.896317 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "longdesc": "Shows the dilated image", +# "name": "out", +# "shortdesc": "Output", +# "type": "rgb" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": 61.520477, +# "y": -639.339172 +# }, +# "parameters": { +# "param0": 9, +# "param1": 0.1, +# "param2": 0, +# "param3": 0, +# "param4": 30 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "", +# "linked_widgets": [ +# { +# "node": "iterate_buffer", +# "widget": "size" +# }, +# { +# "node": "2434_8", +# "widget": "size" +# }, +# { +# "node": "buffer_2", +# "widget": "size" +# }, +# { +# "node": "edge_detect", +# "widget": "size" +# } +# ], +# "longdesc": "The resolution of the input images", +# "name": "param0", +# "shortdesc": "Size", +# "type": "linked_control" +# }, +# { +# "label": "", +# "linked_widgets": [ +# { +# "node": "6520", +# "widget": "length" +# } +# ], +# "longdesc": "The length of the dilate effect", +# "name": "param1", +# "shortdesc": "Length", +# "type": "linked_control" +# }, +# { +# "label": "", +# "linked_widgets": [ +# { +# "node": "11582", +# "widget": "fill" +# } +# ], +# "longdesc": "0 to generate a gradient to black while dilating, 1 to fill with input color", +# "name": "param2", +# "shortdesc": "Fill", +# "type": "linked_control" +# }, +# { +# "label": "", +# "linked_widgets": [ +# { +# "node": "2434_8", +# "widget": "distance" +# }, +# { +# "node": "6520", +# "widget": "distance" +# } +# ], +# "name": "param3", +# "shortdesc": "Distance Function", +# "type": "linked_control" +# }, +# { +# "label": "", +# "linked_widgets": [ +# { +# "node": "iterate_buffer", +# "widget": "iterations" +# } +# ], +# "longdesc": "The number of iterations the jump flood algorithm performs to calculate the distances", +# "name": "param4", +# "shortdesc": "Iterations", +# "type": "linked_control" +# } +# ] +# }, +# { +# "name": "buffer_2", +# "node_position": { +# "x": -294.502808, +# "y": -340.816589 +# }, +# "parameters": { +# "size": 9 +# }, +# "type": "buffer", +# "version": 1 +# }, +# { +# "name": "tones_step", +# "node_position": { +# "x": -285.347992, +# "y": -253.248215 +# }, +# "parameters": { +# "invert": false, +# "value": 0.5, +# "width": 0 +# }, +# "type": "tones_step" +# }, +# { +# "name": "24282_2", +# "node_position": { +# "x": 109.591705, +# "y": -88.567284 +# }, +# "parameters": { +# "tiled": true +# }, +# "shader_model": { +# "code": "vec3 $(name_uv)_in = $in(fract($uv));\nvec3 $(name_uv)_tiled = $(name_uv)_in.xy != vec2(0.0) ? $(name_uv)_in + vec3(floor($uv), 0.0) : $(name_uv)_in;", +# "global": "", +# "inputs": [ +# { +# "default": "vec3(1.0)", +# "function": true, +# "label": "", +# "name": "in", +# "type": "rgb" +# } +# ], +# "instance": "", +# "name": "Tiling", +# "outputs": [ +# { +# "rgb": "$tiled ? $(name_uv)_tiled : $(name_uv)_in", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "default": false, +# "label": "Tiled", +# "name": "tiled", +# "type": "boolean" +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "2153", +# "node_position": { +# "x": 368.85202, +# "y": -157.100906 +# }, +# "parameters": { +# +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "vec3(1.0)", +# "label": "Source", +# "name": "source", +# "type": "rgb" +# }, +# { +# "default": "$uv", +# "label": "Custom UV", +# "name": "custom_uv", +# "type": "rgb" +# }, +# { +# "default": "0.0", +# "label": "Mask", +# "name": "mask", +# "type": "f" +# } +# ], +# "instance": "", +# "name": "Dilate UV", +# "outputs": [ +# { +# "rgb": "$mask($uv) < 0.5 ? $source($custom_uv($uv).xy) : $source($uv)", +# "type": "rgb" +# } +# ], +# "parameters": [ +# +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "11582", +# "node_position": { +# "x": 609.343445, +# "y": -239.746399 +# }, +# "parameters": { +# "fill": 0 +# }, +# "shader_model": { +# "code": "float $(name_uv)_dist = $distance($uv);\nvec3 $(name_uv)_color = mix($source(fract($uv)), $fill_raw(fract($uv)), float( $(name_uv)_dist != 0.0 ) );\nvec3 $(name_uv)_mix = mix($(name_uv)_color * $(name_uv)_dist, $(name_uv)_color, $fill);", +# "global": "", +# "inputs": [ +# { +# "default": "0.0", +# "function": true, +# "label": "Distance", +# "name": "distance", +# "type": "f" +# }, +# { +# "default": "vec3(1.0)", +# "function": true, +# "label": "Fill Raw", +# "name": "fill_raw", +# "type": "rgb" +# }, +# { +# "default": "vec3(1.0)", +# "function": true, +# "label": "Source", +# "name": "source", +# "type": "rgb" +# } +# ], +# "instance": "", +# "name": "Dilate Combine", +# "outputs": [ +# { +# "rgb": "$(name_uv)_mix", +# "type": "rgb" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0, +# "label": "Fill", +# "max": 1, +# "min": 0, +# "name": "fill", +# "step": 0.01, +# "type": "float" +# } +# ] +# }, +# "type": "shader" +# }, +# { +# "name": "8064", +# "node_position": { +# "x": -282.533325, +# "y": -433.011169 +# }, +# "parameters": { +# +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "vec3(0.0)", +# "label": "", +# "name": "in", +# "type": "rgb" +# } +# ], +# "instance": "", +# "name": "Default Value", +# "outputs": [ +# { +# "rgb": "$in($uv)", +# "type": "rgb" +# } +# ], +# "parameters": [ +# +# ] +# }, +# "type": "shader" +# } +# ], +# "parameters": { +# "param0": 9, +# "param1": 0.1, +# "param2": 0, +# "param3": 0, +# "param4": 30 +# }, +# "shortdesc": "", +# "type": "graph" +# } +# ], +# "parameters": { +# "param0": 10, +# "param1": 30, +# "param2": false, +# "param3": 0 +# }, +# "shortdesc": "", +# "type": "graph" +#} + +static func sdf_show(val : float, bevel : float) -> Color: + var f : float = clamp(-val / max(bevel, 0.00001), 0.0, 1.0); + + return Color(f, f, f, 1) + +static func sdf_circle(uv : Vector2, c : Vector2, r : float) -> float: + c.x += 0.5 + c.y += 0.5 + + return (uv - c).length() - r; + +static func sdf_box(uv : Vector2, c : Vector2, wh : Vector2) -> float: + c.x += 0.5 + c.y += 0.5 + + var d : Vector2 = Commons.absv2(uv - c) - wh + + return Commons.maxv2(d, Vector2(0, 0)).length() + min(max(d.x, d.y), 0.0) + +#vec2 $(name_uv)_sdl = sdLine($uv, vec2($ax+0.5, $ay+0.5), vec2($bx+0.5, $by+0.5)); + +static func sdf_line(uv : Vector2, a : Vector2, b : Vector2, r : float) -> Vector2: + a.x += 0.5 + a.y += 0.5 + + b.x += 0.5 + b.y += 0.5 + + return sdLine(uv, a, b) + + +static func sdf_rhombus(uv : Vector2, c : Vector2, wh : Vector2) -> float: + c.x += 0.5 + c.y += 0.5 + + return sdRhombus(uv - c, wh); + + +static func sdf_arc(uv : Vector2, a : Vector2, r : Vector2) -> float: + return sdArc(uv - Vector2(0.5, 0.5), Commons.modf(a.x, 360.0) * 0.01745329251, Commons.modf(a.y, 360.0)*0.01745329251, r.x, r.y) + +#float sdr_ndot(vec2 a, vec2 b) { +# return a.x*b.x - a.y*b.y; +#} + +static func sdr_ndot(a : Vector2, b : Vector2) -> float: + return a.x * b.x - a.y * b.y; + +#float sdRhombus(in vec2 p, in vec2 b) { +# vec2 q = abs(p); +# float h = clamp((-2.0*sdr_ndot(q,b)+sdr_ndot(b,b))/dot(b,b),-1.0,1.0); +# float d = length( q - 0.5*b*vec2(1.0-h,1.0+h) ); +# return d * sign( q.x*b.y + q.y*b.x - b.x*b.y ); +#} + +static func sdRhombus(p : Vector2, b : Vector2) -> float: + var q : Vector2 = Commons.absv2(p); + var h : float = clamp((-2.0 * sdr_ndot(q,b) + sdr_ndot(b,b)) / b.dot(b), -1.0, 1.0); + var d : float = ( q - 0.5*b * Vector2(1.0-h, 1.0+h)).length() + return d * sign(q.x*b.y + q.y*b.x - b.x*b.y) + +#float sdArc(vec2 p, float a1, float a2, float ra, float rb) { +# float amid = 0.5*(a1+a2)+1.6+3.14*step(a1, a2); +# float alength = 0.5*(a1-a2)-1.6+3.14*step(a1, a2); +# +# vec2 sca = vec2(cos(amid), sin(amid)); +# vec2 scb = vec2(cos(alength), sin(alength)); +# p *= mat2(vec2(sca.x,sca.y),vec2(-sca.y,sca.x)); +# p.x = abs(p.x); +# +# float k = (scb.y*p.x>scb.x*p.y) ? dot(p.xy,scb) : length(p.xy); +# return sqrt( dot(p,p) + ra*ra - 2.0*ra*k ) - rb; +#} + +static func sdArc(p : Vector2, a1 : float, a2 : float, ra : float, rb : float) -> float: + var amid : float = 0.5*(a1+a2)+1.6+3.14 * Commons.step(a1, a2); + var alength : float = 0.5*(a1-a2)-1.6+3.14 * Commons.step(a1, a2); + var sca : Vector2 = Vector2(cos(amid), sin(amid)); + var scb : Vector2 = Vector2(cos(alength), sin(alength)); + + #p *= Matrix(Vector2(sca.x , sca.y), Vector2(-sca.y, sca.x)); + + var pt : Vector2 = p + + p.x = pt.x * sca.x + pt.y * sca.y + p.y = pt.x * -sca.y + pt.y * sca.x + + p.x = abs(p.x); + + var k : float + + if (scb.y * p.x > scb.x * p.y): + k = p.dot(scb) + else: + k = p.length(); + + return sqrt( p.dot(p) + ra * ra - 2.0 * ra * k ) - rb; + + +static func sdf_boolean_union(a : float, b : float) -> float: + return min(a, b) + +static func sdf_boolean_substraction(a : float, b : float) -> float: + return max(-a, b) + +static func sdf_boolean_intersection(a : float, b : float) -> float: + return max(a, b) + +static func sdf_smooth_boolean_union(d1 : float, d2 : float, k : float) -> float: + var h : float = clamp( 0.5 + 0.5 * (d2 - d1) / k, 0.0, 1.0) + return lerp(d2, d1, h) - k * h * (1.0 - h) + +static func sdf_smooth_boolean_substraction(d1 : float, d2 : float, k : float) -> float: + var h : float = clamp( 0.5 - 0.5 * (d2 + d1) / k, 0.0, 1.0) + return lerp(d2, -d1, h) + k * h * (1.0 - h) + +static func sdf_smooth_boolean_intersection(d1 : float, d2 : float, k : float) -> float: + var h : float = clamp( 0.5 - 0.5 * (d2 - d1) / k, 0.0, 1.0) + return lerp(d2, d1, h) + k * h * (1.0 - h) + +static func sdf_rounded_shape(a : float, r : float) -> float: + return a - r + +static func sdf_annular_shape(a : float, r : float) -> float: + return abs(a) - r + +static func sdf_morph(a : float, b : float, amount : float) -> float: + return lerp(a, b, amount) + +#vec2 sdLine(vec2 p, vec2 a, vec2 b) { +# vec2 pa = p-a, ba = b-a; +# float h = clamp(dot(pa,ba)/dot(ba,ba), 0.0, 1.0); +# return vec2(length(pa-ba*h), h); +#} + +static func sdLine(p : Vector2, a : Vector2, b : Vector2) -> Vector2: + var pa : Vector2 = p - a + var ba : Vector2 = b - a + + var h : float = clamp(pa.dot(ba) / ba.dot(ba), 0.0, 1.0); + + return Vector2((pa - (ba * h)).length(), h) + + +#Needs thought +#func sdf_translate(a : float, x : float, y : float) -> float: +# return lerp(a, b, amount) + +#vec2 sdf2d_rotate(vec2 uv, float a) { +# vec2 rv; +# float c = cos(a); +# float s = sin(a); +# uv -= vec2(0.5); +# rv.x = uv.x*c+uv.y*s; +# rv.y = -uv.x*s+uv.y*c; +# return rv+vec2(0.5); +#} + +static func sdf2d_rotate(uv : Vector2, a : float) -> Vector2: + var rv : Vector2; + var c : float = cos(a); + var s : float = sin(a); + uv -= Vector2(0.5, 0.5); + rv.x = uv.x*c+uv.y*s; + rv.y = -uv.x*s+uv.y*c; + return rv+Vector2(0.5, 0.5); + +#float cross2( in vec2 a, in vec2 b ) { +# return a.x*b.y - a.y*b.x; +#} + +#// signed distance to a quadratic bezier\n +#vec2 sdBezier( in vec2 pos, in vec2 A, in vec2 B, in vec2 C ) { \n +# vec2 a = B - A;\n +# vec2 b = A - 2.0*B + C;\n +# vec2 c = a * 2.0;\n +# vec2 d = A - pos;\n\n +# float kk = 1.0/dot(b,b);\n +# float kx = kk * dot(a,b);\n +# float ky = kk * (2.0*dot(a,a)+dot(d,b))/3.0;\n +# float kz = kk * dot(d,a); \n\n +# float res = 0.0;\n +# float sgn = 0.0;\n\n +# float p = ky - kx*kx;\n +# float p3 = p*p*p;\n +# float q = kx*(2.0*kx*kx - 3.0*ky) + kz;\n +# float h = q*q + 4.0*p3;\n\t +# float rvx;\n\n +# +# if( h>=0.0 ) { +# // 1 root\n +# h = sqrt(h);\n +# vec2 x = (vec2(h,-h)-q)/2.0;\n +# vec2 uv = sign(x)*pow(abs(x), vec2(1.0/3.0)); +# rvx = uv.x+uv.y-kx;\n +# float t = clamp(rvx, 0.0, 1.0);\n +# vec2 q2 = d+(c+b*t)*t;\n +# res = dot(q2, q2);\n \t +# sgn = cross2(c+2.0*b*t, q2);\n +# } else { +# // 3 roots\n +# float z = sqrt(-p);\n +# float v = acos(q/(p*z*2.0))/3.0;\n +# float m = cos(v);\n +# float n = sin(v)*1.732050808;\n +# vec3 t = clamp(vec3(m+m,-n-m,n-m)*z-kx, 0.0, 1.0);\n +# vec2 qx=d+(c+b*t.x)*t.x; +# float dx=dot(qx, qx), sx = cross2(c+2.0*b*t.x,qx);\n +# vec2 qy=d+(c+b*t.y)*t.y; +# float dy=dot(qy, qy), sy = cross2(c+2.0*b*t.y,qy);\n +# +# if( dx Vector2: + var a : Vector2 = B - A; + var b : Vector2 = A - 2.0 * B + C; + var c : Vector2 = a * 2.0; + var d : Vector2 = A - pos; + + var kk : float = 1.0 / b.dot(b); + var kx : float = kk * a.dot(b); + var ky : float = kk * (2.0* a.dot(a) + d.dot(b)) / 3.0; + var kz : float = kk * d.dot(a); + + var res : float = 0.0; + var sgn : float = 0.0; + + var p : float = ky - kx * kx; + var p3 : float = p * p * p; + var q : float = kx * (2.0 * kx * kx - 3.0 * ky) + kz; + var h : float = q * q + 4.0 * p3; + var rvx : float = 0 + + if(h >= 0.0): + # // 1 root + h = sqrt(h); + + var x : Vector2 = (Vector2(h,-h) - Vector2(q, q)) / 2.0 + + var uv : Vector2 = Commons.signv2(x) * Commons.powv2(Commons.absv2(x), Vector2(1.0/3.0, 1.0/3.0)); + + rvx = uv.x + uv.y - kx; + var t : float = clamp(rvx, 0.0, 1.0); + var q2 : Vector2 = d + (c + b * t) * t; + res = q2.dot(q2); + + sgn = (c + Vector2(2, 2) * b * t).cross(q2) + + else: # // 3 roots + var z : float = sqrt(-p); + var v : float = acos(q / (p * z * 2.0)) / 3.0; + var m : float = cos(v); + var n : float = sin(v) * 1.732050808; + + var t : Vector3 = Commons.clampv3(Vector3(m+m, -n-m, n-m) * z - Vector3(kx, kx, kx), Vector3(), Vector3(1, 1, 1)); + + var qx : Vector2 = d + (c + b * t.x) * t.x; + var dx : float = qx.dot(qx) + var sx : float = (c + Vector2(2, 2) * b * t.x).cross(qx) + var qy : Vector2 = d + (c + b * t.y) * t.y + var dy : float = qy.dot(qy) + var sy : float = (c + Vector2(2, 2) * b * t.y).cross(qy) + + if dx Vector2: + var r : float = 6.28 / count + var pa : float = atan2(p.x, p.y) + var a : float = Commons.modf(pa + 0.5 * r, r)-0.5*r + + var rv : Vector2 = Vector2() + + var c : float = cos(a - pa); + var s : float = sin(a - pa); + + rv.x = p.x * c + p.y * s + rv.y = -p.x * s + p.y * c + + return rv; + +#float sdNgon(vec2 p, float r, float n) { +# float PI = 3.1415926535; +# p = circle_repeat_transform_2d(p, n); +# vec2 d = abs(p)-vec2(r*tan(3.14159265359/n), r); +# return p.y < r ? p.y-r : length(max(d,vec2(0)))+min(max(d.x,d.y),0.0); +#} + +static func sdNgon(pos : Vector2, r : float, n : float) -> Vector2: + return Vector2() + + +#vec2 repeat_2d(vec2 p, vec2 r, float seed, float randomness) { +# p -= vec2(0.5); +# float a = (rand(floor(mod((p.xy+0.5*r.xy)/r.xy, 1.0/r.xy)+vec2(seed)))-0.5)*6.28*randomness; +# p = mod(p+0.5*r,r)-0.5*r; +# vec2 rv; +# float c = cos(a); +# float s = sin(a); +# rv.x = p.x*c+p.y*s; +# rv.y = -p.x*s+p.y*c; +# return rv+vec2(0.5); +#} + +static func repeat_2d(p : Vector2, r : Vector2, pseed : float, randomness : float) -> Vector2: + p -= Vector2(0.5, 0.5); + var v : Vector2 = Vector2(p.x, p.y) + Vector2(0.5, 0.5) + Vector2(r.x, r.y) + var a : float = ((Commons.rand2(Commons.floorv2(Commons.modv2(v / Vector2(r.x, r.y), Vector2(1.0, 1.0) / Vector2(r.x, r.y)) + Vector2(pseed, pseed))) - Vector2(0.5, 0.5)) * 6.28 * randomness).x + p = Commons.modv2(p + Vector2(0.5, 0.5) * r,r)- Vector2(0.5, 0.5) * r + var rv : Vector2 = Vector2() + var c : float = cos(a) + var s : float = sin(a) + rv.x = p.x * c + p.y * s + rv.y = -p.x * s + p.y * c + return rv + Vector2(0.5, 0.5); + +#float sdSmoothUnion( float d1, float d2, float k ) { +# float h = clamp( 0.5 + 0.5*(d2-d1)/k, 0.0, 1.0 ); +# return mix( d2, d1, h ) - k*h*(1.0-h); +#} + +static func sdSmoothUnion(d1 : float, d2 : float, k : float) -> float: + return 0.0 + +#float sdSmoothSubtraction( float d1, float d2, float k ) { +# float h = clamp( 0.5 - 0.5*(d2+d1)/k, 0.0, 1.0 ); +# return mix( d2, -d1, h ) + k*h*(1.0-h); +#} + +static func sdSmoothSubtraction(d1 : float, d2 : float, k : float) -> float: + return 0.0 + +#float sdSmoothIntersection( float d1, float d2, float k ) { +# float h = clamp( 0.5 - 0.5*(d2-d1)/k, 0.0, 1.0 ); +# return mix( d2, d1, h ) + k*h*(1.0-h); +#} + +static func sdSmoothIntersection(d1 : float, d2 : float, k : float) -> float: + return 0.0 + + +#float sdRipples(float d, float w, int r) {\n +# for (int i = 0; i < r; ++i) { +# d = abs(d)-w; +# } +# +# return d; +#} + +static func sdRipples(d : float, w : float, r : int) -> float: + for i in range(r): + d = abs(d)-w; + + return d + +#$polygon = { p1(vec2), p2(vec2), p3(vec2) ... } +#float sdPolygon_$(name)(vec2 p) { +# vec2 v[] = $polygon; +# int l = v.length(); +# float d = dot(p-v[0],p-v[0]); +# float s = 1.0; +# int j = l-1; +# +# for(int i=0; i=v[i].y,p.ye.y*w.x); +# +# if(all(c) || all(not(c))) { +# s *= -1.0; +# } +# +# j = i; +# } +# +# return s*sqrt(d); +#} + +static func sdPolygon(p : Vector2, v : PoolVector2Array) -> float: + var l : int = v.size() + var pmv0 : Vector2 = p - v[0] + var d : float = pmv0.dot(pmv0) + var s : float = 1.0 + var j : int = l - 1 + + for i in range(l): #for(int i=0; i= v[i].y + var b2 : bool = p.y < v[j].y + var b3 : bool = e.x * w.y > e.y * w.x + + if((b1 && b2 && b3) || (!b1 && !b2 && !b3)): + s *= -1.0 + + j = i + + return s * sqrt(d) diff --git a/game/addons/mat_maker_gd/nodes/common/sdf3d.gd b/game/addons/mat_maker_gd/nodes/common/sdf3d.gd new file mode 100644 index 0000000..932094d --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/sdf3d.gd @@ -0,0 +1,789 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#---------------------- +#sdf3d_box.mmg +#Generates a rounded box as a signed distance function + +#Outputs: + +#Common +#vec3 $(name_uv)_q = abs($uv) - vec3($sx, $sy, $sz); + +#Output - (sdf3d) - Shows the rounded box +#length(max($(name_uv)_q,0.0))+min(max($(name_uv)_q.x,max($(name_uv)_q.y,$(name_uv)_q.z)),0.0)-$r + +#Inputs: +#size, vector3, min: 0, max: 1, default:0.5, step:0.01 +#size, float, min: 0, max: 1, default:0.5, step:0.01 + +#---------------------- +#sdf3d_sphere.mmg +#Generates a sphere as a signed distance function + +#Outputs: + +#Output - (sdf3d) - Shows the sphere +#length($uv)-$r + +#Inputs: +#radius, vector3, min: 0, max: 1, default:0.5, step:0.01 + +#---------------------- +#sdf3d_capsule.mmg +#Generates a capsule as a signed distance function + +#Outputs: + +#Common +#vec3 $(name_uv)_p = $uv; +#$(name_uv)_p.$axis -= clamp($(name_uv)_p.$axis, -$l, $l); + +#Output - (sdf3d) - Shows the capsule +#length($(name_uv)_p)-$r*$profile(clamp(0.5+0.5*($uv).$axis/$l, 0.0, 1.0)) + +#Inputs: +#axis, enum, default: 1, values: x, y, z +#length, float, min: 0, max: 1, default:0.25, step:0.01 +#radius, float, min: 0, max: 1, default:0.2, step:0.01 +#profile, curve, default: (ls, rs, x, z) 0, 0, 0, 1, 0, 0, 1, 1 + +#---------------------- +#sdf3d_cone.mmg + +#Outputs: + +#+X: $axis = length($uv.yz),-$uv.x +#-X: $axis = length($uv.yz),$uv.x +#+Y: $axis = length($uv.xz),$uv.y +#-Y: $axis = length($uv.xz),-$uv.y +#+Z: $axis = length($uv.xy),-$uv.z +#-Z: $axis = length($uv.xy),$uv.z + +#Output - (sdf3d) +#dot(vec2(cos($a*0.01745329251),sin($a*0.01745329251)),vec2($axis)) + +#Inputs: +#axis, enum, default:5, values: +X, -X, +Y, -Y, +Z, -Z +#angle, float, min: 0, max: 90, default:30, step:1 + +#---------------------- +#sdf3d_repeat.mmg + +#Outputs: + +#Output (sdf3d) +#Output - (sdf3dc) - The shape generated by the repeat operation +#$in(repeat($uv, vec3(1.0/$rx, 1.0/$ry, 0.0), float($seed), $r)) + +#Inputs: +#in, vec2, default:vec2(100, 0.0), (sdf3d input) + +#X, int, min: 1, max: 32, default:4, step:1 +#Y, int, min: 1, max: 32, default:4, step:1 +#R, float, min: 0, max: 1, default:0.5, step:0.01 + +#---------------------- +#sdf3d_rotate.mmg + +#Outputs: + +#Output - (sdf3dc) - The rotated object +#$in(rotate3d($uv, -vec3($ax, $ay, $az)*0.01745329251)) + +#Inputs: +#in, vec2, default:vec2(100, 0.0), (sdf3d input) +#rotation, vector3, min: -180, max: 180, default:0, step:1 + +#---------------------- +#sdf3d_cylinder.mmg + +#Outputs: + +#Output - (sdf3dc) - Shows the cylinder +#min(max($(name_uv)_d.x,$(name_uv)_d.y),0.0) + length(max($(name_uv)_d,0.0)) + +#Inputs: +#axis, enum, default: 1, values: X, Y, Z +#length, float, min: 0, max: 1, default:0.5, step:0.01 +#radius, float, min: 0, max: 1, default:0.2, step:0.01 + +#---------------------- +#sdf3d_plane.mmg +#Generates a plane that can be used to cut other shapes + +#Outputs: + +#X: $axis = x +#Y: $axis = y +#Z: $axis = z + +#Output - (sdf3dc) - Shows the plane +#$uv.$axis + +#Inputs: +#axis, enum, default: 1, values: X, Y, Z + +#---------------------- +#sdf3d_torus.mmg +#Generates a torus as a signed distance function + +#Outputs: + +#X: $axis = length($uv.yz)-$R,$uv.x +#Y: $axis = length($uv.zx)-$R,$uv.y +#Z: $axis = length($uv.xy)-$R,$uv.z +#vec2 $(name_uv)_q = vec2($axis); + +#Output - (sdf3dc) - Shows the torus +#length($(name_uv)_q)-$r + +#Inputs: +#axis, enum, default: 1, values: X, Y, Z +#R, float, min: 0, max: 1, default:0.5, step:0.01 +#r, float, min: 0, max: 1, default:0.1, step:0.01 + +#---------------------- +#sdf3d_boolean.mmg + +#Outputs: + +#Union: $op = sdf3dc_union +#Subtraction $op = sdf3dc_sub +#Intersection $op = sdf3dc_inter + +#Output - (sdf3dc) - The shape generated by the boolean operation +#$op($in1($uv), $in2($uv)) + +#Inputs: +#axis, enum, default: 2, values: Union, Subtraction, Intersection +#in1, vec2, default:vec2(100, 0.0), (sdf3d input) +#in2, vec2, default:vec2(100, 0.0), (sdf3d input) + +#---------------------- +#sdf3d_circle_repeat.mmg + +#Outputs: + +#Output (sdf3dc) - The shape generated by the boolean operation +#$in(circle_repeat_transform($uv, $c)) + +#Inputs: +#count, float, min: 1, max: 32, default:5, step:1 + +#---------------------- +#sdf3d_angle.mmg (includes sdf3d_rotate.mmg) + +#Outputs: + +#Shows the angleThe shape generated by the boolean operation +#$(name_uv)_d + +#X: $axis = xyz +#Y: $axis = yzx +#Z: $axis = zxy + +#vec3 $(name_uv)_uv = $uv.$axis; +#float $(name_uv)_rotated = rotate3d($(name_uv)_uv, vec3(($angle-180.0)*0.01745329251, 0.0, 0.0)).y; +#float $(name_uv)_d1 = max($(name_uv)_uv.y, $(name_uv)_rotated); +#float $(name_uv)_d2 = min($(name_uv)_uv.y, $(name_uv)_rotated); +#float $(name_uv)_d = (mod($angle, 360.0) < 180.0) ? $(name_uv)_d1 : $(name_uv)_d2; + +#Inputs: +#axis, enum, default: 0, values: X, Y, Z +#angle, float, min: 0, max: 360, default:180, step:0.1 + +#---------------------- +#sdf3d_color.mmg + +#Outputs: + +#Output - sdf3dc - The colored 3D object +#vec2($in($uv), $c) + +#Inputs: +#color_index, float, min: 0, max: 1, default:0, step:0.01 +#in, vec2, default:vec2(100, 0.0), (sdf3d input) + +#---------------------- +#sdf3d_translate.mmg + +#Outputs: + +#Output - sdf3dc +#$in($uv-vec3($x, $y, $z)) + +#Inputs: +#translation, vector3, min: -1, max: 1, default:0, step:0.01 +#in, vec2, default:vec2(100, 0.0), (sdf3dc input) + +#---------------------- +#sdf3d_scale.mmg + +#Outputs: + +#vec2 $(name_uv)_in = $in(($uv)/$s); + +#Output - sdf3dc +#vec2($(name_uv)_in.x*$s, $(name_uv)_in.y) + +#Inputs: +#scale_factor, float, min: 0, max: 5, default:1, step:0.01 +#in, vec2, default:vec2(100, 0.0), (sdf3dc input) + +#---------------------- +#sdf3d_rounded.mmg + +#Outputs: + +#vec2 $(name_uv)_v = $in($uv); + +#Output - sdf3dc +#vec2($(name_uv)_v.x-$r, $(name_uv)_v.y) + +#Inputs: +#radius, float, min: 0, max: 1, default:0, step:0.01 +#in, vec2, default:vec2(100, 0.0), (sdf3dc input) + +#---------------------- +#sdf3d_revolution.mmg + +#Outputs: + +#vec2 $(name_uv)_q = vec2(length($uv.xy)-$d+0.5, $uv.z+0.5); + +#Output - sdf3dc +#$in($(name_uv)_q) + +#Inputs: +#d, float, min: 0, max: 1, default:0.25, step:0.01 +#input, float, default:10.0, (sdf2d input) + +#---------------------- +#sdf3d_smoothboolean.mmg +#Performs a smooth boolean operation (union, intersection or difference) between two shapes + +#Outputs: + +#Union: $op = union +#Subtraction: $op = subtraction +#Intersection: $op = intersection + +#Output - sdf3dc +#sdf3d_smooth_$op($in1($uv), $in2($uv), $k) + +#Inputs: +#in1, vec2, default:vec2(100, 0.0), (sdf3d input) +#in2, vec2, default:vec2(100, 0.0), (sdf3d input) +#operation, enum, default: 1, values: Union, Subtraction, Intersection +#smoothness, float, min: 0, max: 1, default:0, step:0.01 + +#---------------------- +#sdf3d_elongation.mmg + +#Outputs: + +#Output - sdf3dc +#$in($uv-clamp($uv, -abs(vec3($x, $y, $z)), abs(vec3($x, $y, $z)))) + +#Inputs: +#in, vec2, default:vec2(100, 0.0), (sdf3dc input) +#elongation, vector3, min: 0, max: 1, default:0, step:0.01 + +#---------------------- +#sdf3d_extrusion.mmg + +#Outputs: + +#vec2 $(name_uv)_w = vec2($in($uv.xz+vec2(0.5)),abs($uv.y)-$d); + +#Output - sdf3dc +#min(max($(name_uv)_w.x,$(name_uv)_w.y),0.0)+length(max($(name_uv)_w,0.0)) + +#Inputs: +#in, sdf2d, default:100, (input) +#length, float, min: 0, max: 1, default:0.25, step:0.01 + +#---------------------- +#sdf3d_morph.mmg + +#Outputs: + +#Output - sdf3d +#mix($in1($uv), $in2($uv), $amount) + +#Inputs: +#in1, vec2, default:vec2(100, 0.0), (sdf3d input) +#in2, vec2, default:vec2(100, 0.0), (sdf3d input) +#amount, float, min: 0, max: 1, default:0.5, step:0.01 + +#---------------------- +#raymarching.mmg (raymarching_preview.mmg) +#Raymarches a 3D object (described as signed distance function with optional color index) +#to render a heightmap, a normal map and a color index map. + +#raymarch_$name = sdf3d_raymarch +#vec2 $(name_uv)_d = raymarch_$name($uv); + +#Outputs: + +#HeightMap - float - The generated height map +#1.0-$(name_uv)_d.x + +#NormalMap - rgb - The generated normal map +#vec3(0.5)+0.5*normal_$name(vec3($uv-vec2(0.5), 1.0-$(name_uv)_d.x)) + +#ColorMap - float - The generated color index map +#$(name_uv)_d.y + +#Inputs: +#input, vec2, default:vec2(100, 0.0), (sdf3dc input) + +#---------------------- +#raymarching_preview.mmg + +#Outputs: + +#Output (rgb) +#render_$name($uv-vec2(0.5)) + +#Inputs: +#input, vec2, default:vec2(100, 0.0), (sdf3dc input) + +static func raymarch(uv : Vector2) -> Color: + var d : Vector2 = sdf3d_raymarch(uv); + + var f : float = 1.0 - d.x; + + return Color(f, f, f, 1) + +static func raymarch2(uv : Vector2) -> Color: + var d : Vector2 = sdf3d_raymarch(uv); + + var v : Vector3 = Vector3(0.5, 0.5, 0.5) + 0.5 * sdf3d_normal(Vector3(uv.x - 0.5, uv.y - 0.5, 1.0 - d.x)); + + return Color(v.x, v.y, v.z, 1) + +static func raymarch3(uv : Vector2) -> Color: + var v : Vector2 = sdf3d_raymarch(uv); + + return Color(v.y, v.y, v.y, 1) + +#length($uv)-$r + +static func sdf3d_sphere(p : Vector3, r : float) -> Vector2: + var s : float = p.length() - r; + + return Vector2(s, 0.0); + +#vec3 $(name_uv)_q = abs($uv) - vec3($sx, $sy, $sz); +#length(max($(name_uv)_q,0.0))+min(max($(name_uv)_q.x,max($(name_uv)_q.y,$(name_uv)_q.z)),0.0)-$r + +static func sdf3d_box(p : Vector3, sx : float, sy : float, sz : float, r : float) -> Vector2: + var v : Vector3 = Commons.absv3((p)) - Vector3(sx, sy, sz); + var f : float = (Commons.maxv3(v,Vector3())).length() + min(max(v.x,max(v.y, v.z)),0.0) - r; + + return Vector2(f, 0.0); + +#Y: $axis = length($uv.xz),$uv.y +#vec2 $(name_uv)_d = abs(vec2($axis)) - vec2($r,$l); + +static func sdf3d_cylinder_y(p : Vector3, r : float, l : float) -> Vector2: + var v : Vector2 = Commons.absv2(Vector2(Vector2(p.x, p.z).length(),(p).y)) - Vector2(r,l); + var f : float = min(max(v.x, v.y),0.0) + Commons.maxv2(v, Vector2()).length(); + + return Vector2(f, 0.0); + +#X: $axis = length($uv.yz),$uv.x +#vec2 $(name_uv)_d = abs(vec2($axis)) - vec2($r,$l); + +static func sdf3d_cylinder_x(p : Vector3, r : float, l : float) -> Vector2: + var v : Vector2 = Commons.absv2(Vector2(Vector2(p.y, p.z).length(),(p).x)) - Vector2(r, l); + var f : float = min(max(v.x, v.y),0.0) + Commons.maxv2(v, Vector2()).length(); + + return Vector2(f, 0.0); + +#Z: $axis = length($uv.xy),$uv.z +#vec2 $(name_uv)_d = abs(vec2($axis)) - vec2($r,$l); + +static func sdf3d_cylinder_z(p : Vector3, r : float, l : float) -> Vector2: + var v : Vector2 = Commons.absv2(Vector2(Vector2(p.x, p.y).length(),(p).z)) - Vector2(r, l); + var f : float = min(max(v.x, v.y),0.0) + Commons.maxv2(v, Vector2()).length(); + + return Vector2(f, 0.0); + +#vec3 $(name_uv)_p = $uv; +#$(name_uv)_p.$axis -= clamp($(name_uv)_p.$axis, -$l, $l); +#return length($(name_uv)_p)-$r*$profile(clamp(0.5+0.5*($uv).$axis/$l, 0.0, 1.0)) + +static func sdf3d_capsule_y(p : Vector3, r : float, l : float) -> Vector2: + var v : Vector3 = p; + v.y -= clamp(v.y, -l, l); + var f : float = v.length() - r; + + return Vector2(f, 0.0); + +static func sdf3d_capsule_x(p : Vector3, r : float, l : float) -> Vector2: + var v : Vector3 = p; + v.x -= clamp(v.x, -l, l); + var f : float = v.length() - r; + + return Vector2(f, 0.0); + +static func sdf3d_capsule_z(p : Vector3, r : float, l : float) -> Vector2: + var v : Vector3 = p; + v.z -= clamp(v.z, -l, l); + var f : float = v.length() - r; + + return Vector2(f, 0.0); + +#+X: $axis = length($uv.yz),-$uv.x +#dot(vec2(cos($a*0.01745329251),sin($a*0.01745329251)),vec2($axis)) + +static func sdf3d_cone_px(p : Vector3, a : float) -> Vector2: + var f : float = Vector2(cos(a*0.01745329251),sin(a*0.01745329251)).dot(Vector2(Vector2(p.y, p.z).length(), - (p).x)); + + return Vector2(f, 0.0); + +#-X: $axis = length($uv.yz),$uv.x +#dot(vec2(cos($a*0.01745329251),sin($a*0.01745329251)),vec2($axis)) + +static func sdf3d_cone_nx(p : Vector3, a : float) -> Vector2: + var f : float = Vector2(cos(a*0.01745329251),sin(a*0.01745329251)).dot(Vector2(Vector2(p.y, p.z).length(),(p).x)); + + return Vector2(f, 0.0); + +#+Y: $axis = length($uv.xz),$uv.y +#dot(vec2(cos($a*0.01745329251),sin($a*0.01745329251)),vec2($axis)) + +static func sdf3d_cone_py(p : Vector3, a : float) -> Vector2: + var f : float = Vector2(cos(a*0.01745329251),sin(a*0.01745329251)).dot(Vector2(Vector2(p.x, p.z).length(),(p).y)); + + return Vector2(f, 0.0); + +#-Y: $axis = length($uv.xz),-$uv.y +#dot(vec2(cos($a*0.01745329251),sin($a*0.01745329251)),vec2($axis)) + +static func sdf3d_cone_ny(p : Vector3, a : float) -> Vector2: + var f : float = Vector2(cos(a*0.01745329251),sin(a*0.01745329251)).dot(Vector2(Vector2(p.x, p.z).length(),-(p).y)); + + return Vector2(f, 0.0); + +#+Z: $axis = length($uv.xy),-$uv.z +#dot(vec2(cos($a*0.01745329251),sin($a*0.01745329251)),vec2($axis)) + +static func sdf3d_cone_pz(p : Vector3, a : float) -> Vector2: + var f : float = Vector2(cos(a*0.01745329251),sin(a*0.01745329251)).dot(Vector2(Vector2(p.x, p.y).length(),-(p).z)); + + return Vector2(f, 0.0); + + +#-Z: $axis = length($uv.xy),$uv.z +#dot(vec2(cos($a*0.01745329251),sin($a*0.01745329251)),vec2($axis)) + +static func sdf3d_cone_nz(p : Vector3, a : float) -> Vector2: + var f : float = Vector2(cos(a*0.01745329251),sin(a*0.01745329251)).dot(Vector2(Vector2(p.x, p.y).length(),(p).z)); + + return Vector2(f, 0.0); + +static func sdf3d_torus_x(p : Vector3, R : float, r : float) -> Vector2: + var q : Vector2 = Vector2(Vector2(p.y, p.z).length() - R,(p).x); + var f : float = q.length() - r; + + return Vector2(f, 0.0); + +static func sdf3d_torus_y(p : Vector3, R : float, r : float) -> Vector2: + var q : Vector2 = Vector2(Vector2(p.z, p.x).length() - R,(p).y); + var f : float = q.length() - r; + + return Vector2(f, 0.0); + +static func sdf3d_torus_z(p : Vector3, R : float, r : float) -> Vector2: + var q : Vector2 = Vector2(Vector2(p.x, p.y).length() - R,(p).z); + var f : float = q.length() - r; + + return Vector2(f, 0.0); + + +#vec2 raymarch_$name(vec2 uv) { +# vec3 ro = vec3(uv-vec2(0.5), 1.0); +# vec3 rd = vec3(0.0, 0.0, -1.0); +# float dO = 0.0; +# float c = 0.0; +# +# for (int i=0; i < 100; i++) { +# vec3 p = ro + rd*dO; +# vec2 dS = $sdf(p); +# dO += dS.x; +# +# if (dO >= 1.0) { +# break; +# } else if (dS.x < 0.0001) { +# c = dS.y; +# break; +# } +# } +# +# return vec2(dO, c); +#} + +static func sdf3d_raymarch(uv : Vector2) -> Vector2: + var ro : Vector3 = Vector3(uv.x - 0.5, uv.y - 0.5, 1.0); + var rd : Vector3 = Vector3(0.0, 0.0, -1.0); + var dO : float = 0.0; + var c : float = 0.0; + + for i in range(100): + var p : Vector3 = ro + rd * dO; + var dS : Vector2 = sdf3d_input(p); + + dO += dS.x; + + if (dO >= 1.0): + break; + elif (dS.x < 0.0001): + c = dS.y; + break; + + return Vector2(dO, c); + +#vec3 normal_$name(vec3 p) { +# if (p.z <= 0.0) { +# return vec3(0.0, 0.0, 1.0); +# } +# +# float d = $sdf(p).x; +# float e = .001; +# vec3 n = d - vec3( +# $sdf(p-vec3(e, 0.0, 0.0)).x, +# $sdf(p-vec3(0.0, e, 0.0)).x, +# $sdf(p-vec3(0.0, 0.0, e)).x); +# +# return vec3(-1.0, -1.0, -1.0)*normalize(n); +#} + +static func sdf3d_normal(p : Vector3) -> Vector3: + if (p.z <= 0.0): + return Vector3(0.0, 0.0, 1.0); + + var d : float = sdf3d_input(p).x; + var e : float = .001; + + var n : Vector3 = Vector3( + d - sdf3d_input(p - Vector3(e, 0.0, 0.0)).x, + d - sdf3d_input(p - Vector3(0.0, e, 0.0)).x, + d - sdf3d_input(p - Vector3(0.0, 0.0, e)).x); + + return Vector3(-1.0, -1.0, -1.0) * n.normalized(); + +#vec2 sdf3dc_union(vec2 a, vec2 b) { +# return vec2(min(a.x, b.x), mix(b.y, a.y, step(a.x, b.x))); +#} + +static func sdf3dc_union(a : Vector2, b : Vector2) -> Vector2: + return Vector2(min(a.x, b.x), lerp(b.y, a.y, Commons.step(a.x, b.x))); + +#vec2 sdf3dc_sub(vec2 a, vec2 b) { +# return vec2(max(-a.x, b.x), a.y); +#} + +static func sdf3dc_sub(a : Vector2, b : Vector2) -> Vector2: + return Vector2(max(-a.x, b.x), a.y); + +#vec2 sdf3dc_inter(vec2 a, vec2 b) { +# return vec2(max(a.x, b.x), mix(a.y, b.y, step(a.x, b.x))); +#} + +static func sdf3dc_inter(a : Vector2, b : Vector2) -> Vector2: + return Vector2(max(a.x, b.x), lerp(a.y, b.y, Commons.step(a.x, b.x))); + +#vec2 sdf3d_smooth_union(vec2 d1, vec2 d2, float k) { +# float h = clamp(0.5+0.5*(d2.x-d1.x)/k, 0.0, 1.0); +# return vec2(mix(d2.x, d1.x, h)-k*h*(1.0-h), mix(d2.y, d1.y, step(d1.x, d2.x))); +#} + +static func sdf3d_smooth_union(d1 : Vector2, d2 : Vector2, k : float) -> Vector2: + var h : float = clamp(0.5 + 0.5 * (d2.x - d1.x) / k, 0.0, 1.0); + return Vector2(lerp(d2.x, d1.x, h)-k*h*(1.0 - h), lerp(d2.y, d1.y, Commons.step(d1.x, d2.x))); + +#vec2 sdf3d_smooth_subtraction(vec2 d1, vec2 d2, float k ) { +# float h = clamp(0.5-0.5*(d2.x+d1.x)/k, 0.0, 1.0); +# return vec2(mix(d2.x, -d1.x, h )+k*h*(1.0-h), d2.y); +#} + +static func sdf3d_smooth_subtraction(d1 : Vector2, d2 : Vector2, k : float) -> Vector2: + var h : float = clamp(0.5 - 0.5 * (d2.x + d1.x) / k, 0.0, 1.0); + return Vector2(lerp(d2.x, -d1.x, h )+k*h*(1.0-h), d2.y); + +#vec2 sdf3d_smooth_intersection(vec2 d1, vec2 d2, float k ) { +# float h = clamp(0.5-0.5*(d2.x-d1.x)/k, 0.0, 1.0); +# return vec2(mix(d2.x, d1.x, h)+k*h*(1.0-h), mix(d1.y, d2.y, step(d1.x, d2.x))); +#} + +static func sdf3d_smooth_intersection(d1 : Vector2, d2 : Vector2, k : float) -> Vector2: + var h : float = clamp(0.5 - 0.5 * (d2.x - d1.x) / k, 0.0, 1.0); + return Vector2(lerp(d2.x, d1.x, h)+k*h*(1.0-h), lerp(d1.y, d2.y, Commons.step(d1.x, d2.x))); + +static func sdf3d_rounded(v : Vector2, r : float) -> Vector2: + return Vector2(v.x - r, v.y); + +static func sdf3d_elongation(p : Vector3, v : Vector3) -> Vector3: + return ((p) - Commons.clampv3((p), - Commons.absv3(v), Commons.absv3(v))) + +static func sdf3d_repeat(p : Vector3, r : Vector2, randomness : float, pseed : int) -> Vector3: + #$in(repeat($uv, vec3(1.0/$rx, 1.0/$ry, 0.0), float($seed), $r)) + return repeat(p, Vector3(1.0 / r.x, 1.0 / r.y, 0.00001), float(pseed), randomness) + +#vec3 repeat(vec3 p, vec3 r, float seed, float randomness) { +# vec3 a = (rand3(floor(mod((p.xy+0.5*r.xy)/r.xy, 1.0/r.xy)+vec2(seed)))-0.5)*6.28*randomness; +# p = mod(p+0.5*r,r)-0.5*r; +# +# vec3 rv; +# float c; +# float s; +# +# c = cos(a.x); +# s = sin(a.x); +# +# rv.x = p.x; +# rv.y = p.y*c+p.z*s;rv.z = -p.y*s+p.z*c; +# +# c = cos(a.y); +# s = sin(a.y); +# +# p.x = rv.x*c+rv.z*s; +# p.y = rv.y; +# p.z = -rv.x*s+rv.z*c; +# +# c = cos(a.z); +# s = sin(a.z); +# +# rv.x = p.x*c+p.y*s; +# rv.y = -p.x*s+p.y*c; +# rv.z = p.z; +# +# return rv; +#} + +static func repeat(p : Vector3, r : Vector3, pseed : float, randomness : float) -> Vector3: + var a : Vector3 = (Commons.rand3(Commons.floorv2(Commons.modv2((Vector2(p.x, p.y) + Vector2(0.5, 0.5) * Vector2(r.x, r.y)) / Vector2(r.x, r.y), Vector2(1, 1) / Vector2(r.x, r.y)) + Vector2(pseed, pseed))) - Vector3(0.5, 0.5, 0.5)) * 6.28 * randomness + p = Commons.modv3(p + Vector3(0.5, 0.5, 0.5) * r, r) - Vector3(0.5, 0.5, 0.5) * r; + + var rv : Vector3 = Vector3() + var c : float = 0 + var s : float = 0 + + c = cos(a.x); + s = sin(a.x); + + rv.x = p.x; + rv.y = p.y* c + p.z * s; + rv.z = -p.y * s + p.z * c; + + c = cos(a.y); + s = sin(a.y); + + p.x = rv.x*c+rv.z*s; + p.y = rv.y; + p.z = -rv.x*s+rv.z*c; + + c = cos(a.z); + s = sin(a.z); + + rv.x = p.x * c + p.y * s; + rv.y = -p.x * s + p.y * c; + rv.z = p.z; + + return rv; + +#vec3 rotate3d(vec3 p, vec3 a) { +# vec3 rv; +# float c; +# float s; +# c = cos(a.x); +# s = sin(a.x); +# rv.x = p.x; +# rv.y = p.y*c+p.z*s; +# rv.z = -p.y*s+p.z*c; +# c = cos(a.y); +# s = sin(a.y); +# p.x = rv.x*c+rv.z*s; +# p.y = rv.y; +# p.z = -rv.x*s+rv.z*c; +# c = cos(a.z); +# s = sin(a.z); +# rv.x = p.x*c+p.y*s; +# rv.y = -p.x*s+p.y*c; +# rv.z = p.z; +# return rv; +#} + +static func rotate3d(p : Vector3, a : Vector3) -> Vector3: + var rv : Vector3 = Vector3() + var c : float = 0 + var s : float = 0 + c = cos(a.x) + s = sin(a.x) + rv.x = p.x + rv.y = p.y * c + p.z * s + rv.z = -p.y * s + p.z * c + c = cos(a.y) + s = sin(a.y) + p.x = rv.x * c + rv.z * s + p.y = rv.y + p.z = -rv.x * s + rv.z * c + c = cos(a.z) + s = sin(a.z) + rv.x = p.x * c + p.y * s + rv.y = -p.x * s + p.y * c + rv.z = p.z + + return rv + +#vec3 circle_repeat_transform(vec3 p, float count) { +# float r = 6.28/count; +# float pa = atan(p.x, p.y); +# float a = mod(pa+0.5*r, r)-0.5*r; +# vec3 rv; +# float c = cos(a-pa); +# float s = sin(a-pa); +# rv.x = p.x*c+p.y*s; +# rv.y = -p.x*s+p.y*c; +# rv.z = p.z; +# return rv; +#} + +static func circle_repeat_transform(p : Vector3, count : float) -> Vector3: + var r : float = 6.28 / count + var pa : float = atan2(p.x, p.y) + var a : float = Commons.modf(pa + 0.5 * r, r) - 0.5 * r + var rv : Vector3 = Vector3() + var c : float = cos(a-pa) + var s : float = sin(a-pa) + rv.x = p.x * c + p.y * s + rv.y = -p.x * s + p.y * c + rv.z = p.z + return rv + +#todo this needs to be solved +static func sdf3d_input(p : Vector3) -> Vector2: + return sdf3d_sphere(p, 0.5) + +#raymarching_preview.mmg +#vec3 render_$name(vec2 uv) { +# vec3 p = vec3(uv, 2.0-raymarch_$name(vec3(uv, 2.0), vec3(0.0, 0.0, -1.0))); +# vec3 n = normal_$name(p); +# vec3 l = vec3(5.0, 5.0, 10.0); +# vec3 ld = normalize(l-p); +# +# float o = step(p.z, 0.001); +# float shadow = 1.0-0.75*step(raymarch_$name(l, -ld), length(l-p)-0.01); +# float light = 0.3+0.7*dot(n, ld)*shadow; +# +# return vec3(0.8+0.2*o, 0.8+0.2*o, 1.0)*light; +#} + +#static func sdf3d_render(p : Vector2) -> Vector3: +# return Vector3() diff --git a/game/addons/mat_maker_gd/nodes/common/shapes.gd b/game/addons/mat_maker_gd/nodes/common/shapes.gd new file mode 100644 index 0000000..3a3501e --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/shapes.gd @@ -0,0 +1,292 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#---------------------- +#sphere.mmg + +#Outputs: + +#Output - (float) - A heightmap of the specified sphere +#sphere($uv, vec2($cx, $cy), $r) + +#Inputs: +#center, vector2, default: 0.5, min: 0, max: 1, step: 0.01 +#radius, float, min: 0, max: 1, default: 0.5, step:0.01 + +#---------------------- +#shape.mmg + +#Outputs: + +#Output - (float) - Shows a white shape on a black background +#shape_$(shape)($(uv), $(sides), $(radius)*$radius_map($uv), $(edge)*$edge_map($uv)) + +#Inputs: +#shape, enum, default: 0, values: circle, ploygon, star, curved_star, rays +#sides, int, min: 2, max: 32, default: 3, step:1 +#radius, float, min: 0, max: 1, default: 1, step:0.01 (universal input) +#edge, float, min: 0, max: 1, default: 0.2, step:0.01 (universal input) + +#---------------------- +#box.mmg +#A heightmap of the specified box + +# "outputs": [ +# { +# "f": "1.0-box($uv, vec3($cx, $cy, $cz), vec3($sx, $sy, $sz), 0.01745329251*vec3($rx, $ry, $rz))", +# "longdesc": "A heightmap of the specified box", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0.5, +# "label": "Center X", +# "longdesc": "X coordinate of the center of the box", +# "max": 1, +# "min": 0, +# "name": "cx", +# "shortdesc": "Center.x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "Center Y", +# "longdesc": "Y coordinate of the center of the box", +# "max": 1, +# "min": 0, +# "name": "cy", +# "shortdesc": "Center.y", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Center Z", +# "longdesc": "Z coordinate of the center of the box", +# "max": 0.5, +# "min": -0.5, +# "name": "cz", +# "shortdesc": "Center.z", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "Size X", +# "longdesc": "Size along X axis", +# "max": 1, +# "min": 0, +# "name": "sx", +# "shortdesc": "Size.x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "Size Y", +# "longdesc": "Size along Y axis", +# "max": 1, +# "min": 0, +# "name": "sy", +# "shortdesc": "Size.y", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "Size Z", +# "longdesc": "Size along Z axis", +# "max": 1, +# "min": 0, +# "name": "sz", +# "shortdesc": "Size.z", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Rot X", +# "longdesc": "Rotation angle around X axis", +# "max": 180, +# "min": -180, +# "name": "rx", +# "shortdesc": "Rot.x", +# "step": 0.1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Rot Y", +# "longdesc": "Rotation angle around Y axis", +# "max": 180, +# "min": -180, +# "name": "ry", +# "shortdesc": "Rot.y", +# "step": 0.1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Rot Z", +# "longdesc": "Rotation angle around Y axis", +# "max": 180, +# "min": -180, +# "name": "rz", +# "shortdesc": "Rot.z", +# "step": 0.1, +# "type": "float" +# } +# ] + +#float sphere(vec2 uv, vec2 c, float r) { +# uv -= c; +# uv /= r; +# return 2.0*r*sqrt(max(0.0, 1.0-dot(uv, uv))); +#} + +static func sphere(uv : Vector2, c : Vector2, r : float) -> float: + return 0.0 + +#float shape_circle(vec2 uv, float sides, float size, float edge) { +# uv = 2.0*uv-1.0; +# edge = max(edge, 1.0e-8); +# float distance = length(uv); +# return clamp((1.0-distance/size)/edge, 0.0, 1.0); +#} + +static func shape_circle(uv : Vector2, sides : float, size : float, edge : float) -> float: + uv.x = 2.0 * uv.x - 1.0 + uv.y = 2.0 * uv.y - 1.0 + + edge = max(edge, 1.0e-8) + + var distance : float = uv.length() + + return clamp((1.0 - distance / size) / edge, 0.0, 1.0) + +#float shape_polygon(vec2 uv, float sides, float size, float edge) { +# uv = 2.0*uv-1.0; +# edge = max(edge, 1.0e-8); +# float angle = atan(uv.x, uv.y)+3.14159265359; +# float slice = 6.28318530718/sides; +# return clamp((1.0-(cos(floor(0.5+angle/slice)*slice-angle)*length(uv))/size)/edge, 0.0, 1.0); +#} + +static func shape_polygon(uv : Vector2, sides : float, size : float, edge : float) -> float: + uv.x = 2.0 * uv.x - 1.0 + uv.y = 2.0 * uv.y - 1.0 + + edge = max(edge, 1.0e-8) + + #simple no branch for division by zero + uv.x += 0.0000001 + + var angle : float = atan(uv.y / uv.x) + 3.14159265359 + var slice : float = 6.28318530718 / sides + + return clamp((size - cos(floor(0.5 + angle / slice) * slice - angle) * uv.length()) / (edge * size), 0.0, 1.0) + +#float shape_star(vec2 uv, float sides, float size, float edge) { +# uv = 2.0*uv-1.0; +# edge = max(edge, 1.0e-8); +# float angle = atan(uv.x, uv.y); +# float slice = 6.28318530718/sides; +# return clamp((1.0-(cos(floor(angle*sides/6.28318530718-0.5+2.0*step(fract(angle*sides/6.28318530718), 0.5))*slice-angle)*length(uv))/size)/edge, 0.0, 1.0); +#} + +static func shape_star(uv : Vector2, sides : float, size : float, edge : float) -> float: + uv.x = 2.0 * uv.x - 1.0 + uv.y = 2.0 * uv.y - 1.0 + + edge = max(edge, 1.0e-8); + + #simple no branch for division by zero + uv.x += 0.0000001 + + var angle : float = atan(uv.y / uv.x) + var slice : float = 6.28318530718 / sides + + return clamp((size - cos(floor(1.5 + angle / slice - 2.0 * Commons.step(0.5 * slice, Commons.modf(angle, slice))) * slice - angle) * uv.length()) / (edge * size), 0.0, 1.0); + +#float shape_curved_star(vec2 uv, float sides, float size, float edge) { +# uv = 2.0*uv-1.0; +# edge = max(edge, 1.0e-8); +# float angle = 2.0*(atan(uv.x, uv.y)+3.14159265359); +# float slice = 6.28318530718/sides; +# return clamp((1.0-cos(floor(0.5+0.5*angle/slice)*2.0*slice-angle)*length(uv)/size)/edge, 0.0, 1.0); +#} + +static func shape_curved_star(uv : Vector2, sides : float, size : float, edge : float) -> float: + uv.x = 2.0 * uv.x - 1.0 + uv.y = 2.0 * uv.y - 1.0 + + edge = max(edge, 1.0e-8); + + #simple no branch for division by zero + uv.x += 0.0000001 + + var angle : float = 2.0*(atan(uv.y / uv.x) + 3.14159265359) + var slice : float = 6.28318530718 / sides + + return clamp((size - cos(floor(0.5 + 0.5 * angle / slice) * 2.0 * slice - angle) * uv.length())/(edge * size), 0.0, 1.0); + +#float shape_rays(vec2 uv, float sides, float size, float edge) { +# uv = 2.0*uv-1.0; +# edge = 0.5*max(edge, 1.0e-8)*size; +# float slice = 6.28318530718/sides; +# float angle = mod(atan(uv.x, uv.y)+3.14159265359, slice)/slice; +# return clamp(min((size-angle)/edge, angle/edge), 0.0, 1.0); +#} + +static func shape_rays(uv : Vector2, sides : float, size : float, edge : float) -> float: + + uv.x = 2.0 * uv.x - 1.0 + uv.y = 2.0 * uv.y - 1.0 + + edge = 0.5 * max(edge, 1.0e-8) * size + + #simple no branch for division by zero + uv.x += 0.0000001 + + var slice : float = 6.28318530718 / sides + var angle : float = Commons.modf(atan(uv.y / uv.x) + 3.14159265359, slice) / slice + + return clamp(min((size - angle) / edge, angle / edge), 0.0, 1.0); + +#float box(vec2 uv, vec3 center, vec3 rad, vec3 rot) {\n\t +# vec3 ro = vec3(uv, 1.0)-center;\n\t +# vec3 rd = vec3(0.0000001, 0.0000001, -1.0);\n\t +# mat3 r = mat3(vec3(1, 0, 0), vec3(0, cos(rot.x), -sin(rot.x)), vec3(0, sin(rot.x), cos(rot.x)));\n\t +# +# r *= mat3(vec3(cos(rot.y), 0, -sin(rot.y)), vec3(0, 1, 0), vec3(sin(rot.y), 0, cos(rot.y)));\n\t +# r *= mat3(vec3(cos(rot.z), -sin(rot.z), 0), vec3(sin(rot.z), cos(rot.z), 0), vec3(0, 0, 1));\n\t +# ro = r * ro;\n\t +# rd = r * rd;\n +# vec3 m = 1.0/rd;\n +# vec3 n = m*ro;\n +# vec3 k = abs(m)*rad;\n +# vec3 t1 = -n - k;\n +# vec3 t2 = -n + k;\n\n +# +# float tN = max(max(t1.x, t1.y), t1.z);\n +# float tF = min(min(t2.x, t2.y), t2.z);\n +# +# if(tN>tF || tF<0.0) return 1.0;\n +# +# return tN;\n +#} + diff --git a/game/addons/mat_maker_gd/nodes/common/simple.gd b/game/addons/mat_maker_gd/nodes/common/simple.gd new file mode 100644 index 0000000..50bfa0c --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/simple.gd @@ -0,0 +1,147 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#---------------------- +#profile.mmg + +# "inputs": [ +# { +# "default": "dot($gradient($uv.x).xyz, vec3(1.0/3.0))", +# "label": "2:", +# "name": "in", +# "type": "f" +# } +# ], +# "outputs": [ +# { +# "f": "draw_profile_$style($uv, $in($uv), (dot($gradient($uv.x+0.001).xyz, vec3(1.0/3.0))-dot($gradient($uv.x-0.001).xyz, vec3(1.0/3.0)))/0.002, max(0.0001, $width))", +# "longdesc": "An image showing the profile defined by the gradient", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": 0, +# "label": "", +# "longdesc": "Style of the output image (fill or curve)", +# "name": "style", +# "shortdesc": "Style", +# "type": "enum", +# "values": [ +# { +# "name": "Curve", +# "value": "curve" +# }, +# { +# "name": "Fill", +# "value": "fill" +# } +# ] +# }, +# { +# "default": { +# "interpolation": 1, +# "points": [ +# { +# "a": 1, +# "b": 0, +# "g": 0, +# "pos": 0, +# "r": 0 +# }, +# { +# "a": 1, +# "b": 1, +# "g": 1, +# "pos": 1, +# "r": 1 +# } +# ], +# "type": "Gradient" +# }, +# "label": "", +# "longdesc": "Gradient that defines the profile to be shown", +# "name": "gradient", +# "shortdesc": "Gradient", +# "type": "gradient" +# }, +# { +# "control": "None", +# "default": 0.05, +# "label": "", +# "longdesc": "Width of the curve", +# "max": 1, +# "min": 0, +# "name": "width", +# "shortdesc": "Width", +# "step": 0.01, +# "type": "float" +# } +# ] + +#---------------------- +#uniform.mmg +#Draws a uniform image + +# "outputs": [ +# { +# "longdesc": "A uniform image of the selected color", +# "rgba": "$(color)", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": { +# "a": 1, +# "b": 1, +# "g": 1, +# "r": 1 +# }, +# "label": "", +# "longdesc": "Color of the uniform image", +# "name": "color", +# "shortdesc": "Color", +# "type": "color" +# } +# ] + +#---------------------- +#uniform_greyscale.mmg +#Draws a uniform greyscale image + +# "outputs": [ +# { +# "f": "$(color)", +# "longdesc": "A uniform image of the selected value", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0.5, +# "label": "", +# "longdesc": "The value of the uniform greyscale image", +# "max": 1, +# "min": 0, +# "name": "color", +# "shortdesc": "Value", +# "step": 0.01, +# "type": "float" +# } +# ] + +#float draw_profile_fill(vec2 uv, float y, float dy, float w) {\n\t +# return 1.0-clamp(sin(1.57079632679-atan(dy))*(1.0-uv.y-y)/w, 0.0, 1.0);\n +#} + +#float draw_profile_curve(vec2 uv, float y, float dy, float w) {\n\t +# return 1.0-clamp(sin(1.57079632679-atan(dy))*abs(1.0-uv.y-y)/w, 0.0, 1.0);\n +#} + diff --git a/game/addons/mat_maker_gd/nodes/common/tex3d.gd b/game/addons/mat_maker_gd/nodes/common/tex3d.gd new file mode 100644 index 0000000..1ef03b6 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/tex3d.gd @@ -0,0 +1,979 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#---------------------- +#tex3d_apply.mmg +#Applies 3D textures to a rendered 3D signed distance function scene. + +# "inputs": [ +# { +# "default": "0.0", +# "label": "Height", +# "longdesc": "The height map generated by the Render node", +# "name": "z", +# "shortdesc": "HeightMap", +# "type": "f" +# }, +# { +# "default": "0.0", +# "label": "Color", +# "longdesc": "The color map generated by the Render node", +# "name": "c", +# "shortdesc": "ColorMap", +# "type": "f" +# }, +# { +# "default": "vec3(1.0)", +# "label": "Texture", +# "longdesc": "The 3D texture", +# "name": "t", +# "shortdesc": "Tex3D", +# "type": "tex3d" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The textured 3D scene", +# "rgb": "$t(vec4($uv, $z($uv), $c($uv)))", +# "shortdesc": "Output", +# "type": "rgb" +# } +# ], + +#---------------------- +#tex3d_apply_invuvmap.mmg +#This node applies a 3D texture to an object using its inverse UV map. + +# "inputs": [ +# { +# "default": "vec3(1.0)", +# "label": "Texture", +# "longdesc": "The input 3D texture", +# "name": "t", +# "shortdesc": "Texture", +# "type": "tex3d" +# }, +# { +# "default": "vec3(0.0)", +# "label": "Inv. UV Map", +# "longdesc": "The inverse UV map of the object", +# "name": "map", +# "shortdesc": "InvUVMap", +# "type": "rgb" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The generated texture", +# "rgb": "$t(vec4($map($uv), 0.0))", +# "shortdesc": "Output", +# "type": "rgb" +# } +# ], + +#---------------------- +#tex3d_blend.mmg +#Blends its 3D texture inputs, using an optional mask + +# "inputs": [ +# { +# "default": "vec3($uv.x, 1.0, 1.0)", +# "label": "Source1", +# "longdesc": "The foreground input", +# "name": "s1", +# "shortdesc": "Foreground", +# "type": "tex3d" +# }, +# { +# "default": "vec3(1.0, $uv.y, 1.0)", +# "label": "Source2", +# "longdesc": "The background input", +# "name": "s2", +# "shortdesc": "Background", +# "type": "tex3d" +# }, +# { +# "default": "vec3(1.0)", +# "label": "Opacity", +# "longdesc": "The optional opacity mask", +# "name": "a", +# "shortdesc": "Mask", +# "type": "tex3d" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The 3D texture generated by the blend operation", +# "shortdesc": "Output", +# "tex3d": "blend3d_$blend_type($s1($uv).rgb, $s2($uv).rgb, $amount*dot($a($uv), vec3(1.0))/3.0)", +# "type": "tex3d" +# } +# ], +# "parameters": [ +# { +# "default": 0, +# "label": "", +# "longdesc": "The algorithm used to blend the inputs", +# "name": "blend_type", +# "shortdesc": "Blend mode", +# "type": "enum", +# "values": [ +# { +# "name": "Normal", +# "value": "normal" +# }, +# { +# "name": "Multiply", +# "value": "multiply" +# }, +# { +# "name": "Screen", +# "value": "screen" +# }, +# { +# "name": "Overlay", +# "value": "overlay" +# }, +# { +# "name": "Hard Light", +# "value": "hard_light" +# }, +# { +# "name": "Soft Light", +# "value": "soft_light" +# }, +# { +# "name": "Burn", +# "value": "burn" +# }, +# { +# "name": "Dodge", +# "value": "dodge" +# }, +# { +# "name": "Lighten", +# "value": "lighten" +# }, +# { +# "name": "Darken", +# "value": "darken" +# }, +# { +# "name": "Difference", +# "value": "difference" +# } +# ] +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "3:", +# "longdesc": "The opacity of the blend operation", +# "max": 1, +# "min": 0, +# "name": "amount", +# "shortdesc": "Opacity", +# "step": 0, +# "type": "float" +# } +# ], + +#---------------------- +#tex3d_colorize.mmg +#Remaps a greyscale 3D texture to a custom gradient + +# "inputs": [ +# { +# "default": "vec3($uv.x+0.5)", +# "label": "", +# "longdesc": "The input greyscale 3D texture", +# "name": "in", +# "shortdesc": "Input", +# "type": "tex3d" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The remapped color 3D texture ", +# "shortdesc": "Output", +# "tex3d": "$g(dot($in($uv), vec3(1.0))/3.0).rgb", +# "type": "tex3d" +# } +# ], +# "parameters": [ +# { +# "default": { +# "interpolation": 1, +# "points": [ +# { +# "a": 1, +# "b": 0, +# "g": 0, +# "pos": 0, +# "r": 0 +# }, +# { +# "a": 1, +# "b": 1, +# "g": 1, +# "pos": 1, +# "r": 1 +# } +# ], +# "type": "Gradient" +# }, +# "label": "", +# "longdesc": "The gradient to which the input is remapped", +# "name": "g", +# "shortdesc": "Gradient", +# "type": "gradient" +# } +# ], + +#---------------------- +#tex3d_distort.mmg +#Distorts its input 3D texture using another 3D texture + +# "inputs": [ +# { +# "default": "vec3(1.0)", +# "label": "", +# "longdesc": "The 3D texture to be distorted", +# "name": "in1", +# "shortdesc": "Input1", +# "type": "tex3d" +# }, +# { +# "default": "vec3(0.0)", +# "label": "", +# "longdesc": "The 3D texture used to distort Input1", +# "name": "in2", +# "shortdesc": "Input2", +# "type": "tex3d" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The distorted 3D texture", +# "shortdesc": "Output", +# "tex3d": "$in1(vec4($uv.xyz+($in2($uv)*$Distort*0.5-0.5), 0.0))", +# "type": "tex3d" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0.5, +# "label": "Distort", +# "longdesc": "The strength of the distort effect", +# "max": 1, +# "min": 0, +# "name": "Distort", +# "shortdesc": "Strength", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#tex3d_fbm.mmg +#Generates a 3D noise made of several octaves of a simple noise + +# "instance": "float $(name)_fbm(vec3 coord, vec3 size, int octaves, float persistence, float seed) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfor (int i = 0; i < octaves; i++) {\n\t\tvalue += tex3d_fbm_$noise(coord*size, size, seed) * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n", +# "outputs": [ +# { +# "longdesc": "Shows a greyscale 3D texture of the generated noise", +# "shortdesc": "Output", +# "tex3d": "vec3($(name)_fbm($(uv).xyz, vec3($(scale_x), $(scale_y), $(scale_z)), int($(iterations)), $(persistence), float($(seed))))", +# "type": "tex3d" +# } +# ], +# "parameters": [ +# { +# "default": 2, +# "label": "Noise", +# "longdesc": "The simple noise type", +# "name": "noise", +# "shortdesc": "Noise type", +# "type": "enum", +# "values": [ +# { +# "name": "Value", +# "value": "value" +# }, +# { +# "name": "Perlin", +# "value": "perlin" +# }, +# { +# "name": "Cellular", +# "value": "cellular" +# } +# ] +# }, +# { +# "control": "None", +# "default": 4, +# "label": "Scale X", +# "longdesc": "The scale of the first octave along the X axis", +# "max": 32, +# "min": 1, +# "name": "scale_x", +# "shortdesc": "Scale.x", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 4, +# "label": "Scale Y", +# "longdesc": "The scale of the first octave along the Y axis", +# "max": 32, +# "min": 1, +# "name": "scale_y", +# "shortdesc": "Scale.y", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 4, +# "label": "Scale Z", +# "longdesc": "The scale of the first octave along the Z axis", +# "max": 32, +# "min": 1, +# "name": "scale_z", +# "shortdesc": "Scale.z", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 3, +# "label": "Iterations", +# "longdesc": "The number of noise octaves", +# "max": 10, +# "min": 1, +# "name": "iterations", +# "shortdesc": "Octaves", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "Persistence", +# "longdesc": "The persistence between two consecutive octaves", +# "max": 1, +# "min": 0, +# "name": "persistence", +# "shortdesc": "Persistence", +# "step": 0.05, +# "type": "float" +# } +# ], + +#---------------------- +#tex3d_from2d.mmg +#Creates a 3D texture from a 2D texture + +# "inputs": [ +# { +# "default": "vec3(0.5)", +# "label": "", +# "longdesc": "The input 2D texture", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgb" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The generated 3D texture", +# "shortdesc": "Output", +# "tex3d": "$in($uv.xy+vec2(0.5))", +# "type": "tex3d" +# } +# ], + +#---------------------- +#tex3d_pattern.mmg +#A greyscale 3D texture that combines patterns along all 3 axes + +# "instance": "float $(name)_fct(vec3 uv) {\n\treturn mix3d_$(mix)(wave3d_$(x_wave)($(x_scale)*uv.x), wave3d_$(y_wave)($(y_scale)*uv.y), wave3d_$(z_wave)($(z_scale)*uv.z));\n}", +# "outputs": [ +# { +# "longdesc": "The generated 3D texture", +# "shortdesc": "Output", +# "tex3d": "vec3($(name)_fct($(uv).xyz))", +# "type": "tex3d" +# } +# ], +# "parameters": [ +# { +# "default": 0, +# "label": "Combiner", +# "longdesc": "The operation used to combine the X, Y and Z patterns", +# "name": "mix", +# "shortdesc": "Combine", +# "type": "enum", +# "values": [ +# { +# "name": "Multiply", +# "value": "mul" +# }, +# { +# "name": "Add", +# "value": "add" +# }, +# { +# "name": "Max", +# "value": "max" +# }, +# { +# "name": "Min", +# "value": "min" +# }, +# { +# "name": "Xor", +# "value": "xor" +# }, +# { +# "name": "Pow", +# "value": "pow" +# } +# ] +# }, +# { +# "default": 0, +# "label": "X", +# "longdesc": "Pattern generated along the X axis", +# "name": "x_wave", +# "shortdesc": "Pattern.x", +# "type": "enum", +# "values": [ +# { +# "name": "Sine", +# "value": "sine" +# }, +# { +# "name": "Triangle", +# "value": "triangle" +# }, +# { +# "name": "Square", +# "value": "square" +# }, +# { +# "name": "Sawtooth", +# "value": "sawtooth" +# }, +# { +# "name": "Constant", +# "value": "constant" +# }, +# { +# "name": "Bounce", +# "value": "bounce" +# } +# ] +# }, +# { +# "control": "None", +# "default": 4, +# "label": "2:", +# "longdesc": "Repetitions of the pattern along X axis", +# "max": 32, +# "min": 0, +# "name": "x_scale", +# "shortdesc": "Repeat.x", +# "step": 1, +# "type": "float" +# }, +# { +# "default": 0, +# "label": "Y", +# "longdesc": "Pattern generated along the Y axis", +# "name": "y_wave", +# "shortdesc": "Pattern.y", +# "type": "enum", +# "values": [ +# { +# "name": "Sine", +# "value": "sine" +# }, +# { +# "name": "Triangle", +# "value": "triangle" +# }, +# { +# "name": "Square", +# "value": "square" +# }, +# { +# "name": "Sawtooth", +# "value": "sawtooth" +# }, +# { +# "name": "Constant", +# "value": "constant" +# }, +# { +# "name": "Bounce", +# "value": "bounce" +# } +# ] +# }, +# { +# "control": "None", +# "default": 4, +# "label": "3:", +# "longdesc": "Repetitions of the pattern along Y axis", +# "max": 32, +# "min": 0, +# "name": "y_scale", +# "shortdesc": "Repeat.y", +# "step": 1, +# "type": "float" +# }, +# { +# "default": 0, +# "label": "Z", +# "longdesc": "Pattern generated along the Z axis", +# "name": "z_wave", +# "shortdesc": "Pattern.z", +# "type": "enum", +# "values": [ +# { +# "name": "Sine", +# "value": "sine" +# }, +# { +# "name": "Triangle", +# "value": "triangle" +# }, +# { +# "name": "Square", +# "value": "square" +# }, +# { +# "name": "Sawtooth", +# "value": "sawtooth" +# }, +# { +# "name": "Constant", +# "value": "constant" +# }, +# { +# "name": "Bounce", +# "value": "bounce" +# } +# ] +# }, +# { +# "control": "None", +# "default": 4, +# "label": "4:", +# "longdesc": "Repetitions of the pattern along Z axis", +# "max": 32, +# "min": 0, +# "name": "z_scale", +# "shortdesc": "Repeat.z", +# "step": 1, +# "type": "float" +# } +# ], + +#---------------------- +#tex3d_rotate.mmg +#Rotates a 3D texture + +# "inputs": [ +# { +# "default": "vec3(1.0)", +# "label": "", +# "longdesc": "The input 3D texture", +# "name": "in", +# "shortdesc": "Input", +# "type": "tex3d" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The rotated 3D texture", +# "shortdesc": "Output", +# "tex3d": "$in(vec4(tex3d_rotate($uv.xyz, -vec3($ax, $ay, $az)*0.01745329251), $uv.w))", +# "type": "tex3d" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0, +# "label": "X", +# "longdesc": "The rotation around the X axis", +# "max": 180, +# "min": -180, +# "name": "ax", +# "shortdesc": "Rotate.x", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Y", +# "longdesc": "The rotation around the Y axis", +# "max": 180, +# "min": -180, +# "name": "ay", +# "shortdesc": "Rotate.y", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Z", +# "longdesc": "The rotation around the Z axis", +# "max": 180, +# "min": -180, +# "name": "az", +# "shortdesc": "Rotate.z", +# "step": 1, +# "type": "float" +# } +# ], + +#---------------------- +#tex3d_select.mmg +#Selects a 3D texture for a given color index. This can be used to map several textures into a single 3D scene. + +# "code": "float $(name_uv)_d = ($uv.w-$v)/$t;", +# "inputs": [ +# { +# "default": "vec3(0.5)", +# "label": "", +# "longdesc": "The 3D texture associated to the specified color index", +# "name": "in1", +# "shortdesc": "Input1", +# "type": "tex3d" +# }, +# { +# "default": "vec3(0.5)", +# "label": "", +# "longdesc": "The 3D texture(s) associated to other color indices", +# "name": "in2", +# "shortdesc": "Input2", +# "type": "tex3d" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The merged 3D texture", +# "shortdesc": "Output", +# "tex3d": "mix($in1($uv), $in2($uv), clamp(1.0-$(name_uv)_d*$(name_uv)_d, 0.0, 1.0))", +# "type": "tex3d" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0.5, +# "label": "Value", +# "longdesc": "The value of the selected color index", +# "max": 1, +# "min": 0, +# "name": "v", +# "shortdesc": "Value", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.1, +# "label": "Tolerance", +# "longdesc": "The tolerance used when comparing color indices", +# "max": 1, +# "min": 0.01, +# "name": "t", +# "shortdesc": "Tolerance", +# "step": 0.001, +# "type": "float" +# } +# ], + +#---------------------- +#tex3d_select_shape.mmg +#Selects a 3D texture inside, and another outside a shape. This can be used to map several textures into a single 3D scene. + +# "inputs": [ +# { +# "default": "vec3(0.5)", +# "label": "", +# "longdesc": "The 3D texture associated to the specified color index", +# "name": "in1", +# "shortdesc": "Input1", +# "type": "tex3d" +# }, +# { +# "default": "vec3(0.5)", +# "label": "", +# "longdesc": "The 3D texture(s) associated to other color indices", +# "name": "in2", +# "shortdesc": "Input2", +# "type": "tex3d" +# }, +# { +# "default": "0.0", +# "label": "", +# "longdesc": "The shape in which input1 is applied", +# "name": "shape", +# "shortdesc": "Shape", +# "type": "sdf3d" +# } +# ], +# "outputs": [ +# { +# "longdesc": "The merged 3D texture", +# "shortdesc": "Output", +# "tex3d": "mix($in1($uv), $in2($uv), clamp($shape($uv.xyz)/max($d, 0.0001), 0.0, 1.0))", +# "type": "tex3d" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0.5, +# "label": "Smoothness", +# "longdesc": "The width of the transition area between both textures", +# "max": 1, +# "min": 0, +# "name": "d", +# "shortdesc": "Smoothness", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#tex3d_apply.mmg + +#---------------------- +#tex3d_apply.mmg + +#---------------------- +#tex3d_apply.mmg + +#---------------------- +#tex3d_apply.mmg + +#vec3 blend3d_normal(vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*c1 + (1.0-opacity)*c2;\n +#} + +#vec3 blend3d_multiply(vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*c1*c2 + (1.0-opacity)*c2;\n +#} + +#vec3 blend3d_screen(vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*(1.0-(1.0-c1)*(1.0-c2)) + (1.0-opacity)*c2;\n +#} + +#float blend3d_overlay_f(float c1, float c2) {\n\t +# return (c1 < 0.5) ? (2.0*c1*c2) : (1.0-2.0*(1.0-c1)*(1.0-c2));\n +#} + +#vec3 blend3d_overlay(vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*vec3(blend3d_overlay_f(c1.x, c2.x), blend3d_overlay_f(c1.y, c2.y), blend3d_overlay_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n +#} + +#vec3 blend3d_hard_light(vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*0.5*(c1*c2+blend3d_overlay(c1, c2, 1.0)) + (1.0-opacity)*c2;\n +#} + +#float blend3d_soft_light_f(float c1, float c2) {\n\t +# return (c2 < 0.5) ? (2.0*c1*c2+c1*c1*(1.0-2.0*c2)) : 2.0*c1*(1.0-c2)+sqrt(c1)*(2.0*c2-1.0);\n +#} + +#vec3 blend3d_soft_light(vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*vec3(blend3d_soft_light_f(c1.x, c2.x), blend3d_soft_light_f(c1.y, c2.y), blend3d_soft_light_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n +#} + +#float blend3d_burn_f(float c1, float c2) {\n\t +# return (c1==0.0)?c1:max((1.0-((1.0-c2)/c1)),0.0);\n +#} + +#vec3 blend3d_burn(vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*vec3(blend3d_burn_f(c1.x, c2.x), blend3d_burn_f(c1.y, c2.y), blend3d_burn_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n +#} + +#float blend3d_dodge_f(float c1, float c2) {\n\t +# return (c1==1.0)?c1:min(c2/(1.0-c1),1.0);\n +#} + +#vec3 blend3d_dodge(vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*vec3(blend3d_dodge_f(c1.x, c2.x), blend3d_dodge_f(c1.y, c2.y), blend3d_dodge_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n +#} + +#vec3 blend3d_lighten(vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*max(c1, c2) + (1.0-opacity)*c2;\n +#} + +#vec3 blend3d_darken(vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*min(c1, c2) + (1.0-opacity)*c2; +#} + +#vec3 blend3d_difference(vec3 c1, vec3 c2, float opacity) {\n\t +# return opacity*clamp(c2-c1, vec3(0.0), vec3(1.0)) + (1.0-opacity)*c2;\n +#} + +#float rand31(vec3 p) {\n\t +# return fract(sin(dot(p,vec3(127.1,311.7, 74.7)))*43758.5453123);\n +#} + +#vec3 rand33(vec3 p) {\n\t +# p = vec3( dot(p,vec3(127.1,311.7, 74.7)), +# dot(p,vec3(269.5,183.3,246.1)),\n\t\t\t +# dot(p,vec3(113.5,271.9,124.6)));\n\n\t +# +# return -1.0 + 2.0*fract(sin(p)*43758.5453123); +#} + +#float tex3d_fbm_value(vec3 coord, vec3 size, float seed) {\n\t +# vec3 o = floor(coord)+rand3(vec2(seed, 1.0-seed))+size;\n\t +# vec3 f = fract(coord);\n\t +# float p000 = rand31(mod(o, size));\n\t +# float p001 = rand31(mod(o + vec3(0.0, 0.0, 1.0), size));\n\t +# float p010 = rand31(mod(o + vec3(0.0, 1.0, 0.0), size));\n\t +# float p011 = rand31(mod(o + vec3(0.0, 1.0, 1.0), size));\n\t +# float p100 = rand31(mod(o + vec3(1.0, 0.0, 0.0), size));\n\t +# float p101 = rand31(mod(o + vec3(1.0, 0.0, 1.0), size));\n\t +# float p110 = rand31(mod(o + vec3(1.0, 1.0, 0.0), size));\n\t +# float p111 = rand31(mod(o + vec3(1.0, 1.0, 1.0), size));\n\t +# +# vec3 t = f * f * (3.0 - 2.0 * f);\n\t +# +# return mix(mix(mix(p000, p100, t.x), mix(p010, p110, t.x), t.y), mix(mix(p001, p101, t.x), mix(p011, p111, t.x), t.y), t.z);\n +#} + +#float tex3d_fbm_perlin(vec3 coord, vec3 size, float seed) {\n\t +# vec3 o = floor(coord)+rand3(vec2(seed, 1.0-seed))+size;\n\t +# vec3 f = fract(coord);\n\t +# vec3 v000 = normalize(rand33(mod(o, size))-vec3(0.5));\n\t +# vec3 v001 = normalize(rand33(mod(o + vec3(0.0, 0.0, 1.0), size))-vec3(0.5));\n\t +# vec3 v010 = normalize(rand33(mod(o + vec3(0.0, 1.0, 0.0), size))-vec3(0.5));\n\t +# vec3 v011 = normalize(rand33(mod(o + vec3(0.0, 1.0, 1.0), size))-vec3(0.5));\n\t +# vec3 v100 = normalize(rand33(mod(o + vec3(1.0, 0.0, 0.0), size))-vec3(0.5));\n\t +# vec3 v101 = normalize(rand33(mod(o + vec3(1.0, 0.0, 1.0), size))-vec3(0.5));\n\t +# vec3 v110 = normalize(rand33(mod(o + vec3(1.0, 1.0, 0.0), size))-vec3(0.5));\n\t +# vec3 v111 = normalize(rand33(mod(o + vec3(1.0, 1.0, 1.0), size))-vec3(0.5));\n\t +# +# float p000 = dot(v000, f);\n\tfloat p001 = dot(v001, f - vec3(0.0, 0.0, 1.0));\n\t +# float p010 = dot(v010, f - vec3(0.0, 1.0, 0.0));\n\t +# float p011 = dot(v011, f - vec3(0.0, 1.0, 1.0));\n\t +# float p100 = dot(v100, f - vec3(1.0, 0.0, 0.0));\n\t +# float p101 = dot(v101, f - vec3(1.0, 0.0, 1.0));\n\t +# float p110 = dot(v110, f - vec3(1.0, 1.0, 0.0));\n\t +# float p111 = dot(v111, f - vec3(1.0, 1.0, 1.0));\n\t +# +# vec3 t = f * f * (3.0 - 2.0 * f);\n\t +# +# return 0.5 + mix(mix(mix(p000, p100, t.x), mix(p010, p110, t.x), t.y), mix(mix(p001, p101, t.x), mix(p011, p111, t.x), t.y), t.z); +#} + +#float tex3d_fbm_cellular(vec3 coord, vec3 size, float seed) {\n\t +# vec3 o = floor(coord)+rand3(vec2(seed, 1.0-seed))+size;\n\t +# vec3 f = fract(coord);\n\tfloat min_dist = 3.0;\n\t +# +# for (float x = -1.0; x <= 1.0; x++) {\n\t\t +# for (float y = -1.0; y <= 1.0; y++) {\n\t\t\t +# for (float z = -1.0; z <= 1.0; z++) {\n\t\t\t\t +# vec3 node = 0.4*rand33(mod(o + vec3(x, y, z), size)) + vec3(x, y, z);\n\t\t\t\t +# float dist = sqrt((f - node).x * (f - node).x + (f - node).y * (f - node).y + (f - node).z * (f - node).z);\n\t\t\t\t +# min_dist = min(min_dist, dist);\n\t\t\t +# }\n\t\t +# +# }\n\t +# +# }\n\t +# +# return min_dist; +#} + + +#float wave3d_constant(float x) {\n\t +# return 1.0;\n +#} + +#float wave3d_sine(float x) {\n\t +# return 0.5-0.5*cos(3.14159265359*2.0*x);\n +#} + +#float wave3d_triangle(float x) {\n\t +# x = fract(x);\n\t +# return min(2.0*x, 2.0-2.0*x);\n +#} + +#float wave3d_sawtooth(float x) {\n\t +# return fract(x);\n +#} + +#float wave3d_square(float x) {\n\t +# return (fract(x) < 0.5) ? 0.0 : 1.0;\n +#} + +#float wave3d_bounce(float x) {\n\t +# x = 2.0*(fract(x)-0.5);\n\t +# return sqrt(1.0-x*x);\n +#} + +#float mix3d_mul(float x, float y, float z) {\n\t +# return x*y*z;\n +#} + +#float mix3d_add(float x, float y, float z) {\n\t +# return min(x+y+z, 1.0);\n +#} + +#float mix3d_max(float x, float y, float z) {\n\t +# return max(max(x, y), z);\n +#} + +#float mix3d_min(float x, float y, float z) {\n\t +# return min(min(x, y), z);\n +#} + +#float mix3d_xor(float x, float y, float z) {\n\t +# float xy = min(x+y, 2.0-x-y);\n\t +# return min(xy+z, 2.0-xy-z);\n +#} + +#float mix3d_pow(float x, float y, float z) {\n\t +# return pow(pow(x, y), z);\n +#} + +#vec3 tex3d_rotate(vec3 p, vec3 a) {\n\t +# vec3 rv;\n\t +# float c;\n\t +# float s;\n\t +# c = cos(a.x);\n\t +# s = sin(a.x);\n\t +# rv.x = p.x;\n\t +# rv.y = p.y*c+p.z*s;\n\t +# rv.z = -p.y*s+p.z*c;\n\t +# c = cos(a.y);\n\t +# s = sin(a.y);\n\t +# p.x = rv.x*c+rv.z*s;\n\t +# p.y = rv.y;\n\t +# p.z = -rv.x*s+rv.z*c;\n\t +# c = cos(a.z);\n\t +# s = sin(a.z);\n\t +# rv.x = p.x*c+p.y*s;\n\t +# rv.y = -p.x*s+p.y*c;\n\t +# rv.z = p.z;\n\t +# return rv;\n +#} + diff --git a/game/addons/mat_maker_gd/nodes/common/tile.gd b/game/addons/mat_maker_gd/nodes/common/tile.gd new file mode 100644 index 0000000..25fb5e1 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/tile.gd @@ -0,0 +1,707 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#---------------------- +#tile2x2.mmg +#Places 4 input images into a single output to create an atlas of 4 images. +#Chaining Tile2x2 nodes can be useful to create 16 images atlases. +#Atlases are used by remapping nodes such as CustomUV, Tiler and Splatter. + +# "inputs": [ +# { +# "default": "vec4(0.0)", +# "label": "", +# "longdesc": "The first input", +# "name": "in1", +# "shortdesc": "Input1", +# "type": "rgba" +# }, +# { +# "default": "vec4(0.0)", +# "label": "", +# "longdesc": "The second input", +# "name": "in2", +# "shortdesc": "Input2", +# "type": "rgba" +# }, +# { +# "default": "vec4(0.0)", +# "label": "", +# "longdesc": "The third input", +# "name": "in3", +# "shortdesc": "Input3", +# "type": "rgba" +# }, +# { +# "default": "vec4(0.0)", +# "label": "", +# "longdesc": "The fourth input", +# "name": "in4", +# "shortdesc": "Input4", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the generated atlas", +# "rgba": "($uv.y < 0.5) ? (($uv.x < 0.5) ? ($in1(2.0*$uv)) : ($in2(2.0*$uv-vec2(1.0, 0.0)))) : (($uv.x < 0.5) ? ($in3(2.0*$uv-vec2(0.0, 1.0))) : ($in4(2.0*$uv-vec2(1.0, 1.0))))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], + +#---------------------- +#tile2x2_variations.mmg +#Places 4 input images into a single output to create an atlas of 4 images. +#Chaining Tile2x2 nodes can be useful to create 16 images atlases. +#Atlases are used by remapping nodes such as CustomUV, Tiler and Splatter. + +# "inputs": [ +# { +# "default": "vec4(0.0)", +# "function": true, +# "label": "", +# "longdesc": "The first input", +# "name": "in", +# "shortdesc": "Input1", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the generated atlas", +# "rgba": "($uv.y < 0.5) ? (($uv.x < 0.5) ? ($in.variation(2.0*$uv, $seed)) : ($in.variation(2.0*$uv-vec2(1.0, 0.0), $seed+0.1))) : (($uv.x < 0.5) ? ($in.variation(2.0*$uv-vec2(0.0, 1.0), $seed+0.2)) : ($in.variation(2.0*$uv-vec2(1.0, 1.0), $seed+0.3)))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], + +#---------------------- +#tiler.mmg +#Tiles several occurences of an input image while adding randomness. + +#vec4 $(name_uv)_rch = tiler_$(name)($uv, vec2($tx, $ty), int($overlap), vec2(float($seed))); + +#instance +#vec4 tiler_$(name)(vec2 uv, vec2 tile, int overlap, vec2 _seed) {\n\t +# float c = 0.0;\n\t +# vec3 rc = vec3(0.0);\n\t +# vec3 rc1;\n\t +# for (int dx = -overlap; dx <= overlap; ++dx) {\n\t\t +# for (int dy = -overlap; dy <= overlap; ++dy) {\n\t\t\t +# vec2 pos = fract((floor(uv*tile)+vec2(float(dx), float(dy))+vec2(0.5))/tile-vec2(0.5));\n\t\t\t +# vec2 seed = rand2(pos+_seed);\n\t\t\t +# rc1 = rand3(seed);\n\t\t\t +# pos = fract(pos+vec2($fixed_offset/tile.x, 0.0)*floor(mod(pos.y*tile.y, 2.0))+$offset*seed/tile);\n\t\t\t +# float mask = $mask(fract(pos+vec2(0.5)));\n\t\t\t +# +# if (mask > 0.01) {\n\t\t\t\t +# vec2 pv = fract(uv - pos)-vec2(0.5);\n\t\t\t\t +# seed = rand2(seed);\n\t\t\t\t +# float angle = (seed.x * 2.0 - 1.0) * $rotate * 0.01745329251;\n\t\t\t\t +# float ca = cos(angle);\n\t\t\t\t +# float sa = sin(angle);\n\t\t\t\t +# pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);\n\t\t\t\t +# pv *= (seed.y-0.5)*2.0*$scale+1.0;\n\t\t\t\t +# pv /= vec2($scale_x, $scale_y);\n\t\t\t\t +# pv += vec2(0.5);\n\t\t\t\t +# seed = rand2(seed);\n\t\t\t\t +# vec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));\n\t\t\t\t +# if (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {\n\t\t\t\t\t +# continue;\n\t\t\t\t +# }\n\t\t\t\t +# +# $select_inputs\n\t\t\t\t +# +# float c1 = $in.variation(pv, $variations ? seed.x : 0.0)*mask*(1.0-$value*seed.x);\n\t\t\t\t +# c = max(c, c1);\n\t\t\t\t +# rc = mix(rc, rc1, step(c, c1));\n\t\t\t +# }\n\t\t +# }\n\t +# }\n\t +# +# return vec4(rc, c);\n +#} + +#Inputs: + +#in, float, default: 0, - The input image or atlas of 4 or 16 input images +#Mask, float, default: 1, - The mask applied to the pattern + +#Outputs: +#Output, float, Shows the generated pattern +#$(name_uv)_rch.a + +#Instance map, rgb, Shows a random color for each instance of the input image +#$(name_uv)_rch.rgb + +#select_inputs enum +#1, " " +#4, "pv = clamp(0.5*(pv+floor(rand2(seed)*2.0)), vec2(0.0), vec2(1.0));" +#16, "pv = clamp(0.25*(pv+floor(rand2(seed)*4.0)), vec2(0.0), vec2(1.0));" + +#Parameters: +#tile, Vector2, default 4, min:1, max:64, step:1 - The number of columns of the tiles pattern +#overlap, float, default 1, min 0, max 5, step 1 - The number of neighbour tiles an instance of the input image can overlap. Set this parameter to the lowest value that generates the expected result (where all instances are fully visible) to improve performance. +#select_inputs (Inputs), enum, default 0, values 1, 4, 16 +#scale, Vector2, default 1, min:0, max:2, step:0.01 - "The scale of input images on the X axis +#fixed_offset, float, default 0.5, min 0, max 1, step 0.01 - The relative offset of odd rows +#offset (rnd_offset), float, default 0.5, min 0, max 1, step 0.01 +#rotate (rnd_rotate), float, default 0, min 0, max 180, step 0.1 +#scale (rnd_scale), float, default 0.5, min 0, max 1, step 0.01 - The random scale applied to each image instance +#value (rnd_value), float, default 0.5, min 0, max 1, step 0.01 - The random greyscale value applied to each image instance +#variations, bool, default false, (disabled) - Check to tile variations of the input + +#---------------------- +#tiler_advanced.mmg +#Tiles several occurences of an input image while adding randomness. + +# "code": "vec4 $(name_uv)_rch = tiler_$(name)($uv, vec2($tx, $ty), int($overlap), float($seed));", +# "inputs": [ +# { +# "default": "0.0", +# "function": true, +# "label": "", +# "longdesc": "The input image or atlas of 4 or 16 input images", +# "name": "in", +# "shortdesc": "Input", +# "type": "f" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "", +# "longdesc": "The mask applied to the pattern", +# "name": "mask", +# "shortdesc": "Mask", +# "type": "f" +# }, +# { +# "default": "vec4(rand2($uv+vec2(float($seed))), rand2($uv-vec2(float($seed))))", +# "label": "", +# "longdesc": "An input color map used to generate the Instance map 1 output", +# "name": "color1", +# "shortdesc": "Color map 1", +# "type": "rgba" +# }, +# { +# "default": "vec4(rand2(-$uv+vec2(float($seed))), rand2(-$uv-vec2(float($seed))))", +# "label": "", +# "longdesc": "An input color map used to generate the Instance map 2 output", +# "name": "color2", +# "shortdesc": "Color map 2", +# "type": "rgba" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "5:", +# "longdesc": "A map for translation along the X axis", +# "name": "tr_x", +# "shortdesc": "Translate map X", +# "type": "f" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "", +# "longdesc": "A map for translation along the Y axis", +# "name": "tr_y", +# "shortdesc": "Translate map Y", +# "type": "f" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "", +# "longdesc": "A map for rotation", +# "name": "r", +# "shortdesc": "Rotate map", +# "type": "f" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "", +# "longdesc": "A map for scale along the X axis", +# "name": "sc_x", +# "shortdesc": "Scale map X", +# "type": "f" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "", +# "longdesc": "A map for scale along the Y axis", +# "name": "sc_y", +# "shortdesc": "Scale map Y", +# "type": "f" +# } +# ], +# "instance": "vec4 tiler_$(name)(vec2 uv, vec2 tile, int overlap, float _seed) {\n\tfloat c = 0.0;\n\tvec2 map_uv = vec2(0.0);\n\tfor (int dx = -overlap; dx <= overlap; ++dx) {\n\t\tfor (int dy = -overlap; dy <= overlap; ++dy) {\n\t\t\tvec2 pos = fract((floor(uv*tile)+vec2(float(dx), float(dy))+vec2(0.5))/tile-vec2(0.5));\n\t\t\tfloat mask = $mask(fract(pos+vec2(0.5)));\n\t\t\tif (mask > 0.01) {\n\t\t\t\tvec2 pv = fract(uv - pos)-vec2(0.5);\n\t\t\t\tpos = fract(pos+vec2(0.5));\n\t\t\t\tpv -= vec2($translate_x*$tr_x(pos), $translate_y*$tr_y(pos))/tile;\n\t\t\t\tfloat angle = $r(pos) * $rotate * 0.01745329251;\n\t\t\t\tfloat ca = cos(angle);\n\t\t\t\tfloat sa = sin(angle);\n\t\t\t\tpv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);\n\t\t\t\tpv /= vec2($scale_x*$sc_x(pos), $scale_y*$sc_y(pos));\n\t\t\t\tpv += vec2(0.5);\n\t\t\t\tif (pv != clamp(pv, vec2(0.0), vec2(1.0))) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tvec2 seed = rand2(vec2(_seed)+pos);\n\t\t\t\t$select_inputs\n\t\t\t\tfloat c1 = $in.variation(pv, $variations ? seed.x : 0.0)*mask;\n\t\t\t\tc = max(c, c1);\n\t\t\t\tmap_uv = mix(map_uv, pos, step(c, c1));\n\t\t\t}\n\t\t}\n\t}\n\treturn vec4(map_uv, 0.0, c);\n}", +# "outputs": [ +# { +# "f": "$(name_uv)_rch.a", +# "longdesc": "Shows the generated pattern", +# "shortdesc": "Output", +# "type": "f" +# }, +# { +# "longdesc": "Shows a color for each instance of the input image", +# "rgba": "$color1($(name_uv)_rch.rg)", +# "shortdesc": "Instance map 1", +# "type": "rgba" +# }, +# { +# "longdesc": "Shows a color for each instance of the input image", +# "rgba": "$color2($(name_uv)_rch.rg)", +# "shortdesc": "Instance map 2", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 4, +# "label": "Tile X", +# "longdesc": "The number of columns of the tiles pattern", +# "max": 64, +# "min": 1, +# "name": "tx", +# "shortdesc": "Tile.x", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 4, +# "label": "Tile Y", +# "longdesc": "The number of rows of the tiles pattern", +# "max": 64, +# "min": 1, +# "name": "ty", +# "shortdesc": "Tile.y", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Overlap", +# "longdesc": "The number of neighbour tiles an instance of the input image can overlap. Set this parameter to the lowest value that generates the expected result (where all instances are fully visible) to improve performance.", +# "max": 5, +# "min": 0, +# "name": "overlap", +# "shortdesc": "Overlap", +# "step": 1, +# "type": "float" +# }, +# { +# "default": 0, +# "label": "Inputs", +# "longdesc": "The input type of the node:\n- 1: single image\n- 4: atlas of 4 images\n- 16: atlas of 16 images\nAtlases can be created using the Tile2x2 node.", +# "name": "select_inputs", +# "shortdesc": "Input", +# "type": "enum", +# "values": [ +# { +# "name": "1", +# "value": " " +# }, +# { +# "name": "4", +# "value": "pv = clamp(0.5*(pv+floor(rand2(seed)*2.0)), vec2(0.0), vec2(1.0));" +# }, +# { +# "name": "16", +# "value": "pv = clamp(0.25*(pv+floor(rand2(seed)*4.0)), vec2(0.0), vec2(1.0));" +# } +# ] +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Translate X", +# "longdesc": "The translation along the X axis applied to the instances", +# "max": 1, +# "min": 0, +# "name": "translate_x", +# "shortdesc": "Translate.x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Translate Y", +# "longdesc": "The translation along the Y axis applied to the instances", +# "max": 1, +# "min": 0, +# "name": "translate_y", +# "shortdesc": "Translate.y", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Rotate", +# "longdesc": "The angle of instances of the input", +# "max": 180, +# "min": 0, +# "name": "rotate", +# "shortdesc": "Rotate", +# "step": 0.1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Scale X", +# "longdesc": "The scale of input images on the X axis", +# "max": 2, +# "min": 0, +# "name": "scale_x", +# "shortdesc": "Scale.x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Scale Y", +# "longdesc": "The scale of input images on the Y axis", +# "max": 2, +# "min": 0, +# "name": "scale_y", +# "shortdesc": "Scale.y", +# "step": 0.01, +# "type": "float" +# }, +# { +# "default": false, +# "label": "Variations", +# "longdesc": "Check to tile variations of the input", +# "name": "variations", +# "shortdesc": "Variations", +# "type": "boolean" +# } +# ], + +#---------------------- +#tiler_advanced_color.mmg +#Tiles several occurences of an input image while adding randomness. + +# "code": "vec2 $(name_uv)_mapuv;\nvec4 $(name_uv)_rch = tiler_$(name)($uv, vec2($tx, $ty), int($overlap), float($seed), $(name_uv)_mapuv);", +# "inputs": [ +# { +# "default": "vec4(1.0)", +# "function": true, +# "label": "", +# "longdesc": "The input image or atlas of 4 or 16 input images", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "", +# "longdesc": "The mask applied to the pattern", +# "name": "mask", +# "shortdesc": "Mask", +# "type": "f" +# }, +# { +# "default": "vec4(rand2($uv+vec2(float($seed))), rand2($uv-vec2(float($seed))))", +# "label": "", +# "longdesc": "An input color map used to generate the Instance map 1 output", +# "name": "color1", +# "shortdesc": "Color map 1", +# "type": "rgba" +# }, +# { +# "default": "vec4(rand2(-$uv+vec2(float($seed))), rand2(-$uv-vec2(float($seed))))", +# "label": "", +# "longdesc": "An input color map used to generate the Instance map 2 output", +# "name": "color2", +# "shortdesc": "Color map 2", +# "type": "rgba" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "5:", +# "longdesc": "A map for translation along the X axis", +# "name": "tr_x", +# "shortdesc": "Translate map X", +# "type": "f" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "", +# "longdesc": "A map for translation along the Y axis", +# "name": "tr_y", +# "shortdesc": "Translate map Y", +# "type": "f" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "", +# "longdesc": "A map for rotation", +# "name": "r", +# "shortdesc": "Rotate map", +# "type": "f" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "", +# "longdesc": "A map for scale along the X axis", +# "name": "sc_x", +# "shortdesc": "Scale map X", +# "type": "f" +# }, +# { +# "default": "1.0", +# "function": true, +# "label": "", +# "longdesc": "A map for scale along the Y axis", +# "name": "sc_y", +# "shortdesc": "Scale map Y", +# "type": "f" +# } +# ], +# "instance": "vec4 tiler_$(name)(vec2 uv, vec2 tile, int overlap, float _seed, out vec2 outmapuv) {\n\t// $seed\n\tvec4 c = vec4(0.0);\n\toutmapuv = vec2(0.0);\n\tfor (int dx = -overlap; dx <= overlap; ++dx) {\n\t\tfor (int dy = -overlap; dy <= overlap; ++dy) {\n\t\t\tvec2 pos = fract((floor(uv*tile)+vec2(float(dx), float(dy))+vec2(0.5))/tile-vec2(0.5));\n\t\t\tfloat mask = $mask(fract(pos+vec2(0.5)));\n\t\t\tif (mask > 0.01) {\n\t\t\t\tvec2 pv = fract(uv - pos)-vec2(0.5);\n\t\t\t\tpos = fract(pos+vec2(0.5));\n\t\t\t\tpv -= vec2($translate_x*$tr_x(pos), $translate_y*$tr_y(pos))/tile;\n\t\t\t\tfloat angle = $r(pos) * $rotate * 0.01745329251;\n\t\t\t\tfloat ca = cos(angle);\n\t\t\t\tfloat sa = sin(angle);\n\t\t\t\tpv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);\n\t\t\t\tpv /= vec2($scale_x*$sc_x(pos), $scale_y*$sc_y(pos));\n\t\t\t\tpv += vec2(0.5);\n\t\t\t\tif (pv != clamp(pv, vec2(0.0), vec2(1.0))) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tvec2 seed = rand2(vec2(_seed)+pos);\n\t\t\t\t$select_inputs\n\t\t\t\tvec4 n = $in.variation(pv, $variations ? seed.x : 0.0);\n\t\t\t\tfloat na = n.a*mask;\n\t\t\t\toutmapuv = mix(outmapuv, pos, step(c.a, na));\n\t\t\t\tc = mix(c, n, na);\n\t\t\t}\n\t\t}\n\t}\n\treturn c;\n}\n", +# "outputs": [ +# { +# "longdesc": "Shows the generated pattern", +# "rgba": "$(name_uv)_rch", +# "shortdesc": "Output", +# "type": "rgba" +# }, +# { +# "longdesc": "Shows a color for each instance of the input image", +# "rgba": "$color1($(name_uv)_mapuv)", +# "shortdesc": "Instance map 1", +# "type": "rgba" +# }, +# { +# "longdesc": "Shows a color for each instance of the input image", +# "rgba": "$color2($(name_uv)_mapuv)", +# "shortdesc": "Instance map 2", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 4, +# "label": "Tile X", +# "longdesc": "The number of columns of the tiles pattern", +# "max": 64, +# "min": 1, +# "name": "tx", +# "shortdesc": "Tile.x", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 4, +# "label": "Tile Y", +# "longdesc": "The number of rows of the tiles pattern", +# "max": 64, +# "min": 1, +# "name": "ty", +# "shortdesc": "Tile.y", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Overlap", +# "longdesc": "The number of neighbour tiles an instance of the input image can overlap. Set this parameter to the lowest value that generates the expected result (where all instances are fully visible) to improve performance.", +# "max": 5, +# "min": 0, +# "name": "overlap", +# "shortdesc": "Overlap", +# "step": 1, +# "type": "float" +# }, +# { +# "default": 0, +# "label": "Inputs", +# "longdesc": "The input type of the node:\n- 1: single image\n- 4: atlas of 4 images\n- 16: atlas of 16 images\nAtlases can be created using the Tile2x2 node.", +# "name": "select_inputs", +# "shortdesc": "Input", +# "type": "enum", +# "values": [ +# { +# "name": "1", +# "value": " " +# }, +# { +# "name": "4", +# "value": "pv = clamp(0.5*(pv+floor(rand2(seed)*2.0)), vec2(0.0), vec2(1.0));" +# }, +# { +# "name": "16", +# "value": "pv = clamp(0.25*(pv+floor(rand2(seed)*4.0)), vec2(0.0), vec2(1.0));" +# } +# ] +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Translate X", +# "longdesc": "The translation along the X axis applied to the instances", +# "max": 1, +# "min": 0, +# "name": "translate_x", +# "shortdesc": "Translate.x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Translate Y", +# "longdesc": "The translation along the Y axis applied to the instances", +# "max": 1, +# "min": 0, +# "name": "translate_y", +# "shortdesc": "Translate.y", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Rotate", +# "longdesc": "The angle of instances of the input", +# "max": 180, +# "min": 0, +# "name": "rotate", +# "shortdesc": "Rotate", +# "step": 0.1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Scale X", +# "longdesc": "The scale of input images on the X axis", +# "max": 2, +# "min": 0, +# "name": "scale_x", +# "shortdesc": "Scale.x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Scale Y", +# "longdesc": "The scale of input images on the Y axis", +# "max": 2, +# "min": 0, +# "name": "scale_y", +# "shortdesc": "Scale.y", +# "step": 0.01, +# "type": "float" +# }, +# { +# "default": false, +# "label": "Variations", +# "longdesc": "Check to tile variations of the input", +# "name": "variations", +# "shortdesc": "Variations", +# "type": "boolean" +# } +# ], + +#---------------------- +#tiler_color.mmg +#Tiles several occurences of an input image while adding randomness. + +#vec3 $(name_uv)_random_color;\n +#vec4 $(name_uv)_tiled_output = tiler_$(name)($uv, vec2($tx, $ty), int($overlap), vec2(float($seed)), $(name_uv)_random_color); + +#vec4 tiler_$(name)(vec2 uv, vec2 tile, int overlap, vec2 _seed, out vec3 random_color) {\n\t +# vec4 c = vec4(0.0);\n\t +# vec3 rc = vec3(0.0);\n\t +# vec3 rc1;\n\t +# +# for (int dx = -overlap; dx <= overlap; ++dx) {\n\t\t +# for (int dy = -overlap; dy <= overlap; ++dy) {\n\t\t\t +# vec2 pos = fract((floor(uv*tile)+vec2(float(dx), float(dy))+vec2(0.5))/tile-vec2(0.5));\n\t\t\t +# vec2 seed = rand2(pos+_seed);\n\t\t\t +# rc1 = rand3(seed);\n\t\t\t +# pos = fract(pos+vec2($fixed_offset/tile.x, 0.0)*floor(mod(pos.y*tile.y, 2.0))+$offset*seed/tile);\n\t\t\t +# float mask = $mask(fract(pos+vec2(0.5)));\n\t\t\t +# if (mask > 0.01) {\n\t\t\t\t +# vec2 pv = fract(uv - pos)-vec2(0.5);\n\t\t\t\t +# seed = rand2(seed);\n\t\t\t\t +# float angle = (seed.x * 2.0 - 1.0) * $rotate * 0.01745329251;\n\t\t\t\t +# float ca = cos(angle);\n\t\t\t\t +# float sa = sin(angle);\n\t\t\t\t +# pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);\n\t\t\t\t +# pv *= (seed.y-0.5)*2.0*$scale+1.0;\n\t\t\t\t +# pv /= vec2($scale_x, $scale_y);\n\t\t\t\t +# pv += vec2(0.5);\n\t\t\t\t +# pv = clamp(pv, vec2(0.0), vec2(1.0));\n\t\t\t\t +# +# $select_inputs\n\t\t\t\t +# +# vec4 n = $in.variation(pv, $variations ? seed.x : 0.0);\n\t\t\t\t +# +# seed = rand2(seed);\n\t\t\t\t +# float na = n.a*mask*(1.0-$opacity*seed.x);\n\t\t\t\t +# float a = (1.0-c.a)*(1.0*na);\n\t\t\t\t +# +# c = mix(c, n, na);\n\t\t\t\t +# rc = mix(rc, rc1, n.a);\n\t\t\t +# }\n\t\t +# }\n\t +# }\n\t +# +# random_color = rc;\n\t +# return c;\n +#} + + +#Inputs: + +#in, rgba, default: 0, - The input image or atlas of 4 or 16 input images +#Mask, float, default: 1, - The mask applied to the pattern + +#Outputs: +#Output, float, Shows the generated pattern +#$(name_uv)_tiled_output + +#Instance map, rgb, Shows a random color for each instance of the input image +#$(name_uv)_random_color + +#select_inputs enum +#1, " " +#4, "pv = clamp(0.5*(pv+floor(rand2(seed)*2.0)), vec2(0.0), vec2(1.0));" +#16, "pv = clamp(0.25*(pv+floor(rand2(seed)*4.0)), vec2(0.0), vec2(1.0));" + +#Parameters: +#tile, Vector2, default 4, min:1, max:64, step:1 - The number of columns of the tiles pattern +#overlap, float, default 1, min 0, max 5, step 1 - The number of neighbour tiles an instance of the input image can overlap. Set this parameter to the lowest value that generates the expected result (where all instances are fully visible) to improve performance. +#select_inputs (Inputs), enum, default 0, values 1, 4, 16 +#scale, Vector2, default 1, min:0, max:2, step:0.01 - "The scale of input images on the X axis +#fixed_offset, float, default 0.5, min 0, max 1, step 0.01 - The relative offset of odd rows +#offset (rnd_offset), float, default 0.5, min 0, max 1, step 0.01 +#rotate (rnd_rotate), float, default 0, min 0, max 180, step 0.1 +#scale (rnd_scale), float, default 0.5, min 0, max 1, step 0.01 - The random scale applied to each image instance +#opacity (rnd_opacity), float, default 0, min 0, max 1, step 0.01 - The random greyscale value applied to each image instance +#variations, bool, default false, (disabled) - Check to tile variations of the input + diff --git a/game/addons/mat_maker_gd/nodes/common/transforms.gd b/game/addons/mat_maker_gd/nodes/common/transforms.gd new file mode 100644 index 0000000..0037140 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/common/transforms.gd @@ -0,0 +1,1765 @@ +tool +extends Reference + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +#---------------------- +#transform.mmg +#Translates, rotates and scales its input + +# "inputs": [ +# { +# "default": "vec4($uv, 0.0, 1.0)", +# "label": "", +# "longdesc": "The input image to be transformed", +# "name": "i", +# "shortdesc": "Input", +# "type": "rgba" +# }, +# { +# "default": "1.0", +# "label": "", +# "longdesc": "An optional map for translation along the X axis", +# "name": "tx", +# "shortdesc": "TranslateMap.x", +# "type": "f" +# }, +# { +# "default": "1.0", +# "label": "", +# "longdesc": "An optional map for translation along the Y axis", +# "name": "ty", +# "shortdesc": "TranslateMap.y", +# "type": "f" +# }, +# { +# "default": "1.0", +# "label": "", +# "longdesc": "An optional map for rotation", +# "name": "r", +# "shortdesc": "RotateMap", +# "type": "f" +# }, +# { +# "default": "1.0", +# "label": "", +# "longdesc": "An optional map for scaling along the X axis", +# "name": "sx", +# "shortdesc": "ScaleMap.x", +# "type": "f" +# }, +# { +# "default": "1.0", +# "label": "", +# "longdesc": "An optional map for scaling along the Y axis", +# "name": "sy", +# "shortdesc": "ScaleMap.y", +# "type": "f" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the transformed image", +# "rgba": "$i(transform($uv, vec2($translate_x*(2.0*$tx($uv)-1.0), $translate_y*(2.0*$ty($uv)-1.0)), $rotate*0.01745329251*(2.0*$r($uv)-1.0), vec2($scale_x*(2.0*$sx($uv)-1.0), $scale_y*(2.0*$sy($uv)-1.0)), $repeat))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "control": "P1.x", +# "default": 0, +# "label": "2:Translate X:", +# "longdesc": "The translation along the X axis", +# "max": 1, +# "min": -1, +# "name": "translate_x", +# "shortdesc": "Translate.x", +# "step": 0.005, +# "type": "float" +# }, +# { +# "control": "P1.y", +# "default": 0, +# "label": "Translate Y:", +# "longdesc": "The translation along the Y axis", +# "max": 1, +# "min": -1, +# "name": "translate_y", +# "shortdesc": "Translate.y", +# "step": 0.005, +# "type": "float" +# }, +# { +# "control": "Radius1.a", +# "default": 0, +# "label": "Rotate:", +# "longdesc": "The rotation angle", +# "max": 720, +# "min": -720, +# "name": "rotate", +# "shortdesc": "Rotate", +# "step": 0.005, +# "type": "float" +# }, +# { +# "control": "Scale1.x", +# "default": 1, +# "label": "Scale X:", +# "longdesc": "The scaling factor along the X axis", +# "max": 50, +# "min": 0, +# "name": "scale_x", +# "shortdesc": "Scale.x", +# "step": 0.005, +# "type": "float" +# }, +# { +# "control": "Scale1.y", +# "default": 1, +# "label": "Scale Y:", +# "longdesc": "The scaling factor along the Y axis", +# "max": 50, +# "min": 0, +# "name": "scale_y", +# "shortdesc": "Scale.y", +# "step": 0.005, +# "type": "float" +# }, +# { +# "default": false, +# "label": "Repeat:", +# "longdesc": "Repeat the input if checked, clamps otherwise", +# "name": "repeat", +# "shortdesc": "Repeat", +# "type": "boolean" +# } +# ] + +#---------------------- +#transform2.mmg +#Translates, rotates and scales its input + + +# "inputs": [ +# { +# "default": "vec4($uv, 0.0, 1.0)", +# "label": "", +# "longdesc": "The input image to be transformed", +# "name": "i", +# "shortdesc": "Input", +# "type": "rgba" +# }, +# { +# "default": "1.0", +# "label": "", +# "longdesc": "An optional map for translation along the X axis", +# "name": "tx", +# "shortdesc": "TranslateMap.x", +# "type": "f" +# }, +# { +# "default": "1.0", +# "label": "", +# "longdesc": "An optional map for translation along the Y axis", +# "name": "ty", +# "shortdesc": "TranslateMap.y", +# "type": "f" +# }, +# { +# "default": "1.0", +# "label": "", +# "longdesc": "An optional map for rotation", +# "name": "r", +# "shortdesc": "RotateMap", +# "type": "f" +# }, +# { +# "default": "1.0", +# "label": "", +# "longdesc": "An optional map for scaling along the X axis", +# "name": "sx", +# "shortdesc": "ScaleMap.x", +# "type": "f" +# }, +# { +# "default": "1.0", +# "label": "", +# "longdesc": "An optional map for scaling along the Y axis", +# "name": "sy", +# "shortdesc": "ScaleMap.y", +# "type": "f" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the transformed image", +# "rgba": "$i($mode(transform2($uv, vec2($translate_x*(2.0*$tx($uv)-1.0), $translate_y*(2.0*$ty($uv)-1.0)), $rotate*0.01745329251*(2.0*$r($uv)-1.0), vec2($scale_x*(2.0*$sx($uv)-1.0), $scale_y*(2.0*$sy($uv)-1.0)))))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "control": "P1.x", +# "default": 0, +# "label": "2:Translate X:", +# "longdesc": "The translation along the X axis", +# "max": 1, +# "min": -1, +# "name": "translate_x", +# "shortdesc": "Translate.x", +# "step": 0.005, +# "type": "float" +# }, +# { +# "control": "P1.y", +# "default": 0, +# "label": "Translate Y:", +# "longdesc": "The translation along the Y axis", +# "max": 1, +# "min": -1, +# "name": "translate_y", +# "shortdesc": "Translate.y", +# "step": 0.005, +# "type": "float" +# }, +# { +# "control": "Radius1.a", +# "default": 0, +# "label": "Rotate:", +# "longdesc": "The rotation angle", +# "max": 720, +# "min": -720, +# "name": "rotate", +# "shortdesc": "Rotate", +# "step": 0.005, +# "type": "float" +# }, +# { +# "control": "Scale1.x", +# "default": 1, +# "label": "Scale X:", +# "longdesc": "The scaling factor along the X axis", +# "max": 50, +# "min": 0, +# "name": "scale_x", +# "shortdesc": "Scale.x", +# "step": 0.005, +# "type": "float" +# }, +# { +# "control": "Scale1.y", +# "default": 1, +# "label": "Scale Y:", +# "longdesc": "The scaling factor along the Y axis", +# "max": 50, +# "min": 0, +# "name": "scale_y", +# "shortdesc": "Scale.y", +# "step": 0.005, +# "type": "float" +# }, +# { +# "default": 0, +# "label": "Mode", +# "longdesc": "Defines the behavior beyond the limits or the input image:\n- Clamp stretches the edges\n- Repeat tiles the input\n- Extend shows parts of the input that are beyond the edges", +# "name": "mode", +# "shortdesc": "Mode", +# "type": "enum", +# "values": [ +# { +# "name": "Clamp", +# "value": "transform2_clamp" +# }, +# { +# "name": "Repeat", +# "value": "fract" +# }, +# { +# "name": "Extend", +# "value": "" +# } +# ] +# } +# ] + +#---------------------- +#translate.mmg +#Translates its input + +# "inputs": [ +# { +# "default": "vec4($uv, 0.0, 1.0)", +# "label": "", +# "longdesc": "The input image", +# "name": "i", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the translated image", +# "rgba": "$i($uv-vec2($translate_x, $translate_y))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "control": "P1.x", +# "default": 0, +# "label": "Translate X:", +# "longdesc": "The translation along the X axis", +# "max": 1, +# "min": -1, +# "name": "translate_x", +# "shortdesc": "Translate.x", +# "step": 0.005, +# "type": "float" +# }, +# { +# "control": "P1.y", +# "default": 0, +# "label": "Translate Y:", +# "longdesc": "The translation along the Y axis", +# "max": 1, +# "min": -1, +# "name": "translate_y", +# "shortdesc": "Translate.y", +# "step": 0.005, +# "type": "float" +# } +# ], + +#---------------------- +#rotate.mmg +#Rotates its input + +# "inputs": [ +# { +# "default": "vec4($uv, 0.0, 1.0)", +# "label": "", +# "longdesc": "The input image", +# "name": "i", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the rotated image", +# "rgba": "$i(rotate($uv, vec2(0.5+$cx, 0.5+$cy), $rotate*0.01745329251))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "control": "P1.x", +# "default": 0, +# "label": "Center X:", +# "longdesc": "The position of the rotation center", +# "max": 1, +# "min": -1, +# "name": "cx", +# "shortdesc": "Center.x", +# "step": 0.005, +# "type": "float" +# }, +# { +# "control": "P1.y", +# "default": 0, +# "label": "Center Y:", +# "longdesc": "The position of the rotation center", +# "max": 1, +# "min": -1, +# "name": "cy", +# "shortdesc": "Center.y", +# "step": 0.005, +# "type": "float" +# }, +# { +# "control": "Radius1.a", +# "default": 0, +# "label": "Rotate:", +# "longdesc": "The angle of the rotation", +# "max": 720, +# "min": -720, +# "name": "rotate", +# "shortdesc": "Angle", +# "step": 0.005, +# "type": "float" +# } +# ], + +#---------------------- +#scale.mmg +#Scales its input + +# "inputs": [ +# { +# "default": "vec4($uv, 0.0, 1.0)", +# "label": "", +# "longdesc": "The input image", +# "name": "i", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the scaled image", +# "rgba": "$i(scale($uv, vec2(0.5+$cx, 0.5+$cy), vec2($scale_x, $scale_y)))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "control": "P1.x", +# "default": 0, +# "label": "Center X:", +# "longdesc": "The position of the scale center", +# "max": 1, +# "min": -1, +# "name": "cx", +# "shortdesc": "Center.x", +# "step": 0.005, +# "type": "float" +# }, +# { +# "control": "P1.y", +# "default": 0, +# "label": "Center Y:", +# "longdesc": "The poisition of the scale center", +# "max": 1, +# "min": -1, +# "name": "cy", +# "shortdesc": "Center.y", +# "step": 0.005, +# "type": "float" +# }, +# { +# "control": "Scale1.x", +# "default": 1, +# "label": "Scale X:", +# "longdesc": "The scale amount along the X axis", +# "max": 50, +# "min": 0, +# "name": "scale_x", +# "shortdesc": "Scale.x", +# "step": 0.005, +# "type": "float" +# }, +# { +# "control": "Scale1.y", +# "default": 1, +# "label": "Scale Y:", +# "longdesc": "The scale amount along the Y axis", +# "max": 50, +# "min": 0, +# "name": "scale_y", +# "shortdesc": "Scale.y", +# "step": 0.005, +# "type": "float" +# } +# ], + +#---------------------- +#shear.mmg +#Performs a shear stress transform on its input + +# "inputs": [ +# { +# "default": "vec4(1.0)", +# "label": "", +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the transformed image", +# "rgba": "$in($uv+$amount*($uv.yx-vec2($center))*vec2($direction))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": 1, +# "label": "", +# "longdesc": "The direction of the shear transform (horizontal or vertical)", +# "name": "direction", +# "shortdesc": "Direction", +# "type": "enum", +# "values": [ +# { +# "name": "Horizontal", +# "value": "1.0, 0.0" +# }, +# { +# "name": "Vertical", +# "value": "0.0, 1.0" +# } +# ] +# }, +# { +# "control": "None", +# "default": 0, +# "label": "", +# "longdesc": "The amount of the transform", +# "max": 1, +# "min": -1, +# "name": "amount", +# "shortdesc": "Amount", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "", +# "longdesc": "The position of the shear center", +# "max": 1, +# "min": 0, +# "name": "center", +# "shortdesc": "Center", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#mirror.mmg +#Mirrors its input while applying an offset from the center + +# "inputs": [ +# { +# "default": "vec4($uv, 0, 1)", +# "label": "", +# "longdesc": "The input image", +# "name": "i", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the mirrored image", +# "rgba": "$i(uvmirror_$direction($uv, $offset))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": 0, +# "label": "", +# "longdesc": "The mirror direction (horizontal or vertical)", +# "name": "direction", +# "shortdesc": "Direction", +# "type": "enum", +# "values": [ +# { +# "name": "Horizontal", +# "value": "h" +# }, +# { +# "name": "Vertical", +# "value": "v" +# } +# ] +# }, +# { +# "control": "None", +# "default": 0, +# "label": "", +# "longdesc": "The offset from the center", +# "max": 1, +# "min": 0, +# "name": "offset", +# "shortdesc": "Offset", +# "step": 0.005, +# "type": "float" +# } +# ], + +#---------------------- +#kaleidoscope.mmg +#Replicated an angle of the input image several times around the center. + +# "inputs": [ +# { +# "default": "vec4($uv, 0, 1)", +# "label": "", +# "longdesc": "The input image", +# "name": "i", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the transformed image", +# "rgba": "$i(kal_rotate($uv, $count, $offset))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0, +# "label": "", +# "longdesc": "The number of replications of an angle of the input", +# "max": 10, +# "min": 2, +# "name": "count", +# "shortdesc": "Count", +# "step": 1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "", +# "longdesc": "The angular offset of the replicated angle of the input", +# "max": 180, +# "min": -180, +# "name": "offset", +# "shortdesc": "Offset", +# "step": 0.1, +# "type": "float" +# } +# ], + +#---------------------- +#warp.mmg +#Warps its input according to a heightmap + +# "code": "vec2 $(name_uv)_slope = $(name)_slope($uv, $eps);\nvec2 $(name_uv)_warp = $mode;", +# "global": "", +# "inputs": [ +# { +# "default": "vec4(sin($uv.x*20.0)*0.5+0.5, sin($uv.y*20.0)*0.5+0.5, 0, 1)", +# "label": "", +# "longdesc": "The input image to be warped", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# }, +# { +# "default": "0.0", +# "function": true, +# "label": "", +# "longdesc": "The height map whose slopes are used to deform the input", +# "name": "d", +# "shortdesc": "Height map", +# "type": "f" +# } +# ], +# "instance": "vec2 $(name)_slope(vec2 uv, float epsilon) {\n\treturn vec2($d(fract(uv+vec2(epsilon, 0.0)))-$d(fract(uv-vec2(epsilon, 0.0))), $d(fract(uv+vec2(0.0, epsilon)))-$d(fract(uv-vec2(0.0, epsilon))));\n}", +# "outputs": [ +# { +# "longdesc": "Shows the warped image", +# "rgba": "$in($uv+$amount*$(name_uv)_warp)", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": 0, +# "label": "", +# "longdesc": "Both warp modes extract their direction from the height map slopes:\n- Slope warp intensity only depends on the slope\n- Distance to top warp intensity depends on the slope and the distance to the top, and can be used to create mosaic-like patterns\n\nA Transform node with translate maps can produce effects similar to Slope Warp and is generally faster.", +# "name": "mode", +# "shortdesc": "Mode", +# "type": "enum", +# "values": [ +# { +# "name": "Slope", +# "value": "$(name_uv)_slope" +# }, +# { +# "name": "Distance to top", +# "value": "$(name_uv)_slope*(1.0-$d($uv))" +# } +# ] +# }, +# { +# "control": "None", +# "default": 0, +# "label": "", +# "longdesc": "The strength of the warp effect", +# "max": 1, +# "min": 0, +# "name": "amount", +# "shortdesc": "Strength", +# "step": 0.005, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "", +# "longdesc": "The offset used to measure slopes", +# "max": 0.2, +# "min": 0.005, +# "name": "eps", +# "shortdesc": "Epsilon", +# "step": 0.005, +# "type": "float" +# } +# ], + +#---------------------- +#warp2.mmg +#Warps its input according to a heightmap + +# "code": "vec2 $(name_uv)_slope = $(name)_slope($uv);\nvec2 $(name_uv)_warp = $mode;", +# "inputs": [ +# { +# "default": "vec4(sin($uv.x*20.0)*0.5+0.5, sin($uv.y*20.0)*0.5+0.5, 0, 1)", +# "label": "", +# "longdesc": "The input image to be warped", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# }, +# { +# "default": "0.0", +# "function": true, +# "label": "", +# "longdesc": "The height map whose slopes are used to deform the input", +# "name": "d", +# "shortdesc": "Height map", +# "type": "f" +# } +# ], +# "instance": "vec2 $(name)_slope(vec2 uv) {\n vec2 e = vec2(0.001, 0.0);\n return 0.5*vec2($d(uv+e)-$d(uv-e), $d(uv+e.yx)-$d(uv-e.yx))/e.x;\n}", +# "outputs": [ +# { +# "longdesc": "Shows the warped image", +# "rgba": "$in($uv+$amount*$(name_uv)_warp)", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": 0, +# "label": "", +# "longdesc": "Both warp modes extract their direction from the height map slopes:\n- Slope warp intensity only depends on the slope\n- Distance to top warp intensity depends on the slope and the distance to the top, and can be used to create mosaic-like patterns\n\nA Transform node with translate maps can produce effects similar to Slope Warp and is generally faster.", +# "name": "mode", +# "shortdesc": "Mode", +# "type": "enum", +# "values": [ +# { +# "name": "Slope", +# "value": "$(name_uv)_slope" +# }, +# { +# "name": "Distance to top", +# "value": "$(name_uv)_slope*(1.0-$d($uv))" +# } +# ] +# }, +# { +# "control": "None", +# "default": 0, +# "label": "", +# "longdesc": "The strength of the warp effect", +# "max": 1, +# "min": 0, +# "name": "amount", +# "shortdesc": "Strength", +# "step": 0.005, +# "type": "float" +# } +# ], + +#---------------------- +#circle_map.mmg +#Maps its input into a circle + +# "inputs": [ +# { +# "default": "vec4($uv, 0.0, 1.0)", +# "label": "", +# "longdesc": "The input image to be remapped", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the remapped image", +# "rgba": "$in(vec2(fract($repeat*atan($uv.y-0.5, $uv.x-0.5)*0.15915494309), min(0.99999, 2.0/$radius*length($uv-vec2(0.5)))))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 1, +# "label": "Radius", +# "longdesc": "The radius of the circle where the input is mapped", +# "max": 1.5, +# "min": 0, +# "name": "radius", +# "shortdesc": "Radius", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Repeat", +# "longdesc": "The number of repetitions of the input image around the circle", +# "max": 16, +# "min": 0, +# "name": "repeat", +# "shortdesc": "Repeat", +# "step": 1, +# "type": "float" +# } +# ], + +#---------------------- +#custom_uv.mmg +#Remaps an Input image using a custom UV map. + +# "code": "vec3 $(name_uv)_map = $map($uv);\nfloat $(name_uv)_rnd = float($seed)+$(name_uv)_map.z;\n", +# "inputs": [ +# { +# "default": "vec4(1.0)", +# "label": "Input", +# "longdesc": "The image or atlas of images to be remapped.", +# "name": "in", +# "shortdesc": "Input", +# "type": "rgba" +# }, +# { +# "default": "vec3(1.0)", +# "label": "UV", +# "longdesc": "The custom UV map to be used for remapping.", +# "name": "map", +# "shortdesc": "Map", +# "type": "rgb" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the remapped image", +# "rgba": "$in(get_from_tileset($inputs, $(name_uv)_rnd, custom_uv_transform($(name_uv)_map.xy, vec2($sx, $sy), $rotate*0.01745329251, $scale, vec2($(name_uv)_map.z, float($seed)))))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], +# "parameters": [ +# { +# "default": 0, +# "label": "Inputs", +# "longdesc": "The input type of the node:\n- 1: single image\n- 4: atlas of 4 images\n- 16: atlas of 16 images\nAtlases can be created using the Tile2x2 node.", +# "name": "inputs", +# "shortdesc": "Inputs", +# "type": "enum", +# "values": [ +# { +# "name": "1", +# "value": "1.0" +# }, +# { +# "name": "4", +# "value": "2.0" +# }, +# { +# "name": "16", +# "value": "4.0" +# } +# ] +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Scale X", +# "longdesc": "The scale of the input image along the X axis.", +# "max": 5, +# "min": 0, +# "name": "sx", +# "shortdesc": "Scale.x", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 1, +# "label": "Scale Y", +# "longdesc": "The scale of the input image along the Y axis.", +# "max": 5, +# "min": 0, +# "name": "sy", +# "shortdesc": "Scale.y", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Rnd Rotate", +# "longdesc": "The random rotation applied to each remapped instance.", +# "max": 180, +# "min": 0, +# "name": "rotate", +# "shortdesc": "RndRotate", +# "step": 0.1, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0.5, +# "label": "Rnd Scale", +# "longdesc": "The random scale applied to each remapped instance.", +# "max": 1, +# "min": 0, +# "name": "scale", +# "shortdesc": "RndScale", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#splatter.mmg +#Spreads several occurences of an input image randomly. + +#vec4 $(name_uv)_rch = splatter_$(name)($uv, int($count), vec2(float($seed))); + +#vec4 splatter_$(name)(vec2 uv, int count, vec2 seed) {\n\t +# float c = 0.0;\n\t +# vec3 rc = vec3(0.0);\n\t +# vec3 rc1;\n\t +# +# for (int i = 0; i < count; ++i) {\n\t\t +# seed = rand2(seed);\n\t\t +# rc1 = rand3(seed);\n\t\t +# float mask = $mask(fract(seed+vec2(0.5)));\n\t\t +# +# if (mask > 0.01) {\n\t\t\t +# vec2 pv = fract(uv - seed)-vec2(0.5);\n\t\t\t +# seed = rand2(seed);\n\t\t\t +# float angle = (seed.x * 2.0 - 1.0) * $rotate * 0.01745329251;\n\t\t\t +# float ca = cos(angle);\n\t\t\t +# float sa = sin(angle);\n\t\t\t +# pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);\n\t\t\t +# pv *= (seed.y-0.5)*2.0*$scale+1.0;\n\t\t\t +# pv /= vec2($scale_x, $scale_y);\n\t\t\t +# pv += vec2(0.5);\n\t\t\t +# seed = rand2(seed);\n\t\t\t +# vec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));\n\t\t\t +# +# if (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {\n\t\t\t\t +# continue;\n\t\t\t +# }\n\t\t\t +# +# $select_inputs\n\t\t\t +# +# float c1 = $in.variation(pv, $variations ? seed.x : 0.0)*mask*(1.0-$value*seed.x);\n\t\t\t +# c = max(c, c1);\n\t\t\t +# rc = mix(rc, rc1, step(c, c1));\n\t\t +# }\n\t +# }\n\t +# +# return vec4(rc, c);\n +#} + +#Inputs: + +#in, float, default: 0, - The input image or atlas of 4 or 16 input images +#Mask, float, default: 1, - The mask applied to the pattern + +#Outputs: +#Output, float, Shows the generated pattern +#$(name_uv)_rch.a + +#Instance map, rgb, Shows a random color for each instance of the input image +#$(name_uv)_rch.rgb + +#select_inputs enum +#1, " " +#4, "pv = clamp(0.5*(pv+floor(rand2(seed)*2.0)), vec2(0.0), vec2(1.0));" +#16, "pv = clamp(0.25*(pv+floor(rand2(seed)*4.0)), vec2(0.0), vec2(1.0));" + +#Parameters: +#count, int, default 25, min 1, max 100, - The number of occurences of the input image +#select_inputs (Inputs), enum, default 0, values 1, 4, 16 +#tile, Vector2, default 4, min:1, max:64, step:1 - The number of columns of the tiles pattern +#overlap, float, default 1, min 0, max 5, step 1 - The number of neighbour tiles an instance of the input image can overlap. Set this parameter to the lowest value that generates the expected result (where all instances are fully visible) to improve performance. +#scale, Vector2, default 1, min:0, max:2, step:0.01 - "The scale of input images on the X axis +#rotate (rnd_rotate), float, default 0, min 0, max 180, step 0.1 +#scale (rnd_scale), float, default 0, min 0, max 1, step 0.01 - The random scale applied to each image instance +#value (rnd_value), float, default 0, min 0, max 1, step 0.01 + +#---------------------- +#splatter_color.mmg +#preads several occurences of an input image randomly. + +#vec4 splatter_$(name)(vec2 uv, int count, vec2 seed) {\n\t +# vec4 c = vec4(0.0);\n\t +# +# for (int i = 0; i < count; ++i) {\n\t\t +# seed = rand2(seed);\n\t\t +# float mask = $mask(fract(seed+vec2(0.5)));\n\t\t +# +# if (mask > 0.01) {\n\t\t\t +# vec2 pv = fract(uv - seed)-vec2(0.5);\n\t\t\t +# seed = rand2(seed);\n\t\t\t +# float angle = (seed.x * 2.0 - 1.0) * $rotate * 0.01745329251;\n\t\t\t +# float ca = cos(angle);\n\t\t\t +# float sa = sin(angle);\n\t\t\t +# pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);\n\t\t\t +# pv *= (seed.y-0.5)*2.0*$scale+1.0;\n\t\t\t +# pv /= vec2($scale_x, $scale_y);\n\t\t\tpv += vec2(0.5);\n\t\t\t +# seed = rand2(seed);\n\t\t\t +# +# if (pv != clamp(pv, vec2(0.0), vec2(1.0))) {\n\t\t\t\t +# continue;\n\t\t\t +# }\n\t\t\t +# +# $select_inputs\n\t\t\t +# +# vec4 n = $in.variation(pv, $variations ? seed.x : 0.0);\n\t\t\t +# +# float na = n.a*mask*(1.0-$opacity*seed.x);\n\t\t\t +# float a = (1.0-c.a)*(1.0*na);\n\t\t\t +# c = mix(c, n, na);\n\t\t +# }\n\t +# }\n\t +# +# return c;\n +#} + +#Inputs: + +#in, rgba, default: 0, - The input image or atlas of 4 or 16 input images +#Mask, float, default: 1, - The mask applied to the pattern + +#Outputs: +#Output, rgba, Shows the generated pattern +#splatter_$(name)($uv, int($count), vec2(float($seed))) + +#select_inputs enum +#1, " " +#4, "pv = clamp(0.5*(pv+floor(rand2(seed)*2.0)), vec2(0.0), vec2(1.0));" +#16, "pv = clamp(0.25*(pv+floor(rand2(seed)*4.0)), vec2(0.0), vec2(1.0));" + +#Parameters: +#count, int, default 25, min 1, max 100, - The number of occurences of the input image +#select_inputs (Inputs), enum, default 0, values 1, 4, 16 +#tile, Vector2, default 4, min:1, max:64, step:1 - The number of columns of the tiles pattern +#overlap, float, default 1, min 0, max 5, step 1 - The number of neighbour tiles an instance of the input image can overlap. Set this parameter to the lowest value that generates the expected result (where all instances are fully visible) to improve performance. +#scale, Vector2, default 1, min:0, max:2, step:0.01 - "The scale of input images on the X axis +#rotate (rnd_rotate), float, default 0, min 0, max 180, step 0.1 +#scale (rnd_scale), float, default 0, min 0, max 1, step 0.01 - The random scale applied to each image instance +#value (rnd_value), float, default 0, min 0, max 1, step 0.01 +#variations bool + +#---------------------- +#circle_splatter.mmg +#Spreads several occurences of an input image in a circle or spiral pattern. + +#vec4 $(name_uv)_rch = splatter_$(name)($uv, int($count), int($rings), vec2(float($seed))); + +#vec4 splatter_$(name)(vec2 uv, int count, int rings, vec2 seed) {\n\t +# float c = 0.0;\n\t +# vec3 rc = vec3(0.0);\n\t +# vec3 rc1;\n\t +# seed = rand2(seed);\n\t +# +# for (int i = 0; i < count; ++i) {\n\t\t +# float a = -1.57079632679+6.28318530718*float(i)*$rings/float(count);\n\t\t +# float rings_distance = ceil(float(i+1)*float(rings)/float(count))/float(rings);\n\t\t +# float spiral_distance = float(i+1)/float(count);\n\t\t +# vec2 pos = $radius*mix(rings_distance, spiral_distance, $spiral)*vec2(cos(a), sin(a));\n\t\t +# float mask = $mask(fract(pos-vec2(0.5)));\n\t\t +# +# if (mask > 0.01) {\n\t\t\t +# vec2 pv = uv-0.5-pos;\n\t\t\t +# rc1 = rand3(seed);\n\t\t\tseed = rand2(seed);\n\t\t\t +# float angle = (seed.x * 2.0 - 1.0) * $rotate * 0.01745329251 + (a+1.57079632679) * $i_rotate;\n\t\t\t +# float ca = cos(angle);\n\t\t\t +# float sa = sin(angle);\n\t\t\t +# pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);\n\t\t\t +# pv /= mix(1.0, float(i+1)/float(count+1), $i_scale);\n\t\t\t +# pv /= vec2($scale_x, $scale_y);\n\t\t\t +# pv *= (seed.y-0.5)*2.0*$scale+1.0;\n\t\t\t +# pv += vec2(0.5);\n\t\t\tseed = rand2(seed);\n\t\t\t +# +# if (pv != clamp(pv, vec2(0.0), vec2(1.0))) {\n\t\t\t\t +# continue;\n\t\t\t +# }\n\t\t\t +# +# $select_inputs\n\t\t\t +# +# float c1 = $in(pv)*mask*(1.0-$value*seed.x);\n\t\t\t +# +# c = max(c, c1);\n\t\t\trc = mix(rc, rc1, step(c, c1));\n\t\t +# }\n\t +# }\n\t +# +# return vec4(rc, c);\n +#} + + +#Inputs: + +#in, float, default: 0, - The input image or atlas of 4 or 16 input images +#Mask, float, default: 1, - The mask applied to the pattern + +#Outputs: +#Output, float, Shows the generated pattern +#$(name_uv)_rch.rgb + +#select_inputs enum +#1, " " +#4, "pv = clamp(0.5*(pv+floor(rand2(seed)*2.0)), vec2(0.0), vec2(1.0));" +#16, "pv = clamp(0.25*(pv+floor(rand2(seed)*4.0)), vec2(0.0), vec2(1.0));" + +#Parameters: +#count, int, default 10, min 1, max 256, - The number of occurences of the input image +#rings, int, default 1, min 1, max 16, - The number of occurences of the input image +#select_inputs (Inputs), enum, default 0, values 1, 4, 16 +#scale, Vector2, default 1, min:0, max:2, step:0.01 - "The scale of input images on the X axis +#radius, float, default 0.4, min 0, max 0.5, step 0.01 +#spiral, float, default 0, min 0, max 1, step 0.01 +#i_rotate (inc_rotate), float, default 0, min 0, max 180, step 0.1 +#i_scale (inc_scale), float, default 0, min 0, max 1, step 0.01 +#rotate (rnd_rotate), float, default 0, min 0, max 180, step 0.1 +#scale (rnd_scale), float, default 0, min 0, max 1, step 0.01 - The random scale applied to each image instance +#value (rnd_value), float, default 0, min 0, max 1, step 0.01 + +#---------------------- +#warp_dilation.mmg + +#{ +# "connections": [ +# { +# "from": "warp_dilation", +# "from_port": 0, +# "to": "buffer_5", +# "to_port": 0 +# }, +# { +# "from": "buffer_5", +# "from_port": 0, +# "to": "gen_outputs", +# "to_port": 0 +# }, +# { +# "from": "gen_inputs", +# "from_port": 1, +# "to": "buffer_6", +# "to_port": 0 +# }, +# { +# "from": "buffer_6", +# "from_port": 0, +# "to": "warp_dilation", +# "to_port": 1 +# }, +# { +# "from": "gen_inputs", +# "from_port": 0, +# "to": "buffer_7", +# "to_port": 0 +# }, +# { +# "from": "buffer_7", +# "from_port": 0, +# "to": "warp_dilation", +# "to_port": 0 +# } +# ], +# "label": "Warp Dilation", +# "longdesc": "", +# "name": "warp_dilation", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "nodes": [ +# { +# "name": "buffer_5", +# "node_position": { +# "x": -387.923584, +# "y": -38 +# }, +# "parameters": { +# "lod": 0, +# "size": 9 +# }, +# "type": "buffer" +# }, +# { +# "name": "buffer_6", +# "node_position": { +# "x": -636.189514, +# "y": -90.757477 +# }, +# "parameters": { +# "lod": 0, +# "size": 9 +# }, +# "type": "buffer" +# }, +# { +# "name": "buffer_7", +# "node_position": { +# "x": -635.189514, +# "y": -199.757477 +# }, +# "parameters": { +# "lod": 0, +# "size": 9 +# }, +# "type": "buffer" +# }, +# { +# "name": "warp_dilation", +# "node_position": { +# "x": -404.125, +# "y": -172.25 +# }, +# "parameters": { +# "a": 0, +# "d": 0.5, +# "mode": 0, +# "s": 9 +# }, +# "type": "warp_dilation_nobuf" +# }, +# { +# "name": "gen_inputs", +# "node_position": { +# "x": -1127.189453, +# "y": -144.691238 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "name": "port1", +# "type": "f" +# }, +# { +# "group_size": 0, +# "name": "port0", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_outputs", +# "node_position": { +# "x": -70.923584, +# "y": -122.691238 +# }, +# "parameters": { +# +# }, +# "ports": [ +# { +# "group_size": 0, +# "name": "port0", +# "type": "f" +# } +# ], +# "type": "ios" +# }, +# { +# "name": "gen_parameters", +# "node_position": { +# "x": -463.856934, +# "y": -398.757477 +# }, +# "parameters": { +# "a": 0, +# "d": 0.5, +# "mode": 0, +# "s": 9 +# }, +# "type": "remote", +# "widgets": [ +# { +# "label": "Mode", +# "linked_widgets": [ +# { +# "node": "warp_dilation", +# "widget": "mode" +# } +# ], +# "name": "mode", +# "type": "linked_control" +# }, +# { +# "label": "Resolution", +# "linked_widgets": [ +# { +# "node": "warp_dilation", +# "widget": "s" +# }, +# { +# "node": "buffer_7", +# "widget": "size" +# }, +# { +# "node": "buffer_6", +# "widget": "size" +# }, +# { +# "node": "buffer_5", +# "widget": "size" +# } +# ], +# "name": "s", +# "type": "linked_control" +# }, +# { +# "label": "Distance", +# "linked_widgets": [ +# { +# "node": "warp_dilation", +# "widget": "d" +# } +# ], +# "name": "d", +# "type": "linked_control" +# }, +# { +# "label": "Attenuation", +# "linked_widgets": [ +# { +# "node": "warp_dilation", +# "widget": "a" +# } +# ], +# "name": "a", +# "type": "linked_control" +# } +# ] +# } +# ], +# "parameters": { +# "a": 0, +# "d": 0.5, +# "mode": 0, +# "s": 9 +# }, +# "shortdesc": "", +# "type": "graph" +#} + +#---------------------- +#warp_dilation_nobuf.mmg + +#{ +# "name": "warp_dilation", +# "node_position": { +# "x": 0, +# "y": 0 +# }, +# "parameters": { +# "a": 0, +# "d": 0.5, +# "mode": 0, +# "s": 9 +# }, +# "shader_model": { +# "code": "", +# "global": "", +# "inputs": [ +# { +# "default": "0.0", +# "function": true, +# "label": "", +# "longdesc": "The input image", +# "name": "in", +# "shortdesc": "Input", +# "type": "f" +# }, +# { +# "default": "0.0", +# "function": true, +# "label": "", +# "longdesc": "The height map whose contours or slopes are followed", +# "name": "hm", +# "shortdesc": "Height map", +# "type": "f" +# } +# ], +# "instance": "vec2 $(name)_slope(vec2 uv, float epsilon) {\n\tfloat dx = $hm(fract(uv+vec2(epsilon, 0.0)))-$hm(fract(uv-vec2(epsilon, 0.0)));\n\tfloat dy = $hm(fract(uv+vec2(0.0, epsilon)))-$hm(fract(uv-vec2(0.0, epsilon)));\n\treturn vec2($mode);\n}\n\nfloat $(name)_dilate(vec2 uv, vec2 slope) {\n\tfloat e = 1.0/$s;\n\tfloat v = 0.0;\n\tfor (float x = 0.0; x <= $d; x += e) {\n\t\tv = max(v, $in(fract(uv))*(1.0-x/$d*$a));\n\t\tuv += e*normalize($(name)_slope(uv, 0.0001));\n\t}\n\treturn v;\n}", +# "longdesc": "Dilates its input following the contours or slope of an input heightmap", +# "name": "Warp Dilation", +# "outputs": [ +# { +# "f": "$(name)_dilate($uv, normalize($(name)_slope($uv, 0.001)))", +# "longdesc": "The dilated image", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "default": 0, +# "label": "Mode", +# "longdesc": "The dilate mode (clockwise contour, counter clockwise contour or slope)", +# "name": "mode", +# "shortdesc": "Mode", +# "type": "enum", +# "values": [ +# { +# "name": "Contour (cw)", +# "value": "-dy,dx" +# }, +# { +# "name": "Contour (ccw)", +# "value": "dy, -dx" +# }, +# { +# "name": "Slope", +# "value": "dx,dy" +# } +# ] +# }, +# { +# "default": 9, +# "first": 6, +# "label": "Resolution", +# "last": 12, +# "longdesc": "The resolution at which the contours or slopes are followed (higher values will be more precise but rendering time will be higher)", +# "name": "s", +# "shortdesc": "Resolution", +# "type": "size" +# }, +# { +# "control": "None", +# "default": 0.1, +# "label": "Distance", +# "longdesc": "The distance along which the contours or slopes are followed", +# "max": 0.5, +# "min": 0, +# "name": "d", +# "shortdesc": "Distance", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Attenuation", +# "longdesc": "The attenuation applied along the path", +# "max": 1, +# "min": 0, +# "name": "a", +# "shortdesc": "Attenuation", +# "step": 0.01, +# "type": "float" +# } +# ], +# "shortdesc": "Warp Dilation" +# }, +# "type": "shader" +#} + +#---------------------- +#repeat.mmg +#Translates, rotates and scales its input + +# "inputs": [ +# { +# "default": "vec4($uv, 0.0, 1.0)", +# "label": "", +# "longdesc": "The input image to be transformed", +# "name": "i", +# "shortdesc": "Input", +# "type": "rgba" +# } +# ], +# "outputs": [ +# { +# "longdesc": "Shows the transformed image", +# "rgba": "$i(fract($uv))", +# "shortdesc": "Output", +# "type": "rgba" +# } +# ], + +#---------------------- +#remap.mmg +#The remapped image map + +# "code": "float $(name_uv)_x = $in($uv)*($max-$min);", +# "inputs": [ +# { +# "default": "0.0", +# "label": "", +# "longdesc": "The greyscale input map", +# "name": "in", +# "shortdesc": "Input", +# "type": "f" +# } +# ], +# "outputs": [ +# { +# "f": "$min+$(name_uv)_x-mod($(name_uv)_x, max($step, 0.00000001))", +# "longdesc": "The remapped image map", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0, +# "label": "Min", +# "longdesc": "The value generated for black areas of the input", +# "max": 10, +# "min": -10, +# "name": "min", +# "shortdesc": "Min", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Max", +# "longdesc": "The value generated for white areas of the input", +# "max": 10, +# "min": -10, +# "name": "max", +# "shortdesc": "Max", +# "step": 0.01, +# "type": "float" +# }, +# { +# "control": "None", +# "default": 0, +# "label": "Step", +# "longdesc": "The step between generated values", +# "max": 1, +# "min": 0, +# "name": "step", +# "shortdesc": "Step", +# "step": 0.01, +# "type": "float" +# } +# ], + +#---------------------- +#height_to_angle.mmg +#Generates an angle map to be used by Advances Tiler nodes from a heightmap + +# "inputs": [ +# { +# "default": "0.0", +# "function": true, +# "label": "", +# "longdesc": "The input heightmap", +# "name": "in", +# "shortdesc": "Input", +# "type": "f" +# } +# ], +# "instance": "float $(name)_fct(vec2 uv, float epsilon) {\n\tvec3 e = vec3(epsilon, -epsilon, 0);\n\tvec2 rv = vec2(1.0, -1.0)*$in(uv+e.xy);\n\trv += vec2(-1.0, 1.0)*$in(uv-e.xy);\n\trv += vec2(1.0, 1.0)*$in(uv+e.xx);\n\trv += vec2(-1.0, -1.0)*$in(uv-e.xx);\n\trv += vec2(2.0, 0.0)*$in(uv+e.xz);\n\trv += vec2(-2.0, 0.0)*$in(uv-e.xz);\n\trv += vec2(0.0, 2.0)*$in(uv+e.zx);\n\trv += vec2(0.0, -2.0)*$in(uv-e.zx);\n\treturn atan(rv.y, rv.x)/3.141592;\n}", +# "outputs": [ +# { +# "f": "$(name)_fct($uv, 0.0001)+$angle/180.0", +# "longdesc": "The generated angle map. Values are between -1 and 1 and the corresponding Advanced Tiler parameter (Rotate) must be set to 180.", +# "shortdesc": "Output", +# "type": "f" +# } +# ], +# "parameters": [ +# { +# "control": "None", +# "default": 0, +# "label": "", +# "longdesc": "The offset angle applied to the generated map", +# "max": 180, +# "min": -180, +# "name": "angle", +# "shortdesc": "Angle", +# "step": 0.01, +# "type": "float" +# } +# ], + +#vec2 transform(vec2 uv, vec2 translate, float rotate, vec2 scale, bool repeat) {\n \t +# vec2 rv;\n\t +# uv -= translate;\n\t +# uv -= vec2(0.5);\n\t +# rv.x = cos(rotate)*uv.x + sin(rotate)*uv.y;\n\t +# rv.y = -sin(rotate)*uv.x + cos(rotate)*uv.y;\n\t +# rv /= scale;\n\t +# rv += vec2(0.5);\n +# +# if (repeat) {\n\t\t +# return fract(rv);\n\t +# } else {\n\t\t +# return clamp(rv, vec2(0.0), vec2(1.0));\n\t +# }\t\n +#} + +static func transform(uv : Vector2, translate : Vector2, rotate : float, scale : Vector2, repeat : bool) -> Vector2: + var rv : Vector2 = Vector2() + uv -= translate + uv -= Vector2(0.5, 0.5) + rv.x = cos(rotate)*uv.x + sin(rotate)*uv.y + rv.y = -sin(rotate)*uv.x + cos(rotate)*uv.y + rv /= scale + rv += Vector2(0.5, 0.5) + + if (repeat): + return Commons.fractv2(rv) + else: + return Commons.clampv2(rv, Vector2(0, 0), Vector2(1, 1)) + +#vec2 transform2_clamp(vec2 uv) {\n\t +# return clamp(uv, vec2(0.0), vec2(1.0));\n +#} + +static func transform2_clamp(uv : Vector2) -> Vector2: + return Commons.clampv2(uv, Vector2(0, 0), Vector2(1, 1)) + +#vec2 transform2(vec2 uv, vec2 translate, float rotate, vec2 scale) {\n \t +# vec2 rv;\n\t +# uv -= translate;\n\t +# uv -= vec2(0.5);\n\t +# rv.x = cos(rotate)*uv.x + sin(rotate)*uv.y;\n\t +# rv.y = -sin(rotate)*uv.x + cos(rotate)*uv.y;\n\t +# rv /= scale;\n\t +# rv += vec2(0.5);\n\t +# return rv;\t\n +#} + +static func transform2(uv : Vector2, translate : Vector2, rotate : float, scale : Vector2) -> Vector2: + var rv : Vector2 = Vector2() + uv -= translate + uv -= Vector2(0.5, 0.5) + rv.x = cos(rotate)*uv.x + sin(rotate)*uv.y + rv.y = -sin(rotate)*uv.x + cos(rotate)*uv.y + rv /= scale + rv += Vector2(0.5, 0.5) + return rv + +#vec2 rotate(vec2 uv, vec2 center, float rotate) {\n \t +# vec2 rv;\n\t +# uv -= center;\n\t +# rv.x = cos(rotate)*uv.x + sin(rotate)*uv.y;\n\t +# rv.y = -sin(rotate)*uv.x + cos(rotate)*uv.y;\n\t +# rv += center;\n +# return rv;\t\n +#} + +static func rotate(uv : Vector2, center : Vector2, rotate : float) -> Vector2: + var rv : Vector2 = Vector2() + uv -= center + rv.x = cos(rotate)*uv.x + sin(rotate)*uv.y + rv.y = -sin(rotate)*uv.x + cos(rotate)*uv.y + rv += center + return rv + +#vec2 scale(vec2 uv, vec2 center, vec2 scale) {\n\t +# uv -= center;\n\t +# uv /= scale;\n\t +# uv += center;\n +# return uv;\n +#} + +static func scale(uv : Vector2, center : Vector2, scale : Vector2) -> Vector2: + uv -= center + uv /= scale + uv += center + return uv + +#vec2 uvmirror_h(vec2 uv, float offset) {\n\t +# return vec2(max(0, abs(uv.x-0.5)-0.5*offset)+0.5, uv.y); +#} + +static func uvmirror_h(uv : Vector2, offset : float) -> Vector2: + return Vector2(max(0, abs(uv.x - 0.5) - 0.5 * offset)+0.5, uv.y) + +#vec2 uvmirror_v(vec2 uv, float offset) {\n\t +# return vec2(uv.x, max(0, abs(uv.y-0.5)-0.5*offset)+0.5);\n +#} + +static func uvmirror_v(uv : Vector2, offset : float) -> Vector2: + return Vector2(uv.x, max(0, abs(uv.y - 0.5) - 0.5 * offset) + 0.5) + +#vec2 kal_rotate(vec2 uv, float count, float offset) {\n\t +# float pi = 3.14159265359;\n\t +# offset *= pi/180.0;\n\t +# offset += pi*(1.0/count+0.5);\n\t +# uv -= vec2(0.5);\n\t +# +# float l = length(uv);\n\t +# float a = mod(atan(uv.y, uv.x)+offset, 2.0*pi/count)-offset;\n\t +# +# return vec2(0.5)+l*vec2(cos(a), sin(a));\n +#} + +static func kal_rotate(uv : Vector2, count : float, offset : float) -> Vector2: + var pi : float = 3.14159265359 + offset *= pi / 180.0 + offset += pi * (1.0/ count + 0.5) + uv -= Vector2(0.5, 0.5) + + var l : float = uv.length() + var a : float = Commons.modf(atan2(uv.y, uv.x) + offset, 2.0 * pi / count) - offset + + return Vector2(0.5, 0.5) + l * Vector2(cos(a), sin(a)) + +#vec2 get_from_tileset(float count, float seed, vec2 uv) {\n\t +# return clamp((uv+floor(rand2(vec2(seed))*count))/count, vec2(0.0), vec2(1.0));\n +#} + +static func get_from_tileset(count : float, pseed : float, uv : Vector2) -> Vector2: + return Commons.clampv2((uv + Commons.floorv2(Commons.rand2(Vector2(pseed, pseed))*count))/count, Vector2(0, 0), Vector2(1, 1)) + +#vec2 custom_uv_transform(vec2 uv, vec2 cst_scale, float rnd_rotate, float rnd_scale, vec2 seed) {\n\t +# seed = rand2(seed);\n\t +# uv -= vec2(0.5);\n\t +# float angle = (seed.x * 2.0 - 1.0) * rnd_rotate;\n\t +# float ca = cos(angle);\n\t +# float sa = sin(angle);\n\t +# uv = vec2(ca*uv.x+sa*uv.y, -sa*uv.x+ca*uv.y);\n\t +# uv *= (seed.y-0.5)*2.0*rnd_scale+1.0;\n\t +# uv /= cst_scale;\n\t +# uv += vec2(0.5);\n\t +# +# return uv;\n +#} + +static func custom_uv_transform(uv : Vector2, cst_scale : Vector2, rnd_rotate : float, rnd_scale : float, pseed : Vector2) -> Vector2: + pseed = Commons.rand2(pseed) + uv -= Vector2(0.5, 0.5) + var angle : float = (pseed.x * 2.0 - 1.0) * rnd_rotate + var ca : float = cos(angle) + var sa : float = sin(angle) + uv = Vector2(ca * uv.x + sa * uv.y, -sa * uv.x + ca * uv.y) + uv *= (pseed.y-0.5)*2.0*rnd_scale+1.0 + uv /= cst_scale + uv += Vector2(0.5, 0.5) + + return uv diff --git a/game/addons/mat_maker_gd/nodes/filter/adjust_hsv.gd b/game/addons/mat_maker_gd/nodes/filter/adjust_hsv.gd new file mode 100644 index 0000000..664ff95 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/adjust_hsv.gd @@ -0,0 +1,75 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Filter = preload("res://addons/mat_maker_gd/nodes/common/filter.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(float) var hue : float = 0 +export(float) var saturation : float = 1 +export(float) var value : float = 1 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input1 " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_float("get_hue", "set_hue", "Hue", 0.01) + mm_graph_node.add_slot_float("get_saturation", "set_saturation", "Saturation", 0.01) + mm_graph_node.add_slot_float("get_value", "set_value", "Value", 0.01) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var c : Color = input.get_value(uv) + + return Filter.adjust_hsv(c, hue, saturation, value) + +#hue +func get_hue() -> float: + return hue + +func set_hue(val : float) -> void: + hue = val + + set_dirty(true) + +#saturation +func get_saturation() -> float: + return saturation + +func set_saturation(val : float) -> void: + saturation = val + + set_dirty(true) + +#value +func get_value() -> float: + return value + +func set_value(val : float) -> void: + value = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/filter/blend.gd b/game/addons/mat_maker_gd/nodes/filter/blend.gd new file mode 100644 index 0000000..ffeed8a --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/blend.gd @@ -0,0 +1,125 @@ +tool +extends MMNode + +var Filter = preload("res://addons/mat_maker_gd/nodes/common/filter.gd") + +enum BlendType { + NORMAL = 0, + DISSOLVE, + MULTIPLY, + SCREEN, + OVERLAY, + HARD_LIGHT, + SOFT_LIGHT, + BURN, + DODGE, + LIGHTEN, + DARKEN, + DIFFRENCE +} + +export(Resource) var image : Resource +export(Resource) var input1 : Resource +export(Resource) var input2 : Resource +export(int, "Normal,Dissolve,Multiply,Screen,Overlay,Hard Light,Soft Light,Burn,Dodge,Lighten,Darken,Difference") var blend_type : int = 0 +export(Resource) var opacity : Resource + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !input1: + input1 = MMNodeUniversalProperty.new() + input1.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input1.set_default_value(Color(1, 1, 1, 1)) + + input1.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input1.slot_name = ">>> Input1 " + + if !input2: + input2 = MMNodeUniversalProperty.new() + input2.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input2.set_default_value(Color(1, 1, 1, 1)) + + input2.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input2.slot_name = ">>> Input2 " + + if !opacity: + opacity = MMNodeUniversalProperty.new() + opacity.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + opacity.set_default_value(0.5) + opacity.value_range = Vector2(0, 1) + opacity.value_step = 0.01 + + opacity.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + opacity.slot_name = "opacity" + + register_input_property(input1) + register_input_property(input2) + + register_output_property(image) + register_input_property(opacity) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_enum("get_blend_type", "set_blend_type", "blend_type", [ "Normal", "Dissolve", "Multiply", "Screen", "Overlay", "Hard Light", "Soft Light", "Burn", "Dodge", "Lighten", "Darken", "Difference" ]) + + mm_graph_node.add_slot_label_universal(input1) + mm_graph_node.add_slot_label_universal(input2) + mm_graph_node.add_slot_float_universal(opacity) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var b : Vector3 = Vector3() + + #vec4 $(name_uv)_s1 = $s1($uv); + var s1 : Color = input1.get_value(uv) + #vec4 $(name_uv)_s2 = $s2($uv); + var s2 : Color = input2.get_value(uv) + #float $(name_uv)_a = $amount*$a($uv); + var a : float = opacity.get_value(uv) + + #vec4(blend_$blend_type($uv, $(name_uv)_s1.rgb, $(name_uv)_s2.rgb, $(name_uv)_a*$(name_uv)_s1.a), min(1.0, $(name_uv)_s2.a+$(name_uv)_a*$(name_uv)_s1.a)) + + #"Normal,Dissolve,Multiply,Screen,Overlay,Hard Light,Soft Light,Burn,Dodge,Lighten,Darken,Difference" + if blend_type == BlendType.NORMAL: + b = Filter.blend_normal(uv, Vector3(s1.r, s1.g, s1.b), Vector3(s2.r, s2.g, s2.b), a * s1.a) + elif blend_type == BlendType.DISSOLVE: + b = Filter.blend_dissolve(uv, Vector3(s1.r, s1.g, s1.b), Vector3(s2.r, s2.g, s2.b), a * s1.a) + elif blend_type == BlendType.MULTIPLY: + b = Filter.blend_multiply(uv, Vector3(s1.r, s1.g, s1.b), Vector3(s2.r, s2.g, s2.b), a * s1.a) + elif blend_type == BlendType.SCREEN: + b = Filter.blend_screen(uv, Vector3(s1.r, s1.g, s1.b), Vector3(s2.r, s2.g, s2.b), a * s1.a) + elif blend_type == BlendType.OVERLAY: + b = Filter.blend_overlay(uv, Vector3(s1.r, s1.g, s1.b), Vector3(s2.r, s2.g, s2.b), a * s1.a) + elif blend_type == BlendType.HARD_LIGHT: + b = Filter.blend_hard_light(uv, Vector3(s1.r, s1.g, s1.b), Vector3(s2.r, s2.g, s2.b), a * s1.a) + elif blend_type == BlendType.SOFT_LIGHT: + b = Filter.blend_soft_light(uv, Vector3(s1.r, s1.g, s1.b), Vector3(s2.r, s2.g, s2.b), a * s1.a) + elif blend_type == BlendType.BURN: + b = Filter.blend_burn(uv, Vector3(s1.r, s1.g, s1.b), Vector3(s2.r, s2.g, s2.b), a * s1.a) + elif blend_type == BlendType.DODGE: + b = Filter.blend_dodge(uv, Vector3(s1.r, s1.g, s1.b), Vector3(s2.r, s2.g, s2.b), a * s1.a) + elif blend_type == BlendType.LIGHTEN: + b = Filter.blend_lighten(uv, Vector3(s1.r, s1.g, s1.b), Vector3(s2.r, s2.g, s2.b), a * s1.a) + elif blend_type == BlendType.DARKEN: + b = Filter.blend_darken(uv, Vector3(s1.r, s1.g, s1.b), Vector3(s2.r, s2.g, s2.b), a * s1.a) + elif blend_type == BlendType.DIFFRENCE: + b = Filter.blend_difference(uv, Vector3(s1.r, s1.g, s1.b), Vector3(s2.r, s2.g, s2.b), a * s1.a) + + return Color(b.x, b.y, b.z, min(1, s2.a + a * s1.a)) + +func get_blend_type() -> int: + return blend_type + +func set_blend_type(val : int) -> void: + blend_type = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/filter/blur_gaussian.gd b/game/addons/mat_maker_gd/nodes/filter/blur_gaussian.gd new file mode 100644 index 0000000..afcfcb2 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/blur_gaussian.gd @@ -0,0 +1,220 @@ +tool +extends MMNode + +var Filter = preload("res://addons/mat_maker_gd/nodes/common/filter.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(Resource) var sigma : Resource +export(int, "Both,X,Y") var direction : int = 0 + +var size : int = 0 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color()) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input1 " + + if !sigma: + sigma = MMNodeUniversalProperty.new() + sigma.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + sigma.set_default_value(50) + + sigma.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + sigma.slot_name = "Sigma" + + register_input_property(input) + register_output_property(image) + register_input_property(sigma) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_int_universal(sigma) + + mm_graph_node.add_slot_enum("get_direction", "set_direction", "Direction", [ "Both", "X", "Y" ]) + + +func _render(material) -> void: + size = max(material.image_size.x, material.image_size.y) + + var img : Image = render_image(material) + + image.set_value(img) + +func render_image(material) -> Image: + var img : Image = Image.new() + img.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + + img.lock() + + var w : float = img.get_width() + var h : float = img.get_width() + + var pseed : float = randf() + randi() + + if direction == 0: + for x in range(img.get_width()): + for y in range(img.get_height()): + var v : Vector2 = Vector2(x / w, y / h) + var col : Color = get_value_x(v, pseed) + img.set_pixel(x, y, col) + + img.unlock() + image.set_value(img) + + var image2 : Image = Image.new() + image2.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + image2.lock() + + for x in range(img.get_width()): + for y in range(img.get_height()): + var v : Vector2 = Vector2(x / w, y / h) + var col : Color = get_value_y_img(v, pseed) + image2.set_pixel(x, y, col) + + image2.unlock() + + return image2 + + if direction == 1: + for x in range(img.get_width()): + for y in range(img.get_height()): + var v : Vector2 = Vector2(x / w, y / h) + var col : Color = get_value_x(v, pseed) + img.set_pixel(x, y, col) + + if direction == 2: + for x in range(img.get_width()): + for y in range(img.get_height()): + var v : Vector2 = Vector2(x / w, y / h) + var col : Color = get_value_y(v, pseed) + img.set_pixel(x, y, col) + + img.unlock() + + return img + +func get_value_x(uv : Vector2, pseed : int) -> Color: + var sig_def : float = sigma.get_default_value(uv) + var sig : float = sigma.get_value(uv) + + return gaussian_blur_x(uv, size, sig_def, sig) + +func get_value_y(uv : Vector2, pseed : int) -> Color: + var sig_def : float = sigma.get_default_value(uv) + var sig : float = sigma.get_value(uv) + + return gaussian_blur_y(uv, size, sig_def, sig) + +func get_value_y_img(uv : Vector2, pseed : int) -> Color: + var sig_def : float = sigma.get_default_value(uv) + var sig : float = sigma.get_value(uv) + + return gaussian_blur_y_img(uv, size, sig_def, sig) + +func get_direction() -> int: + return direction + +func set_direction(val : int) -> void: + direction = val + + set_dirty(true) + +#---------------------- +#gaussian_blur_x.mmg + +#vec4 $(name)_fct(vec2 uv) { +# float e = 1.0 / $size; +# vec4 rv = vec4(0.0); +# float sum = 0.0; +# float sigma = max(0.000001, $sigma * $amount(uv)); +# +# for (float i = -50.0; i <= 50.0; i += 1.0) { +# float coef = exp(-0.5 * (pow(i / sigma, 2.0))) / (6.28318530718 * sigma * sigma); +# rv += $in(uv+vec2(i*e, 0.0))*coef; +# sum += coef; +# } +# +# return rv/sum; +#} + +func gaussian_blur_x(uv : Vector2, psize : float, psigma : float, pamount : float) -> Color: + var e : float = 1.0 / psize + var rv : Color = Color() + var sum : float = 0.0 + var sigma : float = max(0.000001, psigma * pamount)#pamount(uv)) + + var i : float = -50 + + while i <= 50: #for (float i = -50.0; i <= 50.0; i += 1.0) { + var coef : float = exp(-0.5 * (pow(i / sigma, 2.0))) / (6.28318530718 * sigma * sigma) + rv += input.get_value(uv + Vector2(i*e, 0.0)) * coef + sum += coef + + i += 1 + + return rv / sum; + + +#---------------------- +#gaussian_blur_y.mmg + +#vec4 $(name)_fct(vec2 uv) { +# float e = 1.0/$size; +# vec4 rv = vec4(0.0); +# float sum = 0.0; +# float sigma = max(0.000001, $sigma*$amount(uv)); +# for (float i = -50.0; i <= 50.0; i += 1.0) { +# float coef = exp(-0.5 * (pow(i / sigma, 2.0))) / (6.28318530718*sigma*sigma); +# rv += $in(uv+vec2(0.0, i*e))*coef; +# sum += coef; +# } +# +# return rv/sum; +#} + +func gaussian_blur_y(uv : Vector2, psize : float, psigma : float, pamount : float) -> Color: + var e : float = 1.0 / psize + var rv : Color = Color() + var sum : float = 0.0 + var sigma : float = max(0.000001, psigma * pamount)#pamount(uv)) + + var i : float = -50 + + while i <= 50: #for (float i = -50.0; i <= 50.0; i += 1.0) { + var coef : float = exp(-0.5 * (pow(i / sigma, 2.0))) / (6.28318530718 * sigma * sigma) + rv += input.get_value(uv + Vector2(0.0, i * e)) * coef + sum += coef + + i += 1 + + return rv / sum; + + +func gaussian_blur_y_img(uv : Vector2, psize : float, psigma : float, pamount : float) -> Color: + var e : float = 1.0 / psize + var rv : Color = Color() + var sum : float = 0.0 + var sigma : float = max(0.000001, psigma * pamount)#pamount(uv)) + + var i : float = -50 + + while i <= 50: #for (float i = -50.0; i <= 50.0; i += 1.0) { + var coef : float = exp(-0.5 * (pow(i / sigma, 2.0))) / (6.28318530718 * sigma * sigma) + rv += image.get_value(uv + Vector2(0.0, i * e)) * coef + sum += coef + + i += 1 + + return rv / sum; diff --git a/game/addons/mat_maker_gd/nodes/filter/brightness_contrast.gd b/game/addons/mat_maker_gd/nodes/filter/brightness_contrast.gd new file mode 100644 index 0000000..b22db91 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/brightness_contrast.gd @@ -0,0 +1,64 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Filter = preload("res://addons/mat_maker_gd/nodes/common/filter.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(float) var brightness : float = 0 +export(float) var contrast : float = 1 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input1 " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_float("get_brightness", "set_brightness", "Brightness", 0.01) + mm_graph_node.add_slot_float("get_contrast", "set_contrast", "Contrast", 0.01) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var c : Color = input.get_value(uv) + + return Filter.brightness_contrast(c, brightness, contrast) + +#brightness +func get_brightness() -> float: + return brightness + +func set_brightness(val : float) -> void: + brightness = val + + set_dirty(true) + +#contrast +func get_contrast() -> float: + return contrast + +func set_contrast(val : float) -> void: + contrast = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/filter/colorize.gd b/game/addons/mat_maker_gd/nodes/filter/colorize.gd new file mode 100644 index 0000000..52fdb81 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/colorize.gd @@ -0,0 +1,55 @@ +tool +extends "res://addons/mat_maker_gd/nodes/bases/gradient_base.gd" + +var Gradients = preload("res://addons/mat_maker_gd/nodes/common/gradients.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + input.set_default_value(1) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input1 " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_gradient() + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var f : float = input.get_value(uv) + + return get_gradient_color(f) +# return Color(0.5, 0.5, 0.5, 1) + +func get_gradient_color(x : float) -> Color: + if interpolation_type == 0: + return Gradients.gradient_type_1(x, points) + elif interpolation_type == 1: + return Gradients.gradient_type_2(x, points) + elif interpolation_type == 2: + return Gradients.gradient_type_3(x, points) + elif interpolation_type == 3: + return Gradients.gradient_type_4(x, points) + + return Color(1, 1, 1, 1) diff --git a/game/addons/mat_maker_gd/nodes/filter/combine.gd b/game/addons/mat_maker_gd/nodes/filter/combine.gd new file mode 100644 index 0000000..326ea37 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/combine.gd @@ -0,0 +1,78 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Filter = preload("res://addons/mat_maker_gd/nodes/common/filter.gd") + +export(Resource) var image : Resource +export(Resource) var input_r : Resource +export(Resource) var input_g : Resource +export(Resource) var input_b : Resource +export(Resource) var input_a : Resource + +func _init_properties(): + if !input_r: + input_r = MMNodeUniversalProperty.new() + input_r.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + input_r.set_default_value(0) + + input_r.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input_r.slot_name = ">>> R " + + if !input_g: + input_g = MMNodeUniversalProperty.new() + input_g.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + input_g.set_default_value(0) + + input_g.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input_g.slot_name = ">>> G " + + if !input_b: + input_b = MMNodeUniversalProperty.new() + input_b.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + input_b.set_default_value(0) + + input_b.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input_b.slot_name = ">>> B " + + if !input_a: + input_a = MMNodeUniversalProperty.new() + input_a.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + input_a.set_default_value(1) + + input_a.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input_a.slot_name = ">>> A " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input_r) + register_input_property(input_g) + register_input_property(input_b) + register_input_property(input_a) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input_r) + mm_graph_node.add_slot_label_universal(input_g) + mm_graph_node.add_slot_label_universal(input_b) + mm_graph_node.add_slot_label_universal(input_a) + mm_graph_node.add_slot_texture_universal(image) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var r : float = input_r.get_value(uv) + var g : float = input_g.get_value(uv) + var b : float = input_b.get_value(uv) + var a : float = input_a.get_value(uv) + + return Color(r, g, b, a) diff --git a/game/addons/mat_maker_gd/nodes/filter/decompose.gd b/game/addons/mat_maker_gd/nodes/filter/decompose.gd new file mode 100644 index 0000000..5dd5be9 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/decompose.gd @@ -0,0 +1,104 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var NoiseVoronoi = preload("res://addons/mat_maker_gd/nodes/common/noise_voronoi.gd") + +export(Resource) var input : Resource +export(Resource) var out_r : Resource +export(Resource) var out_g : Resource +export(Resource) var out_b : Resource +export(Resource) var out_a : Resource + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !out_r: + out_r = MMNodeUniversalProperty.new() + out_r.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_r.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_g: + out_g = MMNodeUniversalProperty.new() + out_g.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_g.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_b: + out_b = MMNodeUniversalProperty.new() + out_b.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_b.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_a: + out_a = MMNodeUniversalProperty.new() + out_a.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_a.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_input_property(input) + register_output_property(out_r) + register_output_property(out_g) + register_output_property(out_b) + register_output_property(out_a) + + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(out_r) + mm_graph_node.add_slot_texture_universal(out_g) + mm_graph_node.add_slot_texture_universal(out_b) + mm_graph_node.add_slot_texture_universal(out_a) + + +func _render(material) -> void: + var img_r : Image = Image.new() + var img_g : Image = Image.new() + var img_b : Image = Image.new() + var img_a : Image = Image.new() + + img_r.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + img_g.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + img_b.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + img_a.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + + img_r.lock() + img_g.lock() + img_b.lock() + img_a.lock() + + var w : float = material.image_size.x + var h : float = material.image_size.y + + var pseed : float = randf() + randi() + + for x in range(material.image_size.x): + for y in range(material.image_size.y): + var uv : Vector2 = Vector2(x / w, y / h) + + var c : Color = input.get_value(uv) + + img_r.set_pixel(x, y, Color(c.r, c.r, c.r, 1)) + img_g.set_pixel(x, y, Color(c.g, c.g, c.g, 1)) + img_b.set_pixel(x, y, Color(c.b, c.b, c.b, 1)) + img_a.set_pixel(x, y, Color(c.a, c.a, c.a, c.a)) + + img_r.unlock() + img_g.unlock() + img_b.unlock() + img_a.unlock() + + out_r.set_value(img_r) + out_g.set_value(img_g) + out_b.set_value(img_b) + out_a.set_value(img_a) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + return Color() diff --git a/game/addons/mat_maker_gd/nodes/filter/emboss.gd b/game/addons/mat_maker_gd/nodes/filter/emboss.gd new file mode 100644 index 0000000..1269371 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/emboss.gd @@ -0,0 +1,112 @@ +tool +extends MMNode + +var Filter = preload("res://addons/mat_maker_gd/nodes/common/filter.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(float) var angle : float = 0 +export(float) var amount : float = 5 +export(float) var width : float = 1 + +var size : int = 0 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + input.set_default_value(1) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input1 " + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_label_universal(input) + + mm_graph_node.add_slot_float("get_angle", "set_angle", "Angle", 0.1) + mm_graph_node.add_slot_float("get_amount", "set_amount", "Amount", 0.1) + mm_graph_node.add_slot_float("get_width", "set_width", "Width", 1) + + +func _render(material) -> void: + size = max(material.image_size.x, material.image_size.y) + + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var f : float = 0 + + f = emboss(uv, size, angle, amount, width) + + return Color(f, f, f, 1) + +func get_angle() -> float: + return angle + +func set_angle(val : float) -> void: + angle = val + + set_dirty(true) + +func get_amount() -> float: + return amount + +func set_amount(val : float) -> void: + amount = val + + set_dirty(true) + +func get_width() -> float: + return width + +func set_width(val : float) -> void: + width = val + + set_dirty(true) + +#float $(name)_fct(vec2 uv) { +# float pixels = max(1.0, $width); +# float e = 1.0/$size; +# float rv = 0.0; +# +# for (float dx = -pixels; dx <= pixels; dx += 1.0) { +# for (float dy = -pixels; dy <= pixels; dy += 1.0) { +# if (abs(dx) > 0.5 || abs(dy) > 0.5) { +# rv += $in(uv+e*vec2(dx, dy))*cos(atan(dy, dx)-$angle*3.14159265359/180.0)/length(vec2(dx, dy)); +# } +# } +# } +# +# return $amount*rv/pixels+0.5; +#} + +func emboss(uv : Vector2, psize : float, pangle : float, pamount : float, pwidth : float) -> float: + var pixels : float = max(1.0, pwidth) + var e : float = 1.0 / psize + var rv : float = 0.0 + + var dx : float = -pixels + var dy : float = -pixels + + while dx <= pixels: #for (float dx = -pixels; dx <= pixels; dx += 1.0) { + while dy <= pixels: #for (float dy = -pixels; dy <= pixels; dy += 1.0) { + if (abs(dx) > 0.5 || abs(dy) > 0.5): + rv += input.get_value(uv + e * Vector2(dx, dy)) * cos(atan2(dy, dx) - pangle * 3.14159265359 / 180.0) / Vector2(dx, dy).length() + + dx += 1 + dy += 1 + + return pamount * rv / pixels + 0.5 + diff --git a/game/addons/mat_maker_gd/nodes/filter/fill_channel.gd b/game/addons/mat_maker_gd/nodes/filter/fill_channel.gd new file mode 100644 index 0000000..53a5169 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/fill_channel.gd @@ -0,0 +1,72 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Filter = preload("res://addons/mat_maker_gd/nodes/common/filter.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(Resource) var value : Resource +export(int, "R,G,B,A") var channel : int = 3 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color()) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input1 " + + if !value: + value = MMNodeUniversalProperty.new() + value.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + value.set_default_value(1) + + value.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + value.value_step = 0.01 + value.value_range = Vector2(0, 1) + + register_input_property(input) + register_output_property(image) + register_input_property(value) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_float_universal(value) + mm_graph_node.add_slot_enum("get_channel", "set_channel", "Channel", [ "R", "G", "B", "A" ]) + + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var col : Color = input.get_value(uv) + + if channel == 0: + col.r = value.get_value(uv) + if channel == 1: + col.g = value.get_value(uv) + if channel == 2: + col.b = value.get_value(uv) + if channel == 3: + col.a = value.get_value(uv) + + return col + +func get_channel() -> int: + return channel + +func set_channel(val : int) -> void: + channel = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/filter/fill_to_color.gd b/game/addons/mat_maker_gd/nodes/filter/fill_to_color.gd new file mode 100644 index 0000000..3f660f2 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/fill_to_color.gd @@ -0,0 +1,70 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Fills = preload("res://addons/mat_maker_gd/nodes/common/fills.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(Resource) var color_map : Resource +export(Color) var edge_color : Color = Color(1, 1, 1, 1) + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !color_map: + color_map = MMNodeUniversalProperty.new() + color_map.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + color_map.set_default_value(Color(1, 1, 1, 1)) + + color_map.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + color_map.slot_name = ">>> Color Map " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_input_property(color_map) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_label_universal(color_map) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_color("get_edge_color", "set_edge_color") + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + #vec4 $(name_uv)_bb = $in($uv); + var c : Color = input.get_value(uv) + + #mix($edgecolor, $map(fract($(name_uv)_bb.xy+0.5*$(name_uv)_bb.zw)), step(0.0000001, dot($(name_uv)_bb.zw, vec2(1.0)))) + + var rc : Color = color_map.get_value(Commons.fractv2(Vector2(c.r, c.g) + 0.5 * Vector2(c.b, c.a))) + var s : float = Commons.step(0.0000001, Vector2(c.b, c.a).dot(Vector2(1, 1))) + + return lerp(edge_color, rc, s) + +#edge_color +func get_edge_color() -> Color: + return edge_color + +func set_edge_color(val : Color) -> void: + edge_color = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/filter/fill_to_position.gd b/game/addons/mat_maker_gd/nodes/filter/fill_to_position.gd new file mode 100644 index 0000000..69eded4 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/fill_to_position.gd @@ -0,0 +1,68 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Transforms = preload("res://addons/mat_maker_gd/nodes/common/transforms.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(int, "X,Y,Radial") var axis : int = 2 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_enum("get_axis", "set_axis", "Axis", [ "X", "Y", "Radial" ]) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var c : Color = input.get_value(uv) + #vec2 $(name_uv)_c = fract($in($uv).xy+0.5*$in($uv).zw); + var cnv : Vector2 = Commons.fractv2(Vector2(c.r, c.g) + 0.5 * Vector2(c.b, c.a)) + + #X, $(name_uv)_c.x + #Y, $(name_uv)_c.y + #Radial, length($(name_uv)_c-vec2(0.5)) + + if axis == 0: + return Color(cnv.x, cnv.x, cnv.x, 1) + elif axis == 1: + return Color(cnv.y, cnv.y, cnv.y, 1) + elif axis == 2: + var f : float = (cnv - Vector2(0.5, 0.5)).length() + + return Color(f, f, f, 1) + + return Color(0, 0, 0, 1) + +#axis +func get_axis() -> int: + return axis + +func set_axis(val : int) -> void: + axis = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/filter/fill_to_random_color.gd b/game/addons/mat_maker_gd/nodes/filter/fill_to_random_color.gd new file mode 100644 index 0000000..3360a29 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/fill_to_random_color.gd @@ -0,0 +1,61 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Fills = preload("res://addons/mat_maker_gd/nodes/common/fills.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(Color) var edge_color : Color = Color(1, 1, 1, 1) + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_color("get_edge_color", "set_edge_color") + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + #vec4 $(name_uv)_bb = $in($uv); + var c : Color = input.get_value(uv) + + #mix($edgecolor.rgb, rand3(vec2(float($seed), rand(vec2(rand($(name_uv)_bb.xy), rand($(name_uv)_bb.zw))))), step(0.0000001, dot($(name_uv)_bb.zw, vec2(1.0)))) + + var r1 : float = Commons.rand(Vector2(c.r, c.g)) + var r2 : float = Commons.rand(Vector2(c.b, c.a)) + var s : float = Commons.step(0.0000001, Vector2(c.b, c.a).dot(Vector2(1, 1))) + + var f : Vector3 = lerp(Vector3(edge_color.r, edge_color.g, edge_color.b), Commons.rand3(Vector2(1.0 / float(pseed), Commons.rand(Vector2(r1, r2)))), s) + return Color(f.x, f.y, f.z, 1) + +#edge_color +func get_edge_color() -> Color: + return edge_color + +func set_edge_color(val : Color) -> void: + edge_color = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/filter/fill_to_random_grey.gd b/game/addons/mat_maker_gd/nodes/filter/fill_to_random_grey.gd new file mode 100644 index 0000000..53e7c4d --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/fill_to_random_grey.gd @@ -0,0 +1,60 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Fills = preload("res://addons/mat_maker_gd/nodes/common/fills.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(float) var edge_color : float = 1 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_float("get_edge_color", "set_edge_color", "Edge color", 0.01) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + #vec4 $(name_uv)_bb = $in($uv); + var c : Color = input.get_value(uv) + + #mix($edgecolor, rand(vec2(float($seed), rand(vec2(rand($(name_uv)_bb.xy), rand($(name_uv)_bb.zw))))), step(0.0000001, dot($(name_uv)_bb.zw, vec2(1.0)))) + var r1 : float = Commons.rand(Vector2(c.r, c.g)) + var r2 : float = Commons.rand(Vector2(c.b, c.a)) + var s : float = Commons.step(0.0000001, Vector2(c.b, c.a).dot(Vector2(1, 1))) + + var f : float = lerp(edge_color, Commons.rand(Vector2(1.0 / float(pseed), Commons.rand(Vector2(r1, r2)))), s) + return Color(f, f, f, 1) + +#edge_color +func get_edge_color() -> float: + return edge_color + +func set_edge_color(val : float) -> void: + edge_color = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/filter/fill_to_size.gd b/game/addons/mat_maker_gd/nodes/filter/fill_to_size.gd new file mode 100644 index 0000000..edfe95d --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/fill_to_size.gd @@ -0,0 +1,70 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Fills = preload("res://addons/mat_maker_gd/nodes/common/fills.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(int, "Area,Width,Height,Max(W,H)") var formula : int = 0 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_enum("get_formula", "set_formula", "Formula", [ "Area", "Width", "Height", "Max(W,H)" ]) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + #vec4 $(name_uv)_bb = $in($uv); + var c : Color = input.get_value(uv) + + var f : float = 0 + + #"Area" sqrt($(name_uv)_bb.z*$(name_uv)_bb.w) + #"Width" $(name_uv)_bb.z + #"Height" $(name_uv)_bb.w + #"max(W, H)" max($(name_uv)_bb.z, $(name_uv)_bb.w) + + if formula == 0: + f = sqrt(c.b * c.a) + elif formula == 1: + f = c.b + elif formula == 2: + f = c.a + elif formula == 3: + f = max(c.b, c.a) + + return Color(f, f, f, 1) + +#formula +func get_formula() -> int: + return formula + +func set_formula(val : int) -> void: + formula = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/filter/fill_to_uv.gd b/game/addons/mat_maker_gd/nodes/filter/fill_to_uv.gd new file mode 100644 index 0000000..63db519 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/fill_to_uv.gd @@ -0,0 +1,62 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Fills = preload("res://addons/mat_maker_gd/nodes/common/fills.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(int, "Stretch,Square") var mode : int = 0 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_enum("get_mode", "set_mode", "Mode", [ "Stretch", "Square" ]) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + #vec4 $(name_uv)_bb = $in($uv); + var c : Color = input.get_value(uv) + + #fill_to_uv_$mode($uv, $(name_uv)_bb, float($seed)) + var r : Vector3 = Vector3() + + if mode == 0: + r = Fills.fill_to_uv_stretch(uv, c, float(pseed)) + elif mode == 1: + r = Fills.fill_to_uv_square(uv, c, float(pseed)) + + return Color(r.x, r.y, r.z, 1) + +#mode +func get_mode() -> int: + return mode + +func set_mode(val : int) -> void: + mode = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/filter/greyscale.gd b/game/addons/mat_maker_gd/nodes/filter/greyscale.gd new file mode 100644 index 0000000..cc95b1e --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/greyscale.gd @@ -0,0 +1,66 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Filter = preload("res://addons/mat_maker_gd/nodes/common/filter.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(int, "Lightness,Average,Luminosity,Min,Max") var type : int = 2 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input1 " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_enum("get_type", "set_type", "Type", [ "Lightness", "Average", "Luminosity", "Min", "Max" ]) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var c : Color = input.get_value(uv) + + var f : float = 0 + + if type == 0: + f = Filter.grayscale_lightness(Vector3(c.r, c.g, c.b)) + elif type == 1: + f = Filter.grayscale_average(Vector3(c.r, c.g, c.b)) + elif type == 2: + f = Filter.grayscale_luminosity(Vector3(c.r, c.g, c.b)) + elif type == 3: + f = Filter.grayscale_min(Vector3(c.r, c.g, c.b)) + elif type == 4: + f = Filter.grayscale_max(Vector3(c.r, c.g, c.b)) + + return Color(f, f, f, c.a) + +#type +func get_type() -> int: + return type + +func set_type(val : int) -> void: + type = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/filter/invert.gd b/game/addons/mat_maker_gd/nodes/filter/invert.gd new file mode 100644 index 0000000..994c7b7 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/invert.gd @@ -0,0 +1,42 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Filter = preload("res://addons/mat_maker_gd/nodes/common/filter.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input1 " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var c : Color = input.get_value(uv) + + return Filter.invert(c) diff --git a/game/addons/mat_maker_gd/nodes/filter/make_tileable.gd b/game/addons/mat_maker_gd/nodes/filter/make_tileable.gd new file mode 100644 index 0000000..1abeff8 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/make_tileable.gd @@ -0,0 +1,78 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Filter = preload("res://addons/mat_maker_gd/nodes/common/filter.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(float) var width : float = 0.1 + +var size : int = 0 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color()) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input1 " + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_label_universal(input) + + mm_graph_node.add_slot_float("get_width", "set_width", "Width", 0.01) + + +func _render(material) -> void: + size = max(material.image_size.x, material.image_size.y) + + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + #make_tileable_$(name)($uv, 0.5*$w) + return make_tileable(uv, 0.5 * width) + +func get_width() -> float: + return width + +func set_width(val : float) -> void: + width = val + + set_dirty(true) + + +#---------------------- +#make_tileable.mmg + +#vec4 make_tileable_$(name)(vec2 uv, float w) { +# vec4 a = $in(uv); +# vec4 b = $in(fract(uv+vec2(0.5))); +# float coef_ab = sin(1.57079632679*clamp((length(uv-vec2(0.5))-0.5+w)/w, 0.0, 1.0)); +# vec4 c = $in(fract(uv+vec2(0.25))); +# float coef_abc = sin(1.57079632679*clamp((min(min(length(uv-vec2(0.0, 0.5)), length(uv-vec2(0.5, 0.0))), min(length(uv-vec2(1.0, 0.5)), length(uv-vec2(0.5, 1.0))))-w)/w, 0.0, 1.0)); +# return mix(c, mix(a, b, coef_ab), coef_abc); +#} + +func make_tileable(uv : Vector2, w : float) -> Color: + var a: Color = input.get_value(uv); + var b : Color = input.get_value(Commons.fractv2(uv + Vector2(0.5, 0.5))); + var coef_ab : float = sin(1.57079632679 * clamp(((uv - Vector2(0.5, 0.5)).length() - 0.5 + w) / w, 0.0, 1.0)); + var c: Color = input.get_value(Commons.fractv2(uv + Vector2(0.25, 0.25))); + var coef_abc : float = sin(1.57079632679 * clamp((min(min((uv - Vector2(0.0, 0.5)).length(), (uv - Vector2(0.5, 0.0)).length()), min((uv- Vector2(1.0, 0.5)).length(), (uv - Vector2(0.5, 1.0)).length())) - w) / w, 0.0, 1.0)); + + return lerp(c, lerp(a, b, coef_ab), coef_abc) + diff --git a/game/addons/mat_maker_gd/nodes/filter/math.gd b/game/addons/mat_maker_gd/nodes/filter/math.gd new file mode 100644 index 0000000..56defca --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/math.gd @@ -0,0 +1,151 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Fills = preload("res://addons/mat_maker_gd/nodes/common/fills.gd") + +export(Resource) var image : Resource +export(Resource) var a : Resource +export(Resource) var b : Resource +export(Resource) var output : Resource + +export(int, "A+B,A-B,A*B,A/B,log(A),log2(A),pow(A; B),abs(A),round(A),floor(A),ceil(A),trunc(A),fract(A),min(A; B),max(A; B),A void: + mm_graph_node.add_slot_label_universal(a) + mm_graph_node.add_slot_label_universal(b) + mm_graph_node.add_slot_label_universal(output) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_enum("get_operation", "set_operation", "Operation", [ "A+B", "A-B", "A*B", "A/B", "log(A)", "log2(A)", "pow(A, B)", "abs(A)", "round(A)", "floor(A)", "ceil(A)", "trunc(A)", "fract(A)", "min(A, B)", "max(A, B)", "A float: + var af : float = a.get_value(uv) + var bf : float = b.get_value(uv) + + var f : float = 0 + + if operation == 0:#"A+B", + f = af + bf + elif operation == 1:#"A-B", + f = af - bf + elif operation == 2:#"A*B", + f = af * bf + elif operation == 3:#"A/B", + if bf == 0: + bf = 0.000001 + f = af / bf + elif operation == 4:#"log(A)", + #todo needs to be implemented + f = log(af) + elif operation == 5:#"log2(A)", + #todo needs to be implemented + f = log(af) + elif operation == 6:#"pow(A, B)", + f = pow(af, bf) + elif operation == 7:#"abs(A)", + f = abs(af) + elif operation == 8:#"round(A)", + f = round(af) + elif operation == 9:#"floor(A)", + f = floor(af) + elif operation == 10:#"ceil(A)", + f = ceil(af) + elif operation == 11:#"trunc(A)", + f = int(af) + elif operation == 12:#"fract(A)", + f = Commons.fractf(af) + elif operation == 13:#"min(A, B)", + f = min(af, bf) + elif operation == 14:#"max(A, B)", + f = max(af, bf) + elif operation == 15:#"A void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var f : float = get_property_value(uv) + + return Color(f, f, f, 1) + +#operation +func get_operation() -> int: + return operation + +func set_operation(val : int) -> void: + operation = val + + set_dirty(true) + output.emit_changed() + +#clamp_result +func get_clamp_result() -> bool: + return clamp_result + +func set_clamp_result(val : bool) -> void: + clamp_result = val + + set_dirty(true) + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/filter/quantize.gd b/game/addons/mat_maker_gd/nodes/filter/quantize.gd new file mode 100644 index 0000000..a86b4c5 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/quantize.gd @@ -0,0 +1,56 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Filter = preload("res://addons/mat_maker_gd/nodes/common/filter.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(int) var steps : int = 4 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_int("get_steps", "set_steps", "Steps") + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var c : Color = input.get_value(uv) + + #vec4(floor($in($uv).rgb*$steps)/$steps, $in($uv).a) + var v : Vector3 = Commons.floorv3(Vector3(c.r, c.g, c.b) * steps) / float(steps) + + return Color(v.x, v.y, v.z, c.a) + +#steps +func get_steps() -> int: + return steps + +func set_steps(val : int) -> void: + steps = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/filter/swap_channels.gd b/game/addons/mat_maker_gd/nodes/filter/swap_channels.gd new file mode 100644 index 0000000..eca84d1 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/swap_channels.gd @@ -0,0 +1,111 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Filter = preload("res://addons/mat_maker_gd/nodes/common/filter.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(int, "0,1,R,-R,G,-G,B,-B,A,-A") var op_r : int = 2 +export(int, "0,1,R,-R,G,-G,B,-B,A,-A") var op_g : int = 4 +export(int, "0,1,R,-R,G,-G,B,-B,A,-A") var op_b : int = 6 +export(int, "0,1,R,-R,G,-G,B,-B,A,-A") var op_a : int = 8 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + + mm_graph_node.add_slot_enum("get_op_r", "set_op_r", "R", [ "0", "1", "R", "-R", "G", "-G", "B", "-B", "A","-A" ]) + mm_graph_node.add_slot_enum("get_op_g", "set_op_g", "G", [ "0", "1", "R", "-R", "G", "-G", "B", "-B", "A","-A" ]) + mm_graph_node.add_slot_enum("get_op_b", "set_op_b", "B", [ "0", "1", "R", "-R", "G", "-G", "B", "-B", "A","-A" ]) + mm_graph_node.add_slot_enum("get_op_a", "set_op_a", "A", [ "0", "1", "R", "-R", "G", "-G", "B", "-B", "A","-A" ]) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func apply(op : int, val : Color) -> float: + if op == 0: + return 0.0 + elif op == 1: + return 1.0 + elif op == 2: + return val.r + elif op == 3: + return 1.0 - val.r + elif op == 4: + return val.g + elif op == 5: + return 1.0 - val.g + elif op == 6: + return val.b + elif op == 7: + return 1.0 - val.b + elif op == 8: + return val.a + elif op == 9: + return 1.0 - val.a + + return 0.0 + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var c : Color = input.get_value(uv) + + return Color(apply(op_r, c), apply(op_g, c), apply(op_b, c), apply(op_a, c)) + +#op_r +func get_op_r() -> int: + return op_r + +func set_op_r(val : int) -> void: + op_r = val + + set_dirty(true) + +#op_g +func get_op_g() -> int: + return op_g + +func set_op_g(val : int) -> void: + op_g = val + + set_dirty(true) + +#op_b +func get_op_b() -> int: + return op_b + +func set_op_b(val : int) -> void: + op_b = val + + set_dirty(true) + +#op_a +func get_op_a() -> int: + return op_a + +func set_op_a(val : int) -> void: + op_a = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/filter/tonality.gd b/game/addons/mat_maker_gd/nodes/filter/tonality.gd new file mode 100644 index 0000000..66f1aba --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/filter/tonality.gd @@ -0,0 +1,50 @@ +tool +extends "res://addons/mat_maker_gd/nodes/bases/curve_base.gd" + +var Curves = preload("res://addons/mat_maker_gd/nodes/common/curves.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource + +func _init(): + init_points_01() + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + input.set_default_value(0) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_curve() + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var f : float = input.get_value(uv) + + var cf : float = Curves.curve(f, points) + + return Color(cf, cf, cf, 1) + +func _curve_changed() -> void: + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/gradient/circular_gradient.gd b/game/addons/mat_maker_gd/nodes/gradient/circular_gradient.gd new file mode 100644 index 0000000..1fc45b7 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/gradient/circular_gradient.gd @@ -0,0 +1,60 @@ +tool +extends "res://addons/mat_maker_gd/nodes/bases/gradient_base.gd" + +var Gradients = preload("res://addons/mat_maker_gd/nodes/common/gradients.gd") + +export(Resource) var image : Resource +export(float) var repeat : float = 1 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_float("get_repeat", "set_repeat", "repeat") + mm_graph_node.add_slot_gradient() + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + if interpolation_type == 0: + return Gradients.circular_gradient_type_1(uv, repeat, points) + elif interpolation_type == 1: + return Gradients.circular_gradient_type_2(uv, repeat, points) + elif interpolation_type == 2: + return Gradients.circular_gradient_type_3(uv, repeat, points) + elif interpolation_type == 3: + return Gradients.circular_gradient_type_4(uv, repeat, points) + + return Color(1, 1, 1, 1) + + +func get_gradient_color(x : float) -> Color: + if interpolation_type == 0: + return Gradients.gradient_type_1(x, points) + elif interpolation_type == 1: + return Gradients.gradient_type_2(x, points) + elif interpolation_type == 2: + return Gradients.gradient_type_3(x, points) + elif interpolation_type == 3: + return Gradients.gradient_type_4(x, points) + + return Color(1, 1, 1, 1) + +func get_repeat() -> float: + return repeat + +func set_repeat(val : float) -> void: + repeat = val + + set_dirty(true) + diff --git a/game/addons/mat_maker_gd/nodes/gradient/gradient.gd b/game/addons/mat_maker_gd/nodes/gradient/gradient.gd new file mode 100644 index 0000000..6db5aff --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/gradient/gradient.gd @@ -0,0 +1,68 @@ +tool +extends "res://addons/mat_maker_gd/nodes/bases/gradient_base.gd" + +var Gradients = preload("res://addons/mat_maker_gd/nodes/common/gradients.gd") + +export(Resource) var image : Resource +export(float) var repeat : float = 1 +export(float) var rotate : float = 0 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_float("get_repeat", "set_repeat", "repeat") + mm_graph_node.add_slot_float("get_rotate", "set_rotate", "rotate") + mm_graph_node.add_slot_gradient() + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + if interpolation_type == 0: + return Gradients.normal_gradient_type_1(uv, repeat, rotate, points) + elif interpolation_type == 1: + return Gradients.normal_gradient_type_2(uv, repeat, rotate, points) + elif interpolation_type == 2: + return Gradients.normal_gradient_type_3(uv, repeat, rotate, points) + elif interpolation_type == 3: + return Gradients.normal_gradient_type_4(uv, repeat, rotate, points) + + return Color(1, 1, 1, 1) + +func get_gradient_color(x : float) -> Color: + if interpolation_type == 0: + return Gradients.gradient_type_1(x, points) + elif interpolation_type == 1: + return Gradients.gradient_type_2(x, points) + elif interpolation_type == 2: + return Gradients.gradient_type_3(x, points) + elif interpolation_type == 3: + return Gradients.gradient_type_4(x, points) + + return Color(1, 1, 1, 1) + +func get_repeat() -> float: + return repeat + +func set_repeat(val : float) -> void: + repeat = val + + set_dirty(true) + +func get_rotate() -> float: + return rotate + +func set_rotate(val : float) -> void: + rotate = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/gradient/radial_gradient.gd b/game/addons/mat_maker_gd/nodes/gradient/radial_gradient.gd new file mode 100644 index 0000000..76e84c5 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/gradient/radial_gradient.gd @@ -0,0 +1,60 @@ +tool +extends "res://addons/mat_maker_gd/nodes/bases/gradient_base.gd" + +var Gradients = preload("res://addons/mat_maker_gd/nodes/common/gradients.gd") + +export(Resource) var image : Resource +export(float) var repeat : float = 1 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_float("get_repeat", "set_repeat", "repeat") + mm_graph_node.add_slot_gradient() + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + if interpolation_type == 0: + return Gradients.radial_gradient_type_1(uv, repeat, points) + elif interpolation_type == 1: + return Gradients.radial_gradient_type_2(uv, repeat, points) + elif interpolation_type == 2: + return Gradients.radial_gradient_type_3(uv, repeat, points) + elif interpolation_type == 3: + return Gradients.radial_gradient_type_4(uv, repeat, points) + + return Color(1, 1, 1, 1) + + +func get_gradient_color(x : float) -> Color: + if interpolation_type == 0: + return Gradients.gradient_type_1(x, points) + elif interpolation_type == 1: + return Gradients.gradient_type_2(x, points) + elif interpolation_type == 2: + return Gradients.gradient_type_3(x, points) + elif interpolation_type == 3: + return Gradients.gradient_type_4(x, points) + + return Color(1, 1, 1, 1) + +func get_repeat() -> float: + return repeat + +func set_repeat(val : float) -> void: + repeat = val + + set_dirty(true) + diff --git a/game/addons/mat_maker_gd/nodes/mm_material.gd b/game/addons/mat_maker_gd/nodes/mm_material.gd new file mode 100644 index 0000000..c13055c --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/mm_material.gd @@ -0,0 +1,119 @@ +tool +class_name MMMateial +extends Resource + +#threads are implemented using my thread pool engine module. +#if you want to use this without that module in your engine set this to false, +#and comment out the lines that give errors +const USE_THREADS = true + +export(Vector2) var image_size : Vector2 = Vector2(128, 128) +export(Array) var nodes : Array + +var initialized : bool = false +var rendering : bool = false +var queued_render : bool = false +var job : ThreadPoolExecuteJob = ThreadPoolExecuteJob.new() + +func initialize(): + if !initialized: + initialized = true + + job.setup(self, "_thread_func") + + for n in nodes: + n.connect("changed", self, "on_node_changed") + +func add_node(node : MMNode) -> void: + nodes.append(node) + + node.connect("changed", self, "on_node_changed") + + emit_changed() + +func remove_node(node : MMNode) -> void: + if !node: + return + + for op in node.output_properties: + for n in nodes: + if n: + for ip in n.input_properties: + if ip.input_property == op: + ip.set_input_property(null) + + nodes.erase(node) + + node.disconnect("changed", self, "on_node_changed") + + emit_changed() + +func render() -> void: + if USE_THREADS: + render_threaded() + else: + render_non_threaded() + +func render_non_threaded() -> void: + if !initialized: + initialize() + + var did_render : bool = true + + while did_render: + did_render = false + + for n in nodes: + if n && n.render(self): + did_render = true + +func render_threaded() -> void: + job.cancelled = false + + if rendering: + queued_render = true + return + + if !initialized: + initialize() + + if !ThreadPool.has_job(job): + ThreadPool.add_job(job) + +func _thread_func() -> void: + if job.cancelled: + rendering = false + return + + rendering = true + job.cancelled = false + + var did_render : bool = true + + while did_render: + did_render = false + + for n in nodes: + if n && n.render(self): + did_render = true + + if job.cancelled: + rendering = false + return + + rendering = false + + if queued_render: + queued_render = false + _thread_func() + +func cancel_render_and_wait() -> void: + if rendering: + ThreadPool.cancel_task_wait(job) + + job.cancelled = false + + pass + +func on_node_changed() -> void: + call_deferred("render") diff --git a/game/addons/mat_maker_gd/nodes/mm_node.gd b/game/addons/mat_maker_gd/nodes/mm_node.gd new file mode 100644 index 0000000..3c6a102 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/mm_node.gd @@ -0,0 +1,121 @@ +tool +class_name MMNode +extends Resource + +export(Vector2) var graph_position : Vector2 = Vector2() + +var input_properties : Array +var output_properties : Array + +var properties_initialized : bool = false + +var dirty : bool = true + +#MMMateial +func render(material) -> bool: + if !dirty: + return false + + for p in input_properties: + if p.input_property && p.input_property.owner.dirty: + return false + + _render(material) + + dirty = false + + return true + +#MMMateial +func _render(material) -> void: + pass + +func render_image(material) -> Image: + var image : Image = Image.new() + image.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + + image.lock() + + var w : float = image.get_width() + var h : float = image.get_height() + + var pseed : float = randf() + randi() + + for x in range(image.get_width()): + for y in range(image.get_height()): + var v : Vector2 = Vector2(x / w, y / h) + + var col : Color = get_value_for(v, pseed) + + image.set_pixel(x, y, col) + + image.unlock() + + return image + +func get_value_for(uv : Vector2, pseed : int) -> Color: + return Color() + +func init_properties() -> void: + if !properties_initialized: + properties_initialized = true + + _init_properties() + +func _init_properties() -> void: + pass + +func register_methods(mm_graph_node) -> void: + init_properties() + _register_methods(mm_graph_node) + +func _register_methods(mm_graph_node) -> void: + pass + +func get_graph_position() -> Vector2: + return graph_position + +func set_graph_position(pos : Vector2) -> void: + graph_position = pos + + emit_changed() + +func register_input_property(prop : MMNodeUniversalProperty) -> void: + prop.owner = self + + if !prop.is_connected("changed", self, "on_input_property_changed"): + prop.connect("changed", self, "on_input_property_changed") + + input_properties.append(prop) + +func unregister_input_property(prop : MMNodeUniversalProperty) -> void: + if prop.owner == self: + prop.owner = null + + if prop.is_connected("changed", self, "on_input_property_changed"): + prop.disconnect("changed", self, "on_input_property_changed") + + input_properties.erase(prop) + +func register_output_property(prop : MMNodeUniversalProperty) -> void: + prop.owner = self + + output_properties.append(prop) + +func unregister_output_property(prop : MMNodeUniversalProperty) -> void: + if prop.owner == self: + prop.owner = null + + output_properties.erase(prop) + +func set_dirty(val : bool) -> void: + var changed : bool = val != dirty + + dirty = val + + if changed: + emit_changed() + +func on_input_property_changed() -> void: + set_dirty(true) + emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/mm_node_universal_property.gd b/game/addons/mat_maker_gd/nodes/mm_node_universal_property.gd new file mode 100644 index 0000000..d79dc27 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/mm_node_universal_property.gd @@ -0,0 +1,316 @@ +tool +class_name MMNodeUniversalProperty +extends Resource + +enum SlotTypes { + SLOT_TYPE_NONE = -1, + SLOT_TYPE_IMAGE = 0, + SLOT_TYPE_INT = 1, + SLOT_TYPE_FLOAT = 2, + SLOT_TYPE_VECTOR2 = 3, + SLOT_TYPE_VECTOR3 = 4, + SLOT_TYPE_COLOR = 5, + SLOT_TYPE_UNIVERSAL = 6, +} + +enum MMNodeUniversalPropertyDefaultType { + DEFAULT_TYPE_INT = 0, + DEFAULT_TYPE_FLOAT = 1, + DEFAULT_TYPE_VECTOR2 = 2, + DEFAULT_TYPE_VECTOR3 = 3, + DEFAULT_TYPE_COLOR = 4, + DEFAULT_TYPE_IMAGE = 5, +} + +export(int, "Int,Float,Vector2,Vector3,Color,Image") var default_type : int + +export(int) var default_int : int +export(float) var default_float : float +export(Vector2) var default_vector2 : Vector2 +export(Vector3) var default_vector3 : Vector3 +export(Color) var default_color : Color +export(Image) var default_image : Image + +var get_value_from_owner : bool = false +var force_override : bool = false +#This is not exported on purpose! +var override_image : Image + +#Should be a MMNodeUniversalProperty, but can't set it up like that +export(Resource) var input_property : Resource + +var input_slot_type : int = SlotTypes.SLOT_TYPE_NONE +var output_slot_type : int = SlotTypes.SLOT_TYPE_NONE +var slot_name : String +var value_step : float = 0.1 +var value_range : Vector2 = Vector2(-1000, 1000) + +#MMNode +var owner + +func _init(): + if input_property: + input_property.connect("changed", self, "on_input_property_changed") + +func get_value(uv : Vector2, skip_owner_val : bool = false): + if get_value_from_owner && !skip_owner_val: + return get_owner_value(uv) + + if !input_property: + return get_default_value(uv) + + if default_type == input_property.default_type: + return input_property.get_value(uv) + + if default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_INT: + return to_int(input_property.get_value(uv)) + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT: + return to_float(input_property.get_value(uv)) + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2: + return to_vector2(input_property.get_value(uv)) + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR3: + return to_vector3(input_property.get_value(uv)) + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR: + return to_color(input_property.get_value(uv)) + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE: + return to_color(input_property.get_value(uv)) + + return input_property.get_value(uv) + +func get_owner_value(uv : Vector2): + if default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_INT: + return to_int(owner.get_property_value(uv)) + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT: + return to_float(owner.get_property_value(uv)) + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2: + return to_vector2(owner.get_property_value(uv)) + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR3: + return to_vector3(owner.get_property_value(uv)) + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR: + return to_color(owner.get_property_value(uv)) + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE: + return to_color(owner.get_property_value(uv)) + +func get_value_or_zero(uv : Vector2, skip_owner_val : bool = false): + if get_value_from_owner && !skip_owner_val: + return get_owner_value(uv) + + if !input_property: + return get_zero_value() + + if default_type == input_property.default_type: + return input_property.get_value(uv) + + if default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_INT: + return to_int(input_property.get_value(uv)) + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT: + return to_float(input_property.get_value(uv)) + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2: + return to_vector2(input_property.get_value(uv)) + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR3: + return to_vector3(input_property.get_value(uv)) + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR: + return to_color(input_property.get_value(uv)) + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE: + return to_color(input_property.get_value(uv)) + + return input_property.get_value(uv) + +func get_value_sdf3d(uv3 : Vector3, skip_owner_val : bool = false) -> Vector2: + if get_value_from_owner && !skip_owner_val: + return owner.get_property_value_sdf3d(uv3) + + if !input_property: + return default_vector2 + + return input_property.get_value_sdf3d(uv3) + +func to_int(val) -> int: + if val is int: + return val + + if val is float: + return int(val) + + if val is Vector2: + return int(val.x) + + if val is Vector3: + return int(val.x) + + if val is Color: + return int(val.r) + + return 0 + +func to_float(val) -> float: + if val is float: + return val + + if val is int: + return float(val) + + if val is Vector2: + return float(val.x) + + if val is Vector3: + return float(val.x) + + if val is Color: + return float(val.r) + + return 0.0 + +func to_vector2(val) -> Vector2: + if val is Vector2: + return val + + if val is int: + return Vector2(val, val) + + if val is float: + return Vector2(val, val) + + if val is Vector3: + return Vector2(val.x, val.y) + + if val is Color: + return Vector2(val.r, val.g) + + return Vector2() + +func to_vector3(val) -> Vector3: + if val is Vector3: + return val + + if val is int: + return Vector3(val, val, val) + + if val is float: + return Vector3(val, val, val) + + if val is Vector2: + return Vector3(val.x, val.y, 0) + + if val is Color: + return Vector3(val.r, val.g, val.b) + + return Vector3() + +func to_color(val) -> Color: + if val is Color: + return val + + if val is int: + return Color(val, val, val, 1) + + if val is float: + return Color(val, val, val, 1) + + if val is Vector2: + return Color(val.x, val.y, 0, 1) + + if val is Vector3: + return Color(val.x, val.y, val.z, 1) + + return Color() + +func set_value(val): + if default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE: + override_image = val + emit_changed() + return + + set_default_value(val) + +func get_zero_value(): + if default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_INT: + return 0 + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT: + return 0.0 + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2: + return Vector2() + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR3: + return Vector3() + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR: + return Color() + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE: + return Color() + + return null + +func get_default_value(uv : Vector2 = Vector2()): + if default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_INT: + return default_int + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT: + return default_float + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2: + return default_vector2 + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR3: + return default_vector3 + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR: + return default_color + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE: + var image : Image = default_image + + if override_image: + image = override_image + + if !image: + return default_color + + image.lock() + var x : int = uv.x * image.get_width() + var y : int = uv.y * image.get_height() + + x = clamp(x, 0, image.get_width() - 1) + y = clamp(y, 0, image.get_width() - 1) + + var c : Color = image.get_pixel(x, y) + image.unlock() + + return c + + return null + +func set_default_value(val): + if default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_INT: + default_int = val + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT: + default_float = val + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2: + default_vector2 = val + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR3: + default_vector3 = val + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR: + default_color = val + elif default_type == MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE: + default_image = val + + emit_changed() + +func get_active_image() -> Image: + if !force_override && input_property: + return input_property.get_active_image() + + if override_image: + return override_image + + return default_image + +func set_input_property(val : MMNodeUniversalProperty) -> void: + if input_property == val: + return + + if input_property: + input_property.disconnect("changed", self, "on_input_property_changed") + + input_property = val + + if input_property: + input_property.connect("changed", self, "on_input_property_changed") + + emit_changed() + +func on_input_property_changed() -> void: + emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/noise/anisotropic_noise.gd b/game/addons/mat_maker_gd/nodes/noise/anisotropic_noise.gd new file mode 100644 index 0000000..2b27849 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/noise/anisotropic_noise.gd @@ -0,0 +1,60 @@ +tool +extends MMNode + +var Noises = preload("res://addons/mat_maker_gd/nodes/common/noises.gd") + +export(Resource) var image : Resource + +export(Vector2) var scale : Vector2 = Vector2(4, 256) +export(float) var smoothness : float = 1 +export(float) var interpolation : float = 1 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_vector2("get_scale", "set_scale", "Scale", 1)#, Vector2(1, 10)) + mm_graph_node.add_slot_float("get_smoothness", "set_smoothness", "Smoothness", 0.01)#, Vector2(0, 1)) + mm_graph_node.add_slot_float("get_interpolation", "set_interpolation", "Interpolation", 0.01)#, Vector2(0, 1)) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var ps : float = 1.0 / float(pseed) + + #anisotropic($(uv), vec2($(scale_x), $(scale_y)), $(seed), $(smoothness), $(interpolation)) + return Noises.anisotropicc(uv, scale, ps, smoothness, interpolation) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_scale() -> Vector2: + return scale + +func set_scale(val : Vector2) -> void: + scale = val + + set_dirty(true) + +func get_smoothness() -> float: + return smoothness + +func set_smoothness(val : float) -> void: + smoothness = val + + set_dirty(true) + +func get_interpolation() -> float: + return interpolation + +func set_interpolation(val : float) -> void: + interpolation = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/noise/color_noise.gd b/game/addons/mat_maker_gd/nodes/noise/color_noise.gd new file mode 100644 index 0000000..d5dbdee --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/noise/color_noise.gd @@ -0,0 +1,52 @@ +tool +extends MMNode + +var Noises = preload("res://addons/mat_maker_gd/nodes/common/noises.gd") + +export(Resource) var image : Resource + +export(int) var size : int = 8 + +#---------------------- +#color_noise.mmg + +#Outputs: + +#Output - (rgb) - Shows the noise pattern +#color_dots($(uv), 1.0/$(size), $(seed)) + +#Inputs: +#size, float, default: 8, min: 2, max: 12, step: 1 + + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_int("get_size", "set_size", "Size")#, Vector2(1, 10)) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var ps : float = 1.0 / float(pseed) + + #color_dots($(uv), 1.0/$(size), $(seed)) + return Noises.noise_color(uv, float(size), ps) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_size() -> int: + return size + +func set_size(val : int) -> void: + size = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/noise/color_value.gd b/game/addons/mat_maker_gd/nodes/noise/color_value.gd new file mode 100644 index 0000000..97fff54 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/noise/color_value.gd @@ -0,0 +1,60 @@ +tool +extends MMNode + +var NoisePerlin = preload("res://addons/mat_maker_gd/nodes/common/noise_perlin.gd") + +export(Resource) var image : Resource + +export(Vector2) var scale : Vector2 = Vector2(4, 4) +export(int) var iterations : int = 3 +export(float) var persistence : float = 0.5 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_vector2("get_scale", "set_scale", "Scale")#, Vector2(1, 10)) + mm_graph_node.add_slot_int("get_iterations", "set_iterations", "Iterations")#, Vector2(0, 1)) + mm_graph_node.add_slot_float("get_persistence", "set_persistence", "Persistence", 0.01)#, Vector2(0, 1)) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var ps : float = 1.0 / float(pseed) + + #perlin_color($(uv), vec2($(scale_x), $(scale_y)), int($(iterations)), $(persistence), $(seed)) + return NoisePerlin.perlin_colorc(uv, scale, iterations, persistence, ps) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_scale() -> Vector2: + return scale + +func set_scale(val : Vector2) -> void: + scale = val + + set_dirty(true) + +func get_iterations() -> int: + return iterations + +func set_iterations(val : int) -> void: + iterations = val + + set_dirty(true) + +func get_persistence() -> float: + return persistence + +func set_persistence(val : float) -> void: + persistence = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/noise/fbm_noise.gd b/game/addons/mat_maker_gd/nodes/noise/fbm_noise.gd new file mode 100644 index 0000000..036b9cb --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/noise/fbm_noise.gd @@ -0,0 +1,99 @@ +tool +extends MMNode + +var NoiseFBM = preload("res://addons/mat_maker_gd/nodes/common/noise_fbm.gd") + +export(Resource) var image : Resource + +export(int, "Value,Perlin,Simplex,Cellular1,Cellular2,Cellular3,Cellular4,Cellular5,Cellular6") var type : int = 0 +export(Vector2) var scale : Vector2 = Vector2(2, 2) +export(int) var folds : int = 0 +export(int) var iterations : int = 5 +export(float) var persistence : float = 0.5 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_enum("get_type", "set_type", "Type", [ "Value", "Perlin", "Simplex", "Cellular1", "Cellular2", "Cellular3", "Cellular4", "Cellular5", "Cellular6" ])#, Vector2(0, 1)) + mm_graph_node.add_slot_vector2("get_scale", "set_scale", "Scale")#, Vector2(1, 10)) + mm_graph_node.add_slot_int("get_folds", "set_folds", "folds")#, Vector2(0, 1)) + mm_graph_node.add_slot_int("get_iterations", "set_iterations", "Iterations")#, Vector2(0, 1)) + mm_graph_node.add_slot_float("get_persistence", "set_persistence", "Persistence", 0.01)#, Vector2(0, 1)) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var ps : float = 1.0 / float(pseed) + + #"Value,Perlin,Simplex,Cellular1,Cellular2,Cellular3,Cellular4,Cellular5,Cellular6" + if type == 0: + return NoiseFBM.fbmval(uv, scale, folds, iterations, persistence, ps) + elif type == 1: + return NoiseFBM.perlin(uv, scale, folds, iterations, persistence, ps) + elif type == 2: + return NoiseFBM.simplex(uv, scale, folds, iterations, persistence, ps) + elif type == 3: + return NoiseFBM.cellular(uv, scale, folds, iterations, persistence, ps) + elif type == 4: + return NoiseFBM.cellular2(uv, scale, folds, iterations, persistence, ps) + elif type == 5: + return NoiseFBM.cellular3(uv, scale, folds, iterations, persistence, ps) + elif type == 6: + return NoiseFBM.cellular4(uv, scale, folds, iterations, persistence, ps) + elif type == 7: + return NoiseFBM.cellular5(uv, scale, folds, iterations, persistence, ps) + elif type == 8: + return NoiseFBM.cellular6(uv, scale, folds, iterations, persistence, ps) + + return Color() + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_type() -> int: + return type + +func set_type(val : int) -> void: + type = val + + set_dirty(true) + +func get_scale() -> Vector2: + return scale + +func set_scale(val : Vector2) -> void: + scale = val + + set_dirty(true) + +func get_folds() -> int: + return folds + +func set_folds(val : int) -> void: + folds = val + + set_dirty(true) + +func get_iterations() -> int: + return iterations + +func set_iterations(val : int) -> void: + iterations = val + + set_dirty(true) + +func get_persistence() -> float: + return persistence + +func set_persistence(val : float) -> void: + persistence = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/noise/noise.gd b/game/addons/mat_maker_gd/nodes/noise/noise.gd new file mode 100644 index 0000000..30e23ee --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/noise/noise.gd @@ -0,0 +1,52 @@ +tool +extends MMNode + +var Noises = preload("res://addons/mat_maker_gd/nodes/common/noises.gd") + +export(Resource) var image : Resource + +export(int) var grid_size : int = 16 +export(float) var density : float = 0.5 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_int("get_grid_size", "set_grid_size", "Grid Size")#, Vector2(1, 10)) + mm_graph_node.add_slot_float("get_density", "set_density", "Density", 0.01)#, Vector2(0, 1)) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var ps : float = 1.0 / float(pseed) + + #return dots(uv, 1.0/$(size), $(density), $(seed)); + var f : float = Noises.dots(uv, 1.0 / float(grid_size), density, ps) + + return Color(f, f, f, 1) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_grid_size() -> int: + return grid_size + +func set_grid_size(val : int) -> void: + grid_size = val + + set_dirty(true) + +func get_density() -> float: + return density + +func set_density(val : float) -> void: + density = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/noise/voronoi.gd b/game/addons/mat_maker_gd/nodes/noise/voronoi.gd new file mode 100644 index 0000000..0c45239 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/noise/voronoi.gd @@ -0,0 +1,163 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var NoiseVoronoi = preload("res://addons/mat_maker_gd/nodes/common/noise_voronoi.gd") + +export(Resource) var out_nodes : Resource +export(Resource) var out_borders : Resource +export(Resource) var out_random_color : Resource +export(Resource) var out_fill : Resource + +export(Vector2) var scale : Vector2 = Vector2(4, 4) +export(Vector2) var stretch : Vector2 = Vector2(1, 1) +export(float) var intensity : float = 1 +export(float) var randomness : float = 0.85 + +func _init_properties(): + if !out_nodes: + out_nodes = MMNodeUniversalProperty.new() + out_nodes.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_nodes.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_borders: + out_borders = MMNodeUniversalProperty.new() + out_borders.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_borders.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_random_color: + out_random_color = MMNodeUniversalProperty.new() + out_random_color.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_random_color.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_fill: + out_fill = MMNodeUniversalProperty.new() + out_fill.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_fill.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(out_nodes) + register_output_property(out_borders) + register_output_property(out_random_color) + register_output_property(out_fill) + + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(out_nodes) + mm_graph_node.add_slot_texture_universal(out_borders) + mm_graph_node.add_slot_texture_universal(out_random_color) + mm_graph_node.add_slot_texture_universal(out_fill) + + mm_graph_node.add_slot_vector2("get_scale", "set_scale", "Scale", 0.1)#, Vector2(1, 32))#, Vector2(0, 32)) + mm_graph_node.add_slot_vector2("get_stretch", "set_stretch", "stretch", 0.01)#, Vector2(1, 32))#, Vector2(0, 32)) + mm_graph_node.add_slot_float("get_intensity", "set_intensity", "Intensity", 0.01)#, Vector2(1, 32))#, Vector2(0, 32)) + mm_graph_node.add_slot_float("get_randomness", "set_randomness", "Randomness", 0.01)#, Vector2(1, 32))#, Vector2(0, 32)) + + + + +func _render(material) -> void: + var nodes : Image = Image.new() + var borders : Image = Image.new() + var random_color : Image = Image.new() + var fill : Image = Image.new() + + nodes.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + borders.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + random_color.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + fill.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + + nodes.lock() + borders.lock() + random_color.lock() + fill.lock() + + var w : float = material.image_size.x + var h : float = material.image_size.y + + var pseed : float = randf() + randi() + + for x in range(material.image_size.x): + for y in range(material.image_size.y): + var uv : Vector2 = Vector2(x / w, y / h) + + var ps : float = 1.0 / float(pseed) + + #vec4 $(name_uv)_xyzw = voronoi($uv, vec2($scale_x, $scale_y), vec2($stretch_y, $stretch_x), $intensity, $randomness, $seed); + var voronoi : Color = NoiseVoronoi.voronoi(uv, scale, stretch, intensity, randomness, ps) + + #Nodes - float - A greyscale pattern based on the distance to cell centers + #$(name_uv)_xyzw.z + var nodes_col : Color = Color(voronoi.b, voronoi.b, voronoi.b, 1) + + #Borders - float - A greyscale pattern based on the distance to borders + #$(name_uv)_xyzw.w + var borders_col : Color = Color(voronoi.a, voronoi.a, voronoi.a, 1) + + #Random color - rgb - A color pattern that assigns a random color to each cell + #rand3(fract(floor($(name_uv)_xyzw.xy)/vec2($scale_x, $scale_y))) + var rv3 : Vector3 = Commons.rand3(Commons.fractv2(Vector2(voronoi.r, voronoi.g) / scale)) + var random_color_col : Color = Color(rv3.x, rv3.y, rv3.z, 1) + + #Fill - rgba - An output that should be plugged into a Fill companion node + #vec4(fract(($(name_uv)_xyzw.xy-1.0)/vec2($scale_x, $scale_y)), vec2(2.0)/vec2($scale_x, $scale_y)) + var fv21 : Vector2 = Commons.fractv2((Vector2(voronoi.r, voronoi.g) - Vector2(1, 1)) / scale) + var fv22 : Vector2 = Vector2(2, 2) / scale + var fill_col : Color = Color(fv21.x, fv21.y, fv22.x, fv22.y) + + nodes.set_pixel(x, y, nodes_col) + borders.set_pixel(x, y, borders_col) + random_color.set_pixel(x, y, random_color_col) + fill.set_pixel(x, y, fill_col) + + nodes.unlock() + borders.unlock() + random_color.unlock() + fill.unlock() + + out_nodes.set_value(nodes) + out_borders.set_value(borders) + out_random_color.set_value(random_color) + out_fill.set_value(fill) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + return Color() + +#scale +func get_scale() -> Vector2: + return scale + +func set_scale(val : Vector2) -> void: + scale = val + + set_dirty(true) + +#stretch +func get_stretch() -> Vector2: + return stretch + +func set_stretch(val : Vector2) -> void: + stretch = val + + set_dirty(true) + +#intensity +func get_intensity() -> float: + return intensity + +func set_intensity(val : float) -> void: + intensity = val + + set_dirty(true) + +#randomness +func get_randomness() -> float: + return randomness + +func set_randomness(val : float) -> void: + randomness = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/other/output_image.gd b/game/addons/mat_maker_gd/nodes/other/output_image.gd new file mode 100644 index 0000000..84a77fb --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/other/output_image.gd @@ -0,0 +1,45 @@ +tool +extends MMNode + +export(Resource) var image : Resource + +export(String) var postfix : String = "" + +func _init_properties(): + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + image.slot_name = "image" + + register_input_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_line_edit("get_postfix", "set_postfix", "postfix") + +func _render(material) -> void: + if !image: + return + + var img : Image = image.get_active_image() + + if !img: + return + + var matpath : String = material.get_path() + + if matpath == "": + return + + var matbn : String = matpath.get_basename() + var final_file_name : String = matbn + postfix + ".png" + + img.save_png(final_file_name) + +func get_postfix() -> String: + return postfix + +func set_postfix(pf : String) -> void: + postfix = pf + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/pattern/beehive.gd b/game/addons/mat_maker_gd/nodes/pattern/beehive.gd new file mode 100644 index 0000000..b439ae3 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/pattern/beehive.gd @@ -0,0 +1,113 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Patterns = preload("res://addons/mat_maker_gd/nodes/common/patterns.gd") + +export(Resource) var out_main : Resource +export(Resource) var out_random_color : Resource +export(Resource) var out_uv_map : Resource + +export(Vector2) var size : Vector2 = Vector2(4, 4) + +func _init_properties(): + if !out_main: + out_main = MMNodeUniversalProperty.new() + out_main.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_main.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_random_color: + out_random_color = MMNodeUniversalProperty.new() + out_random_color.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_random_color.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_uv_map: + out_uv_map = MMNodeUniversalProperty.new() + out_uv_map.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_uv_map.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(out_main) + register_output_property(out_random_color) + register_output_property(out_uv_map) + + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(out_main) + mm_graph_node.add_slot_texture_universal(out_random_color) + mm_graph_node.add_slot_texture_universal(out_uv_map) + + mm_graph_node.add_slot_vector2("get_size", "set_size", "Size")#, Vector2(1, 32))#, Vector2(0, 32)) + + +func _render(material) -> void: + var main_pattern : Image = Image.new() + var random_color : Image = Image.new() + var uv_map : Image = Image.new() + + main_pattern.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + random_color.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + uv_map.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + + main_pattern.lock() + random_color.lock() + uv_map.lock() + + var w : float = material.image_size.x + var h : float = material.image_size.y + + var pseed : float = randf() + randi() + + for x in range(material.image_size.x): + for y in range(material.image_size.y): + var uv : Vector2 = Vector2(x / w, y / h) + + var ps : float = 1.0 / float(pseed) + + #vec2 $(name_uv)_uv = $uv*vec2($sx, $sy*1.73205080757); + #vec4 $(name_uv)_center = beehive_center($(name_uv)_uv); + var beehive_uv : Vector2 = uv * size; + var beehive_uv_center : Color = Patterns.beehive_center(beehive_uv); + + #Output (float) - Shows the greyscale pattern + #1.0-2.0*beehive_dist($(name_uv)_center.xy) + var f : float = 1.0 - 2.0 * Patterns.beehive_dist(Vector2(beehive_uv_center.r, beehive_uv_center.g)) + var main_pattern_col : Color = Color(f, f, f, 1) + + #Random color (rgb) - Shows a random color for each hexagonal tile + #rand3(fract($(name_uv)_center.zw/vec2($sx, $sy))+vec2(float($seed))) + var rcv3 : Vector3 = Commons.rand3(Commons.fractv2(Vector2(beehive_uv_center.b, beehive_uv_center.a) / size) + Vector2(ps, ps)) + var random_color_col : Color = Color(rcv3.x, rcv3.y, rcv3.z, 1) + + #UV map (rgb) - Shows an UV map to be connected to the UV map port of the Custom UV node + #vec3(vec2(0.5)+$(name_uv)_center.xy, rand(fract($(name_uv)_center.zw/vec2($sx, $sy))+vec2(float($seed)))) + var uvm1 : Vector2 = Vector2(0.5, 0.5) + Vector2(beehive_uv_center.r, beehive_uv_center.g) + var uvm2 : Vector2 = Commons.rand2(Commons.fractv2(Vector2(beehive_uv_center.b, beehive_uv_center.a) / size) + Vector2(ps, ps)) + + var uv_map_col : Color = Color(uvm1.x, uvm1.y, uvm2.x, 1) + + main_pattern.set_pixel(x, y, main_pattern_col) + random_color.set_pixel(x, y, random_color_col) + uv_map.set_pixel(x, y, uv_map_col) + + main_pattern.unlock() + random_color.unlock() + uv_map.unlock() + + out_main.set_value(main_pattern) + out_random_color.set_value(random_color) + out_uv_map.set_value(uv_map) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + return Color() + +#size +func get_size() -> Vector2: + return size + +func set_size(val : Vector2) -> void: + size = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/pattern/bricks.gd b/game/addons/mat_maker_gd/nodes/pattern/bricks.gd new file mode 100644 index 0000000..498460f --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/pattern/bricks.gd @@ -0,0 +1,288 @@ +tool +extends MMNode + +var Patterns = preload("res://addons/mat_maker_gd/nodes/common/patterns.gd") + +export(Resource) var out_bricks_pattern : Resource +export(Resource) var out_random_color : Resource +export(Resource) var out_position_x : Resource +export(Resource) var out_position_y : Resource +export(Resource) var out_brick_uv : Resource +export(Resource) var out_corner_uv : Resource +export(Resource) var out_direction : Resource + +export(int, "Running Bond,Running Bond (2),HerringBone,Basket Weave,Spanish Bond") var type : int = 0 +export(int) var repeat : int = 1 +export(Vector2) var col_row : Vector2 = Vector2(4, 4) +export(float) var offset : float = 0.5 +export(Resource) var mortar : Resource +export(Resource) var bevel : Resource +export(Resource) var roundness : Resource +export(float) var corner : float = 0.3 + +func _init_properties(): + if !out_bricks_pattern: + out_bricks_pattern = MMNodeUniversalProperty.new() + out_bricks_pattern.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_bricks_pattern.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_random_color: + out_random_color = MMNodeUniversalProperty.new() + out_random_color.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_random_color.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_position_x: + out_position_x = MMNodeUniversalProperty.new() + out_position_x.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_position_x.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_position_y: + out_position_y = MMNodeUniversalProperty.new() + out_position_y.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_position_y.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_brick_uv: + out_brick_uv = MMNodeUniversalProperty.new() + out_brick_uv.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_brick_uv.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_corner_uv: + out_corner_uv = MMNodeUniversalProperty.new() + out_corner_uv.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_corner_uv.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_direction: + out_direction = MMNodeUniversalProperty.new() + out_direction.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_direction.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !mortar: + mortar = MMNodeUniversalProperty.new() + mortar.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + mortar.set_default_value(0.1) + + mortar.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + mortar.slot_name = "Mortar" + mortar.value_step = 0.01 + mortar.value_range = Vector2(0, 0.5) + + if !bevel: + bevel = MMNodeUniversalProperty.new() + bevel.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + bevel.set_default_value(0.1) + + bevel.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + bevel.slot_name = "Bevel" + bevel.value_step = 0.01 + bevel.value_range = Vector2(0, 0.5) + + if !roundness: + roundness = MMNodeUniversalProperty.new() + roundness.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + roundness.set_default_value(0.1) + + roundness.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + roundness.slot_name = "Roundness" + roundness.value_step = 0.01 + roundness.value_range = Vector2(0, 0.5) + + register_output_property(out_bricks_pattern) + register_output_property(out_random_color) + register_output_property(out_position_x) + register_output_property(out_position_y) + register_output_property(out_brick_uv) + register_output_property(out_corner_uv) + register_output_property(out_direction) + + register_input_property(mortar) + register_input_property(bevel) + register_input_property(roundness) + + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(out_bricks_pattern) + mm_graph_node.add_slot_texture_universal(out_random_color) + mm_graph_node.add_slot_texture_universal(out_position_x) + mm_graph_node.add_slot_texture_universal(out_position_y) + mm_graph_node.add_slot_texture_universal(out_brick_uv) + mm_graph_node.add_slot_texture_universal(out_corner_uv) + mm_graph_node.add_slot_texture_universal(out_direction) + + mm_graph_node.add_slot_enum("get_type", "set_type", "Type", [ "Running Bond", "Running Bond (2)", "HerringBone", "Basket Weave", "Spanish Bond" ]) + mm_graph_node.add_slot_int("get_repeat", "set_repeat", "Repeat") + + mm_graph_node.add_slot_vector2("get_col_row", "set_col_row", "Col, Row")#, Vector2(1, 32))#, Vector2(0, 32)) + mm_graph_node.add_slot_float("get_offset", "set_offset", "Offset") + + mm_graph_node.add_slot_float_universal(mortar) + mm_graph_node.add_slot_float_universal(bevel) + mm_graph_node.add_slot_float_universal(roundness) + + mm_graph_node.add_slot_float("get_corner", "set_corner", "Corner") + +func _render(material) -> void: + var bricks_pattern : Image = Image.new() + var random_color : Image = Image.new() + var position_x : Image = Image.new() + var position_y : Image = Image.new() + var brick_uv : Image = Image.new() + var corner_uv : Image = Image.new() + var direction : Image = Image.new() + + bricks_pattern.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + random_color.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + position_x.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + position_y.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + brick_uv.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + corner_uv.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + direction.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + + bricks_pattern.lock() + random_color.lock() + position_x.lock() + position_y.lock() + brick_uv.lock() + corner_uv.lock() + direction.lock() + + var w : float = material.image_size.x + var h : float = material.image_size.y + + var pseed : float = randf() + randi() + + for x in range(material.image_size.x): + for y in range(material.image_size.y): + var uv : Vector2 = Vector2(x / w, y / h) + + #vec4 $(name_uv)_rect = bricks_$pattern($uv, vec2($columns, $rows), $repeat, $row_offset); + var brick_rect : Color = Color() + + #"Running Bond,Running Bond (2),HerringBone,Basket Weave,Spanish Bond" + + if type == 0: + brick_rect = Patterns.bricks_rb(uv, col_row, repeat, offset) + elif type == 1: + brick_rect = Patterns.bricks_rb2(uv, col_row, repeat, offset) + elif type == 2: + brick_rect = Patterns.bricks_hb(uv, col_row, repeat, offset) + elif type == 3: + brick_rect = Patterns.bricks_bw(uv, col_row, repeat, offset) + elif type == 4: + brick_rect = Patterns.bricks_sb(uv, col_row, repeat, offset) + + + #vec4 $(name_uv) = brick($uv, $(name_uv)_rect.xy, $(name_uv)_rect.zw, $mortar*$mortar_map($uv), $round*$round_map($uv), max(0.001, $bevel*$bevel_map($uv))); + var brick : Color = Patterns.brick(uv, Vector2(brick_rect.r, brick_rect.g), Vector2(brick_rect.b, brick_rect.a), mortar.get_value(uv), roundness.get_value(uv), max(0.001, bevel.get_value(uv))) + + #Bricks pattern (float) - A greyscale image that shows the bricks pattern + #$(name_uv).x + var bricks_pattern_col : Color = Color(brick.r, brick.r, brick.r, 1) + + #Random color (rgb) - A random color for each brick + #brick_random_color($(name_uv)_rect.xy, $(name_uv)_rect.zw, float($seed)) + var brc : Vector3 = Patterns.brick_random_color(Vector2(brick_rect.r, brick_rect.g), Vector2(brick_rect.b, brick_rect.a), 1 / float(pseed)) + var random_color_col : Color = Color(brc.x, brc.y, brc.z, 1) + + #Position.x (float) - The position of each brick along the X axis", + #$(name_uv).y + var position_x_col : Color = Color(brick.g, brick.g, brick.g, 1) + + #Position.y (float) - The position of each brick along the Y axis + #$(name_uv).z + var position_y_col : Color = Color(brick.b, brick.b, brick.b, 1) + + #Brick UV (rgb) - An UV map output for each brick, to be connected to the Map input of a CustomUV node + #brick_uv($uv, $(name_uv)_rect.xy, $(name_uv)_rect.zw, float($seed)) + var buv : Vector3 = Patterns.brick_uv(uv, Vector2(brick_rect.r, brick_rect.g), Vector2(brick_rect.b, brick_rect.a), pseed) + var brick_uv_col : Color = Color(buv.x, buv.y, buv.z, 1) + + #Corner UV (rgb) - An UV map output for each brick corner, to be connected to the Map input of a CustomUV node + #brick_corner_uv($uv, $(name_uv)_rect.xy, $(name_uv)_rect.zw, $mortar*$mortar_map($uv), $corner, float($seed)) + var bcuv : Vector3 = Patterns.brick_corner_uv(uv, Vector2(brick_rect.r, brick_rect.g), Vector2(brick_rect.b, brick_rect.a), mortar.get_value(uv), corner, pseed) + var corner_uv_col : Color = Color(bcuv.x, bcuv.y, bcuv.z, 1) + + #Direction (float) - The direction of each brick (white: horizontal, black: vertical) + #0.5*(sign($(name_uv)_rect.z-$(name_uv)_rect.x-$(name_uv)_rect.w+$(name_uv)_rect.y)+1.0) + var d : float = 0.5 * (sign(brick_rect.b - brick_rect.r - brick_rect.a + brick_rect.g) + 1.0) + var direction_col : Color = Color(d, d, d, 1) + + bricks_pattern.set_pixel(x, y, bricks_pattern_col) + random_color.set_pixel(x, y, random_color_col) + position_x.set_pixel(x, y, position_x_col) + position_y.set_pixel(x, y, position_y_col) + brick_uv.set_pixel(x, y, brick_uv_col) + corner_uv.set_pixel(x, y, corner_uv_col) + direction.set_pixel(x, y, direction_col) + + bricks_pattern.unlock() + random_color.unlock() + position_x.unlock() + position_y.unlock() + brick_uv.unlock() + corner_uv.unlock() + direction.unlock() + + out_bricks_pattern.set_value(bricks_pattern) + out_random_color.set_value(random_color) + out_position_x.set_value(position_x) + out_position_y.set_value(position_y) + out_brick_uv.set_value(brick_uv) + out_corner_uv.set_value(corner_uv) + out_direction.set_value(direction) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + return Color() + +#type +func get_type() -> int: + return type + +func set_type(val : int) -> void: + type = val + + set_dirty(true) + +#repeat +func get_repeat() -> int: + return repeat + +func set_repeat(val : int) -> void: + repeat = val + + set_dirty(true) + +#col_row +func get_col_row() -> Vector2: + return col_row + +func set_col_row(val : Vector2) -> void: + col_row = val + + set_dirty(true) + +#offset +func get_offset() -> float: + return offset + +func set_offset(val : float) -> void: + offset = val + + set_dirty(true) + +#corner +func get_corner() -> float: + return corner + +func set_corner(val : float) -> void: + corner = val + + set_dirty(true) + + diff --git a/game/addons/mat_maker_gd/nodes/pattern/iching.gd b/game/addons/mat_maker_gd/nodes/pattern/iching.gd new file mode 100644 index 0000000..5daceba --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/pattern/iching.gd @@ -0,0 +1,40 @@ +tool +extends MMNode + +var Patterns = preload("res://addons/mat_maker_gd/nodes/common/patterns.gd") + +export(Resource) var image : Resource +export(Vector2) var size : Vector2 = Vector2(4, 4) + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_vector2("get_size", "set_size", "Size", 1) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var ps : float = 1.0 / float(pseed) + + #IChing(vec2($columns, $rows)*$uv, float($seed)) + return Patterns.IChingc(uv, size, ps) + +#size +func get_size() -> Vector2: + return size + +func set_size(val : Vector2) -> void: + size = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/pattern/pattern.gd b/game/addons/mat_maker_gd/nodes/pattern/pattern.gd new file mode 100644 index 0000000..1bc9ac1 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/pattern/pattern.gd @@ -0,0 +1,72 @@ +tool +extends MMNode + +var Patterns = preload("res://addons/mat_maker_gd/nodes/common/patterns.gd") + +export(Resource) var image : Resource +export(int, "Multiply,Add,Max,Min,Xor,Pow") var combiner_type : int = 0 +export(int, "Sine,Triangle,Square,Sawtooth,Constant,Bounce") var combiner_axis_type_x : int = 0 +export(int, "Sine,Triangle,Square,Sawtooth,Constant,Bounce") var combiner_axis_type_y : int = 0 +export(Vector2) var repeat : Vector2 = Vector2(4, 4) + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_enum("get_combiner_type", "set_combiner_type", "Combiner Type", [ "Multiply", "Add" , "Max", "Min", "Xor", "Pow" ]) + mm_graph_node.add_slot_enum("get_combiner_axis_type_x", "set_combiner_axis_type_x", "Combiner Axis type", [ "Sine", "Triangle", "Square", "Sawtooth", "Constant", "Bounce" ]) + mm_graph_node.add_slot_enum("get_combiner_axis_type_y", "set_combiner_axis_type_y", "", [ "Sine", "Triangle", "Square", "Sawtooth", "Constant", "Bounce" ]) + mm_graph_node.add_slot_vector2("get_repeat", "set_repeat", "Repeat", 1)#, Vector2(0, 32)) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var f : float = Patterns.pattern(uv, repeat.x, repeat.y, combiner_type, combiner_axis_type_x, combiner_axis_type_y) + + return Color(f, f, f, 1) + +#combiner_type +func get_combiner_type() -> int: + return combiner_type + +func set_combiner_type(val : int) -> void: + combiner_type = val + + set_dirty(true) + +#combiner_axis_type_x +func get_combiner_axis_type_x() -> int: + return combiner_axis_type_x + +func set_combiner_axis_type_x(val : int) -> void: + combiner_axis_type_x = val + + set_dirty(true) + +#combiner_axis_type_y +func get_combiner_axis_type_y() -> int: + return combiner_axis_type_y + +func set_combiner_axis_type_y(val : int) -> void: + combiner_axis_type_y = val + + set_dirty(true) + +#repeat +func get_repeat() -> Vector2: + return repeat + +func set_repeat(val : Vector2) -> void: + repeat = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/pattern/runes.gd b/game/addons/mat_maker_gd/nodes/pattern/runes.gd new file mode 100644 index 0000000..fd7a965 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/pattern/runes.gd @@ -0,0 +1,40 @@ +tool +extends MMNode + +var Patterns = preload("res://addons/mat_maker_gd/nodes/common/patterns.gd") + +export(Resource) var image : Resource +export(Vector2) var size : Vector2 = Vector2(4, 4) + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_vector2("get_size", "set_size", "Size", 1) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var ps : float = 1.0 / float(pseed) + + #Rune(vec2($columns, $rows)*$uv, float($seed)) + return Patterns.runesc(uv, size, ps) + +#size +func get_size() -> Vector2: + return size + +func set_size(val : Vector2) -> void: + size = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/pattern/scratches.gd b/game/addons/mat_maker_gd/nodes/pattern/scratches.gd new file mode 100644 index 0000000..f333b2d --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/pattern/scratches.gd @@ -0,0 +1,82 @@ +tool +extends MMNode + +var Patterns = preload("res://addons/mat_maker_gd/nodes/common/patterns.gd") + +export(Resource) var image : Resource +export(Vector2) var size : Vector2 = Vector2(0.25, 0.4) +export(int) var layers : int = 4 +export(float) var waviness : float = 0.51 +export(int) var angle : int = 0 +export(float) var randomness : float = 0.44 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_vector2("get_size", "set_size", "Size", 0.01) + mm_graph_node.add_slot_int("get_layers", "set_layers", "Layers") + mm_graph_node.add_slot_float("get_waviness", "set_waviness", "Waviness", 0.01) + mm_graph_node.add_slot_int("get_angle", "set_angle", "Angle") + mm_graph_node.add_slot_float("get_randomness", "set_randomness", "Randomness", 0.01) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + #scratches($uv, int($layers), vec2($length, $width), $waviness, $angle, $randomness, vec2(float($seed), 0.0)) + return Patterns.scratchesc(uv, layers, size, waviness, angle, randomness, Vector2(pseed, 0.0)) + +#size +func get_size() -> Vector2: + return size + +func set_size(val : Vector2) -> void: + size = val + + set_dirty(true) + +#layers +func get_layers() -> int: + return layers + +func set_layers(val : int) -> void: + layers = val + + set_dirty(true) + +#waviness +func get_waviness() -> float: + return waviness + +func set_waviness(val : float) -> void: + waviness = val + + set_dirty(true) + +#angle +func get_angle() -> int: + return angle + +func set_angle(val : int) -> void: + angle = val + + set_dirty(true) + +#randomness +func get_randomness() -> float: + return randomness + +func set_randomness(val : float) -> void: + randomness = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/pattern/sine_wave.gd b/game/addons/mat_maker_gd/nodes/pattern/sine_wave.gd new file mode 100644 index 0000000..d343bfc --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/pattern/sine_wave.gd @@ -0,0 +1,61 @@ +tool +extends MMNode + +var Patterns = preload("res://addons/mat_maker_gd/nodes/common/patterns.gd") + +export(Resource) var image : Resource +export(float) var amplitude : float = 0.5 +export(float) var frequency : float = 2 +export(float) var phase : float = 0 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_float("get_amplitude", "set_amplitude", "Amplitude", 0.01) + mm_graph_node.add_slot_float("get_frequency", "set_frequency", "Frequency", 0.1) + mm_graph_node.add_slot_float("get_phase", "set_phase", "Phase", 0.01) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var f : float = 1.0 - abs(2.0 * (uv.y - 0.5) - amplitude *sin((frequency * uv.x + phase)*6.28318530718)) + + return Color(f, f, f, 1) + +#amplitude +func get_amplitude() -> float: + return amplitude + +func set_amplitude(val : float) -> void: + amplitude = val + + set_dirty(true) + +#frequency +func get_frequency() -> float: + return frequency + +func set_frequency(val : float) -> void: + frequency = val + + set_dirty(true) + +#phase +func get_phase() -> float: + return phase + +func set_phase(val : float) -> void: + phase = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/pattern/truchet.gd b/game/addons/mat_maker_gd/nodes/pattern/truchet.gd new file mode 100644 index 0000000..b07ec96 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/pattern/truchet.gd @@ -0,0 +1,53 @@ +tool +extends MMNode + +var Patterns = preload("res://addons/mat_maker_gd/nodes/common/patterns.gd") + +export(Resource) var image : Resource +export(int, "Line,Circle") var shape : int = 0 +export(float) var size : float = 4 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_enum("get_shape", "set_shape", "Shape", [ "Line", "Circle" ]) + mm_graph_node.add_slot_float("get_size", "set_size", "Size", 1) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + if shape == 0: + return Patterns.truchet1c(uv, size, pseed) + elif shape == 1: + return Patterns.truchet2c(uv, size, pseed) + + return Color() + +#shape +func get_shape() -> int: + return shape + +func set_shape(val : int) -> void: + shape = val + + set_dirty(true) + +#size +func get_size() -> float: + return size + +func set_size(val : float) -> void: + size = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/pattern/weave.gd b/game/addons/mat_maker_gd/nodes/pattern/weave.gd new file mode 100644 index 0000000..f846549 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/pattern/weave.gd @@ -0,0 +1,134 @@ +tool +extends MMNode + +var Patterns = preload("res://addons/mat_maker_gd/nodes/common/patterns.gd") + +export(Resource) var out_main : Resource +export(Resource) var out_horizontal_map : Resource +export(Resource) var out_vertical_map : Resource + +export(Vector2) var size : Vector2 = Vector2(4, 4) +export(Resource) var width : Resource +export(int) var stitch : int = 1 + +func _init_properties(): + if !out_main: + out_main = MMNodeUniversalProperty.new() + out_main.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_main.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_horizontal_map: + out_horizontal_map = MMNodeUniversalProperty.new() + out_horizontal_map.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_horizontal_map.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_vertical_map: + out_vertical_map = MMNodeUniversalProperty.new() + out_vertical_map.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_vertical_map.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !width: + width = MMNodeUniversalProperty.new() + width.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + width.set_default_value(Vector2(0.9, 0.9)) + + width.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + width.slot_name = "Width" + width.value_step = 0.01 + width.value_range = Vector2(0, 1) + + register_output_property(out_main) + register_output_property(out_horizontal_map) + register_output_property(out_vertical_map) + + register_input_property(width) + + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(out_main) + mm_graph_node.add_slot_texture_universal(out_horizontal_map) + mm_graph_node.add_slot_texture_universal(out_vertical_map) + + mm_graph_node.add_slot_vector2("get_size", "set_size", "Size")#, Vector2(1, 32))#, Vector2(0, 32)) + mm_graph_node.add_slot_vector2_universal(width) + + mm_graph_node.add_slot_int("get_stitch", "set_stitch", "Stitch") + + +func _render(material) -> void: + var main_pattern : Image = Image.new() + var horizontal_map : Image = Image.new() + var vertical_map : Image = Image.new() + + main_pattern.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + horizontal_map.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + vertical_map.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + + main_pattern.lock() + horizontal_map.lock() + vertical_map.lock() + + var w : float = material.image_size.x + var h : float = material.image_size.y + + var pseed : float = randf() + randi() + + for x in range(material.image_size.x): + for y in range(material.image_size.y): + var uv : Vector2 = Vector2(x / w, y / h) + + var width_val : Vector2 = width.get_value(uv) + + #vec3 $(name_uv) = weave2($uv, vec2($columns, $rows), $stitch, $width_x*$width_map($uv), $width_y*$width_map($uv)); + var weave : Vector3 = Patterns.weave2(uv, size, stitch, width_val.x, width_val.y); + + #Outputs: + + #Output (float) - Shows the generated greyscale weave pattern. + #$(name_uv).x + var main_pattern_col : Color = Color(weave.x, weave.x, weave.x, 1) + + #Horizontal mask (float) - Horizontal mask + #$(name_uv).y + var horizontal_map_col : Color = Color(weave.y, weave.y, weave.y, 1) + + #Vertical mask (float) - Mask for vertical stripes + #$(name_uv).z + var vertical_map_col : Color = Color(weave.z, weave.z, weave.z, 1) + + main_pattern.set_pixel(x, y, main_pattern_col) + horizontal_map.set_pixel(x, y, horizontal_map_col) + vertical_map.set_pixel(x, y, vertical_map_col) + + main_pattern.unlock() + horizontal_map.unlock() + vertical_map.unlock() + + out_main.set_value(main_pattern) + out_horizontal_map.set_value(horizontal_map) + out_vertical_map.set_value(vertical_map) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + return Color() + +#size +func get_size() -> Vector2: + return size + +func set_size(val : Vector2) -> void: + size = val + + set_dirty(true) + +#stitch +func get_stitch() -> int: + return stitch + +func set_stitch(val : int) -> void: + stitch = val + + set_dirty(true) + diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_annular_shape.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_annular_shape.gd new file mode 100644 index 0000000..c7e8829 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_annular_shape.gd @@ -0,0 +1,53 @@ +tool +extends MMNode + +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var output : Resource +export(float) var width : float = 0.1 +export(int) var ripples : int = 1 + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + #output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Apply >>>" + output.get_value_from_owner = true + + register_input_property(output) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_float("get_width", "set_width", "Width", 0.01) + mm_graph_node.add_slot_int("get_ripples", "set_ripples", "Ripples") + +func get_property_value(uv : Vector2): + var val : float = output.get_value(uv, true) + + return SDF2D.sdRipples(val, width, ripples) + +#width +func get_width() -> float: + return width + +func set_width(val : float) -> void: + width = val + + emit_changed() + output.emit_changed() + +#ripples +func get_ripples() -> int: + return ripples + +func set_ripples(val : int) -> void: + ripples = val + + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_bool.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_bool.gd new file mode 100644 index 0000000..69ee787 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_bool.gd @@ -0,0 +1,76 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var input1 : Resource +export(Resource) var input2 : Resource +export(Resource) var output : Resource +export(int, "Union,Substraction,Intersection") var operation : int = 0 + +func _init_properties(): + if !input1: + input1 = MMNodeUniversalProperty.new() + input1.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + input1.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input1.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + input1.slot_name = ">>> Input 1 " + if !input1.is_connected("changed", self, "on_input_changed"): + input1.connect("changed", self, "on_input_changed") + + if !input2: + input2 = MMNodeUniversalProperty.new() + input2.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + input2.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input2.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + input2.slot_name = ">>> Input 2 " + + if !input2.is_connected("changed", self, "on_input_changed"): + input2.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = " Output >>>" + output.get_value_from_owner = true + + register_input_property(input1) + register_input_property(input2) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input1) + mm_graph_node.add_slot_label_universal(input2) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_enum("get_operation", "set_operation", "Operation", [ "Union", "Substraction", "Intersection" ]) + +func get_property_value(uv : Vector2) -> float: + if operation == 0: + return SDF2D.sdf_boolean_union(input1.get_value(uv), input2.get_value(uv)) + elif operation == 1: + return SDF2D.sdf_boolean_substraction(input1.get_value(uv), input2.get_value(uv)) + elif operation == 2: + return SDF2D.sdf_boolean_intersection(input1.get_value(uv), input2.get_value(uv)) + + return 0.0 + +#operation +func get_operation() -> int: + return operation + +func set_operation(val : int) -> void: + operation = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_circle_repeat.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_circle_repeat.gd new file mode 100644 index 0000000..f61f6dc --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_circle_repeat.gd @@ -0,0 +1,43 @@ +tool +extends MMNode + +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var output : Resource +export(int) var count : int = 6 + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + #output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Apply >>>" + output.get_value_from_owner = true + + register_input_property(output) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_int("get_count", "set_count", "Count") + +func get_property_value(uv : Vector2): + #$in(circle_repeat_transform_2d($uv-vec2(0.5), $c)+vec2(0.5)) + var new_uv : Vector2 = SDF2D.circle_repeat_transform_2d(uv - Vector2(0.5, 0.5), count) + Vector2(0.5, 0.5) + + return output.get_value(new_uv, true) + +#count +func get_count() -> int: + return count + +func set_count(val : int) -> void: + count = val + + emit_changed() + output.emit_changed() + diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_morph.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_morph.gd new file mode 100644 index 0000000..e5aee5b --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_morph.gd @@ -0,0 +1,69 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var input1 : Resource +export(Resource) var input2 : Resource +export(Resource) var output : Resource +export(float) var amount : float = 0.5 + +func _init_properties(): + if !input1: + input1 = MMNodeUniversalProperty.new() + input1.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + input1.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input1.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + input1.slot_name = ">>> Input 1 " + if !input1.is_connected("changed", self, "on_input_changed"): + input1.connect("changed", self, "on_input_changed") + + if !input2: + input2 = MMNodeUniversalProperty.new() + input2.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + input2.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input2.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + input2.slot_name = ">>> Input 2 " + + if !input2.is_connected("changed", self, "on_input_changed"): + input2.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = " Output >>>" + output.get_value_from_owner = true + + register_input_property(input1) + register_input_property(input2) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input1) + mm_graph_node.add_slot_label_universal(input2) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_float("get_amount", "set_amount", "Amount", 0.01) + +func get_property_value(uv : Vector2) -> float: + return SDF2D.sdf_morph(input1.get_value(uv), input2.get_value(uv), amount) + +#amount +func get_amount() -> float: + return amount + +func set_amount(val : float) -> void: + amount = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_repeat.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_repeat.gd new file mode 100644 index 0000000..f36ca99 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_repeat.gd @@ -0,0 +1,68 @@ +tool +extends MMNode + +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var output : Resource +export(int) var x : int = 3 +export(int) var y : int = 3 +export(float) var random_rotation : float = 0.5 + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + #output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Apply >>>" + output.get_value_from_owner = true + + register_input_property(output) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_int("get_x", "set_x", "X") + mm_graph_node.add_slot_int("get_y", "set_y", "Y") + mm_graph_node.add_slot_float("get_random_rotation", "set_random_rotation", "Random rotation", 0.01) + +func get_property_value(uv : Vector2): + #todo add this as a parameter + var pseed : int = 123123 + + #$in(repeat_2d($uv, vec2(1.0/$rx, 1.0/$ry), float($seed), $r)) + var new_uv : Vector2 = SDF2D.repeat_2d(uv, Vector2(1.0 / float(x), 1.0/ float(y)), 1.0/float(pseed), random_rotation) + + return output.get_value(new_uv, true) +#x +func get_x() -> int: + return x + +func set_x(val : int) -> void: + x = val + + emit_changed() + output.emit_changed() + +#y +func get_y() -> int: + return y + +func set_y(val : int) -> void: + y = val + + emit_changed() + output.emit_changed() + +#random_rotation +func get_random_rotation() -> float: + return random_rotation + +func set_random_rotation(val : float) -> void: + random_rotation = val + + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_rounded_shape.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_rounded_shape.gd new file mode 100644 index 0000000..ac71fd5 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_rounded_shape.gd @@ -0,0 +1,42 @@ +tool +extends MMNode + +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var output : Resource +export(float) var radius : float = 0 + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + #output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Apply >>>" + output.get_value_from_owner = true + + register_input_property(output) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_float("get_radius", "set_radius", "Radius", 0.01) + +func get_property_value(uv : Vector2): + var val : float = output.get_value(uv, true) + + return SDF2D.sdf_rounded_shape(val, radius) + +#radius +func get_radius() -> float: + return radius + +func set_radius(val : float) -> void: + radius = val + + emit_changed() + output.emit_changed() + diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_smooth_bool.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_smooth_bool.gd new file mode 100644 index 0000000..3b7a768 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_op_smooth_bool.gd @@ -0,0 +1,88 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var input1 : Resource +export(Resource) var input2 : Resource +export(Resource) var output : Resource +export(int, "Union,Substraction,Intersection") var operation : int = 0 +export(float) var smoothness : float = 0.15 + +func _init_properties(): + if !input1: + input1 = MMNodeUniversalProperty.new() + input1.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + input1.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input1.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + input1.slot_name = ">>> Input 1 " + if !input1.is_connected("changed", self, "on_input_changed"): + input1.connect("changed", self, "on_input_changed") + + if !input2: + input2 = MMNodeUniversalProperty.new() + input2.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + input2.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input2.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + input2.slot_name = ">>> Input 2 " + + if !input2.is_connected("changed", self, "on_input_changed"): + input2.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = " Output >>>" + output.get_value_from_owner = true + + register_input_property(input1) + register_input_property(input2) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input1) + mm_graph_node.add_slot_label_universal(input2) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_enum("get_operation", "set_operation", "Operation", [ "Union", "Substraction", "Intersection" ]) + mm_graph_node.add_slot_float("get_smoothness", "set_smoothness", "Smoothness", 0.01) + +func get_property_value(uv : Vector2) -> float: + if operation == 0: + return SDF2D.sdf_smooth_boolean_union(input1.get_value(uv), input2.get_value(uv), smoothness) + elif operation == 1: + return SDF2D.sdf_smooth_boolean_substraction(input1.get_value(uv), input2.get_value(uv), smoothness) + elif operation == 2: + return SDF2D.sdf_smooth_boolean_intersection(input1.get_value(uv), input2.get_value(uv), smoothness) + + return 0.0 + +#operation +func get_operation() -> int: + return operation + +func set_operation(val : int) -> void: + operation = val + + emit_changed() + output.emit_changed() + +#smoothness +func get_smoothness() -> float: + return smoothness + +func set_smoothness(val : float) -> void: + smoothness = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_arc.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_arc.gd new file mode 100644 index 0000000..b543604 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_arc.gd @@ -0,0 +1,61 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var output : Resource +export(Vector2) var angle : Vector2 = Vector2(30, 150) +export(float) var radius : float = 0.3 +export(float) var width : float = 0.1 + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_vector2("get_angle", "set_angle", "Angle", 1) + mm_graph_node.add_slot_float("get_radius", "set_radius", "Radius", 0.01) + mm_graph_node.add_slot_float("get_width", "set_width", "Width", 0.01) + +func get_property_value(uv : Vector2) -> float: + return SDF2D.sdf_arc(uv, angle, Vector2(radius, width)) + +#angle +func get_angle() -> Vector2: + return angle + +func set_angle(val : Vector2) -> void: + angle = val + + emit_changed() + output.emit_changed() + +#radius +func get_radius() -> float: + return radius + +func set_radius(val : float) -> void: + radius = val + + emit_changed() + output.emit_changed() + +#width +func get_width() -> float: + return width + +func set_width(val : float) -> void: + width = val + + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_box.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_box.gd new file mode 100644 index 0000000..35c866e --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_box.gd @@ -0,0 +1,49 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var output : Resource +export(Vector2) var center : Vector2 = Vector2(0, 0) +export(Vector2) var size : Vector2 = Vector2(0.3, 0.2) + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_vector2("get_center", "set_center", "Center", 0.01) + mm_graph_node.add_slot_vector2("get_size", "set_size", "Size", 0.01) + +func get_property_value(uv : Vector2) -> float: + return SDF2D.sdf_box(uv, center, size) + +#center +func get_center() -> Vector2: + return center + +func set_center(val : Vector2) -> void: + center = val + + emit_changed() + output.emit_changed() + +#size +func get_size() -> Vector2: + return size + +func set_size(val : Vector2) -> void: + size = val + + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_circle.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_circle.gd new file mode 100644 index 0000000..bc8488a --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_circle.gd @@ -0,0 +1,49 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var output : Resource +export(Vector2) var center : Vector2 = Vector2(0, 0) +export(float) var radius : float = 0.4 + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_vector2("get_center", "set_center", "Center", 0.01) + mm_graph_node.add_slot_float("get_radius", "set_radius", "Radius", 0.01) + +func get_property_value(uv : Vector2) -> float: + return SDF2D.sdf_circle(uv, center, radius) + +#center +func get_center() -> Vector2: + return center + +func set_center(val : Vector2) -> void: + center = val + + emit_changed() + output.emit_changed() + +#radius +func get_radius() -> float: + return radius + +func set_radius(val : float) -> void: + radius = val + + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_line.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_line.gd new file mode 100644 index 0000000..fa3a5e4 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_line.gd @@ -0,0 +1,74 @@ +tool +extends "res://addons/mat_maker_gd/nodes/bases/curve_base.gd" + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") +var Curves = preload("res://addons/mat_maker_gd/nodes/common/curves.gd") + +export(Resource) var output : Resource +export(Vector2) var A : Vector2 = Vector2(-0.3, -0.3) +export(Vector2) var B : Vector2 = Vector2(0.3, 0.3) +export(float) var width : float = 0.1 + +func _init(): + init_points_11() + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_vector2("get_a", "set_a", "A", 0.01) + mm_graph_node.add_slot_vector2("get_b", "set_b", "B", 0.01) + mm_graph_node.add_slot_float("get_width", "set_width", "Width", 0.01) + mm_graph_node.add_slot_curve() + +func get_property_value(uv : Vector2) -> float: + var line : Vector2 = SDF2D.sdf_line(uv, A, B, width) + + #$(name_uv)_sdl.x - $r * $profile($(name_uv)_sdl.y) + + return line.x - width * Curves.curve(line.y, points) + +#a +func get_a() -> Vector2: + return A + +func set_a(val : Vector2) -> void: + A = val + + emit_changed() + output.emit_changed() + +#b +func get_b() -> Vector2: + return B + +func set_b(val : Vector2) -> void: + B = val + + emit_changed() + output.emit_changed() + +#width +func get_width() -> float: + return width + +func set_width(val : float) -> void: + width = val + + emit_changed() + output.emit_changed() + +func _curve_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_polygon.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_polygon.gd new file mode 100644 index 0000000..daecf36 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_polygon.gd @@ -0,0 +1,29 @@ +tool +extends "res://addons/mat_maker_gd/nodes/bases/polygon_base.gd" + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var output : Resource + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + mm_graph_node.add_slot_polygon() + +func get_property_value(uv : Vector2) -> float: + return SDF2D.sdPolygon(uv, points) + +func _polygon_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_rhombus.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_rhombus.gd new file mode 100644 index 0000000..07b5ed4 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_shape_rhombus.gd @@ -0,0 +1,49 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var output : Resource +export(Vector2) var center : Vector2 = Vector2(0, 0) +export(Vector2) var size : Vector2 = Vector2(0.3, 0.2) + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_vector2("get_center", "set_center", "Center", 0.01) + mm_graph_node.add_slot_vector2("get_size", "set_size", "Size", 0.01) + +func get_property_value(uv : Vector2) -> float: + return SDF2D.sdf_rhombus(uv, center, size) + +#center +func get_center() -> Vector2: + return center + +func set_center(val : Vector2) -> void: + center = val + + emit_changed() + output.emit_changed() + +#size +func get_size() -> Vector2: + return size + +func set_size(val : Vector2) -> void: + size = val + + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_show.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_show.gd new file mode 100644 index 0000000..65697a7 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_show.gd @@ -0,0 +1,67 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(float) var bevel : float = 0 +export(float) var base : float = 0 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + #for some reason this doesn't work, todo check +# input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = "Input" + + register_output_property(image) + register_input_property(input) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_label_universal(input) + + mm_graph_node.add_slot_float("get_bevel", "set_bevel", "Bevel", 0.01) + mm_graph_node.add_slot_float("get_base", "set_base", "Base", 0.01) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var f : float = input.get_value(uv) + + #clamp($base-$in($uv)/max($bevel, 0.00001), 0.0, 1.0) + var cf : float = clamp(base - f / max(bevel, 0.00001), 0.0, 1.0) + + return Color(cf, cf, cf, 1) + +#bevel +func get_bevel() -> float: + return bevel + +func set_bevel(val : float) -> void: + bevel = val + + set_dirty(true) + +#base +func get_base() -> float: + return base + +func set_base(val : float) -> void: + base = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_tf_rotate.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_tf_rotate.gd new file mode 100644 index 0000000..9ec52f7 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_tf_rotate.gd @@ -0,0 +1,41 @@ +tool +extends MMNode + +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var output : Resource +export(float) var angle : float = 0 + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + #output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Apply >>>" + output.get_value_from_owner = true + + register_input_property(output) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_float("get_angle", "set_angle", "Angle", 1) + +func get_property_value(uv : Vector2): + #$in(sdf2d_rotate($uv, $a*0.01745329251))", + return output.get_value(SDF2D.sdf2d_rotate(uv, angle * 0.01745329251), true) + +#angle +func get_angle() -> float: + return angle + +func set_angle(val : float) -> void: + angle = val + + emit_changed() + output.emit_changed() + diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_tf_scale.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_tf_scale.gd new file mode 100644 index 0000000..f6302fa --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_tf_scale.gd @@ -0,0 +1,41 @@ +tool +extends MMNode + +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var output : Resource +export(float) var scale : float = 1 + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + #output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Apply >>>" + output.get_value_from_owner = true + + register_input_property(output) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_float("get_scale", "set_scale", "Scale", 0.01) + +func get_property_value(uv : Vector2): + #$in(($uv-vec2(0.5))/$s+vec2(0.5))*$s + return output.get_value(((uv - Vector2(0.5, 0.5)) / scale + Vector2(0.5, 0.5)), true) + +#scale +func get_scale() -> float: + return scale + +func set_scale(val : float) -> void: + scale = val + + emit_changed() + output.emit_changed() + diff --git a/game/addons/mat_maker_gd/nodes/sdf2d/sd_tf_translate.gd b/game/addons/mat_maker_gd/nodes/sdf2d/sd_tf_translate.gd new file mode 100644 index 0000000..c3099e0 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf2d/sd_tf_translate.gd @@ -0,0 +1,38 @@ +tool +extends MMNode + +export(Resource) var output : Resource +export(Vector2) var translation : Vector2 = Vector2(0, 0) + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + output.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + #output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Apply >>>" + output.get_value_from_owner = true + + register_input_property(output) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_vector2("get_translation", "set_translation", "Translation", 0.01) + +func get_property_value(uv : Vector2): + return output.get_value(uv - translation, true) + +#a +func get_translation() -> Vector2: + return translation + +func set_translation(val : Vector2) -> void: + translation = val + + emit_changed() + output.emit_changed() + diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_color.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_color.gd new file mode 100644 index 0000000..4c26ee4 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_color.gd @@ -0,0 +1,59 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input : Resource +export(Resource) var output : Resource +export(float) var color : float = 0.5 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2 + input.slot_name = ">>> Input " + if !input.is_connected("changed", self, "on_input_changed"): + input.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_input_property(input) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_float("get_color", "set_color", "Color", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + var v : Vector2 = input.get_value_sdf3d(uv3) + + v.y = color + + return v + + +#color +func get_color() -> float: + return color + +func set_color(val : float) -> void: + color = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_bool.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_bool.gd new file mode 100644 index 0000000..bff3538 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_bool.gd @@ -0,0 +1,79 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input1 : Resource +export(Resource) var input2 : Resource +export(Resource) var output : Resource +export(int, "Union,Substraction,Intersection") var operation : int = 0 + +func _init_properties(): + if !input1: + input1 = MMNodeUniversalProperty.new() + input1.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + input1.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input1.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2 + input1.slot_name = ">>> Input 1 " + + if !input1.is_connected("changed", self, "on_input_changed"): + input1.connect("changed", self, "on_input_changed") + + if !input2: + input2 = MMNodeUniversalProperty.new() + input2.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + input2.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input2.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2 + input2.slot_name = ">>> Input 2 " + + if !input2.is_connected("changed", self, "on_input_changed"): + input2.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_input_property(input1) + register_input_property(input2) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input1) + mm_graph_node.add_slot_label_universal(input2) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_enum("get_operation", "set_operation", "Operation", [ "Union", "Substraction", "Intersection" ]) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + var s1 : Vector2 = input1.get_value_sdf3d(uv3) + var s2 : Vector2 = input2.get_value_sdf3d(uv3) + + if operation == 0: + return SDF3D.sdf3dc_union(s1, s2) + elif operation == 1: + return SDF3D.sdf3dc_sub(s1, s2) + elif operation == 2: + return SDF3D.sdf3dc_inter(s1, s2) + + return Vector2() + +#operation +func get_operation() -> int: + return operation + +func set_operation(val : int) -> void: + operation = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_circle_repeat.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_circle_repeat.gd new file mode 100644 index 0000000..9186c89 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_circle_repeat.gd @@ -0,0 +1,59 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input : Resource +export(Resource) var output : Resource +export(int) var count : int = 5 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2 + input.slot_name = ">>> Input " + + if !input.is_connected("changed", self, "on_input_changed"): + input.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_input_property(input) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_int("get_count", "set_count", "Count") + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + #todo make seed a class variable probably into MMNode + + var new_uv : Vector3 = SDF3D.circle_repeat_transform(uv3, count) + + return input.get_value_sdf3d(new_uv) + +#count +func get_count() -> int: + return count + +func set_count(val : int) -> void: + count = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_elongation.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_elongation.gd new file mode 100644 index 0000000..b0b52d2 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_elongation.gd @@ -0,0 +1,59 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input : Resource +export(Resource) var output : Resource +export(Vector3) var length : Vector3 = Vector3(0.2, 0, 0) + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2 + input.slot_name = ">>> Input " + if !input.is_connected("changed", self, "on_input_changed"): + input.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_input_property(input) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_vector3("get_length", "set_length", "Length", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + #$in($uv - clamp($uv, -abs(vec3($x, $y, $z)), abs(vec3($x, $y, $z)))) + + var new_uv : Vector3 = uv3 - Commons.clampv3(uv3, -Commons.absv3(length), Commons.absv3(length)) + + return input.get_value_sdf3d(new_uv) + + +#length +func get_length() -> Vector3: + return length + +func set_length(val : Vector3) -> void: + length = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_extrusion.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_extrusion.gd new file mode 100644 index 0000000..7f7613a --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_extrusion.gd @@ -0,0 +1,63 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input : Resource +export(Resource) var output : Resource +export(float) var length : float = 0.25 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + input.slot_name = ">>> Input " + + if !input.is_connected("changed", self, "on_input_changed"): + input.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_input_property(input) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_float("get_length", "set_length", "Length", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + #vec2 $(name_uv)_w = vec2($in($uv.xz+vec2(0.5)),abs($uv.y)-$d); + #ret min(max($(name_uv)_w.x,$(name_uv)_w.y),0.0)+length(max($(name_uv)_w,0.0)) + + var f : float = input.get_value(Vector2(uv3.x, uv3.z) + Vector2(0.5, 0.5)) + var w : Vector2 = Vector2(f, abs(uv3.y) - length) + + var ff : float = min(max(w.x,w.y),0.0) + Commons.maxv2(w, Vector2()).length() + + return Vector2(ff, 0) + +#length +func get_length() -> float: + return length + +func set_length(val : float) -> void: + length = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_morph.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_morph.gd new file mode 100644 index 0000000..67f70a6 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_morph.gd @@ -0,0 +1,74 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input1 : Resource +export(Resource) var input2 : Resource +export(Resource) var output : Resource +export(float) var amount : float = 0.5 + +func _init_properties(): + if !input1: + input1 = MMNodeUniversalProperty.new() + input1.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + input1.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input1.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2 + input1.slot_name = ">>> Input 1 " + + if !input1.is_connected("changed", self, "on_input_changed"): + input1.connect("changed", self, "on_input_changed") + + if !input2: + input2 = MMNodeUniversalProperty.new() + input2.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + input2.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input2.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2 + input2.slot_name = ">>> Input 2 " + + if !input2.is_connected("changed", self, "on_input_changed"): + input2.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_input_property(input1) + register_input_property(input2) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input1) + mm_graph_node.add_slot_label_universal(input2) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_float("get_amount", "set_amount", "Amount", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + var s1 : Vector2 = input1.get_value_sdf3d(uv3) + var s2 : Vector2 = input2.get_value_sdf3d(uv3) + + #mix($in1($uv), $in2($uv), $amount) + + return lerp(s1, s2, amount) + +#amount +func get_amount() -> float: + return amount + +func set_amount(val : float) -> void: + amount = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_repeat.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_repeat.gd new file mode 100644 index 0000000..f428e96 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_repeat.gd @@ -0,0 +1,71 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input : Resource +export(Resource) var output : Resource +export(Vector2) var col_row : Vector2 = Vector2(3, 3) +export(float) var rotation : float = 0.3 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2 + input.slot_name = ">>> Input " + + if !input.is_connected("changed", self, "on_input_changed"): + input.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_input_property(input) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_vector2("get_col_row", "set_col_row", "Col,Row", 1) + mm_graph_node.add_slot_float("get_rotation", "set_rotation", "Rotation", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + #todo make seed a class variable probably into MMNode + + var new_uv : Vector3 = SDF3D.sdf3d_repeat(uv3, col_row, rotation, 1) + + return input.get_value_sdf3d(new_uv) + +#col_row +func get_col_row() -> Vector2: + return col_row + +func set_col_row(val : Vector2) -> void: + col_row = val + + emit_changed() + output.emit_changed() + +#rotation +func get_rotation() -> float: + return rotation + +func set_rotation(val : float) -> void: + rotation = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_revolution.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_revolution.gd new file mode 100644 index 0000000..98df2ab --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_revolution.gd @@ -0,0 +1,60 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input : Resource +export(Resource) var output : Resource +export(float) var offset : float = 0.25 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + input.slot_name = ">>> Input " + + if !input.is_connected("changed", self, "on_input_changed"): + input.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_input_property(input) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_float("get_offset", "set_offset", "Offset", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + #vec2 $(name_uv)_q = vec2(length($uv.xy) - $d + 0.5, $uv.z + 0.5); + + var uv : Vector2 = Vector2(Vector2(uv3.x, uv3.y).length() - offset + 0.5, uv3.z + 0.5) + var f : float = input.get_value(uv) + + return Vector2(f, 0) + +#offset +func get_offset() -> float: + return offset + +func set_offset(val : float) -> void: + offset = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_rounded.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_rounded.gd new file mode 100644 index 0000000..338c510 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_rounded.gd @@ -0,0 +1,61 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input : Resource +export(Resource) var output : Resource +export(float) var radius : float = 0.15 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2 + input.slot_name = ">>> Input " + if !input.is_connected("changed", self, "on_input_changed"): + input.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_input_property(input) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_float("get_radius", "set_radius", "Radius", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + var v : Vector2 = input.get_value_sdf3d(uv3) + + #vec2($(name_uv)_v.x-$r, $(name_uv)_v.y) + + v.x -= radius + + return v + + +#radius +func get_radius() -> float: + return radius + +func set_radius(val : float) -> void: + radius = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_smooth_bool.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_smooth_bool.gd new file mode 100644 index 0000000..01e03fe --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_smooth_bool.gd @@ -0,0 +1,91 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input1 : Resource +export(Resource) var input2 : Resource +export(Resource) var output : Resource +export(int, "Union,Substraction,Intersection") var operation : int = 0 +export(float) var smoothness : float = 0.15 + +func _init_properties(): + if !input1: + input1 = MMNodeUniversalProperty.new() + input1.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + input1.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input1.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2 + input1.slot_name = ">>> Input 1 " + + if !input1.is_connected("changed", self, "on_input_changed"): + input1.connect("changed", self, "on_input_changed") + + if !input2: + input2 = MMNodeUniversalProperty.new() + input2.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + input2.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input2.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2 + input2.slot_name = ">>> Input 2 " + + if !input2.is_connected("changed", self, "on_input_changed"): + input2.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_input_property(input1) + register_input_property(input2) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input1) + mm_graph_node.add_slot_label_universal(input2) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_enum("get_operation", "set_operation", "Operation", [ "Union", "Substraction", "Intersection" ]) + mm_graph_node.add_slot_float("get_smoothness", "set_smoothness", "Smoothness", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + var s1 : Vector2 = input1.get_value_sdf3d(uv3) + var s2 : Vector2 = input2.get_value_sdf3d(uv3) + + if operation == 0: + return SDF3D.sdf3d_smooth_union(s1, s2, smoothness) + elif operation == 1: + return SDF3D.sdf3d_smooth_subtraction(s1, s2, smoothness) + elif operation == 2: + return SDF3D.sdf3d_smooth_intersection(s1, s2, smoothness) + + return Vector2() + +#operation +func get_operation() -> int: + return operation + +func set_operation(val : int) -> void: + operation = val + + emit_changed() + output.emit_changed() + +#smoothness +func get_smoothness() -> float: + return smoothness + +func set_smoothness(val : float) -> void: + smoothness = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_render.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_render.gd new file mode 100644 index 0000000..4bd2918 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_render.gd @@ -0,0 +1,179 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input : Resource + +export(Resource) var out_height_map : Resource +export(Resource) var out_normal_map : Resource +export(Resource) var out_color_map : Resource + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + #for some reason this doesn't work, todo check +# input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = "Input" + + if !out_height_map: + out_height_map = MMNodeUniversalProperty.new() + out_height_map.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_height_map.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_normal_map: + out_normal_map = MMNodeUniversalProperty.new() + out_normal_map.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_normal_map.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !out_color_map: + out_color_map = MMNodeUniversalProperty.new() + out_color_map.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + out_color_map.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(out_height_map) + register_output_property(out_normal_map) + register_output_property(out_color_map) + register_input_property(input) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(out_height_map) + mm_graph_node.add_slot_texture_universal(out_normal_map) + mm_graph_node.add_slot_texture_universal(out_color_map) + + +func _render(material) -> void: + var height_map : Image = Image.new() + var normal_map : Image = Image.new() + var color_map : Image = Image.new() + + height_map.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + normal_map.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + color_map.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + + height_map.lock() + normal_map.lock() + color_map.lock() + + var w : float = material.image_size.x + var h : float = material.image_size.y + + var pseed : float = randf() + randi() + + for x in range(material.image_size.x): + for y in range(material.image_size.y): + var uv : Vector2 = Vector2(x / w, y / h) + + var raymarch : Vector2 = sdf3d_raymarch(uv) + + #HeightMap - float - The generated height map + #1.0-$(name_uv)_d.x + var hmf : float = 1.0 - raymarch.x + var height_map_col : Color = Color(hmf, hmf, hmf, 1) + + #NormalMap - rgb - The generated normal map + #vec3(0.5) + 0.5* normal_$name(vec3($uv-vec2(0.5), 1.0-$(name_uv)_d.x)) + var nuv : Vector2 = uv - Vector2(0.5, 0.5) + var n : Vector3 = sdf3d_normal(Vector3(nuv.x, nuv.y, 1.0 - raymarch.x)) + var nn : Vector3 = Vector3(0.5, 0.5, 0.5) + 0.5 * n + + var normal_map_col : Color = Color(nn.x, nn.y, nn.z, 1) + + #ColorMap - float - The generated color index map + #$(name_uv)_d.y + var color_map_col : Color = Color(raymarch.y, raymarch.y, raymarch.y, 1) + + height_map.set_pixel(x, y, height_map_col) + normal_map.set_pixel(x, y, normal_map_col) + color_map.set_pixel(x, y, color_map_col) + + height_map.unlock() + normal_map.unlock() + color_map.unlock() + + out_height_map.set_value(height_map) + out_normal_map.set_value(normal_map) + out_color_map.set_value(color_map) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + return Color() + +#vec2 raymarch_$name(vec2 uv) { +# vec3 ro = vec3(uv-vec2(0.5), 1.0); +# vec3 rd = vec3(0.0, 0.0, -1.0); +# float dO = 0.0; +# float c = 0.0; +# +# for (int i=0; i < 100; i++) { +# vec3 p = ro + rd*dO; +# vec2 dS = $sdf(p); +# dO += dS.x; +# +# if (dO >= 1.0) { +# break; +# } else if (dS.x < 0.0001) { +# c = dS.y; +# break; +# } +# } +# +# return vec2(dO, c); +#} + +func sdf3d_raymarch(uv : Vector2) -> Vector2: + var ro : Vector3 = Vector3(uv.x - 0.5, uv.y - 0.5, 1.0); + var rd : Vector3 = Vector3(0.0, 0.0, -1.0); + var dO : float = 0.0; + var c : float = 0.0; + + for i in range(100): + var p : Vector3 = ro + rd * dO; + var dS : Vector2 = input.get_value_sdf3d(p) + + dO += dS.x; + + if (dO >= 1.0): + break; + elif (dS.x < 0.0001): + c = dS.y; + break; + + return Vector2(dO, c); + +#vec3 normal_$name(vec3 p) { +# if (p.z <= 0.0) { +# return vec3(0.0, 0.0, 1.0); +# } +# +# float d = $sdf(p).x; +# float e = .001; +# vec3 n = d - vec3( +# $sdf(p-vec3(e, 0.0, 0.0)).x, +# $sdf(p-vec3(0.0, e, 0.0)).x, +# $sdf(p-vec3(0.0, 0.0, e)).x); +# +# return vec3(-1.0, -1.0, -1.0)*normalize(n); +#} + +func sdf3d_normal(p : Vector3) -> Vector3: + if (p.z <= 0.0): + return Vector3(0.0, 0.0, 1.0); + + var d : float = input.get_value_sdf3d(p).x + var e : float = .001; + + var n : Vector3 = Vector3( + d - input.get_value_sdf3d(p - Vector3(e, 0.0, 0.0)).x, + d - input.get_value_sdf3d(p - Vector3(0.0, e, 0.0)).x, + d - input.get_value_sdf3d(p - Vector3(0.0, 0.0, e)).x) + + return Vector3(-1.0, -1.0, -1.0) * n.normalized() + diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_box.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_box.gd new file mode 100644 index 0000000..3711c3c --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_box.gd @@ -0,0 +1,49 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var output : Resource +export(Vector3) var size : Vector3 = Vector3(0.3, 0.25, 0.25) +export(float) var radius : float = 0.01 + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_vector3("get_size", "set_size", "Size", 0.01) + mm_graph_node.add_slot_float("get_radius", "set_radius", "Radius", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + return SDF3D.sdf3d_box(uv3, size.x, size.y, size.z, radius) + +#size +func get_size() -> Vector3: + return size + +func set_size(val : Vector3) -> void: + size = val + + emit_changed() + output.emit_changed() + +#radius +func get_radius() -> float: + return radius + +func set_radius(val : float) -> void: + radius = val + + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_capsule.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_capsule.gd new file mode 100644 index 0000000..138f881 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_capsule.gd @@ -0,0 +1,111 @@ +tool +extends "res://addons/mat_maker_gd/nodes/bases/curve_base.gd" + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") +var Curves = preload("res://addons/mat_maker_gd/nodes/common/curves.gd") + +export(Resource) var output : Resource +export(int, "X,Y,Z") var axis : int = 1 +export(float) var length : float = 0.3 +export(float) var radius : float = 0.2 + +func _init(): + init_points_11() + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_enum("get_axis", "set_axis", "Axis", [ "X", "Y", "Z" ]) + mm_graph_node.add_slot_float("get_length", "set_length", "Length", 0.01) + mm_graph_node.add_slot_float("get_radius", "set_radius", "Radius", 0.01) + mm_graph_node.add_slot_curve() + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + if axis == 0: + return sdf3d_capsule_x(uv3, radius, length) + elif axis == 1: + return sdf3d_capsule_y(uv3, radius, length) + elif axis == 2: + return sdf3d_capsule_z(uv3, radius, length) + + return Vector2() + +#vec3 $(name_uv)_p = $uv; +#$(name_uv)_p.$axis -= clamp($(name_uv)_p.$axis, -$l, $l); +#return length($(name_uv)_p) - $r * $profile(clamp(0.5+0.5*($uv).$axis/$l, 0.0, 1.0)) + +func sdf3d_capsule_y(p : Vector3, r : float, l : float) -> Vector2: + var v : Vector3 = p; + v.y -= clamp(v.y, -l, l); + + var cx : float = clamp(0.5 + 0.5 * p.y / l, 0.0, 1.0) + var cp : float = Curves.curve(cx, points) + var f : float = v.length() - r * cp + + return Vector2(f, 0.0); + +func sdf3d_capsule_x(p : Vector3, r : float, l : float) -> Vector2: + var v : Vector3 = p; + v.x -= clamp(v.x, -l, l); + + var cx : float = clamp(0.5 + 0.5 * p.x / l, 0.0, 1.0) + var cp : float = Curves.curve(cx, points) + var f : float = v.length() - r * cp + + return Vector2(f, 0.0); + +func sdf3d_capsule_z(p : Vector3, r : float, l : float) -> Vector2: + var v : Vector3 = p; + v.z -= clamp(v.z, -l, l); + + var cx : float = clamp(0.5 + 0.5 * p.z / l, 0.0, 1.0) + var cp : float = Curves.curve(cx, points) + var f : float = v.length() - r * cp + + return Vector2(f, 0.0); + +#axis +func get_axis() -> int: + return axis + +func set_axis(val : int) -> void: + axis = val + + emit_changed() + output.emit_changed() + +#length +func get_length() -> float: + return length + +func set_length(val : float) -> void: + length = val + + emit_changed() + output.emit_changed() + +#radius +func get_radius() -> float: + return radius + +func set_radius(val : float) -> void: + radius = val + + emit_changed() + output.emit_changed() + +func _curve_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_cone.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_cone.gd new file mode 100644 index 0000000..9151b46 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_cone.gd @@ -0,0 +1,63 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var output : Resource +export(int, "+X,-X,+Y,-Y,+Z,-Z") var axis : int = 2 +export(float) var angle : float = 30 + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_enum("get_axis", "set_axis", "Axis", [ "+X", "-X", "+Y", "-Y", "+Z", "-Z" ]) + mm_graph_node.add_slot_float("get_angle", "set_angle", "Angle", 1) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + if axis == 0: + return SDF3D.sdf3d_cone_px(uv3, angle) + elif axis == 1: + return SDF3D.sdf3d_cone_nx(uv3, angle) + elif axis == 2: + return SDF3D.sdf3d_cone_py(uv3, angle) + elif axis == 3: + return SDF3D.sdf3d_cone_ny(uv3, angle) + elif axis == 4: + return SDF3D.sdf3d_cone_pz(uv3, angle) + elif axis == 5: + return SDF3D.sdf3d_cone_nz(uv3, angle) + + return Vector2() + +#axis +func get_axis() -> int: + return axis + +func set_axis(val : int) -> void: + axis = val + + emit_changed() + output.emit_changed() + +#angle +func get_angle() -> float: + return angle + +func set_angle(val : float) -> void: + angle = val + + emit_changed() + output.emit_changed() + diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_cylinder.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_cylinder.gd new file mode 100644 index 0000000..f13c3c2 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_cylinder.gd @@ -0,0 +1,68 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var output : Resource +export(int, "X,Y,Z") var axis : int = 1 +export(float) var length : float = 0.25 +export(float) var radius : float = 0.25 + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_enum("get_axis", "set_axis", "Axis", [ "X", "Y", "Z" ]) + mm_graph_node.add_slot_float("get_length", "set_length", "Length", 0.01) + mm_graph_node.add_slot_float("get_radius", "set_radius", "Radius", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + if axis == 0: + return SDF3D.sdf3d_cylinder_x(uv3, radius, length) + elif axis == 1: + return SDF3D.sdf3d_cylinder_y(uv3, radius, length) + elif axis == 2: + return SDF3D.sdf3d_cylinder_z(uv3, radius, length) + + return Vector2() + +#axis +func get_axis() -> int: + return axis + +func set_axis(val : int) -> void: + axis = val + + emit_changed() + output.emit_changed() + +#length +func get_length() -> float: + return length + +func set_length(val : float) -> void: + length = val + + emit_changed() + output.emit_changed() + +#radius +func get_radius() -> float: + return radius + +func set_radius(val : float) -> void: + radius = val + + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_sphere.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_sphere.gd new file mode 100644 index 0000000..145206b --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_sphere.gd @@ -0,0 +1,37 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var output : Resource +export(float) var radius : float = 0.5 + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_float("get_radius", "set_radius", "Radius", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + return SDF3D.sdf3d_sphere(uv3, radius) + +#radius +func get_radius() -> float: + return radius + +func set_radius(val : float) -> void: + radius = val + + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_torus.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_torus.gd new file mode 100644 index 0000000..682bba5 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_torus.gd @@ -0,0 +1,68 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var output : Resource +export(int, "X,Y,Z") var axis : int = 2 +export(float) var major_radius : float = 0.3 +export(float) var minor_radius : float = 0.15 + +func _init_properties(): + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_enum("get_axis", "set_axis", "Axis", [ "X", "Y", "Z" ]) + mm_graph_node.add_slot_float("get_major_radius", "set_major_radius", "Major_radius", 0.01) + mm_graph_node.add_slot_float("get_minor_radius", "set_minor_radius", "Minor_radius", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + if axis == 0: + return SDF3D.sdf3d_torus_x(uv3, major_radius, minor_radius) + elif axis == 1: + return SDF3D.sdf3d_torus_y(uv3, major_radius, minor_radius) + elif axis == 2: + return SDF3D.sdf3d_torus_z(uv3, major_radius, minor_radius) + + return Vector2() + +#axis +func get_axis() -> int: + return axis + +func set_axis(val : int) -> void: + axis = val + + emit_changed() + output.emit_changed() + +#major_radius +func get_major_radius() -> float: + return major_radius + +func set_major_radius(val : float) -> void: + major_radius = val + + emit_changed() + output.emit_changed() + +#minor_radius +func get_minor_radius() -> float: + return minor_radius + +func set_minor_radius(val : float) -> void: + minor_radius = val + + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_tf_rotate.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_tf_rotate.gd new file mode 100644 index 0000000..114056c --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_tf_rotate.gd @@ -0,0 +1,57 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input : Resource +export(Resource) var output : Resource +export(Vector3) var rotation : Vector3 = Vector3() + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2 + input.slot_name = ">>> Input " + + if !input.is_connected("changed", self, "on_input_changed"): + input.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_input_property(input) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_vector3("get_rotation", "set_rotation", "Rotation", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + #$in(rotate3d($uv, -vec3($ax, $ay, $az)*0.01745329251)) + + return input.get_value_sdf3d(SDF3D.rotate3d(uv3, -rotation * 0.01745329251)) + +#rotation +func get_rotation() -> Vector3: + return rotation + +func set_rotation(val : Vector3) -> void: + rotation = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_tf_scale.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_tf_scale.gd new file mode 100644 index 0000000..e29b633 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_tf_scale.gd @@ -0,0 +1,56 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input : Resource +export(Resource) var output : Resource +export(float) var scale : float = 1 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2 + input.slot_name = ">>> Input " + + if !input.is_connected("changed", self, "on_input_changed"): + input.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_input_property(input) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_float("get_scale", "set_scale", "Scale", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + #vec2 $(name_uv)_in = $in(($uv)/$s); + return input.get_value_sdf3d(uv3 / scale) + +#scale +func get_scale() -> float: + return scale + +func set_scale(val : float) -> void: + scale = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_tf_translate.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_tf_translate.gd new file mode 100644 index 0000000..b166af9 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_tf_translate.gd @@ -0,0 +1,56 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input : Resource +export(Resource) var output : Resource +export(Vector3) var translation : Vector3 = Vector3() + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_VECTOR2 + input.slot_name = ">>> Input " + + if !input.is_connected("changed", self, "on_input_changed"): + input.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_input_property(input) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_vector3("get_translation", "set_translation", "Translation", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + #$in($uv-vec3($x, $y, $z)) + return input.get_value_sdf3d(uv3 - translation) + +#translation +func get_translation() -> Vector3: + return translation + +func set_translation(val : Vector3) -> void: + translation = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/simple/curve.gd b/game/addons/mat_maker_gd/nodes/simple/curve.gd new file mode 100644 index 0000000..c6ed800 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/simple/curve.gd @@ -0,0 +1,118 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF2D = preload("res://addons/mat_maker_gd/nodes/common/sdf2d.gd") + +export(Resource) var image : Resource + +export(Resource) var input : Resource +export(Vector2) var a : Vector2 = Vector2(-0.35, -0.2) +export(Vector2) var b : Vector2 = Vector2(0, 0.5) +export(Vector2) var c : Vector2 = Vector2(0.35, -0.2) +export(float) var width : float = 0.05 +export(int) var repeat : int = 1 + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + input.set_default_value(1.0) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_label_universal(input) + + mm_graph_node.add_slot_vector2("get_a", "set_a", "A", 0.01) + mm_graph_node.add_slot_vector2("get_b", "set_b", "B", 0.01) + mm_graph_node.add_slot_vector2("get_c", "set_c", "C", 0.01) + mm_graph_node.add_slot_float("get_width", "set_width", "Width", 0.01) + mm_graph_node.add_slot_int("get_repeat", "set_repeat", "Repeat") + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var nuv : Vector2 = transform_uv(uv) + + var f : float = 0 + + if nuv.x != 0 && nuv.y != 0: + f = input.get_value(nuv) + + return Color(f, f, f, 1) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func transform_uv(uv : Vector2) -> Vector2: + #vec2 $(name_uv)_bezier = sdBezier($uv, vec2($ax+0.5, $ay+0.5), vec2($bx+0.5, $by+0.5), vec2($cx+0.5, $cy+0.5)); + var bezier : Vector2 = SDF2D.sdBezier(uv, Vector2(a.x + 0.5, a.y + 0.5), Vector2(b.x + 0.5, b.y + 0.5), Vector2(c.x + 0.5, c.y + 0.5)) + + #vec2 $(name_uv)_uv = vec2($(name_uv)_bezier.x, $(name_uv)_bezier.y / $width+0.5); + var new_uv : Vector2 = Vector2(bezier.x, bezier.y / width + 0.5) + + #vec2 $(name_uv)_uvtest = step(vec2(0.5), abs($(name_uv)_uv-vec2(0.5))); + var uv_test : Vector2 = Commons.stepv2(Vector2(0.5, 0.5), Commons.absv2(new_uv - Vector2(0.5, 0.5))) + + #$(name_uv)_uv = mix(vec2(fract($repeat*$(name_uv)_uv.x), $(name_uv)_uv.y), vec2(0.0), max($(name_uv)_uvtest.x, $(name_uv)_uvtest.y)); + var final_uv : Vector2 = lerp(Vector2(Commons.fract(repeat * new_uv.x), new_uv.y), Vector2(), max(uv_test.x, uv_test.y)) + + return final_uv + +#b +func get_a() -> Vector2: + return a + +func set_a(val : Vector2) -> void: + a = val + + set_dirty(true) + +#b +func get_b() -> Vector2: + return b + +func set_b(val : Vector2) -> void: + b = val + + set_dirty(true) + +#c +func get_c() -> Vector2: + return c + +func set_c(val : Vector2) -> void: + c = val + + set_dirty(true) + +#width +func get_width() -> float: + return width + +func set_width(val : float) -> void: + width = val + + set_dirty(true) + +#repeat +func get_repeat() -> int: + return repeat + +func set_repeat(val : int) -> void: + repeat = val + + set_dirty(true) + diff --git a/game/addons/mat_maker_gd/nodes/simple/image.gd b/game/addons/mat_maker_gd/nodes/simple/image.gd new file mode 100644 index 0000000..033a9eb --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/simple/image.gd @@ -0,0 +1,41 @@ +tool +extends MMNode + +export(Resource) var image : Resource +export(String) var image_path : String + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_image_path_universal(image, "get_image_path", "set_image_path") + +#func _render(material) -> void: +# var img : Image = render_image(material) +# +# image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + return image.get_value(uv) + +func get_image_path() -> String: + return image_path + +func set_image_path(val : String) -> void: + image_path = val + + var img : Image = Image.new() + + if image_path && image_path != "": + img.load(image_path) + + image.set_value(img) + + set_dirty(true) + diff --git a/game/addons/mat_maker_gd/nodes/simple/shape.gd b/game/addons/mat_maker_gd/nodes/simple/shape.gd new file mode 100644 index 0000000..0104274 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/simple/shape.gd @@ -0,0 +1,101 @@ +tool +extends MMNode + +var Shapes = preload("res://addons/mat_maker_gd/nodes/common/shapes.gd") + +enum ShapeType { + SHAPE_TYPE_CIRCLE = 0, + SHAPE_TYPE_POLYGON = 1, + SHAPE_TYPE_STAR = 2, + SHAPE_TYPE_CURVED_STAR = 3, + SHAPE_TYPE_RAYS = 4, +} + +export(Resource) var image : Resource +export(int, "Circle,Polygon,Star,Curved Star,Rays") var shape_type : int = 0 +export(int) var sides : int = 6 +export(Resource) var radius : Resource +export(Resource) var edge : Resource + +func _init_properties(): + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !radius: + radius = MMNodeUniversalProperty.new() + radius.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + radius.set_default_value(0.34375) + + radius.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + radius.slot_name = "radius" + radius.value_step = 0.05 + + if !edge: + edge = MMNodeUniversalProperty.new() + edge.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + edge.set_default_value(0.2) + + edge.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + edge.slot_name = "edge" + edge.value_step = 0.05 + + register_input_property(radius) + register_input_property(edge) + + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_enum("get_shape_typoe", "set_shape_typoe", "shape_type", [ "Circle", "Polygon", "Star", "Curved Star", "Rays" ]) + mm_graph_node.add_slot_int("get_sides", "set_sides", "sides")#, Vector2(1, 10)) + mm_graph_node.add_slot_float_universal(radius) + mm_graph_node.add_slot_float_universal(edge) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var c : float = 0 + + var rad : float = radius.get_value(uv) + var edg : float = edge.get_value(uv) + + if rad == 0: + rad = 0.0000001 + + if edg == 0: + edg = 0.0000001 + + if shape_type == ShapeType.SHAPE_TYPE_CIRCLE: + c = Shapes.shape_circle(uv, sides, rad, edg) + elif shape_type == ShapeType.SHAPE_TYPE_POLYGON: + c = Shapes.shape_polygon(uv, sides, rad, edg) + elif shape_type == ShapeType.SHAPE_TYPE_STAR: + c = Shapes.shape_star(uv, sides, rad, edg) + elif shape_type == ShapeType.SHAPE_TYPE_CURVED_STAR: + c = Shapes.shape_curved_star(uv, sides, rad, edg) + elif shape_type == ShapeType.SHAPE_TYPE_RAYS: + c = Shapes.shape_rays(uv, sides, rad, edg) + + return Color(c, c, c, 1) + +func get_shape_typoe() -> int: + return shape_type + +func set_shape_typoe(val : int) -> void: + shape_type = val + + set_dirty(true) + +func get_sides() -> int: + return sides + +func set_sides(val : int) -> void: + sides = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/transform/circle_map.gd b/game/addons/mat_maker_gd/nodes/transform/circle_map.gd new file mode 100644 index 0000000..fb8e710 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/transform/circle_map.gd @@ -0,0 +1,70 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Transforms = preload("res://addons/mat_maker_gd/nodes/common/transforms.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource + +export(float) var radius : float = 1 +export(int) var repeat : int = 1 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_float("get_radius", "set_radius", "Radius", 0.01) + mm_graph_node.add_slot_int("get_repeat", "set_repeat", "Repeat") + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + #$in(vec2(fract($repeat*atan($uv.y-0.5, $uv.x-0.5)*0.15915494309), min(0.99999, 2.0/$radius*length($uv-vec2(0.5)))))", + + var nuv : Vector2 = Vector2(Commons.fractf(repeat*atan2(uv.y - 0.5, uv.x - 0.5) * 0.15915494309), min(0.99999, 2.0 / radius * (uv - Vector2(0.5, 0.5)).length())) + + return input.get_value(nuv) + +#radius +func get_radius() -> float: + return radius + +func set_radius(val : float) -> void: + radius = val + + if radius == 0: + radius = 0.000000001 + + set_dirty(true) + +#repeat +func get_repeat() -> int: + return repeat + +func set_repeat(val : int) -> void: + repeat = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/transform/color_tiler.gd b/game/addons/mat_maker_gd/nodes/transform/color_tiler.gd new file mode 100644 index 0000000..79e4765 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/transform/color_tiler.gd @@ -0,0 +1,305 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +export(Resource) var input : Resource +export(Resource) var in_mask : Resource + +export(Resource) var output : Resource +export(Resource) var instance_map : Resource + +export(Vector2) var tile : Vector2 = Vector2(4, 4) +export(float) var overlap : float = 1 +export(int, "1,4,16") var select_inputs : int = 0 +export(Vector2) var scale : Vector2 = Vector2(0.5, 0.5) +export(float) var fixed_offset : float = 0 +export(float) var rnd_offset : float = 0.25 +export(float) var rnd_rotate : float = 45 +export(float) var rnd_scale : float = 0.2 +export(float) var rnd_opacity : float = 0 +export(bool) var variations : bool = false + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !in_mask: + in_mask = MMNodeUniversalProperty.new() + in_mask.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + in_mask.set_default_value(1) + + in_mask.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + in_mask.slot_name = ">>> Mask " + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !instance_map: + instance_map = MMNodeUniversalProperty.new() + instance_map.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + instance_map.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_input_property(input) + register_input_property(in_mask) + register_output_property(output) + register_output_property(instance_map) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_label_universal(in_mask) + mm_graph_node.add_slot_texture_universal(output) + mm_graph_node.add_slot_texture_universal(instance_map) + + mm_graph_node.add_slot_vector2("get_tile", "set_tile", "Tile", 1) + mm_graph_node.add_slot_float("get_overlap", "set_overlap", "Overlap", 1) + mm_graph_node.add_slot_enum("get_select_inputs", "set_select_inputs", "Select inputs", [ "1", "4", "16" ]) + mm_graph_node.add_slot_vector2("get_scale", "set_scale", "Scale", 0.01) + mm_graph_node.add_slot_float("get_fixed_offset", "set_fixed_offset", "Fixed Offset", 0.01) + mm_graph_node.add_slot_float("get_rnd_offset", "set_rnd_offset", "Rnd Offset", 0.01) + mm_graph_node.add_slot_float("get_rnd_rotate", "set_rnd_rotate", "Rnd Rotate", 0.1) + mm_graph_node.add_slot_float("get_rnd_scale", "set_rnd_scale", "Rnd Scale", 0.01) + mm_graph_node.add_slot_float("get_rnd_opacity", "set_rnd_opacity", "Rnd Opacity", 0.01) + #mm_graph_node.add_slot_bool("get_variations", "set_variations", "Variations") + +func _render(material) -> void: + var output_img : Image = Image.new() + var instance_map_img : Image = Image.new() + + output_img.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + instance_map_img.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + + output_img.lock() + instance_map_img.lock() + + var w : float = material.image_size.x + var h : float = material.image_size.y + + var pseed : float = randf() + randi() + + var ps : float = 1.0 / float(pseed) + + var ix : int = int(material.image_size.x) + var iy : int = int(material.image_size.y) + + for x in range(ix): + for y in range(iy): + var uv : Vector2 = Vector2(x / w, y / h) + + #vec3 $(name_uv)_random_color; + #vec4 $(name_uv)_tiled_output = tiler_$(name)($uv, vec2($tx, $ty), int($overlap), vec2(float($seed)), $(name_uv)_random_color); + var rch : PoolColorArray = tiler_calc(uv, tile, overlap, Vector2(ps, ps)) + + output_img.set_pixel(x, y, rch[1]) + instance_map_img.set_pixel(x, y, rch[0]) + + output_img.unlock() + instance_map_img.unlock() + + output.set_value(output_img) + instance_map.set_value(instance_map_img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + return Color() + +#tile +func get_tile() -> Vector2: + return tile + +func set_tile(val : Vector2) -> void: + tile = val + + set_dirty(true) + +#overlap +func get_overlap() -> float: + return overlap + +func set_overlap(val : float) -> void: + overlap = val + + set_dirty(true) + +#select_inputs +func get_select_inputs() -> int: + return select_inputs + +func set_select_inputs(val : int) -> void: + select_inputs = val + + set_dirty(true) + +#scale +func get_scale() -> Vector2: + return scale + +func set_scale(val : Vector2) -> void: + scale = val + + set_dirty(true) + +#fixed_offset +func get_fixed_offset() -> float: + return fixed_offset + +func set_fixed_offset(val : float) -> void: + fixed_offset = val + + set_dirty(true) + +#rnd_offset +func get_rnd_offset() -> float: + return rnd_offset + +func set_rnd_offset(val : float) -> void: + rnd_offset = val + + set_dirty(true) + + +#rnd_rotate +func get_rnd_rotate() -> float: + return rnd_rotate + +func set_rnd_rotate(val : float) -> void: + rnd_rotate = val + + set_dirty(true) + +#rnd_scale +func get_rnd_scale() -> float: + return rnd_scale + +func set_rnd_scale(val : float) -> void: + rnd_scale = val + + set_dirty(true) + +#rnd_opacity +func get_rnd_opacity() -> float: + return rnd_opacity + +func set_rnd_opacity(val : float) -> void: + rnd_opacity = val + + set_dirty(true) + +#variations +func get_variations() -> bool: + return variations + +func set_variations(val : bool) -> void: + variations = val + + set_dirty(true) + +#---------------------- +#color_tiler.mmg +#Tiles several occurences of an input image while adding randomness. + +#vec4 tiler_$(name)(vec2 uv, vec2 tile, int overlap, vec2 _seed, out vec3 random_color) { +# vec4 c = vec4(0.0); +# vec3 rc = vec3(0.0); +# vec3 rc1; +# +# for (int dx = -overlap; dx <= overlap; ++dx) { +# for (int dy = -overlap; dy <= overlap; ++dy) { +# vec2 pos = fract((floor(uv*tile)+vec2(float(dx), float(dy))+vec2(0.5))/tile-vec2(0.5)); +# vec2 seed = rand2(pos+_seed); +# rc1 = rand3(seed); +# pos = fract(pos+vec2($fixed_offset/tile.x, 0.0)*floor(mod(pos.y*tile.y, 2.0))+$offset*seed/tile); +# float mask = $mask(fract(pos+vec2(0.5))); +# if (mask > 0.01) { +# vec2 pv = fract(uv - pos)-vec2(0.5); +# seed = rand2(seed); +# float angle = (seed.x * 2.0 - 1.0) * $rotate * 0.01745329251; +# float ca = cos(angle); +# float sa = sin(angle); +# pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y); +# pv *= (seed.y-0.5)*2.0*$scale+1.0; +# pv /= vec2($scale_x, $scale_y); +# pv += vec2(0.5); +# pv = clamp(pv, vec2(0.0), vec2(1.0)); +# +# $select_inputs +# +# vec4 n = $in.variation(pv, $variations ? seed.x : 0.0); +# +# seed = rand2(seed); +# float na = n.a*mask*(1.0-$opacity*seed.x); +# float a = (1.0-c.a)*(1.0*na); +# +# c = mix(c, n, na); +# rc = mix(rc, rc1, n.a); +# } +# } +# } +# +# random_color = rc; +# return c; +#} + + +#select_inputs enum +#1, " " +#4, "pv = clamp(0.5*(pv+floor(rand2(seed)*2.0)), vec2(0.0), vec2(1.0));" +#16, "pv = clamp(0.25*(pv+floor(rand2(seed)*4.0)), vec2(0.0), vec2(1.0));" + +func tiler_calc(uv : Vector2, tile : Vector2, overlap : int, _seed : Vector2) -> PoolColorArray: + var c : Color = Color() + var rc : Vector3 = Vector3() + var rc1 : Vector3 = Vector3() + + for dx in range(-overlap, overlap): #for (int dx = -overlap; dx <= overlap; ++dx) { + for dy in range(-overlap, overlap): #for (int dy = -overlap; dy <= overlap; ++dy) { + var pos : Vector2 = Commons.fractv2((Commons.floorv2(uv * tile) + Vector2(dx, dy) + Vector2(0.5, 0.5)) / tile - Vector2(0.5, 0.5)) + var vseed : Vector2 = Commons.rand2(pos + _seed) + rc1 = Commons.rand3(vseed) + pos = Commons.fractv2(pos + Vector2(fixed_offset / tile.x, 0.0) * floor(Commons.modf(pos.y * tile.y, 2.0)) + rnd_offset * vseed / tile) + var mask : float = in_mask.get_value(Commons.fractv2(pos + Vector2(0.5, 0.5))) + + if (mask > 0.01): + var pv : Vector2 = Commons.fractv2(uv - pos) - Vector2(0.5, 0.5) + vseed = Commons.rand2(vseed) + var angle : float = (vseed.x * 2.0 - 1.0) * rnd_rotate * 0.01745329251 + var ca : float = cos(angle) + var sa : float = sin(angle) + pv = Vector2(ca * pv.x + sa * pv.y, -sa * pv.x + ca * pv.y) + pv *= (vseed.y-0.5) * 2.0 * rnd_scale + 1.0 + pv /= scale + pv += Vector2(0.5, 0.5) + pv = Commons.clampv2(pv, Vector2(), Vector2(1, 1)) + + #1, " " + #4, "pv = clamp(0.5*(pv+floor(rand2(seed)*2.0)), vec2(0.0), vec2(1.0));" + #16, "pv = clamp(0.25*(pv+floor(rand2(seed)*4.0)), vec2(0.0), vec2(1.0));" + + if select_inputs == 1: + pv = Commons.clampv2(0.5*(pv + Commons.floorv2(Commons.rand2(vseed)*2.0)), Vector2(), Vector2(1, 1)); + elif select_inputs == 2: + pv = Commons.clampv2(0.25*(pv + Commons.floorv2(Commons.rand2(vseed)*4.0)), Vector2(), Vector2(1, 1)); + +# vec4 n = $in.variation(pv, $variations ? seed.x : 0.0); + var n : Color = input.get_value(pv) * mask * (1.0 - rnd_opacity * vseed.x) + + vseed = Commons.rand2(vseed) + var na : float = n.a * mask * (1.0 - rnd_opacity * vseed.x) + var a : float = (1.0 - c.a) * (1.0 * na) + + c = lerp(c, n, na); + rc = lerp(rc, rc1, n.a); + + var pc : PoolColorArray = PoolColorArray() + pc.append(Color(rc.x, rc.y, rc.z, 1)) + pc.append(c) + + return pc diff --git a/game/addons/mat_maker_gd/nodes/transform/kaleidoscope.gd b/game/addons/mat_maker_gd/nodes/transform/kaleidoscope.gd new file mode 100644 index 0000000..a784f9b --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/transform/kaleidoscope.gd @@ -0,0 +1,63 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Transforms = preload("res://addons/mat_maker_gd/nodes/common/transforms.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(int) var count : int = 5 +export(float) var offset : float = 0 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_int("get_count", "set_count", "Count") + mm_graph_node.add_slot_float("get_offset", "set_offset", "Offset", 0.5) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + #$i(kal_rotate($uv, $count, $offset)) + return input.get_value(Transforms.kal_rotate(uv, count, offset)) + +#count +func get_count() -> int: + return count + +func set_count(val : int) -> void: + count = val + + set_dirty(true) + +#offset +func get_offset() -> float: + return offset + +func set_offset(val : float) -> void: + offset = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/transform/mirror.gd b/game/addons/mat_maker_gd/nodes/transform/mirror.gd new file mode 100644 index 0000000..a0413e4 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/transform/mirror.gd @@ -0,0 +1,69 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Transforms = preload("res://addons/mat_maker_gd/nodes/common/transforms.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(int, "Horizontal,Vertical") var direction : int = 0 +export(float) var offset : float = 0 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_enum("get_direction", "set_direction", "Direction", [ "Horizontal", "Vertical" ]) + mm_graph_node.add_slot_float("get_offset", "set_offset", "offset", 0.01) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + #$i(uvmirror_$direction($uv, $offset)) + + if direction == 0: + return input.get_value(Transforms.uvmirror_h(uv, offset)) + elif direction == 1: + return input.get_value(Transforms.uvmirror_v(uv, offset)) + + return Color(0, 0, 0, 1) + +#direction +func get_direction() -> int: + return direction + +func set_direction(val : int) -> void: + direction = val + + set_dirty(true) + +#offset +func get_offset() -> float: + return offset + +func set_offset(val : float) -> void: + offset = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/transform/repeat.gd b/game/addons/mat_maker_gd/nodes/transform/repeat.gd new file mode 100644 index 0000000..5f0e387 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/transform/repeat.gd @@ -0,0 +1,27 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +export(Resource) var input : Resource + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Apply >>>" + #input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_COLOR + input.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.get_value_from_owner = true + + register_input_property(input) + register_output_property(input) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + +func get_property_value(uv : Vector2): + return input.get_value(Commons.fractv2(uv), true) diff --git a/game/addons/mat_maker_gd/nodes/transform/rotate.gd b/game/addons/mat_maker_gd/nodes/transform/rotate.gd new file mode 100644 index 0000000..a2416a4 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/transform/rotate.gd @@ -0,0 +1,63 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Transforms = preload("res://addons/mat_maker_gd/nodes/common/transforms.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(Vector2) var center : Vector2 = Vector2() +export(float) var rotate : float = 0 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input1 " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_vector2("get_center", "set_center", "Center", 0.01) + mm_graph_node.add_slot_float("get_rotate", "set_rotate", "Rotate", 0.1) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + #$i(rotate($uv, vec2(0.5+$cx, 0.5+$cy), $rotate*0.01745329251)) + return input.get_value(Transforms.rotate(uv, center + Vector2(0.5, 0.5), rotate*0.01745329251)) + +#center +func get_center() -> Vector2: + return center + +func set_center(val : Vector2) -> void: + center = val + + set_dirty(true) + +#rotate +func get_rotate() -> float: + return rotate + +func set_rotate(val : float) -> void: + rotate = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/transform/scale.gd b/game/addons/mat_maker_gd/nodes/transform/scale.gd new file mode 100644 index 0000000..8f8d1e4 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/transform/scale.gd @@ -0,0 +1,63 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Transforms = preload("res://addons/mat_maker_gd/nodes/common/transforms.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(Vector2) var center : Vector2 = Vector2() +export(Vector2) var scale : Vector2 = Vector2(1, 1) + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input1 " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_vector2("get_center", "set_center", "Center", 0.01) + mm_graph_node.add_slot_vector2("get_scale", "set_scale", "Scale", 0.01) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + #$i(scale($uv, vec2(0.5+$cx, 0.5+$cy), vec2($scale_x, $scale_y))) + return input.get_value(Transforms.scale(uv, center + Vector2(0.5, 0.5), scale)) + +#center +func get_center() -> Vector2: + return center + +func set_center(val : Vector2) -> void: + center = val + + set_dirty(true) + +#scale +func get_scale() -> Vector2: + return scale + +func set_scale(val : Vector2) -> void: + scale = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/transform/shear.gd b/game/addons/mat_maker_gd/nodes/transform/shear.gd new file mode 100644 index 0000000..98236ed --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/transform/shear.gd @@ -0,0 +1,79 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(int, "Horizontal,Vertical") var direction : int = 0 +export(float) var amount : float = 1 +export(float) var center : float = 0 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_enum("get_direction", "set_direction", "Direction", [ "Horizontal", "Vertical" ]) + mm_graph_node.add_slot_float("get_amount", "set_amount", "Amount", 0.01) + mm_graph_node.add_slot_float("get_center", "set_center", "Center", 0.01) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + #$in($uv+$amount*($uv.yx-vec2($center))*vec2($direction)) + + if direction == 0: + return input.get_value(uv + amount * (Vector2(uv.y, uv.x) - Vector2(center, center)) * Vector2(1, 0)) + elif direction == 1: + return input.get_value(uv + amount * (Vector2(uv.y, uv.x) - Vector2(center, center)) * Vector2(0, 1)) + + return Color(0, 0, 0, 1) + +#direction +func get_direction() -> int: + return direction + +func set_direction(val : int) -> void: + direction = val + + set_dirty(true) + +#amount +func get_amount() -> float: + return amount + +func set_amount(val : float) -> void: + amount = val + + set_dirty(true) + +#center +func get_center() -> float: + return center + +func set_center(val : float) -> void: + center = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/transform/tiler.gd b/game/addons/mat_maker_gd/nodes/transform/tiler.gd new file mode 100644 index 0000000..d6d75f3 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/transform/tiler.gd @@ -0,0 +1,306 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +export(Resource) var input : Resource +export(Resource) var in_mask : Resource + +export(Resource) var output : Resource +export(Resource) var instance_map : Resource + +export(Vector2) var tile : Vector2 = Vector2(4, 4) +export(float) var overlap : float = 1 +export(int, "1,4,16") var select_inputs : int = 0 +export(Vector2) var scale : Vector2 = Vector2(0.5, 0.5) +export(float) var fixed_offset : float = 0 +export(float) var rnd_offset : float = 0.25 +export(float) var rnd_rotate : float = 45 +export(float) var rnd_scale : float = 0.2 +export(float) var rnd_value : float = 2 +export(bool) var variations : bool = false + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + input.set_default_value(0) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !in_mask: + in_mask = MMNodeUniversalProperty.new() + in_mask.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + in_mask.set_default_value(1) + + in_mask.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + in_mask.slot_name = ">>> Mask " + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + if !instance_map: + instance_map = MMNodeUniversalProperty.new() + instance_map.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + instance_map.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + + register_input_property(input) + register_input_property(in_mask) + register_output_property(output) + register_output_property(instance_map) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_label_universal(in_mask) + mm_graph_node.add_slot_texture_universal(output) + mm_graph_node.add_slot_texture_universal(instance_map) + + mm_graph_node.add_slot_vector2("get_tile", "set_tile", "Tile", 1) + mm_graph_node.add_slot_float("get_overlap", "set_overlap", "Overlap", 1) + mm_graph_node.add_slot_enum("get_select_inputs", "set_select_inputs", "Select inputs", [ "1", "4", "16" ]) + mm_graph_node.add_slot_vector2("get_scale", "set_scale", "Scale", 0.01) + mm_graph_node.add_slot_float("get_fixed_offset", "set_fixed_offset", "Fixed Offset", 0.01) + mm_graph_node.add_slot_float("get_rnd_offset", "set_rnd_offset", "Rnd Offset", 0.01) + mm_graph_node.add_slot_float("get_rnd_rotate", "set_rnd_rotate", "Rnd Rotate", 0.1) + mm_graph_node.add_slot_float("get_rnd_scale", "set_rnd_scale", "Rnd Scale", 0.01) + mm_graph_node.add_slot_float("get_rnd_value", "set_rnd_value", "Rnd Value", 0.01) + #mm_graph_node.add_slot_bool("get_variations", "set_variations", "Variations") + +func _render(material) -> void: + var output_img : Image = Image.new() + var instance_map_img : Image = Image.new() + + output_img.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + instance_map_img.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8) + + output_img.lock() + instance_map_img.lock() + + var w : float = material.image_size.x + var h : float = material.image_size.y + + var pseed : float = randf() + randi() + + var ps : float = 1.0 / float(pseed) + + var ix : int = int(material.image_size.x) + var iy : int = int(material.image_size.y) + + for x in range(ix): + for y in range(iy): + var uv : Vector2 = Vector2(x / w, y / h) + + #vec4 $(name_uv)_rch = tiler_$(name)($uv, vec2($tx, $ty), int($overlap), vec2(float($seed))) + var rch : Color = tiler_calc(uv, tile, overlap, Vector2(ps, ps)) + + #Output, float, Shows the generated pattern + #$(name_uv)_rch.a + var output_img_col : Color = Color(rch.a, rch.a, rch.a, 1) + + #Instance map, rgb, Shows a random color for each instance of the input image + #$(name_uv)_rch.rgb + var instance_map_img_col : Color = Color(rch.r, rch.g, rch.b, 1) + + output_img.set_pixel(x, y, output_img_col) + instance_map_img.set_pixel(x, y, instance_map_img_col) + + output_img.unlock() + instance_map_img.unlock() + + output.set_value(output_img) + instance_map.set_value(instance_map_img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + return Color() + +#tile +func get_tile() -> Vector2: + return tile + +func set_tile(val : Vector2) -> void: + tile = val + + set_dirty(true) + +#overlap +func get_overlap() -> float: + return overlap + +func set_overlap(val : float) -> void: + overlap = val + + set_dirty(true) + +#select_inputs +func get_select_inputs() -> int: + return select_inputs + +func set_select_inputs(val : int) -> void: + select_inputs = val + + set_dirty(true) + +#scale +func get_scale() -> Vector2: + return scale + +func set_scale(val : Vector2) -> void: + scale = val + + set_dirty(true) + +#fixed_offset +func get_fixed_offset() -> float: + return fixed_offset + +func set_fixed_offset(val : float) -> void: + fixed_offset = val + + set_dirty(true) + +#rnd_offset +func get_rnd_offset() -> float: + return rnd_offset + +func set_rnd_offset(val : float) -> void: + rnd_offset = val + + set_dirty(true) + + +#rnd_rotate +func get_rnd_rotate() -> float: + return rnd_rotate + +func set_rnd_rotate(val : float) -> void: + rnd_rotate = val + + set_dirty(true) + +#rnd_scale +func get_rnd_scale() -> float: + return rnd_scale + +func set_rnd_scale(val : float) -> void: + rnd_scale = val + + set_dirty(true) + +#rnd_value +func get_rnd_value() -> float: + return rnd_value + +func set_rnd_value(val : float) -> void: + rnd_value = val + + set_dirty(true) + +#variations +func get_variations() -> bool: + return variations + +func set_variations(val : bool) -> void: + variations = val + + set_dirty(true) + +#---------------------- +#tiler.mmg +#Tiles several occurences of an input image while adding randomness. + +#instance +#vec4 tiler_$(name)(vec2 uv, vec2 tile, int overlap, vec2 _seed) { +# float c = 0.0; +# vec3 rc = vec3(0.0); +# vec3 rc1; +# for (int dx = -overlap; dx <= overlap; ++dx) { +# for (int dy = -overlap; dy <= overlap; ++dy) { +# vec2 pos = fract((floor(uv*tile)+vec2(float(dx), float(dy))+vec2(0.5))/tile-vec2(0.5)); +# vec2 seed = rand2(pos+_seed); +# rc1 = rand3(seed); +# pos = fract(pos+vec2($fixed_offset/tile.x, 0.0)*floor(mod(pos.y*tile.y, 2.0))+$offset*seed/tile); +# float mask = $mask(fract(pos+vec2(0.5))); +# +# if (mask > 0.01) { +# vec2 pv = fract(uv - pos)-vec2(0.5); +# seed = rand2(seed); +# float angle = (seed.x * 2.0 - 1.0) * $rotate * 0.01745329251; +# float ca = cos(angle); +# float sa = sin(angle); +# pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y); +# pv *= (seed.y-0.5)*2.0*$scale+1.0; +# pv /= vec2($scale_x, $scale_y); +# pv += vec2(0.5); +# seed = rand2(seed); +# vec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0)); +# if (pv.x != clamped_pv.x || pv.y != clamped_pv.y) { +# continue; +# } +# +# $select_inputs +# +# float c1 = $in.variation(pv, $variations ? seed.x : 0.0)*mask*(1.0-$value*seed.x); +# c = max(c, c1); +# rc = mix(rc, rc1, step(c, c1)); +# } +# } +# } +# +# return vec4(rc, c); +#} + +#select_inputs enum +#1, " " +#4, "pv = clamp(0.5*(pv+floor(rand2(seed)*2.0)), vec2(0.0), vec2(1.0));" +#16, "pv = clamp(0.25*(pv+floor(rand2(seed)*4.0)), vec2(0.0), vec2(1.0));" + +func tiler_calc(uv : Vector2, tile : Vector2, overlap : int, _seed : Vector2) -> Color: + var c : float = 0.0 + var rc : Vector3 = Vector3() + var rc1 : Vector3 = Vector3() + + for dx in range(-overlap, overlap): #for (int dx = -overlap; dx <= overlap; ++dx) { + for dy in range(-overlap, overlap): #for (int dy = -overlap; dy <= overlap; ++dy) { + var pos : Vector2 = Commons.fractv2((Commons.floorv2(uv * tile) + Vector2(dx, dy) + Vector2(0.5, 0.5)) / tile - Vector2(0.5, 0.5)) + var vseed : Vector2 = Commons.rand2(pos+_seed) + rc1 = Commons.rand3(vseed) + pos = Commons.fractv2(pos + Vector2(fixed_offset / tile.x, 0.0) * floor(Commons.modf(pos.y * tile.y, 2.0)) + rnd_offset * vseed / tile) + var mask : float = in_mask.get_value(Commons.fractv2(pos + Vector2(0.5, 0.5))) + + if (mask > 0.01): + var pv : Vector2 = Commons.fractv2(uv - pos) - Vector2(0.5, 0.5) + vseed = Commons.rand2(vseed) + var angle : float = (vseed.x * 2.0 - 1.0) * rnd_rotate * 0.01745329251 + var ca : float = cos(angle) + var sa : float = sin(angle) + pv = Vector2(ca * pv.x + sa * pv.y, -sa * pv.x + ca * pv.y) + pv *= (vseed.y-0.5) * 2.0 * rnd_scale + 1.0 + pv /= scale + pv += Vector2(0.5, 0.5) + vseed = Commons.rand2(vseed) + var clamped_pv : Vector2 = Commons.clampv2(pv, Vector2(), Vector2(1, 1)) + + if (pv.x != clamped_pv.x || pv.y != clamped_pv.y): + continue + + #1, " " + #4, "pv = clamp(0.5*(pv+floor(rand2(seed)*2.0)), vec2(0.0), vec2(1.0));" + #16, "pv = clamp(0.25*(pv+floor(rand2(seed)*4.0)), vec2(0.0), vec2(1.0));" + + if select_inputs == 1: + pv = Commons.clampv2(0.5*(pv + Commons.floorv2(Commons.rand2(vseed)*2.0)), Vector2(), Vector2(1, 1)); + elif select_inputs == 2: + pv = Commons.clampv2(0.25*(pv + Commons.floorv2(Commons.rand2(vseed)*4.0)), Vector2(), Vector2(1, 1)); + + #float c1 = $in.variation(pv, $variations ? vseed.x : 0.0) * mask * (1.0-$value*vseed.x) + var c1 : float = input.get_value(pv) * mask * (1.0 - rnd_value * vseed.x) + c = max(c, c1) + rc = lerp(rc, rc1, Commons.step(c, c1)) + + return Color(rc.x, rc.y, rc.z, c) + diff --git a/game/addons/mat_maker_gd/nodes/transform/transform.gd b/game/addons/mat_maker_gd/nodes/transform/transform.gd new file mode 100644 index 0000000..94aab52 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/transform/transform.gd @@ -0,0 +1,132 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var Transforms = preload("res://addons/mat_maker_gd/nodes/common/transforms.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource + +export(Resource) var translate_x : Resource +export(Resource) var translate_y : Resource +export(Resource) var rotate : Resource +export(Resource) var scale_x : Resource +export(Resource) var scale_y : Resource +export(int, "Clamp,Repeat,Extend") var mode : int = 0 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + if !translate_x: + translate_x = MMNodeUniversalProperty.new() + translate_x.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + translate_x.set_default_value(0) + translate_x.value_step = 0.01 + + translate_x.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + translate_x.slot_name = "Translate X" + + if !translate_y: + translate_y = MMNodeUniversalProperty.new() + translate_y.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + translate_y.set_default_value(0) + translate_y.value_step = 0.01 + + translate_y.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + translate_y.slot_name = "Translate Y" + + if !rotate: + rotate = MMNodeUniversalProperty.new() + rotate.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + rotate.set_default_value(0) + rotate.value_step = 0.01 + + rotate.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + rotate.slot_name = "Rotate" + + if !scale_x: + scale_x = MMNodeUniversalProperty.new() + scale_x.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + scale_x.set_default_value(1) + scale_x.value_step = 0.01 + + scale_x.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + scale_x.slot_name = "Scale X" + + if !scale_y: + scale_y = MMNodeUniversalProperty.new() + scale_y.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + scale_y.set_default_value(1) + scale_y.value_step = 0.01 + + scale_y.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + scale_y.slot_name = "Scale Y" + + register_input_property(input) + register_output_property(image) + register_input_property(translate_x) + register_input_property(translate_y) + register_input_property(rotate) + register_input_property(scale_x) + register_input_property(scale_y) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + + mm_graph_node.add_slot_float_universal(translate_x) + mm_graph_node.add_slot_float_universal(translate_y) + mm_graph_node.add_slot_float_universal(rotate) + mm_graph_node.add_slot_float_universal(scale_x) + mm_graph_node.add_slot_float_universal(scale_y) + + mm_graph_node.add_slot_enum("get_mode", "set_mode", "Mode", [ "Clamp", "Repeat", "Extend" ]) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + #$i($mode(transform2($uv, vec2($translate_x*(2.0*$tx($uv)-1.0), $translate_y*(2.0*$ty($uv)-1.0)), $rotate*0.01745329251*(2.0*$r($uv)-1.0), vec2($scale_x*(2.0*$sx($uv)-1.0), $scale_y*(2.0*$sy($uv)-1.0)))))", + + #Mode: + #Clamp -> transform2_clamp + #Repeat -> fract + #Extend -> "" + + var tr : Vector2 = Vector2(translate_x.get_default_value() * (2.0 * translate_x.get_value_or_zero(uv) - 1.0), translate_y.get_default_value() *(2.0 * translate_y.get_value_or_zero(uv) - 1.0)) + var rot : float = rotate.get_default_value() * 0.01745329251*(2.0 * rotate.get_value_or_zero(uv) - 1.0) + var sc : Vector2 = Vector2(scale_x.get_default_value() *(2.0 * scale_x.get_value_or_zero(uv) - 1.0), scale_y.get_default_value() *(2.0 * scale_y.get_value_or_zero(uv) - 1.0)) + + var nuv : Vector2 = Transforms.transform2(uv, tr, rot, sc) + + if mode == 0: + nuv = Transforms.transform2_clamp(nuv) + elif mode == 1: + nuv = Commons.fractv2(nuv) + + return input.get_value(nuv) + +#mode +func get_mode() -> int: + return mode + +func set_mode(val : int) -> void: + mode = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/transform/translate.gd b/game/addons/mat_maker_gd/nodes/transform/translate.gd new file mode 100644 index 0000000..8c03d04 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/transform/translate.gd @@ -0,0 +1,51 @@ +tool +extends MMNode + +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + +export(Resource) var image : Resource +export(Resource) var input : Resource +export(Vector2) var translation : Vector2 = Vector2() + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + input.set_default_value(Color(0, 0, 0, 1)) + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL + input.slot_name = ">>> Input1 " + + if !image: + image = MMNodeUniversalProperty.new() + image.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_IMAGE + + #image.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + image.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE + #image.force_override = true + + register_input_property(input) + register_output_property(image) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_texture_universal(image) + mm_graph_node.add_slot_vector2("get_translation", "set_translation", "Translation", 0.01) + +func _render(material) -> void: + var img : Image = render_image(material) + + image.set_value(img) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + #$i($uv-vec2($translate_x, $translate_y)) + return input.get_value(uv - translation) + +#translation +func get_translation() -> Vector2: + return translation + +func set_translation(val : Vector2) -> void: + translation = val + + set_dirty(true) diff --git a/game/addons/mat_maker_gd/nodes/uniform/greyscale_uniform.gd b/game/addons/mat_maker_gd/nodes/uniform/greyscale_uniform.gd new file mode 100644 index 0000000..c3bf2d6 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/uniform/greyscale_uniform.gd @@ -0,0 +1,25 @@ +tool +extends MMNode + +export(Resource) var uniform : Resource + +func _init_properties(): + if !uniform: + uniform = MMNodeUniversalProperty.new() + uniform.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + uniform.set_default_value(0.5) + uniform.slot_name = "Value (Color)" + uniform.value_step = 0.01 + uniform.value_range = Vector2(0, 1) + + uniform.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_COLOR + + register_output_property(uniform) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_float_universal(uniform) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + var f : float = uniform.get_value(uv) + + return Color(f, f, f, 1) diff --git a/game/addons/mat_maker_gd/nodes/uniform/uniform.gd b/game/addons/mat_maker_gd/nodes/uniform/uniform.gd new file mode 100644 index 0000000..dbd409a --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/uniform/uniform.gd @@ -0,0 +1,20 @@ +tool +extends MMNode + +export(Resource) var uniform : Resource + +func _init_properties(): + if !uniform: + uniform = MMNodeUniversalProperty.new() + uniform.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_COLOR + uniform.set_default_value(Color(1, 1, 1, 1)) + + uniform.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_COLOR + + register_output_property(uniform) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_color_universal(uniform) + +func get_value_for(uv : Vector2, pseed : int) -> Color: + return uniform.get_value(uv) diff --git a/game/addons/mat_maker_gd/plugin.cfg b/game/addons/mat_maker_gd/plugin.cfg new file mode 100644 index 0000000..0431311 --- /dev/null +++ b/game/addons/mat_maker_gd/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="mat_maker_gd" +description="" +author="Relintai" +version="" +script="plugin.gd" diff --git a/game/addons/mat_maker_gd/plugin.gd b/game/addons/mat_maker_gd/plugin.gd new file mode 100644 index 0000000..c3b47e1 --- /dev/null +++ b/game/addons/mat_maker_gd/plugin.gd @@ -0,0 +1,66 @@ +tool +extends EditorPlugin + +var MMNode = preload("res://addons/mat_maker_gd/nodes/mm_node.gd") +var MMMaterial = preload("res://addons/mat_maker_gd/nodes/mm_material.gd") +var MMNodeUniversalProperty = preload("res://addons/mat_maker_gd/nodes/mm_node_universal_property.gd") + +var editor_packed_scene = preload("res://addons/mat_maker_gd/editor/MatMakerGDEditor.tscn") +var editor_scene = null + +var tool_button : ToolButton = null + +func _enter_tree(): + add_custom_type("MMNode", "Resource", MMNode, null) + add_custom_type("MMMaterial", "Resource", MMMaterial, null) + add_custom_type("MMNodeUniversalProperty", "Resource", MMNodeUniversalProperty, null) + + editor_scene = editor_packed_scene.instance() + + tool_button = add_control_to_bottom_panel(editor_scene, "MMGD") + tool_button.hide() + +func _exit_tree(): + remove_custom_type("MMNode") + remove_custom_type("MMMaterial") + remove_custom_type("MMNodeUniversalProperty") + + remove_control_from_bottom_panel(editor_scene) + + if editor_scene: + editor_scene.queue_free() + + editor_scene = null + tool_button = null + +func handles(object): + return object is MMMateial + +func edit(object): + #if editor_scene: + # make_bottom_panel_item_visible(editor_scene) + + if object is MMMateial: + editor_scene.set_mmmaterial(object as MMMateial) + +func make_visible(visible): + if tool_button: + if visible: + tool_button.show() + else: + #if tool_button.pressed: + # tool_button.pressed = false + + if !tool_button.pressed: + tool_button.hide() + +func get_plugin_icon(): + return null + +func get_plugin_name(): + return "MatMakerGD" + +func has_main_screen(): + return false + + diff --git a/game/addons/mat_maker_gd/widgets/color_picker_button/color_picker_button.gd b/game/addons/mat_maker_gd/widgets/color_picker_button/color_picker_button.gd new file mode 100644 index 0000000..cf0e819 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/color_picker_button/color_picker_button.gd @@ -0,0 +1,16 @@ +tool +extends ColorPickerButton + +func get_drag_data(_position): + var preview = ColorRect.new() + preview.color = color + preview.rect_min_size = Vector2(32, 32) + set_drag_preview(preview) + return color + +func can_drop_data(_position, data) -> bool: + return typeof(data) == TYPE_COLOR + +func drop_data(_position, data) -> void: + color = data + emit_signal("color_changed", color) diff --git a/game/addons/mat_maker_gd/widgets/color_picker_popup/color_picker_popup.tscn b/game/addons/mat_maker_gd/widgets/color_picker_popup/color_picker_popup.tscn new file mode 100644 index 0000000..c4003f3 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/color_picker_popup/color_picker_popup.tscn @@ -0,0 +1,14 @@ +[gd_scene format=2] + +[node name="ColorPickerPopup" type="PopupPanel"] +margin_right = 316.0 +margin_bottom = 470.0 + +[node name="ColorPicker" type="ColorPicker" parent="."] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 312.0 +margin_bottom = 466.0 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/game/addons/mat_maker_gd/widgets/curve_edit/control_point.gd b/game/addons/mat_maker_gd/widgets/curve_edit/control_point.gd new file mode 100644 index 0000000..5fd5e48 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/curve_edit/control_point.gd @@ -0,0 +1,70 @@ +tool +extends Control + +var MMCurve = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd") + +var moving : bool = false + +var min_x : float +var max_x : float +var min_y : float +var max_y : float + +const OFFSET : Vector2 = Vector2(3, 3) + +signal moved(index) +signal removed(index) + +func _ready(): + pass # Replace with function body. + +func _draw(): +# var current_theme : Theme = get_node("/root/MainWindow").theme +# var color : Color = current_theme.get_color("font_color", "Label") + + var color : Color = Color(1, 1, 1, 1) + for c in get_children(): + if c.visible: + draw_line(OFFSET, c.rect_position+OFFSET, color) + + draw_rect(Rect2(0, 0, 7, 7), color) + +#p : MMCurve.Point +func initialize(p) -> void: + rect_position = get_parent().transform_point(p.p)-OFFSET + if p.ls != INF: + $LeftSlope.rect_position = $LeftSlope.distance*(get_parent().rect_size*Vector2(1.0, -p.ls)).normalized() + if p.rs != INF: + $RightSlope.rect_position = $RightSlope.distance*(get_parent().rect_size*Vector2(1.0, -p.rs)).normalized() + +func set_constraint(x : float, X : float, y : float, Y : float) -> void: + min_x = x + max_x = X + min_y = y + max_y = Y + +func _on_ControlPoint_gui_input(event): + if event is InputEventMouseButton: + if event.button_index == BUTTON_LEFT: + if event.pressed: + moving = true + else: + moving = false + get_parent().update_controls() + elif event.button_index == BUTTON_RIGHT and event.pressed: + emit_signal("removed", get_index()) + elif moving and event is InputEventMouseMotion: + rect_position += event.relative + if rect_position.x < min_x: + rect_position.x = min_x + elif rect_position.x > max_x: + rect_position.x = max_x + if rect_position.y < min_y: + rect_position.y = min_y + elif rect_position.y > max_y: + rect_position.y = max_y + emit_signal("moved", get_index()) + +func update_tangents() -> void: + update() + emit_signal("moved", get_index()) diff --git a/game/addons/mat_maker_gd/widgets/curve_edit/control_point.tscn b/game/addons/mat_maker_gd/widgets/curve_edit/control_point.tscn new file mode 100644 index 0000000..03bfd28 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/curve_edit/control_point.tscn @@ -0,0 +1,39 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://addons/mat_maker_gd/widgets/curve_edit/slope_point.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/widgets/curve_edit/control_point.gd" type="Script" id=2] + +[node name="ControlPoint" type="Control"] +margin_left = 56.9864 +margin_top = 33.8615 +margin_right = 63.9864 +margin_bottom = 40.8615 +rect_min_size = Vector2( 7, 7 ) +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="LeftSlope" type="Control" parent="."] +margin_left = -18.5235 +margin_right = -11.5235 +margin_bottom = 7.0 +rect_min_size = Vector2( 7, 7 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +distance = -30.0 + +[node name="RightSlope" type="Control" parent="."] +margin_left = 15.6919 +margin_right = 22.6919 +margin_bottom = 7.0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +distance = 30.0 +[connection signal="gui_input" from="." to="." method="_on_ControlPoint_gui_input"] +[connection signal="gui_input" from="LeftSlope" to="LeftSlope" method="_on_ControlPoint_gui_input"] +[connection signal="gui_input" from="RightSlope" to="RightSlope" method="_on_ControlPoint_gui_input"] diff --git a/game/addons/mat_maker_gd/widgets/curve_edit/curve_dialog.gd b/game/addons/mat_maker_gd/widgets/curve_edit/curve_dialog.gd new file mode 100644 index 0000000..df8f79a --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/curve_edit/curve_dialog.gd @@ -0,0 +1,37 @@ +tool +extends WindowDialog + +var MMCurve = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd") + +var previous_points : Array +var curve + +signal curve_changed(curve) + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +func _on_CurveDialog_popup_hide(): + queue_free() + +func _on_OK_pressed(): + emit_signal("curve_changed", curve) + curve.curve_changed() + + queue_free() + +func _on_Cancel_pressed(): + curve.set_points(previous_points) + emit_signal("curve_changed", curve) + + queue_free() + +func edit_curve(c) -> void: + curve = c + previous_points = curve.get_points() + $VBoxContainer/EditorContainer/CurveEditor.set_curve(curve) + popup_centered() + +func _on_CurveEditor_value_changed(value): + emit_signal("curve_changed", value) diff --git a/game/addons/mat_maker_gd/widgets/curve_edit/curve_dialog.tscn b/game/addons/mat_maker_gd/widgets/curve_edit/curve_dialog.tscn new file mode 100644 index 0000000..4898a89 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/curve_edit/curve_dialog.tscn @@ -0,0 +1,81 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://addons/mat_maker_gd/widgets/curve_edit/curve_editor.tscn" type="PackedScene" id=1] +[ext_resource path="res://addons/mat_maker_gd/widgets/curve_edit/curve_dialog.gd" type="Script" id=2] + +[node name="CurveDialog" type="WindowDialog"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 307.0 +margin_top = 151.0 +margin_right = -347.0 +margin_bottom = -174.0 +window_title = "Edit curve" +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 5.0 +margin_top = 5.0 +margin_right = -5.0 +margin_bottom = -5.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="EditorContainer" type="MarginContainer" parent="VBoxContainer"] +margin_right = 616.0 +margin_bottom = 353.0 +rect_clip_content = true +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_constants/margin_right = 4 +custom_constants/margin_top = 4 +custom_constants/margin_left = 4 +custom_constants/margin_bottom = 4 + +[node name="CurveEditor" parent="VBoxContainer/EditorContainer" instance=ExtResource( 1 )] +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 4.0 +margin_top = 4.0 +margin_right = 612.0 +margin_bottom = 349.0 +size_flags_vertical = 3 + +[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] +margin_top = 357.0 +margin_right = 616.0 +margin_bottom = 361.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +margin_top = 365.0 +margin_right = 616.0 +margin_bottom = 385.0 + +[node name="Control" type="Control" parent="VBoxContainer/HBoxContainer"] +margin_right = 488.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 + +[node name="OK" type="Button" parent="VBoxContainer/HBoxContainer"] +margin_left = 492.0 +margin_right = 552.0 +margin_bottom = 20.0 +rect_min_size = Vector2( 60, 0 ) +text = "OK" + +[node name="Cancel" type="Button" parent="VBoxContainer/HBoxContainer"] +margin_left = 556.0 +margin_right = 616.0 +margin_bottom = 20.0 +rect_min_size = Vector2( 60, 0 ) +text = "Cancel" +[connection signal="popup_hide" from="." to="." method="_on_CurveDialog_popup_hide"] +[connection signal="value_changed" from="VBoxContainer/EditorContainer/CurveEditor" to="." method="_on_CurveEditor_value_changed"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/OK" to="." method="_on_OK_pressed"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/Cancel" to="." method="_on_Cancel_pressed"] diff --git a/game/addons/mat_maker_gd/widgets/curve_edit/curve_edit.gd b/game/addons/mat_maker_gd/widgets/curve_edit/curve_edit.gd new file mode 100644 index 0000000..885adbc --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/curve_edit/curve_edit.gd @@ -0,0 +1,24 @@ +tool +extends Control + +var MMCurve = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd") + +var value = null setget set_value + +signal updated(curve) + +func set_value(v) -> void: + value = v + $CurveView.set_curve(value) + $CurveView.update() + +func _on_CurveEdit_pressed(): + var dialog = preload("res://addons/mat_maker_gd/widgets/curve_edit/curve_dialog.tscn").instance() + add_child(dialog) + dialog.connect("curve_changed", self, "on_value_changed") + dialog.edit_curve(value) + +func on_value_changed(v) -> void: + #set_value(v) + emit_signal("updated", v) + $CurveView.update() diff --git a/game/addons/mat_maker_gd/widgets/curve_edit/curve_edit.tscn b/game/addons/mat_maker_gd/widgets/curve_edit/curve_edit.tscn new file mode 100644 index 0000000..9c018b5 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/curve_edit/curve_edit.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://addons/mat_maker_gd/widgets/curve_edit/curve_edit.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/widgets/curve_edit/curve_view.tscn" type="PackedScene" id=2] + +[node name="CurveEdit" type="Button"] +anchor_left = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -1280.0 +margin_right = -1220.0 +margin_bottom = -700.0 +rect_min_size = Vector2( 60, 20 ) +focus_mode = 1 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CurveView" parent="." instance=ExtResource( 2 )] + +[connection signal="pressed" from="." to="." method="_on_CurveEdit_pressed"] diff --git a/game/addons/mat_maker_gd/widgets/curve_edit/curve_editor.gd b/game/addons/mat_maker_gd/widgets/curve_edit/curve_editor.gd new file mode 100644 index 0000000..abbe57f --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/curve_edit/curve_editor.gd @@ -0,0 +1,80 @@ +tool +extends "res://addons/mat_maker_gd/widgets/curve_edit/curve_view.gd" + +signal value_changed(value) + +func _ready(): + update_controls() + +func set_curve(c) -> void: + curve = c + update() + update_controls() + +func update_controls() -> void: + if !curve: + return + + for c in get_children(): + c.queue_free() + + var points = curve.get_points() + + for i in points.size(): + var p = points[i] + var control_point = preload("res://addons/mat_maker_gd/widgets/curve_edit/control_point.tscn").instance() + add_child(control_point) + control_point.initialize(p) + control_point.rect_position = transform_point(p.p)-control_point.OFFSET + + if i == 0 or i == points.size()-1: + control_point.set_constraint(control_point.rect_position.x, control_point.rect_position.x, -control_point.OFFSET.y, rect_size.y-control_point.OFFSET.y) + if i == 0: + control_point.get_child(0).visible = false + else: + control_point.get_child(1).visible = false + else: + var min_x = transform_point(points[i-1].p).x+1 + var max_x = transform_point(points[i+1].p).x-1 + control_point.set_constraint(min_x, max_x, -control_point.OFFSET.y, rect_size.y-control_point.OFFSET.y) + + control_point.connect("moved", self, "_on_ControlPoint_moved") + control_point.connect("removed", self, "_on_ControlPoint_removed") + + emit_signal("value_changed", curve) + +func _on_ControlPoint_moved(index): + var points : Array = curve.get_points() + + var control_point = get_child(index) + points[index].p = reverse_transform_point(control_point.rect_position+control_point.OFFSET) + + if control_point.has_node("LeftSlope"): + var slope_vector = control_point.get_node("LeftSlope").rect_position/rect_size + if slope_vector.x != 0: + points[index].ls = -slope_vector.y / slope_vector.x + + if control_point.has_node("RightSlope"): + var slope_vector = control_point.get_node("RightSlope").rect_position/rect_size + if slope_vector.x != 0: + points[index].rs = -slope_vector.y / slope_vector.x + + curve.set_points(points, false) + update() + emit_signal("value_changed", curve) + +func _on_ControlPoint_removed(index): + if curve.remove_point(index): + update() + update_controls() + +func _on_CurveEditor_gui_input(event): + if event is InputEventMouseButton: + if event.button_index == BUTTON_LEFT and event.doubleclick: + var new_point_position = reverse_transform_point(get_local_mouse_position()) + curve.add_point(new_point_position.x, new_point_position.y, 0.0, 0.0) + update_controls() + +func _on_resize() -> void: + ._on_resize() + update_controls() diff --git a/game/addons/mat_maker_gd/widgets/curve_edit/curve_editor.tscn b/game/addons/mat_maker_gd/widgets/curve_edit/curve_editor.tscn new file mode 100644 index 0000000..60d5c38 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/curve_edit/curve_editor.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://addons/mat_maker_gd/widgets/curve_edit/curve_view.tscn" type="PackedScene" id=1] +[ext_resource path="res://addons/mat_maker_gd/widgets/curve_edit/curve_editor.gd" type="Script" id=2] + +[node name="CurveEditor" instance=ExtResource( 1 )] +margin_left = 10.0 +margin_top = 10.0 +margin_right = -10.0 +margin_bottom = -10.0 +mouse_filter = 0 +script = ExtResource( 2 ) +[connection signal="gui_input" from="." to="." method="_on_CurveEditor_gui_input"] diff --git a/game/addons/mat_maker_gd/widgets/curve_edit/curve_view.gd b/game/addons/mat_maker_gd/widgets/curve_edit/curve_view.gd new file mode 100644 index 0000000..b6ea144 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/curve_edit/curve_view.gd @@ -0,0 +1,70 @@ +tool +extends Control + +var MMCurve = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd") + +export var show_axes : bool = false + +var curve #: MMCurve + +func _ready() -> void: +# curve = MMCurve.new() + connect("resized", self, "_on_resize") + update() + +func set_curve(val) -> void: + curve = val + update() + +func transform_point(p : Vector2) -> Vector2: + return (Vector2(0.0, 1.0)+Vector2(1.0, -1.0)*p)*rect_size + +func reverse_transform_point(p : Vector2) -> Vector2: + return Vector2(0.0, 1.0)+Vector2(1.0, -1.0)*p/rect_size + +func _draw(): + if !curve: + return + +# var current_theme : Theme = get_node("/root/MainWindow").theme +# +# var bg = current_theme.get_stylebox("panel", "Panel").bg_color +# var fg = current_theme.get_color("font_color", "Label") +# +# var axes_color : Color = bg.linear_interpolate(fg, 0.25) +# var curve_color : Color = bg.linear_interpolate(fg, 0.75) + + var axes_color : Color = Color(0.9, 0.9, 0.9, 1) + var curve_color : Color = Color(1, 1, 1, 1) + + if show_axes: + for i in range(5): + var p = transform_point(0.25*Vector2(i, i)) + draw_line(Vector2(p.x, 0), Vector2(p.x, rect_size.y-1), axes_color) + draw_line(Vector2(0, p.y), Vector2(rect_size.x-1, p.y), axes_color) + + var points = curve.get_points() + + for i in range(points.size() - 1): + var p1 = points[i].p + var p2 = points[i+1].p + var d = (p2.x-p1.x)/3.0 + var yac = p1.y+d*points[i].rs + var ybc = p2.y-d*points[i+1].ls + var p = transform_point(p1) + var count : int = max(1, int((transform_point(p2).x-p.x/5.0))) + + for tt in range(count): + var t = (tt+1.0)/count + var omt = (1.0 - t) + var omt2 = omt * omt + var omt3 = omt2 * omt + var t2 = t * t + var t3 = t2 * t + var x = p1.x+(p2.x-p1.x)*t + var np = transform_point(Vector2(x, p1.y*omt3 + yac*omt2*t*3.0 + ybc*omt*t2*3.0 + p2.y*t3)) + draw_line(p, np, curve_color) + p = np + +func _on_resize() -> void: + update() diff --git a/game/addons/mat_maker_gd/widgets/curve_edit/curve_view.tscn b/game/addons/mat_maker_gd/widgets/curve_edit/curve_view.tscn new file mode 100644 index 0000000..ffae7ac --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/curve_edit/curve_view.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/widgets/curve_edit/curve_view.gd" type="Script" id=1] + +[node name="CurveView" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 4.0 +margin_right = -4.0 +margin_bottom = -4.0 +mouse_filter = 2 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/game/addons/mat_maker_gd/widgets/curve_edit/slope_point.gd b/game/addons/mat_maker_gd/widgets/curve_edit/slope_point.gd new file mode 100644 index 0000000..bcbaa4e --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/curve_edit/slope_point.gd @@ -0,0 +1,49 @@ +tool +extends Control + +export var distance : float + +var moving = false + +const OFFSET = -Vector2(0, 0) + +func _ready(): + pass # Replace with function body. + +func _draw(): +# var current_theme : Theme = get_node("/root/MainWindow").theme +# var color : Color = current_theme.get_color("font_color", "Label") + + var color : Color = Color(1, 1, 1, 1) + + draw_circle(Vector2(3.0, 3.0), 3.0, color) + +func _on_ControlPoint_gui_input(event): + if event is InputEventMouseButton: + if event.button_index == BUTTON_LEFT: + if event.pressed: + if event.doubleclick: + var parent = get_parent() + var vector : Vector2 + if get_index() == 0: + vector = parent.rect_position-parent.get_parent().get_child(parent.get_index()-1).rect_position + else: + vector = parent.get_parent().get_child(parent.get_index()+1).rect_position-parent.rect_position + vector = distance*vector.normalized() + rect_position = vector-OFFSET + if event.control: + get_parent().get_child(1-get_index()).rect_position = -vector-OFFSET + get_parent().update_tangents() + else: + moving = true + else: + moving = false + elif moving and event is InputEventMouseMotion: + var vector = get_global_mouse_position()-get_parent().get_global_rect().position+OFFSET + vector *= sign(vector.x) + vector = distance*vector.normalized() + rect_position = vector-OFFSET + if event.control: + get_parent().get_child(1-get_index()).rect_position = -vector-OFFSET + + get_parent().update_tangents() diff --git a/game/addons/mat_maker_gd/widgets/float_edit/float_edit.gd b/game/addons/mat_maker_gd/widgets/float_edit/float_edit.gd new file mode 100644 index 0000000..cdb73e5 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/float_edit/float_edit.gd @@ -0,0 +1,139 @@ +tool +extends LineEdit + +export var value : float = 0.5 setget set_value +export var min_value : float = 0.0 setget set_min_value +export var max_value : float = 1.0 setget set_max_value +export var step : float = 0.0 setget set_step +export var float_only : bool = false + +var sliding : bool = false +var start_position : float +var last_position : float +var start_value : float +var modifiers : int +var from_lower_bound : bool = false +var from_upper_bound : bool = false + +onready var slider = $Slider +onready var cursor = $Slider/Cursor + +signal value_changed(value) + +func _ready() -> void: + do_update() + +func set_value(v) -> void: + if v is float: + value = v + do_update() + $Slider.visible = true + elif v is String and !float_only: + text = v + $Slider.visible = false + +func set_min_value(v : float) -> void: + min_value = v + do_update() + +func set_max_value(v : float) -> void: + max_value = v + do_update() + +func set_step(v : float) -> void: + step = v + do_update() + +func do_update(update_text : bool = true) -> void: + if update_text and $Slider.visible: + text = str(value) + if cursor != null: + if max_value != min_value: + cursor.rect_position.x = (clamp(value, min_value, max_value)-min_value)*(slider.rect_size.x-cursor.rect_size.x)/(max_value-min_value) + else: + cursor.rect_position.x = 0 + +func get_modifiers(event): + var new_modifiers = 0 + if event.shift: + new_modifiers |= 1 + if event.control: + new_modifiers |= 2 + if event.alt: + new_modifiers |= 4 + return new_modifiers + +func _on_LineEdit_gui_input(event : InputEvent) -> void: + if !$Slider.visible or !editable: + return + if event is InputEventMouseButton and event.button_index == BUTTON_LEFT: + if event.is_pressed(): + last_position = event.position.x + start_position = last_position + start_value = value + sliding = true + from_lower_bound = value <= min_value + from_upper_bound = value >= max_value + modifiers = get_modifiers(event) + else: + sliding = false + elif sliding and event is InputEventMouseMotion and event.button_mask == BUTTON_MASK_LEFT: + var new_modifiers = get_modifiers(event) + if new_modifiers != modifiers: + start_position = last_position + start_value = value + modifiers = new_modifiers + else: + last_position = event.position.x + var delta : float = last_position-start_position + var current_step = step + if event.control: + delta *= 0.2 + elif event.shift: + delta *= 5.0 + if event.alt: + current_step *= 0.01 + var v : float = start_value+sign(delta)*pow(abs(delta)*0.005, 2)*abs(max_value - min_value) + if current_step != 0: + v = min_value+floor((v - min_value)/current_step)*current_step + if !from_lower_bound and v < min_value: + v = min_value + if !from_upper_bound and v > max_value: + v = max_value + set_value(v) + select(0, 0) + emit_signal("value_changed", value) + release_focus() + elif event is InputEventKey and !event.echo: + match event.scancode: + KEY_SHIFT, KEY_CONTROL, KEY_ALT: + start_position = last_position + start_value = value + modifiers = get_modifiers(event) + +func _on_LineEdit_text_changed(new_text : String) -> void: + if new_text.is_valid_float(): + value = new_text.to_float() + do_update(false) + +func _on_LineEdit_text_entered(new_text : String, release = true) -> void: + if new_text.is_valid_float(): + value = new_text.to_float() + do_update() + emit_signal("value_changed", value) + $Slider.visible = true + elif float_only: + do_update() + emit_signal("value_changed", value) + $Slider.visible = true + else: + emit_signal("value_changed", new_text) + $Slider.visible = false + if release: + release_focus() + +func _on_FloatEdit_focus_entered(): + select_all() + +func _on_LineEdit_focus_exited() -> void: + _on_LineEdit_text_entered(text, false) diff --git a/game/addons/mat_maker_gd/widgets/float_edit/float_edit.tscn b/game/addons/mat_maker_gd/widgets/float_edit/float_edit.tscn new file mode 100644 index 0000000..7f13ead --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/float_edit/float_edit.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/widgets/float_edit/float_edit.gd" type="Script" id=1] + +[node name="FloatEdit" type="LineEdit"] +anchor_left = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -1280.0 +margin_right = -1222.0 +margin_bottom = -696.0 +focus_mode = 1 +text = "0.5" +max_length = 100 +context_menu_enabled = false +caret_blink = true +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Slider" type="ColorRect" parent="."] +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 2.0 +margin_top = -3.0 +margin_right = -2.0 +margin_bottom = -3.0 +rect_min_size = Vector2( 0, 2 ) +mouse_filter = 2 +color = Color( 0.501961, 0.501961, 0.501961, 1 ) + +[node name="Cursor" type="ColorRect" parent="Slider"] +margin_right = 3.0 +margin_bottom = 1.0 +rect_min_size = Vector2( 3, 2 ) +mouse_filter = 2 + +[connection signal="focus_entered" from="." to="." method="_on_FloatEdit_focus_entered"] +[connection signal="focus_exited" from="." to="." method="_on_LineEdit_focus_exited"] +[connection signal="gui_input" from="." to="." method="_on_LineEdit_gui_input"] +[connection signal="resized" from="." to="." method="do_update"] +[connection signal="text_changed" from="." to="." method="_on_LineEdit_text_changed"] +[connection signal="text_entered" from="." to="." method="_on_LineEdit_text_entered"] +[connection signal="resized" from="Slider" to="." method="do_update"] diff --git a/game/addons/mat_maker_gd/widgets/gradient_editor/gradient_editor.gd b/game/addons/mat_maker_gd/widgets/gradient_editor/gradient_editor.gd new file mode 100644 index 0000000..b12a420 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/gradient_editor/gradient_editor.gd @@ -0,0 +1,223 @@ +tool +extends Control + +class GradientCursor: + extends Control + + var color : Color + var sliding : bool = false + + onready var label : Label = get_parent().get_node("Value") + + const WIDTH : int = 10 + + func _ready() -> void: + rect_position = Vector2(0, 15) + rect_size = Vector2(WIDTH, 15) + + func _draw() -> void: +# warning-ignore:integer_division + var polygon : PoolVector2Array = PoolVector2Array([Vector2(0, 5), Vector2(WIDTH/2, 0), Vector2(WIDTH, 5), Vector2(WIDTH, 15), Vector2(0, 15), Vector2(0, 5)]) + var c = color + c.a = 1.0 + draw_colored_polygon(polygon, c) + draw_polyline(polygon, Color(0.0, 0.0, 0.0) if color.v > 0.5 else Color(1.0, 1.0, 1.0)) + + func _gui_input(ev) -> void: + if ev is InputEventMouseButton: + if ev.button_index == BUTTON_LEFT: + if ev.doubleclick: + get_parent().select_color(self, ev.global_position) + elif ev.pressed: + sliding = true + label.visible = true + label.text = "%.03f" % get_cursor_position() + else: + sliding = false + label.visible = false + elif ev.button_index == BUTTON_RIGHT and get_parent().get_sorted_cursors().size() > 2: + var parent = get_parent() + parent.remove_child(self) + parent.update_value() + queue_free() + elif ev is InputEventMouseMotion and (ev.button_mask & BUTTON_MASK_LEFT) != 0 and sliding: + rect_position.x += get_local_mouse_position().x + if ev.control: + rect_position.x = round(get_cursor_position()*20.0)*0.05*(get_parent().rect_size.x - WIDTH) + rect_position.x = min(max(0, rect_position.x), get_parent().rect_size.x-rect_size.x) + get_parent().update_value() + label.text = "%.03f" % get_cursor_position() + + func get_cursor_position() -> float: + return rect_position.x / (get_parent().rect_size.x - WIDTH) + + func set_color(c) -> void: + color = c + get_parent().update_value() + update() + + static func sort(a, b) -> bool: + return a.get_position() < b.get_position() + + func can_drop_data(_position, data) -> bool: + return typeof(data) == TYPE_COLOR + + func drop_data(_position, data) -> void: + set_color(data) + + +var value = null setget set_value +export var embedded : bool = true + +signal updated(value) + +func _init(): + connect("resized", self, "on_resized") + +#func get_gradient_from_data(data): +# if typeof(data) == TYPE_ARRAY: +# return data +# elif typeof(data) == TYPE_DICTIONARY: +# if data.has("parameters") and data.parameters.has("gradient"): +# return data.parameters.gradient +# if data.has("type") and data.type == "Gradient": +# return data +# return null + +#func get_drag_data(_position : Vector2): +# var data = 0#MMType.serialize_value(value) +# var preview = ColorRect.new() +# preview.rect_size = Vector2(64, 24) +# preview.material = $Gradient.material +# set_drag_preview(preview) +# return data +# +#func can_drop_data(_position : Vector2, data) -> bool: +# return get_gradient_from_data(data) != null +# +#func drop_data(_position : Vector2, data) -> void: +# var gradient = get_gradient_from_data(data) +# #if gradient != null: +# #set_value(MMType.deserialize_value(gradient)) + +func set_value(v) -> void: + value = v + + update_preview() + call_deferred("update_cursors") + +func update_cursors() -> void: + for c in get_children(): + if c is GradientCursor: + remove_child(c) + c.free() + + var vs : int = value.get_point_count() + + for i in range(vs): + add_cursor(value.get_point_value(i) * (rect_size.x-GradientCursor.WIDTH), value.get_point_color(i)) + + $Interpolation.selected = value.interpolation_type + +func update_value() -> void: + value.clear() + + var sc : Array = get_sorted_cursors() + + for c in sc: + value.add_point(c.rect_position.x/(rect_size.x-GradientCursor.WIDTH), c.color) + + update_preview() + +func add_cursor(x, color) -> void: + var cursor = GradientCursor.new() + add_child(cursor) + cursor.rect_position.x = x + cursor.color = color + +func _gui_input(ev) -> void: + if ev is InputEventMouseButton and ev.button_index == 1 and ev.doubleclick: + if ev.position.y > 15: + var p = clamp(ev.position.x, 0, rect_size.x-GradientCursor.WIDTH) + add_cursor(p, get_gradient_color(p)) + update_value() + elif embedded: + var popup = load("res://addons/mat_maker_gd/widgets/gradient_editor/gradient_popup.tscn").instance() + add_child(popup) + var popup_size = popup.rect_size + popup.popup(Rect2(ev.global_position, Vector2(0, 0))) + popup.set_global_position(ev.global_position-Vector2(popup_size.x / 2, popup_size.y)) + popup.init(value) + popup.connect("updated", self, "set_value") + popup.connect("popup_hide", popup, "queue_free") + +# Showing a color picker popup to change a cursor's color + +var active_cursor + +func select_color(cursor, position) -> void: + active_cursor = cursor + var color_picker_popup = preload("res://addons/mat_maker_gd/widgets/color_picker_popup/color_picker_popup.tscn").instance() + add_child(color_picker_popup) + var color_picker = color_picker_popup.get_node("ColorPicker") + color_picker.color = cursor.color + color_picker.connect("color_changed", cursor, "set_color") + color_picker_popup.rect_position = position + color_picker_popup.connect("popup_hide", color_picker_popup, "queue_free") + color_picker_popup.popup() + +# Calculating a color from the gradient and generating the shader + +func get_sorted_cursors() -> Array: + var array = [] + for c in get_children(): + if c is GradientCursor: + array.append(c) + array.sort_custom(GradientCursor, "sort") + return array + +func generate_preview_image() -> void: + var tex : ImageTexture = $Gradient.texture + + if !tex: + tex = ImageTexture.new() + $Gradient.texture = tex + + var img : Image = tex.get_data() + + var w : float = $Gradient.rect_size.x + var h : float = $Gradient.rect_size.y + + if !img: + img = Image.new() + + if img.get_size().x != w || img.get_size().y != h: + img.create(w, h, false, Image.FORMAT_RGBA8) + + img.lock() + + for i in range(w): + var x : float = float(i) / float(w) + var col : Color = value.get_gradient_color(x) + + for j in range(h): + img.set_pixel(i, j, col) + + img.unlock() + + tex.create_from_image(img, 0) + +func get_gradient_color(x) -> Color: + return value.get_gradient_color(x / (rect_size.x - GradientCursor.WIDTH)) + +func update_preview() -> void: + call_deferred("generate_preview_image") + +func _on_Interpolation_item_selected(ID) -> void: + value.interpolation_type = ID + update_preview() + +func on_resized() -> void: + if value: + update_preview() + call_deferred("update_cursors") diff --git a/game/addons/mat_maker_gd/widgets/gradient_editor/gradient_editor.tscn b/game/addons/mat_maker_gd/widgets/gradient_editor/gradient_editor.tscn new file mode 100644 index 0000000..db3be48 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/gradient_editor/gradient_editor.tscn @@ -0,0 +1,96 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://addons/mat_maker_gd/widgets/gradient_editor/gradient_editor.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/icons/icons.tres" type="Texture" id=2] + +[sub_resource type="Shader" id=1] +code = "shader_type canvas_item; + +void fragment() { + COLOR = vec4(vec3(2.0*fract(0.5*(floor(0.12*FRAGCOORD.x)+floor(0.125*FRAGCOORD.y)))), 1.0); +}" + +[sub_resource type="ShaderMaterial" id=2] +shader = SubResource( 1 ) + +[sub_resource type="Theme" id=5] + +[sub_resource type="AtlasTexture" id=6] +flags = 7 +atlas = ExtResource( 2 ) +region = Rect2( 96, 0, 32, 16 ) + +[sub_resource type="AtlasTexture" id=7] +flags = 7 +atlas = ExtResource( 2 ) +region = Rect2( 64, 0, 32, 16 ) + +[sub_resource type="AtlasTexture" id=8] +flags = 7 +atlas = ExtResource( 2 ) +region = Rect2( 64, 16, 32, 16 ) + +[sub_resource type="AtlasTexture" id=9] +flags = 7 +atlas = ExtResource( 2 ) +region = Rect2( 96, 16, 32, 16 ) + +[node name="Control" type="Control"] +margin_right = 120.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 120, 32 ) +focus_mode = 1 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 2 ) +anchor_right = 1.0 +margin_left = 4.0 +margin_right = -4.0 +margin_bottom = 15.0 +rect_min_size = Vector2( 112, 17 ) +mouse_filter = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Gradient" type="TextureRect" parent="."] +anchor_right = 1.0 +margin_left = 4.0 +margin_right = -4.0 +margin_bottom = 15.0 +rect_min_size = Vector2( 112, 17 ) +mouse_filter = 2 +theme = SubResource( 5 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Interpolation" type="OptionButton" parent="."] +margin_left = 0.418457 +margin_top = -2.90374 +margin_right = 73.4185 +margin_bottom = 19.0963 +rect_scale = Vector2( 0.5, 0.5 ) +icon = SubResource( 6 ) +items = [ "", SubResource( 7 ), false, 0, null, "", SubResource( 6 ), false, 1, null, "", SubResource( 8 ), false, 2, null, "", SubResource( 9 ), false, 3, null ] +selected = 1 + +[node name="Value" type="Label" parent="."] +anchor_right = 1.0 +margin_top = -1.0 +margin_bottom = 14.0 +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_colors/font_color_shadow = Color( 0, 0, 0, 1 ) +custom_constants/shadow_offset_x = 1 +custom_constants/shadow_offset_y = 1 +custom_constants/shadow_as_outline = 1 +align = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[connection signal="item_selected" from="Interpolation" to="." method="_on_Interpolation_item_selected"] diff --git a/game/addons/mat_maker_gd/widgets/gradient_editor/gradient_popup.gd b/game/addons/mat_maker_gd/widgets/gradient_editor/gradient_popup.gd new file mode 100644 index 0000000..d45a20c --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/gradient_editor/gradient_popup.gd @@ -0,0 +1,13 @@ +tool +extends Popup + +signal updated(value) + +func init(value) -> void: + $Panel/Control.set_value(value) + +func _on_Control_updated(value) -> void: + emit_signal("updated", value) + +func _on_GradientPopup_popup_hide() -> void: + queue_free() diff --git a/game/addons/mat_maker_gd/widgets/gradient_editor/gradient_popup.tscn b/game/addons/mat_maker_gd/widgets/gradient_editor/gradient_popup.tscn new file mode 100644 index 0000000..1b9c5b1 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/gradient_editor/gradient_popup.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://addons/mat_maker_gd/widgets/gradient_editor/gradient_popup.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/widgets/gradient_editor/gradient_editor.tscn" type="PackedScene" id=2] + +[sub_resource type="StyleBoxFlat" id=1] +bg_color = Color( 0, 0, 0.25098, 0.752941 ) + +[node name="GradientPopup" type="Popup"] +margin_right = 632.0 +margin_bottom = 49.0 +size_flags_horizontal = 0 +size_flags_vertical = 0 +script = ExtResource( 1 ) + +[node name="Panel" type="Panel" parent="."] +margin_right = 632.0 +margin_bottom = 49.0 +custom_styles/panel = SubResource( 1 ) + +[node name="Control" parent="Panel" instance=ExtResource( 2 )] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 10.0 +margin_top = 10.0 +margin_right = -10.0 +margin_bottom = -10.0 +embedded = false + +[connection signal="popup_hide" from="." to="." method="_on_GradientPopup_popup_hide"] +[connection signal="updated" from="Panel/Control" to="." method="_on_Control_updated"] diff --git a/game/addons/mat_maker_gd/widgets/image_picker_button/image_picker_button.gd b/game/addons/mat_maker_gd/widgets/image_picker_button/image_picker_button.gd new file mode 100644 index 0000000..73072e1 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/image_picker_button/image_picker_button.gd @@ -0,0 +1,46 @@ +tool +extends TextureButton + + +var image_path = "" + + +signal on_file_selected(f) + + +func _ready(): + texture_normal = ImageTexture.new() + +func do_set_image_path(path) -> void: + if path == null: + return + image_path = path + + texture_normal.load(image_path) + +func set_image_path(path) -> void: + do_set_image_path(path) + emit_signal("on_file_selected", path) + +func _on_ImagePicker_pressed(): + var dialog = preload("res://addons/mat_maker_gd/windows/file_dialog/file_dialog.tscn").instance() + add_child(dialog) + dialog.rect_min_size = Vector2(500, 500) + dialog.access = FileDialog.ACCESS_FILESYSTEM + dialog.mode = FileDialog.MODE_OPEN_FILE + dialog.add_filter("*.bmp;BMP Image") + dialog.add_filter("*.exr;EXR Image") + dialog.add_filter("*.hdr;Radiance HDR Image") + dialog.add_filter("*.jpg,*.jpeg;JPEG Image") + dialog.add_filter("*.png;PNG Image") + dialog.add_filter("*.svg;SVG Image") + dialog.add_filter("*.tga;TGA Image") + dialog.add_filter("*.webp;WebP Image") + var files = dialog.select_files() + while files is GDScriptFunctionState: + files = yield(files, "completed") + if files.size() > 0: + set_image_path(files[0]) + +func on_drop_image_file(file_name : String) -> void: + set_image_path(file_name) diff --git a/game/addons/mat_maker_gd/widgets/image_picker_button/image_picker_button.tscn b/game/addons/mat_maker_gd/widgets/image_picker_button/image_picker_button.tscn new file mode 100644 index 0000000..e374a08 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/image_picker_button/image_picker_button.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://addons/mat_maker_gd/widgets/image_picker_button/image_picker_button.gd" type="Script" id=2] + +[sub_resource type="ImageTexture" id=1] + +[node name="ImagePicker" type="TextureButton"] +margin_right = 64.0 +margin_bottom = 64.0 +rect_min_size = Vector2( 64, 64 ) +rect_clip_content = true +texture_normal = SubResource( 1 ) +expand = true +stretch_mode = 5 +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[connection signal="pressed" from="." to="." method="_on_ImagePicker_pressed"] diff --git a/game/addons/mat_maker_gd/widgets/polygon_edit/control_point.gd b/game/addons/mat_maker_gd/widgets/polygon_edit/control_point.gd new file mode 100644 index 0000000..156957f --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/polygon_edit/control_point.gd @@ -0,0 +1,33 @@ +tool +extends Control + +var moving : bool = false + +const OFFSET : Vector2 = Vector2(3, 3) + +signal moved(index) +signal removed(index) + +func _draw(): +# var current_theme : Theme = get_node("/root/MainWindow").theme +# var color : Color = current_theme.get_color("font_color", "Label") + + var color : Color = Color(1, 1, 1, 1) + draw_rect(Rect2(0, 0, 7, 7), color) + +func initialize(p : Vector2) -> void: + rect_position = get_parent().transform_point(p) - OFFSET + +func _on_ControlPoint_gui_input(event): + if event is InputEventMouseButton: + if event.button_index == BUTTON_LEFT: + if event.pressed: + moving = true + else: + moving = false + get_parent().update_controls() + elif event.button_index == BUTTON_RIGHT and event.pressed: + emit_signal("removed", get_index()) + elif moving and event is InputEventMouseMotion: + rect_position += event.relative + emit_signal("moved", get_index()) diff --git a/game/addons/mat_maker_gd/widgets/polygon_edit/control_point.tscn b/game/addons/mat_maker_gd/widgets/polygon_edit/control_point.tscn new file mode 100644 index 0000000..2d445f3 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/polygon_edit/control_point.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/widgets/polygon_edit/control_point.gd" type="Script" id=1] + +[node name="ControlPoint" type="Control"] +margin_left = 56.9864 +margin_top = 33.8615 +margin_right = 63.9864 +margin_bottom = 40.8615 +rect_min_size = Vector2( 7, 7 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +[connection signal="gui_input" from="." to="." method="_on_ControlPoint_gui_input"] diff --git a/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_dialog.gd b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_dialog.gd new file mode 100644 index 0000000..da96c7a --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_dialog.gd @@ -0,0 +1,46 @@ +tool +extends WindowDialog + +export var closed : bool = true setget set_closed +var previous_points : PoolVector2Array +var polygon + +signal polygon_changed(polygon) + +func set_closed(c : bool = true): + closed = c + window_title = "Edit polygon" if closed else "Edit polyline" + $VBoxContainer/EditorContainer/PolygonEditor.set_closed(closed) + +func _on_CurveDialog_popup_hide(): +# emit_signal("return_polygon", null) + queue_free() + pass + +func _on_OK_pressed(): + emit_signal("polygon_changed", polygon) + polygon.polygon_changed() + + queue_free() + +func _on_Cancel_pressed(): + polygon.set_points(previous_points) + emit_signal("polygon_changed", polygon) + + queue_free() + +func edit_polygon(poly): + polygon = poly + previous_points = polygon.points + + $VBoxContainer/EditorContainer/PolygonEditor.set_polygon(polygon) + popup_centered() + + #var result = yield(self, "return_polygon") + + #queue_free() + + #return result + +func _on_PolygonEditor_value_changed(value): + emit_signal("polygon_changed", value) diff --git a/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_dialog.tscn b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_dialog.tscn new file mode 100644 index 0000000..1bf6da5 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_dialog.tscn @@ -0,0 +1,81 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://addons/mat_maker_gd/widgets/polygon_edit/polygon_editor.tscn" type="PackedScene" id=1] +[ext_resource path="res://addons/mat_maker_gd/widgets/polygon_edit/polygon_dialog.gd" type="Script" id=2] + +[node name="PolygonDialog" type="WindowDialog"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 307.0 +margin_top = 151.0 +margin_right = -508.0 +margin_bottom = -70.0 +window_title = "Edit polygon" +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 5.0 +margin_top = 5.0 +margin_right = -5.0 +margin_bottom = -5.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="EditorContainer" type="MarginContainer" parent="VBoxContainer"] +margin_right = 455.0 +margin_bottom = 457.0 +rect_clip_content = true +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_constants/margin_right = 4 +custom_constants/margin_top = 4 +custom_constants/margin_left = 4 +custom_constants/margin_bottom = 4 + +[node name="PolygonEditor" parent="VBoxContainer/EditorContainer" instance=ExtResource( 1 )] +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 4.0 +margin_top = 4.0 +margin_right = 451.0 +margin_bottom = 453.0 + +[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] +margin_top = 461.0 +margin_right = 455.0 +margin_bottom = 465.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +margin_top = 469.0 +margin_right = 455.0 +margin_bottom = 489.0 + +[node name="Control" type="Control" parent="VBoxContainer/HBoxContainer"] +margin_right = 327.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 + +[node name="OK" type="Button" parent="VBoxContainer/HBoxContainer"] +margin_left = 331.0 +margin_right = 391.0 +margin_bottom = 20.0 +rect_min_size = Vector2( 60, 0 ) +text = "OK" + +[node name="Cancel" type="Button" parent="VBoxContainer/HBoxContainer"] +margin_left = 395.0 +margin_right = 455.0 +margin_bottom = 20.0 +rect_min_size = Vector2( 60, 0 ) +text = "Cancel" + +[connection signal="popup_hide" from="." to="." method="_on_CurveDialog_popup_hide"] +[connection signal="value_changed" from="VBoxContainer/EditorContainer/PolygonEditor" to="." method="_on_PolygonEditor_value_changed"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/OK" to="." method="_on_OK_pressed"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/Cancel" to="." method="_on_Cancel_pressed"] diff --git a/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_edit.gd b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_edit.gd new file mode 100644 index 0000000..e8febfd --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_edit.gd @@ -0,0 +1,34 @@ +tool +extends Control + +var MMPolygon = preload("res://addons/mat_maker_gd/nodes/bases/polygon_base.gd") + +export var closed : bool = true setget set_closed +var value = null setget set_value + +signal updated(polygon) + +func set_closed(c : bool = true): + closed = c + $PolygonView.set_closed(c) + +func set_value(v) -> void: + value = v + $PolygonView.set_polygon(value) + $PolygonView.update() + +func _on_PolygonEdit_pressed(): + var dialog = preload("res://addons/mat_maker_gd/widgets/polygon_edit/polygon_dialog.tscn").instance() + dialog.set_closed(closed) + add_child(dialog) + + dialog.connect("polygon_changed", self, "on_value_changed") + + dialog.edit_polygon(value) + + + +func on_value_changed(v) -> void: + #set_value(v) + emit_signal("updated", v) + $PolygonView.update() diff --git a/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_edit.tscn b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_edit.tscn new file mode 100644 index 0000000..ccea5f9 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_edit.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://addons/mat_maker_gd/widgets/polygon_edit/polygon_edit.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/widgets/polygon_edit/polygon_view.tscn" type="PackedScene" id=2] + +[node name="PolygonEdit" type="Button"] +anchor_left = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -1280.0 +margin_right = -1248.0 +margin_bottom = -688.0 +rect_min_size = Vector2( 32, 32 ) +focus_mode = 1 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="PolygonView" parent="." instance=ExtResource( 2 )] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_right = 0.0 +margin_bottom = 0.0 + +[connection signal="pressed" from="." to="." method="_on_PolygonEdit_pressed"] diff --git a/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_editor.gd b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_editor.gd new file mode 100644 index 0000000..90c9d01 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_editor.gd @@ -0,0 +1,57 @@ +tool +extends "res://addons/mat_maker_gd/widgets/polygon_edit/polygon_view.gd" + +signal value_changed(value) + +func _ready(): + update_controls() + +func set_polygon(p) -> void: + polygon = p + update() + update_controls() + +func update_controls() -> void: + for c in get_children(): + c.queue_free() + + if !polygon: + return + + for i in polygon.points.size(): + var p = polygon.points[i] + var control_point = preload("res://addons/mat_maker_gd/widgets/polygon_edit/control_point.tscn").instance() + add_child(control_point) + control_point.initialize(p) + control_point.rect_position = transform_point(p)-control_point.OFFSET + control_point.connect("moved", self, "_on_ControlPoint_moved") + control_point.connect("removed", self, "_on_ControlPoint_removed") + + emit_signal("value_changed", polygon) + +func _on_ControlPoint_moved(index): + var control_point = get_child(index) + polygon.points[index] = reverse_transform_point(control_point.rect_position+control_point.OFFSET) + + update() + + emit_signal("value_changed", polygon) + +func _on_ControlPoint_removed(index): + if polygon.remove_point(index): + update() + update_controls() + +func _on_PolygonEditor_gui_input(event): + if !polygon: + return + + if event is InputEventMouseButton: + if event.button_index == BUTTON_LEFT and event.doubleclick: + var new_point_position = reverse_transform_point(get_local_mouse_position()) + polygon.add_point(new_point_position.x, new_point_position.y, closed) + update_controls() + +func _on_resize() -> void: + ._on_resize() + update_controls() diff --git a/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_editor.tscn b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_editor.tscn new file mode 100644 index 0000000..166b925 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_editor.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://addons/mat_maker_gd/widgets/curve_edit/curve_view.tscn" type="PackedScene" id=1] +[ext_resource path="res://addons/mat_maker_gd/widgets/polygon_edit/polygon_editor.gd" type="Script" id=2] + +[node name="PolygonEditor" instance=ExtResource( 1 )] +margin_left = 10.0 +margin_top = 10.0 +margin_right = -10.0 +margin_bottom = -10.0 +mouse_filter = 0 +script = ExtResource( 2 ) + +[connection signal="gui_input" from="." to="." method="_on_PolygonEditor_gui_input"] diff --git a/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_view.gd b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_view.gd new file mode 100644 index 0000000..cf64af9 --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_view.gd @@ -0,0 +1,58 @@ +tool +extends Control + +var MMPolygon = preload("res://addons/mat_maker_gd/nodes/bases/polygon_base.gd") + +#: MMPolygon +var polygon + +var draw_size : Vector2 = Vector2(1, 1) +var draw_offset : Vector2 = Vector2(0, 0) +var closed : bool = true + +func set_closed(c : bool = true): + closed = c + update() + +func _ready() -> void: +# polygon = MMPolygon.new() + connect("resized", self, "_on_resize") + _on_resize() + +func transform_point(p : Vector2) -> Vector2: + return draw_offset+p*draw_size + +func reverse_transform_point(p : Vector2) -> Vector2: + return (p-draw_offset)/draw_size + +func set_polygon(val): + polygon = val + + update() + +func _draw(): + if !polygon: + return + +# var current_theme : Theme = get_node("/root/MainWindow").theme +# var bg = current_theme.get_stylebox("panel", "Panel").bg_color +# var fg = current_theme.get_color("font_color", "Label") +# var axes_color : Color = bg.linear_interpolate(fg, 0.25) +# var curve_color : Color = bg.linear_interpolate(fg, 0.75) + + var axes_color : Color = Color(0.9, 0.9, 0.9, 1) + var curve_color : Color = Color(1, 1, 1, 1) + + draw_rect(Rect2(draw_offset, draw_size), axes_color, false) + var tp : Vector2 = transform_point(polygon.points[polygon.points.size()-1 if closed else 0]) + + for p in polygon.points: + var tnp = transform_point(p) + draw_line(tp, tnp, curve_color) + tp = tnp + +func _on_resize() -> void: + var ds : float = min(rect_size.x, rect_size.y) + draw_size = Vector2(ds, ds) + draw_offset = 0.5*(rect_size-draw_size) + update() diff --git a/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_view.tscn b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_view.tscn new file mode 100644 index 0000000..0b9f2ee --- /dev/null +++ b/game/addons/mat_maker_gd/widgets/polygon_edit/polygon_view.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/widgets/polygon_edit/polygon_view.gd" type="Script" id=1] + +[node name="PolygonView" type="Control"] +margin_right = 64.0 +margin_bottom = 64.0 +mouse_filter = 2 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/game/addons/mat_maker_gd/windows/file_dialog/fav_button.tscn b/game/addons/mat_maker_gd/windows/file_dialog/fav_button.tscn new file mode 100644 index 0000000..95d056c --- /dev/null +++ b/game/addons/mat_maker_gd/windows/file_dialog/fav_button.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://addons/mat_maker_gd/icons/icons.svg" type="Texture" id=1] + +[sub_resource type="AtlasTexture" id=1] +flags = 4 +atlas = ExtResource( 1 ) +region = Rect2( 80, 80, 16, 16 ) + +[node name="FavButton" type="Button"] +margin_right = 12.0 +margin_bottom = 20.0 +icon = SubResource( 1 ) +flat = true +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/game/addons/mat_maker_gd/windows/file_dialog/file_dialog.gd b/game/addons/mat_maker_gd/windows/file_dialog/file_dialog.gd new file mode 100644 index 0000000..f384b95 --- /dev/null +++ b/game/addons/mat_maker_gd/windows/file_dialog/file_dialog.gd @@ -0,0 +1,57 @@ +tool +extends FileDialog + + +var left_panel = null +var volume_option = null + + +signal return_paths(path_list) + +func _ready() -> void: + var vbox = get_child(3) + var hbox = HSplitContainer.new() + add_child(hbox) + remove_child(vbox) + left_panel = preload("res://addons/mat_maker_gd/windows/file_dialog/left_panel.tscn").instance() + hbox.add_child(left_panel) + left_panel.connect("open_directory", self, "set_current_dir") + hbox.add_child(vbox) + vbox.size_flags_horizontal = SIZE_EXPAND_FILL + var fav_button = preload("res://addons/mat_maker_gd/windows/file_dialog/fav_button.tscn").instance() + vbox.get_child(0).add_child(fav_button) + fav_button.connect("pressed", self, "add_favorite") + if OS.get_name() == "Windows": + volume_option = vbox.get_child(0).get_child(3) + if ! volume_option is OptionButton: + volume_option = null + + +func get_full_current_dir() -> String: + var prefix = "" + if volume_option != null and volume_option.visible: + prefix = volume_option.get_item_text(volume_option.selected) + return prefix+get_current_dir() + +func _on_FileDialog_file_selected(path) -> void: + left_panel.add_recent(get_full_current_dir()) + emit_signal("return_paths", [ path ]) + +func _on_FileDialog_files_selected(paths) -> void: + left_panel.add_recent(get_full_current_dir()) + emit_signal("return_paths", paths) + +func _on_FileDialog_dir_selected(dir) -> void: + emit_signal("return_paths", [ dir ]) + +func _on_FileDialog_popup_hide() -> void: + emit_signal("return_paths", [ ]) + +func select_files() -> Array: + popup_centered() + var result = yield(self, "return_paths") + queue_free() + return result + +func add_favorite(): + left_panel.add_favorite(get_full_current_dir()) diff --git a/game/addons/mat_maker_gd/windows/file_dialog/file_dialog.tscn b/game/addons/mat_maker_gd/windows/file_dialog/file_dialog.tscn new file mode 100644 index 0000000..a95bb78 --- /dev/null +++ b/game/addons/mat_maker_gd/windows/file_dialog/file_dialog.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/windows/file_dialog/file_dialog.gd" type="Script" id=1] + +[node name="FileDialog" type="FileDialog"] +margin_right = 360.0 +margin_bottom = 130.0 +window_title = "Enregistrer un fichier" +resizable = true +script = ExtResource( 1 ) + +[connection signal="dir_selected" from="." to="." method="_on_FileDialog_dir_selected"] +[connection signal="file_selected" from="." to="." method="_on_FileDialog_file_selected"] +[connection signal="files_selected" from="." to="." method="_on_FileDialog_files_selected"] +[connection signal="popup_hide" from="." to="." method="_on_FileDialog_popup_hide"] diff --git a/game/addons/mat_maker_gd/windows/file_dialog/left_panel.gd b/game/addons/mat_maker_gd/windows/file_dialog/left_panel.gd new file mode 100644 index 0000000..5673e70 --- /dev/null +++ b/game/addons/mat_maker_gd/windows/file_dialog/left_panel.gd @@ -0,0 +1,71 @@ +tool +extends VBoxContainer + +var recents : Array = [] +var favorites : Array = [] + +signal open_directory(dirpath) + +#func _ready(): +# if get_node("/root/MainWindow") != null: +# var config_cache = get_node("/root/MainWindow").config_cache +# if config_cache.has_section_key("file_dialog", "recents"): +# var parse_result = JSON.parse(config_cache.get_value("file_dialog", "recents")) +# if parse_result != null: +# recents = parse_result.result +# if config_cache.has_section_key("file_dialog", "favorites"): +# var parse_result = JSON.parse(config_cache.get_value("file_dialog", "favorites")) +# if parse_result != null: +# favorites = parse_result.result +# update_lists() + +#func _exit_tree(): +# if get_node("/root/MainWindow") != null: +# var config_cache = get_node("/root/MainWindow").config_cache +# config_cache.set_value("file_dialog", "recents", JSON.print(recents)) +# config_cache.set_value("file_dialog", "favorites", JSON.print(favorites)) + +func add_recent(file_path : String): + if recents.find(file_path) != -1: + recents.erase(file_path) + recents.push_front(file_path) + update_lists() + +func add_favorite(file_path : String): + if favorites.find(file_path) == -1: + favorites.push_back(file_path) + update_lists() + +func my_basename(s : String) -> String: + var slash_pos : int = s.find_last("/") + if slash_pos == -1 or slash_pos+1 == s.length(): + return s + return s.right(slash_pos+1) + +func update_lists(): + $FavList.clear() + for d in favorites: + $FavList.add_item(my_basename(d)) + $FavList.set_item_tooltip($FavList.get_item_count()-1, d) + $RecentList.clear() + for d in recents: + $RecentList.add_item(my_basename(d)) + $RecentList.set_item_tooltip($RecentList.get_item_count()-1, d) + +func _on_FavList_item_activated(index): + emit_signal("open_directory", $FavList.get_item_tooltip(index)) + +func _on_RecentList_item_activated(index): + emit_signal("open_directory", $RecentList.get_item_tooltip(index)) + +func _on_FavList_gui_input(event): + if event is InputEventKey and event.pressed and event.scancode == KEY_DELETE: + if ! $FavList.get_selected_items().empty(): + favorites.remove($FavList.get_selected_items()[0]) + update_lists() + +func _on_RecentList_gui_input(event): + if event is InputEventKey and event.pressed and event.scancode == KEY_DELETE: + if ! $RecentList.get_selected_items().empty(): + recents.remove($RecentList.get_selected_items()[0]) + update_lists() diff --git a/game/addons/mat_maker_gd/windows/file_dialog/left_panel.tscn b/game/addons/mat_maker_gd/windows/file_dialog/left_panel.tscn new file mode 100644 index 0000000..a5ad9b0 --- /dev/null +++ b/game/addons/mat_maker_gd/windows/file_dialog/left_panel.tscn @@ -0,0 +1,48 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/mat_maker_gd/windows/file_dialog/left_panel.gd" type="Script" id=1] + +[node name="LeftPanel" type="VBoxContainer"] +margin_right = 40.0 +margin_bottom = 40.0 +size_flags_vertical = 3 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="RecentLabel" type="Label" parent="."] +margin_right = 100.0 +margin_bottom = 14.0 +text = "Recent" + +[node name="RecentList" type="ItemList" parent="."] +margin_top = 18.0 +margin_right = 100.0 +margin_bottom = 18.0 +rect_min_size = Vector2( 100, 0 ) +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="FavLabel" type="Label" parent="."] +margin_top = 22.0 +margin_right = 100.0 +margin_bottom = 36.0 +text = "Favorite" + +[node name="FavList" type="ItemList" parent="."] +margin_top = 40.0 +margin_right = 100.0 +margin_bottom = 40.0 +rect_min_size = Vector2( 100, 0 ) +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[connection signal="gui_input" from="RecentList" to="." method="_on_RecentList_gui_input"] +[connection signal="item_activated" from="RecentList" to="." method="_on_RecentList_item_activated"] +[connection signal="gui_input" from="FavList" to="." method="_on_FavList_gui_input"] +[connection signal="item_activated" from="FavList" to="." method="_on_FavList_item_activated"] diff --git a/game/addons/module_manager/LICENSE b/game/addons/module_manager/LICENSE new file mode 100644 index 0000000..386f030 --- /dev/null +++ b/game/addons/module_manager/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Péter Magyar + +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/game/addons/module_manager/README.md b/game/addons/module_manager/README.md new file mode 100644 index 0000000..025d3bb --- /dev/null +++ b/game/addons/module_manager/README.md @@ -0,0 +1,7 @@ +# ESS Data + +This is an addon for https://github.com/Relintai/entity_spell_system, to help with editing, and managing all game related the data in the project. + +Looks like this: + +![ess_data screenshot](screenshots/ess_data.png) diff --git a/game/addons/module_manager/icons/empty.png b/game/addons/module_manager/icons/empty.png new file mode 100644 index 0000000..2504386 Binary files /dev/null and b/game/addons/module_manager/icons/empty.png differ diff --git a/game/addons/module_manager/icons/empty.png.import b/game/addons/module_manager/icons/empty.png.import new file mode 100644 index 0000000..e1b3ade --- /dev/null +++ b/game/addons/module_manager/icons/empty.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/empty.png-d52a27cebe3b559ee5afeb72c926ad8c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/empty.png" +dest_files=[ "res://.import/empty.png-d52a27cebe3b559ee5afeb72c926ad8c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/gom.png b/game/addons/module_manager/icons/gom.png new file mode 100644 index 0000000..ca3781a Binary files /dev/null and b/game/addons/module_manager/icons/gom.png differ diff --git a/game/addons/module_manager/icons/gom.png.import b/game/addons/module_manager/icons/gom.png.import new file mode 100644 index 0000000..b9cb8ca --- /dev/null +++ b/game/addons/module_manager/icons/gom.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/gom.png-7469f830e410a943b31bbb19c8debf4e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/gom.png" +dest_files=[ "res://.import/gom.png-7469f830e410a943b31bbb19c8debf4e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_add.png b/game/addons/module_manager/icons/icon_add.png new file mode 100644 index 0000000..297be14 Binary files /dev/null and b/game/addons/module_manager/icons/icon_add.png differ diff --git a/game/addons/module_manager/icons/icon_add.png.import b/game/addons/module_manager/icons/icon_add.png.import new file mode 100644 index 0000000..25a3405 --- /dev/null +++ b/game/addons/module_manager/icons/icon_add.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_add.png-b78af00c3ee58b2d523f0a86c227a437.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_add.png" +dest_files=[ "res://.import/icon_add.png-b78af00c3ee58b2d523f0a86c227a437.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_copy.png b/game/addons/module_manager/icons/icon_copy.png new file mode 100644 index 0000000..d777f13 Binary files /dev/null and b/game/addons/module_manager/icons/icon_copy.png differ diff --git a/game/addons/module_manager/icons/icon_copy.png.import b/game/addons/module_manager/icons/icon_copy.png.import new file mode 100644 index 0000000..719f0f2 --- /dev/null +++ b/game/addons/module_manager/icons/icon_copy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_copy.png-2686b5282d44e971e22e560caf7cb772.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_copy.png" +dest_files=[ "res://.import/icon_copy.png-2686b5282d44e971e22e560caf7cb772.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_display-name.png b/game/addons/module_manager/icons/icon_display-name.png new file mode 100644 index 0000000..7c44933 Binary files /dev/null and b/game/addons/module_manager/icons/icon_display-name.png differ diff --git a/game/addons/module_manager/icons/icon_display-name.png.import b/game/addons/module_manager/icons/icon_display-name.png.import new file mode 100644 index 0000000..2cabdd9 --- /dev/null +++ b/game/addons/module_manager/icons/icon_display-name.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_display-name.png-b574a7070246a84b4ec56d12c5fe3d19.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_display-name.png" +dest_files=[ "res://.import/icon_display-name.png-b574a7070246a84b4ec56d12c5fe3d19.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_duplicate.png b/game/addons/module_manager/icons/icon_duplicate.png new file mode 100644 index 0000000..320b365 Binary files /dev/null and b/game/addons/module_manager/icons/icon_duplicate.png differ diff --git a/game/addons/module_manager/icons/icon_duplicate.png.import b/game/addons/module_manager/icons/icon_duplicate.png.import new file mode 100644 index 0000000..b8f39ca --- /dev/null +++ b/game/addons/module_manager/icons/icon_duplicate.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_duplicate.png-2fca67563e92c088a06d8cd03e837bd7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_duplicate.png" +dest_files=[ "res://.import/icon_duplicate.png-2fca67563e92c088a06d8cd03e837bd7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_edit.png b/game/addons/module_manager/icons/icon_edit.png new file mode 100644 index 0000000..c114d2f Binary files /dev/null and b/game/addons/module_manager/icons/icon_edit.png differ diff --git a/game/addons/module_manager/icons/icon_edit.png.import b/game/addons/module_manager/icons/icon_edit.png.import new file mode 100644 index 0000000..ff53fa4 --- /dev/null +++ b/game/addons/module_manager/icons/icon_edit.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_edit.png-2a909a80ec69c874db271f3116b05a4d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_edit.png" +dest_files=[ "res://.import/icon_edit.png-2a909a80ec69c874db271f3116b05a4d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_empty.png b/game/addons/module_manager/icons/icon_empty.png new file mode 100644 index 0000000..da163ba Binary files /dev/null and b/game/addons/module_manager/icons/icon_empty.png differ diff --git a/game/addons/module_manager/icons/icon_empty.png.import b/game/addons/module_manager/icons/icon_empty.png.import new file mode 100644 index 0000000..eda7de8 --- /dev/null +++ b/game/addons/module_manager/icons/icon_empty.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_empty.png-06c3b4befdd64e8111901e681b67622b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_empty.png" +dest_files=[ "res://.import/icon_empty.png-06c3b4befdd64e8111901e681b67622b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_load.png b/game/addons/module_manager/icons/icon_load.png new file mode 100644 index 0000000..cc05e98 Binary files /dev/null and b/game/addons/module_manager/icons/icon_load.png differ diff --git a/game/addons/module_manager/icons/icon_load.png.import b/game/addons/module_manager/icons/icon_load.png.import new file mode 100644 index 0000000..4e57933 --- /dev/null +++ b/game/addons/module_manager/icons/icon_load.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_load.png-2950b376847c4a33baf8e4601a28c79c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_load.png" +dest_files=[ "res://.import/icon_load.png-2950b376847c4a33baf8e4601a28c79c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_move_down.png b/game/addons/module_manager/icons/icon_move_down.png new file mode 100644 index 0000000..3934310 Binary files /dev/null and b/game/addons/module_manager/icons/icon_move_down.png differ diff --git a/game/addons/module_manager/icons/icon_move_down.png.import b/game/addons/module_manager/icons/icon_move_down.png.import new file mode 100644 index 0000000..7acae9f --- /dev/null +++ b/game/addons/module_manager/icons/icon_move_down.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_move_down.png-311d6181aa94759234bf843cb87c2d38.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_move_down.png" +dest_files=[ "res://.import/icon_move_down.png-311d6181aa94759234bf843cb87c2d38.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_move_up.png b/game/addons/module_manager/icons/icon_move_up.png new file mode 100644 index 0000000..684013d Binary files /dev/null and b/game/addons/module_manager/icons/icon_move_up.png differ diff --git a/game/addons/module_manager/icons/icon_move_up.png.import b/game/addons/module_manager/icons/icon_move_up.png.import new file mode 100644 index 0000000..0bba0ad --- /dev/null +++ b/game/addons/module_manager/icons/icon_move_up.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_move_up.png-d4081170c845eac210690228db6a49a8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_move_up.png" +dest_files=[ "res://.import/icon_move_up.png-d4081170c845eac210690228db6a49a8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_multi_line.png b/game/addons/module_manager/icons/icon_multi_line.png new file mode 100644 index 0000000..95a029c Binary files /dev/null and b/game/addons/module_manager/icons/icon_multi_line.png differ diff --git a/game/addons/module_manager/icons/icon_multi_line.png.import b/game/addons/module_manager/icons/icon_multi_line.png.import new file mode 100644 index 0000000..e804ab4 --- /dev/null +++ b/game/addons/module_manager/icons/icon_multi_line.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_multi_line.png-5f84bb8f6a38a4a71b359efb46a0f143.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_multi_line.png" +dest_files=[ "res://.import/icon_multi_line.png-5f84bb8f6a38a4a71b359efb46a0f143.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_options.png b/game/addons/module_manager/icons/icon_options.png new file mode 100644 index 0000000..4db4c53 Binary files /dev/null and b/game/addons/module_manager/icons/icon_options.png differ diff --git a/game/addons/module_manager/icons/icon_options.png.import b/game/addons/module_manager/icons/icon_options.png.import new file mode 100644 index 0000000..fd80aee --- /dev/null +++ b/game/addons/module_manager/icons/icon_options.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_options.png-1a80bcf95186ea96b32c86803be399a6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_options.png" +dest_files=[ "res://.import/icon_options.png-1a80bcf95186ea96b32c86803be399a6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_reload_small.png b/game/addons/module_manager/icons/icon_reload_small.png new file mode 100644 index 0000000..1397ac6 Binary files /dev/null and b/game/addons/module_manager/icons/icon_reload_small.png differ diff --git a/game/addons/module_manager/icons/icon_reload_small.png.import b/game/addons/module_manager/icons/icon_reload_small.png.import new file mode 100644 index 0000000..f8fae51 --- /dev/null +++ b/game/addons/module_manager/icons/icon_reload_small.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_reload_small.png-333a036d469daebe666d83e269723f24.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_reload_small.png" +dest_files=[ "res://.import/icon_reload_small.png-333a036d469daebe666d83e269723f24.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_remove.png b/game/addons/module_manager/icons/icon_remove.png new file mode 100644 index 0000000..289db46 Binary files /dev/null and b/game/addons/module_manager/icons/icon_remove.png differ diff --git a/game/addons/module_manager/icons/icon_remove.png.import b/game/addons/module_manager/icons/icon_remove.png.import new file mode 100644 index 0000000..66e70a8 --- /dev/null +++ b/game/addons/module_manager/icons/icon_remove.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_remove.png-e5d626378ae75827e240c9874314b07d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_remove.png" +dest_files=[ "res://.import/icon_remove.png-e5d626378ae75827e240c9874314b07d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_rename.png b/game/addons/module_manager/icons/icon_rename.png new file mode 100644 index 0000000..2df503f Binary files /dev/null and b/game/addons/module_manager/icons/icon_rename.png differ diff --git a/game/addons/module_manager/icons/icon_rename.png.import b/game/addons/module_manager/icons/icon_rename.png.import new file mode 100644 index 0000000..cf1144b --- /dev/null +++ b/game/addons/module_manager/icons/icon_rename.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_rename.png-44332a5bb1664e3038d2db5a075584fe.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_rename.png" +dest_files=[ "res://.import/icon_rename.png-44332a5bb1664e3038d2db5a075584fe.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_save.png b/game/addons/module_manager/icons/icon_save.png new file mode 100644 index 0000000..8695b78 Binary files /dev/null and b/game/addons/module_manager/icons/icon_save.png differ diff --git a/game/addons/module_manager/icons/icon_save.png.import b/game/addons/module_manager/icons/icon_save.png.import new file mode 100644 index 0000000..e736eef --- /dev/null +++ b/game/addons/module_manager/icons/icon_save.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_save.png-6f4eb3356472677111c577b4fc5fa9fd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_save.png" +dest_files=[ "res://.import/icon_save.png-6f4eb3356472677111c577b4fc5fa9fd.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/icons/icon_script.png b/game/addons/module_manager/icons/icon_script.png new file mode 100644 index 0000000..5aa673f Binary files /dev/null and b/game/addons/module_manager/icons/icon_script.png differ diff --git a/game/addons/module_manager/icons/icon_script.png.import b/game/addons/module_manager/icons/icon_script.png.import new file mode 100644 index 0000000..4e58e41 --- /dev/null +++ b/game/addons/module_manager/icons/icon_script.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_script.png-4160482016a5e5dbbb58043989a14452.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/module_manager/icons/icon_script.png" +dest_files=[ "res://.import/icon_script.png-4160482016a5e5dbbb58043989a14452.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/module_manager/panels/CreateNamePopup.gd b/game/addons/module_manager/panels/CreateNamePopup.gd new file mode 100644 index 0000000..b8a6bf7 --- /dev/null +++ b/game/addons/module_manager/panels/CreateNamePopup.gd @@ -0,0 +1,64 @@ +tool +extends ConfirmationDialog + +signal ok_pressed + +export(NodePath) var line_edit_path : NodePath +export(NodePath) var option_button_path : NodePath + +var _resource_type : String + +var _line_edit : LineEdit +var _option_button : OptionButton + +func _ready(): + _line_edit = get_node(line_edit_path) as LineEdit + _option_button = get_node(option_button_path) as OptionButton + + connect("confirmed", self, "_on_OK_pressed") + connect("about_to_show", self, "about_to_show") + +func set_resource_type(resource_type : String) -> void: + _resource_type = resource_type + + +func about_to_show(): + _option_button.clear() + + if not ClassDB.class_exists(_resource_type): + return + + var arr : PoolStringArray = PoolStringArray() + arr.append(_resource_type) + arr.append_array(ClassDB.get_inheriters_from_class(_resource_type)) + + var gsc : Array = ProjectSettings.get("_global_script_classes") + + var l : int = arr.size() - 1 + + while (arr.size() != l): + l = arr.size() + + for i in range(gsc.size()): + var d : Dictionary = gsc[i] as Dictionary + + var found = false + for j in range(arr.size()): + if arr[j] == d["class"]: + found = true + break + + if found: + continue + + for j in range(arr.size()): + if arr[j] == d["base"]: + arr.append(d["class"]) + + for a in arr: + _option_button.add_item(a) + + +func _on_OK_pressed(): + emit_signal("ok_pressed", _line_edit.text, _option_button.get_item_text(_option_button.selected)) + hide() diff --git a/game/addons/module_manager/panels/CreateNamePopup.tscn b/game/addons/module_manager/panels/CreateNamePopup.tscn new file mode 100644 index 0000000..02f4b60 --- /dev/null +++ b/game/addons/module_manager/panels/CreateNamePopup.tscn @@ -0,0 +1,58 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/module_manager/panels/CreateNamePopup.gd" type="Script" id=1] + + +[node name="CreateNamePopup" type="ConfirmationDialog"] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -245.5 +margin_top = -125.5 +margin_right = 245.5 +margin_bottom = 125.5 +window_title = "Create New Resource" +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +line_edit_path = NodePath("VBoxContainer/LineEdit") +option_button_path = NodePath("VBoxContainer/OptionButton") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +margin_left = 8.0 +margin_top = 8.0 +margin_right = 483.0 +margin_bottom = 215.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label2" type="Label" parent="VBoxContainer"] +margin_right = 449.0 +margin_bottom = 25.0 +size_flags_horizontal = 3 +text = "Type" + +[node name="OptionButton" type="OptionButton" parent="VBoxContainer"] +margin_top = 33.0 +margin_right = 449.0 +margin_bottom = 70.0 +size_flags_horizontal = 3 + +[node name="Label" type="Label" parent="VBoxContainer"] +margin_top = 78.0 +margin_right = 449.0 +margin_bottom = 103.0 +size_flags_horizontal = 3 +text = "Name" + +[node name="LineEdit" type="LineEdit" parent="VBoxContainer"] +margin_top = 111.0 +margin_right = 449.0 +margin_bottom = 156.0 +size_flags_horizontal = 3 +caret_blink = true diff --git a/game/addons/module_manager/panels/EntryButton.gd b/game/addons/module_manager/panels/EntryButton.gd new file mode 100644 index 0000000..80913e3 --- /dev/null +++ b/game/addons/module_manager/panels/EntryButton.gd @@ -0,0 +1,93 @@ +tool +extends Control + +signal inspect_data +signal duplicate +signal delete + +export(PackedScene) var spatial_preview : PackedScene +export(PackedScene) var node2d_preview : PackedScene +export(PackedScene) var control_preview : PackedScene +export(PackedScene) var texture_preview : PackedScene + +export(NodePath) var main_button_path : NodePath + +var _main_button : Button + +var _preview : Node +var _data : Resource + +func _ready(): + _main_button = get_node(main_button_path) as Button + +func set_resource(data : Resource) -> void: + _data = data + + _main_button.set_resource(data) + + var name_text : String = "" + + if data.has_method("get_id"): + name_text += str(data.get_id()) + " - " + + if data.has_method("get_text_name"): + name_text += str(data.get_text_name()) + else: + if data.resource_name != "": + name_text += data.resource_name + else: + name_text += data.resource_path + + if data.has_method("get_rank"): + name_text += " - Rank " + str(data.get_rank()) + + if data is Texture: + _preview = texture_preview.instance() + add_child(_preview) + _preview.owner = self + move_child(_preview, 0) + + _preview.set_texture(data as Texture) + elif data is PackedScene: + var n : Node = data.instance() + + if _preview != null: + _preview.queue_free() + + if n is Spatial: + _preview = spatial_preview.instance() + add_child(_preview) + _preview.owner = self + move_child(_preview, 0) + + _preview.preview(n as Spatial) + elif n is Node2D: + _preview = node2d_preview.instance() + add_child(_preview) + _preview.owner = self + move_child(_preview, 0) + + _preview.preview(n as Node2D) + elif n is Control: + _preview = control_preview.instance() + add_child(_preview) + _preview.owner = self + move_child(_preview, 0) + + _preview.preview(n as Control) + else: + n.queue_free() + + _main_button.text = name_text + +func can_drop_data(position, data): + return false + +func inspect(): + emit_signal("inspect_data", _data) + +func duplicate_data(): + emit_signal("duplicate", _data) + +func delete(): + emit_signal("delete", _data) diff --git a/game/addons/module_manager/panels/FolderEntryButton.gd b/game/addons/module_manager/panels/FolderEntryButton.gd new file mode 100644 index 0000000..8fc59cb --- /dev/null +++ b/game/addons/module_manager/panels/FolderEntryButton.gd @@ -0,0 +1,12 @@ +tool +extends Button + +export(int) var tab = 0 + +var _panel + +func _pressed(): + _panel.set_tab(tab) + +func set_main_panel(panel): + _panel = panel diff --git a/game/addons/module_manager/panels/FolderEntryButton.tscn b/game/addons/module_manager/panels/FolderEntryButton.tscn new file mode 100644 index 0000000..099771a --- /dev/null +++ b/game/addons/module_manager/panels/FolderEntryButton.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/module_manager/panels/FolderEntryButton.gd" type="Script" id=1] + + +[node name="FolderEntryButton" type="Button"] +margin_right = 210.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 +script = ExtResource( 1 ) diff --git a/game/addons/module_manager/panels/HistoryEntry.gd b/game/addons/module_manager/panels/HistoryEntry.gd new file mode 100644 index 0000000..f32b6e1 --- /dev/null +++ b/game/addons/module_manager/panels/HistoryEntry.gd @@ -0,0 +1,39 @@ +tool +extends Button + +signal history_entry_selected + +var data : Resource setget set_data#, get_data + +func _pressed() -> void: + emit_signal("history_entry_selected", data) + +func set_data(pdata: Resource) -> void: + data = pdata + + var s : String = "(" + data.get_class() + ") " + + if data.has_method("get_id"): + s += str(data.get_id()) + " - " + + if data.has_method("get_text_name"): + s += str(data.get_text_name()) + + if data.has_method("get_rank"): + s += " (R " + str(data.get_rank()) + ")" + + text = s + +func get_data() -> Resource: + return data + +func get_drag_data(position): + if data == null: + return null + + var d : Dictionary = Dictionary() + d["type"] = "resource" + d["resource"] = data + d["from"] = self + + return d diff --git a/game/addons/module_manager/panels/HistoryEntry.tscn b/game/addons/module_manager/panels/HistoryEntry.tscn new file mode 100644 index 0000000..609bf8a --- /dev/null +++ b/game/addons/module_manager/panels/HistoryEntry.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/module_manager/panels/HistoryEntry.gd" type="Script" id=1] + + +[node name="HistoryEntry" type="Button"] +margin_right = 236.0 +margin_bottom = 37.0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/game/addons/module_manager/panels/MainPanel.gd b/game/addons/module_manager/panels/MainPanel.gd new file mode 100644 index 0000000..d87da0f --- /dev/null +++ b/game/addons/module_manager/panels/MainPanel.gd @@ -0,0 +1,89 @@ +tool +extends Control + +signal inspect_data + +export(PackedScene) var resource_scene : PackedScene +export(PackedScene) var folder_entry_button_scene : PackedScene +export(String) var base_folder : String = "res://modules/" +export(NodePath) var main_container : NodePath +export(NodePath) var folder_entry_container_path : NodePath + + +var _main_container : Node +var _resource_scene : Node +var _folder_entry_container : Node + + +var _folders : Array = [ +] + +func _ready(): + var dir : Directory = Directory.new() + + + if dir.file_exists("res://ess_data.json"): + var file : File = File.new() + + if file.open("res://ess_data.json", File.READ) == OK: + var s : String = file.get_as_text() + + _folders = parse_json(s) + + file.close() +# else: +# var file : File = File.new() +# +# if file.open("res://ess_data.json", File.WRITE) == OK: +# file.store_string(to_json(_folders)) +# +# file.close() + + _main_container = get_node(main_container) + + _resource_scene = resource_scene.instance() + _main_container.add_child(_resource_scene) + _resource_scene.owner = _main_container + _resource_scene.connect("inspect_data", self, "inspect_data") + + _folder_entry_container = get_node(folder_entry_container_path) + + for ch in _folder_entry_container.get_children(): + ch.queue_free() + + var index = 0 + for f in _folders: + if f.has("header"): + var h : Label = Label.new() + + _folder_entry_container.add_child(h) + h.owner = _folder_entry_container + + h.text = f["header"] + + var fe : Node = folder_entry_button_scene.instance() + + _folder_entry_container.add_child(fe) + fe.owner = _folder_entry_container + + fe.text = f["name"] + fe.tab = index + + fe.set_main_panel(self) + + index += 1 + + set_tab(0) +# set_tab("test") + +func set_tab(tab_index : int) -> void: + hide_all() + + _resource_scene.show() + _resource_scene.set_resource_type(_folders[tab_index]["folder"], _folders[tab_index]["type"]) + +func hide_all() -> void: + _resource_scene.hide() + +func inspect_data(var data : Resource) -> void: + emit_signal("inspect_data", data) diff --git a/game/addons/module_manager/panels/MainPanel.tscn b/game/addons/module_manager/panels/MainPanel.tscn new file mode 100644 index 0000000..5ec28fb --- /dev/null +++ b/game/addons/module_manager/panels/MainPanel.tscn @@ -0,0 +1,45 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://addons/module_manager/panels/MainPanel.gd" type="Script" id=1] +[ext_resource path="res://addons/module_manager/panels/FolderEntryButton.tscn" type="PackedScene" id=2] +[ext_resource path="res://addons/module_manager/panels/ResourcePanel.tscn" type="PackedScene" id=3] + + +[node name="Panel" type="MarginContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +resource_scene = ExtResource( 3 ) +folder_entry_button_scene = ExtResource( 2 ) +base_folder = "res://data/" +main_container = NodePath("HSplitContainer/MarginContainer") +folder_entry_container_path = NodePath("HSplitContainer/ScrollContainer/VBoxContainer") + +[node name="HSplitContainer" type="HSplitContainer" parent="."] +margin_right = 1024.0 +margin_bottom = 600.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +split_offset = 210 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ScrollContainer" type="ScrollContainer" parent="HSplitContainer"] +margin_right = 210.0 +margin_bottom = 600.0 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="HSplitContainer/ScrollContainer"] +margin_right = 210.0 +size_flags_horizontal = 3 + +[node name="MarginContainer" type="MarginContainer" parent="HSplitContainer"] +margin_left = 222.0 +margin_right = 1024.0 +margin_bottom = 600.0 diff --git a/game/addons/module_manager/panels/ResourcePanel.gd b/game/addons/module_manager/panels/ResourcePanel.gd new file mode 100644 index 0000000..66b0ba5 --- /dev/null +++ b/game/addons/module_manager/panels/ResourcePanel.gd @@ -0,0 +1,291 @@ +tool +extends Control + +signal inspect_data + +export(PackedScene) var resource_row_scene : PackedScene +export(PackedScene) var history_row_scene : PackedScene + +export(NodePath) var entry_container_path : NodePath + +export(NodePath) var name_popup_path : NodePath +export(NodePath) var create_popup_path : NodePath +export(NodePath) var delete_popup_path : NodePath + +export(NodePath) var history_container_path : NodePath + +var _filter_term : String + +var _entry_container : Node +var _name_popup : Node +var _create_popup : ConfirmationDialog +var _delete_popup : ConfirmationDialog + +var _history_container : Node + +var _folder : String +var _resource_type : String + +var _queue_deleted : Resource + +var _state : Dictionary +var _states : Dictionary + +func _ready(): + _history_container = get_node(history_container_path) + + _entry_container = get_node(entry_container_path) + _name_popup = get_node(name_popup_path) + _name_popup.connect("ok_pressed", self, "ok_pressed") + + _create_popup = get_node(create_popup_path) + _delete_popup = get_node(delete_popup_path) + +func set_resource_type(folder : String, resource_type : String) -> void: + if folder == _folder and _resource_type == resource_type: + return + + _states[_folder + "," + _resource_type] = _state + + if _states.has(folder + "," + resource_type): + _state = _states[folder + "," + resource_type] + else: + _state = Dictionary() + + _folder = folder + _resource_type = resource_type + +# _filter_term = "" + + _create_popup.set_resource_type(resource_type) + + refresh() + +func refresh() -> void: + for ch in _entry_container.get_children(): + ch.queue_free() + + var dir : Directory = Directory.new() + + if dir.open(_folder) == OK: + dir.list_dir_begin() + var data_array : Array = Array() + + var file_name = dir.get_next() + + while (file_name != ""): + if not dir.current_is_dir(): + + if ResourceLoader.exists(_folder + file_name, _resource_type): + + var res = ResourceLoader.load(_folder + file_name, _resource_type) + + if _filter_term != "": + var ftext : String = "" + + if res.has_method("get_text_name"): + ftext = res.get_text_name() + + if ftext == "": + if res.resource_name != "": + ftext = res.resource_name + else: + ftext = res.resource_path + + ftext = ftext.to_lower() + + if ftext.find(_filter_term) == -1: + file_name = dir.get_next() + continue + + var id : int = 0 + + if res.has_method("get_id"): + id = res.get_id() + + data_array.append({ + "id": id, + "resource": res + }) + + file_name = dir.get_next() + + data_array.sort_custom(self, "sort_entries") + + for d in data_array: + + var resn : Node = resource_row_scene.instance() + + _entry_container.add_child(resn) + resn.owner = _entry_container + resn.set_resource(d["resource"]) + resn.connect("inspect_data", self, "inspect_data") + resn.connect("duplicate", self, "duplicate_data") + resn.connect("delete", self, "delete") + +func inspect_data(var data : Resource) -> void: + var found : bool = false + + for ch in _history_container.get_children(): + if ch.data == data: + found = true + + _history_container.move_child(ch, 0) + + break + + if not found: + var n : Node = history_row_scene.instance() + + _history_container.add_child(n) + _history_container.move_child(n, 0) + n.owner = _history_container + + n.data = data + n.connect("history_entry_selected", self, "inspect_data") + + if _history_container.get_child_count() > 20: + var ch : Node = _history_container.get_child(_history_container.get_child_count() - 1) + + ch.queue_free() + + emit_signal("inspect_data", data) + +func ok_pressed(res_name: String, pclass_name: String) -> void: + + var d : Directory = Directory.new() + + if d.open(_folder) == OK: + d.list_dir_begin() + + var file_name = d.get_next() + + var max_ind : int = 0 + + while (file_name != ""): + + if not d.current_is_dir(): + + var curr_ind : int = int(file_name.split("_")[0]) + + if curr_ind > max_ind: + max_ind = curr_ind + + file_name = d.get_next() + + max_ind += 1 + + var newfname : String = str(res_name) + newfname = newfname.replace(" ", "_") + newfname = newfname.to_lower() + newfname = str(max_ind) + "_" + newfname + ".tres" + + var res : Resource = null + + if ClassDB.class_exists(pclass_name) and ClassDB.can_instance(pclass_name): + res = ClassDB.instance(pclass_name) + else: + var gsc : Array = ProjectSettings.get("_global_script_classes") + + for i in range(gsc.size()): + var gsce : Dictionary = gsc[i] as Dictionary + + if gsce["class"] == pclass_name: + var script : Script = load(gsce["path"]) + + res = script.new() + + break + + if res == null: + print("ESSData: Error in creating resource type " + pclass_name) + return + + if res.has_method("set_id"): + res.set_id(max_ind) + + if res.has_method("set_text_name"): + res.set_text_name(str(res_name)) + + ResourceSaver.save(_folder + newfname, res) + + refresh() + +func duplicate_data(data): + if not data is Resource: + return + + var d : Directory = Directory.new() + + if d.open(_folder) == OK: + d.list_dir_begin() + + var file_name = d.get_next() + + var max_ind : int = 0 + + while (file_name != ""): + + if not d.current_is_dir(): + + var curr_ind : int = int(file_name.split("_")[0]) + + if curr_ind > max_ind: + max_ind = curr_ind + + file_name = d.get_next() + + max_ind += 1 + + var res_name : String = "" + + if data.has_method("get_text_name"): + res_name = data.get_text_name() + + var newfname : String = res_name + newfname = newfname.replace(" ", "_") + newfname = newfname.to_lower() + newfname = str(max_ind) + "_" + newfname + ".tres" + + var res : Resource = data.duplicate() + + if res.has_method("set_id"): + res.set_id(max_ind) + + if res.has_method("set_text_name"): + res.set_text_name(str(res_name)) + + ResourceSaver.save(_folder + newfname, res) + + refresh() + +func delete(data): + if data == null or data as Resource == null: + return + + _queue_deleted = data as Resource + + _delete_popup.popup_centered() + +func delete_confirm(): + if _queue_deleted == null: + return + + var d : Directory = Directory.new() + d.remove(_queue_deleted.resource_path) + + _queue_deleted = null + + refresh() + +func clear_history() -> void: + for ch in _history_container.get_children(): + ch.queue_free() + +func search(text : String) -> void: + _filter_term = text.to_lower() + + refresh() + +func sort_entries(a, b): + return a["id"] < b["id"] diff --git a/game/addons/module_manager/panels/ResourcePanel.tscn b/game/addons/module_manager/panels/ResourcePanel.tscn new file mode 100644 index 0000000..32a45d4 --- /dev/null +++ b/game/addons/module_manager/panels/ResourcePanel.tscn @@ -0,0 +1,118 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://addons/module_manager/panels/CreateNamePopup.tscn" type="PackedScene" id=1] +[ext_resource path="res://addons/module_manager/panels/ResourceRow.tscn" type="PackedScene" id=2] +[ext_resource path="res://addons/module_manager/panels/HistoryEntry.tscn" type="PackedScene" id=3] +[ext_resource path="res://addons/module_manager/icons/icon_add.png" type="Texture" id=4] +[ext_resource path="res://addons/module_manager/panels/ResourcePanel.gd" type="Script" id=5] +[ext_resource path="res://addons/module_manager/icons/icon_empty.png" type="Texture" id=6] +[ext_resource path="res://addons/module_manager/icons/icon_reload_small.png" type="Texture" id=7] + + +[node name="Panel" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 5 ) +__meta__ = { +"_edit_use_anchors_": false +} +resource_row_scene = ExtResource( 2 ) +history_row_scene = ExtResource( 3 ) +entry_container_path = NodePath("ResourcePanel/VBoxContainer2/ScrollContainer2/VBoxContainer") +name_popup_path = NodePath("CreateNamePopup") +create_popup_path = NodePath("CreateNamePopup") +delete_popup_path = NodePath("DeletePopup") +history_container_path = NodePath("ResourcePanel/VBoxContainer/ScrollContainer/VBoxContainer") + +[node name="ResourcePanel" type="HSplitContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +split_offset = 500 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer2" type="VBoxContainer" parent="ResourcePanel"] +margin_right = 664.0 +margin_bottom = 600.0 + +[node name="LineEdit" type="LineEdit" parent="ResourcePanel/VBoxContainer2"] +margin_right = 664.0 +margin_bottom = 45.0 +right_icon = ExtResource( 6 ) +placeholder_text = "Filter" +caret_blink = true + +[node name="CreateButton" type="Button" parent="ResourcePanel/VBoxContainer2"] +margin_top = 53.0 +margin_right = 664.0 +margin_bottom = 90.0 +rect_min_size = Vector2( 100, 0 ) +text = "Create" +icon = ExtResource( 4 ) +expand_icon = true + +[node name="HSeparator" type="HSeparator" parent="ResourcePanel/VBoxContainer2"] +margin_top = 98.0 +margin_right = 664.0 +margin_bottom = 106.0 +size_flags_horizontal = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ScrollContainer2" type="ScrollContainer" parent="ResourcePanel/VBoxContainer2"] +margin_top = 114.0 +margin_right = 664.0 +margin_bottom = 600.0 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="ResourcePanel/VBoxContainer2/ScrollContainer2"] +margin_right = 664.0 +size_flags_horizontal = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="ResourcePanel"] +margin_left = 688.0 +margin_right = 1024.0 +margin_bottom = 600.0 + +[node name="Button" type="Button" parent="ResourcePanel/VBoxContainer"] +margin_right = 336.0 +margin_bottom = 37.0 +size_flags_horizontal = 3 +text = "Clear History" +icon = ExtResource( 7 ) + +[node name="HSeparator" type="HSeparator" parent="ResourcePanel/VBoxContainer"] +margin_top = 45.0 +margin_right = 336.0 +margin_bottom = 53.0 +size_flags_horizontal = 3 + +[node name="ScrollContainer" type="ScrollContainer" parent="ResourcePanel/VBoxContainer"] +margin_top = 61.0 +margin_right = 336.0 +margin_bottom = 600.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="ResourcePanel/VBoxContainer/ScrollContainer"] +margin_right = 336.0 +size_flags_horizontal = 3 + +[node name="CreateNamePopup" parent="." instance=ExtResource( 1 )] + +[node name="DeletePopup" type="ConfirmationDialog" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -139.0 +margin_top = -55.0 +margin_right = 139.0 +margin_bottom = 55.0 +dialog_text = "Delete?" +[connection signal="text_entered" from="ResourcePanel/VBoxContainer2/LineEdit" to="." method="search"] +[connection signal="pressed" from="ResourcePanel/VBoxContainer2/CreateButton" to="CreateNamePopup" method="popup"] +[connection signal="pressed" from="ResourcePanel/VBoxContainer/Button" to="." method="clear_history"] +[connection signal="confirmed" from="DeletePopup" to="." method="delete_confirm"] diff --git a/game/addons/module_manager/panels/ResourceRow.tscn b/game/addons/module_manager/panels/ResourceRow.tscn new file mode 100644 index 0000000..8bed407 --- /dev/null +++ b/game/addons/module_manager/panels/ResourceRow.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=9 format=2] + +[ext_resource path="res://addons/module_manager/previews/TexturePreview.tscn" type="PackedScene" id=1] +[ext_resource path="res://addons/module_manager/previews/ControlPreview.tscn" type="PackedScene" id=2] +[ext_resource path="res://addons/module_manager/previews/Node2DPreview.tscn" type="PackedScene" id=3] +[ext_resource path="res://addons/module_manager/previews/SpatialPreview.tscn" type="PackedScene" id=4] +[ext_resource path="res://addons/module_manager/panels/ResourceRowMainButton.gd" type="Script" id=5] +[ext_resource path="res://addons/module_manager/panels/EntryButton.gd" type="Script" id=6] +[ext_resource path="res://addons/module_manager/icons/icon_duplicate.png" type="Texture" id=7] +[ext_resource path="res://addons/module_manager/icons/icon_remove.png" type="Texture" id=8] + + +[node name="ResourceRow" type="HBoxContainer"] +margin_right = 634.0 +margin_bottom = 37.0 +rect_min_size = Vector2( 100, 0 ) +size_flags_horizontal = 3 +script = ExtResource( 6 ) +__meta__ = { +"_edit_use_anchors_": false +} +spatial_preview = ExtResource( 4 ) +node2d_preview = ExtResource( 3 ) +control_preview = ExtResource( 2 ) +texture_preview = ExtResource( 1 ) +main_button_path = NodePath("ResourceRowMainButton") + +[node name="ResourceRowMainButton" type="Button" parent="."] +margin_right = 570.0 +margin_bottom = 37.0 +size_flags_horizontal = 3 +script = ExtResource( 5 ) + +[node name="Button2" type="Button" parent="."] +margin_left = 574.0 +margin_right = 602.0 +margin_bottom = 37.0 +icon = ExtResource( 7 ) + +[node name="Button3" type="Button" parent="."] +margin_left = 606.0 +margin_right = 634.0 +margin_bottom = 37.0 +icon = ExtResource( 8 ) +[connection signal="pressed" from="ResourceRowMainButton" to="." method="inspect"] +[connection signal="pressed" from="Button2" to="." method="duplicate_data"] +[connection signal="pressed" from="Button3" to="." method="delete"] diff --git a/game/addons/module_manager/panels/ResourceRowMainButton.gd b/game/addons/module_manager/panels/ResourceRowMainButton.gd new file mode 100644 index 0000000..37177fc --- /dev/null +++ b/game/addons/module_manager/panels/ResourceRowMainButton.gd @@ -0,0 +1,18 @@ +tool +extends Button + +var _data : Resource + +func get_drag_data(position): + if _data == null: + return null + + var d : Dictionary = Dictionary() + d["type"] = "resource" + d["resource"] = _data + d["from"] = self + + return d + +func set_resource(data : Resource) -> void: + _data = data diff --git a/game/addons/module_manager/plugin.cfg b/game/addons/module_manager/plugin.cfg new file mode 100644 index 0000000..1f7b6ab --- /dev/null +++ b/game/addons/module_manager/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="Entity Spell System Data Manager" +description="" +author="Relintai" +version="1.0" +script="plugin.gd" diff --git a/game/addons/module_manager/plugin.gd b/game/addons/module_manager/plugin.gd new file mode 100644 index 0000000..6db6e89 --- /dev/null +++ b/game/addons/module_manager/plugin.gd @@ -0,0 +1,36 @@ +tool +extends EditorPlugin + +const _main_panel : PackedScene = preload("res://addons/module_manager/panels/MainPanel.tscn") +const _script_icon : Texture = preload("res://addons/module_manager/icons/icon_multi_line.png") + +var _main_panel_instance : Control + +func _enter_tree(): + _main_panel_instance = _main_panel.instance() as Control + _main_panel_instance.connect("inspect_data", self, "inspect_data") + + get_editor_interface().get_editor_viewport().add_child(_main_panel_instance) + + make_visible(false) + +func _exit_tree(): + _main_panel_instance.queue_free() + +func has_main_screen(): + return true + +func make_visible(visible): + if visible: + _main_panel_instance.show() + else: + _main_panel_instance.hide() + +func get_plugin_icon(): + return _script_icon + +func get_plugin_name(): + return "Modules" + +func inspect_data(var data : Resource) -> void: + get_editor_interface().inspect_object(data) diff --git a/game/addons/module_manager/previews/ControlPreview.gd b/game/addons/module_manager/previews/ControlPreview.gd new file mode 100644 index 0000000..0758c3e --- /dev/null +++ b/game/addons/module_manager/previews/ControlPreview.gd @@ -0,0 +1,14 @@ +tool +extends ViewportContainer + +export(NodePath) var container_path : NodePath + +var _container : Node + +func _ready() -> void: + _container = get_node(container_path) + +func preview(n: Control) -> void: + _container.add_child(n) + n.owner = _container + diff --git a/game/addons/module_manager/previews/ControlPreview.tscn b/game/addons/module_manager/previews/ControlPreview.tscn new file mode 100644 index 0000000..c6c8a23 --- /dev/null +++ b/game/addons/module_manager/previews/ControlPreview.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/module_manager/previews/ControlPreview.gd" type="Script" id=1] + + +[node name="ControlPreview" type="ViewportContainer"] +margin_right = 60.0 +margin_bottom = 60.0 +rect_min_size = Vector2( 60, 60 ) +rect_pivot_offset = Vector2( -198.876, -96.6558 ) +stretch = true +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +container_path = NodePath("Viewport") + +[node name="Viewport" type="Viewport" parent="."] +size = Vector2( 500, 500 ) +own_world = true +handle_input_locally = false +render_target_update_mode = 3 diff --git a/game/addons/module_manager/previews/Node2DPreview.gd b/game/addons/module_manager/previews/Node2DPreview.gd new file mode 100644 index 0000000..586b8d9 --- /dev/null +++ b/game/addons/module_manager/previews/Node2DPreview.gd @@ -0,0 +1,14 @@ +tool +extends ViewportContainer + +export(NodePath) var container_path : NodePath + +var _container : Node + +func _ready() -> void: + _container = get_node(container_path) + +func preview(n: Node2D) -> void: + _container.add_child(n) + n.owner = _container + diff --git a/game/addons/module_manager/previews/Node2DPreview.tscn b/game/addons/module_manager/previews/Node2DPreview.tscn new file mode 100644 index 0000000..58d394c --- /dev/null +++ b/game/addons/module_manager/previews/Node2DPreview.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/module_manager/previews/Node2DPreview.gd" type="Script" id=1] + + +[node name="Node2DPreview" type="ViewportContainer"] +margin_right = 60.0 +margin_bottom = 60.0 +rect_min_size = Vector2( 60, 60 ) +rect_pivot_offset = Vector2( -198.876, -96.6558 ) +stretch = true +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +container_path = NodePath("Viewport") + +[node name="Viewport" type="Viewport" parent="."] +size = Vector2( 500, 500 ) +own_world = true +handle_input_locally = false +render_target_update_mode = 3 + +[node name="Camera2D" type="Camera2D" parent="Viewport"] +current = true diff --git a/game/addons/module_manager/previews/SpatialPreview.gd b/game/addons/module_manager/previews/SpatialPreview.gd new file mode 100644 index 0000000..565cb9d --- /dev/null +++ b/game/addons/module_manager/previews/SpatialPreview.gd @@ -0,0 +1,14 @@ +tool +extends ViewportContainer + +export(NodePath) var container_path : NodePath + +var _container : Node + +func _ready() -> void: + _container = get_node(container_path) + +func preview(n: Spatial) -> void: + _container.add_child(n) + n.owner = _container + diff --git a/game/addons/module_manager/previews/SpatialPreview.tscn b/game/addons/module_manager/previews/SpatialPreview.tscn new file mode 100644 index 0000000..59d7418 --- /dev/null +++ b/game/addons/module_manager/previews/SpatialPreview.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/module_manager/previews/SpatialPreview.gd" type="Script" id=1] + + +[node name="SpatialPreview" type="ViewportContainer"] +margin_right = 60.0 +margin_bottom = 60.0 +rect_min_size = Vector2( 60, 60 ) +rect_pivot_offset = Vector2( -198.876, -96.6558 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +container_path = NodePath("Viewport") + +[node name="Viewport" type="Viewport" parent="."] +size = Vector2( 60, 60 ) +size_override_stretch = true +own_world = true +handle_input_locally = false +render_target_update_mode = 3 + +[node name="Camera" type="Camera" parent="Viewport"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10.9828 ) +current = true + +[node name="DirectionalLight" type="DirectionalLight" parent="Viewport"] +transform = Transform( 0.276929, 0, -0.96089, 0, 1, 0, 0.96089, 0, 0.276929, -13.093, 0, 6.67786 ) diff --git a/game/addons/module_manager/previews/TexturePreview.gd b/game/addons/module_manager/previews/TexturePreview.gd new file mode 100644 index 0000000..5b50e16 --- /dev/null +++ b/game/addons/module_manager/previews/TexturePreview.gd @@ -0,0 +1,12 @@ +tool +extends TextureRect + +func set_texture(tex: Texture)-> void: + texture = tex + + if tex is PackerImageResource: + var t : ImageTexture = ImageTexture.new() + + t.create_from_image(tex.data, 0) + + texture = t diff --git a/game/addons/module_manager/previews/TexturePreview.tscn b/game/addons/module_manager/previews/TexturePreview.tscn new file mode 100644 index 0000000..a31e057 --- /dev/null +++ b/game/addons/module_manager/previews/TexturePreview.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/module_manager/previews/TexturePreview.gd" type="Script" id=1] + + +[node name="TexturePreview" type="TextureRect"] +margin_bottom = 37.0 +rect_min_size = Vector2( 50, 50 ) +expand = true +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/game/addons/tile_generator/plugin.cfg b/game/addons/tile_generator/plugin.cfg new file mode 100644 index 0000000..d91a4dc --- /dev/null +++ b/game/addons/tile_generator/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="tile_generator" +description="" +author="Relintai" +version="" +script="plugin.gd" diff --git a/game/addons/tile_generator/plugin.gd b/game/addons/tile_generator/plugin.gd new file mode 100644 index 0000000..d30d9f9 --- /dev/null +++ b/game/addons/tile_generator/plugin.gd @@ -0,0 +1,13 @@ +tool +extends EditorPlugin + +var SimpleTile = preload("res://addons/tile_generator/smple_tile.gd") +var ShearTile = preload("res://addons/tile_generator/shear_tile.gd") + +func _enter_tree(): + add_custom_type("SimpleTile", "Resource", SimpleTile, null) + add_custom_type("ShearTile", "Resource", ShearTile, null) + +func _exit_tree(): + remove_custom_type("SimpleTile") + remove_custom_type("ShearTile") diff --git a/game/addons/tile_generator/shear_tile.gd b/game/addons/tile_generator/shear_tile.gd new file mode 100644 index 0000000..0417007 --- /dev/null +++ b/game/addons/tile_generator/shear_tile.gd @@ -0,0 +1,138 @@ +tool +extends Resource + +export(Texture) var input : Texture +export(String) var output_image_name : String = "output" +export(float) var shear_amount : float = 0.3 +export(int) var image_count : int = 1 +export(int) var image_size_x : int = 32 +export(int) var image_size_y : int = 64 +export(bool) var alpha_crop : bool = true + +export(bool) var generate : bool = false setget set_generate, get_generate + +static func shear(uv : Vector2, center : Vector2, amount : float, direction : Vector2) -> Vector2: + return uv + Vector2(amount, amount) * (Vector2(uv.y, uv.x) - center) * direction + +static func shear_vertical(uv : Vector2, center : Vector2, amount : float) -> Vector2: + return uv + Vector2(amount, amount) * (Vector2(uv.y, uv.x) - center) * Vector2(0, 1) + +static func shear_horizontal(uv : Vector2, center : Vector2, amount : float) -> Vector2: + return uv + Vector2(amount, amount) * (Vector2(uv.y, uv.x) - center) * Vector2(1, 0) + +#from mat_maker_gd +static func rotate(uv : Vector2, center : Vector2, rotate : float) -> Vector2: + var rv : Vector2 = Vector2() + uv -= center + rv.x = cos(rotate)*uv.x + sin(rotate)*uv.y + rv.y = -sin(rotate)*uv.x + cos(rotate)*uv.y + rv += center + return rv + +#from mat_maker_gd +static func scale(uv : Vector2, center : Vector2, scale : Vector2) -> Vector2: + uv -= center + uv /= scale + uv += center + return uv + +func generate(): + if !input: + return + + var inimg : Image = input.get_data() + var img : Image = null + + if image_count > 1: + pass + else: + img = Image.new() + img.create(inimg.get_width() * 3, inimg.get_height() * 3, false, Image.FORMAT_RGBA8) + + var ofsx : int = inimg.get_width() + var ofsy : int = inimg.get_height() + + img.lock() + inimg.lock() + + for x in range(inimg.get_width()): + for y in range(inimg.get_height()): + var np : Vector2 = shear_vertical(Vector2(x, y), Vector2(x / 2, y / 2), shear_amount) + np += Vector2(ofsx, ofsy) + + var c : Color = inimg.get_pixel(x, y) + + img.set_pixel(np.x, np.y, c) + + img.unlock() + inimg.unlock() + + img = crop_image(img) + + img.resize(image_size_x, image_size_y, Image.INTERPOLATE_CUBIC) + + if alpha_crop: + alpha_crop(img) + + img.save_png(resource_path.get_base_dir() + "/" + output_image_name + ".png") + +func alpha_crop(img : Image) -> void: + img.lock() + + for x in range(img.get_width()): + for y in range(img.get_height()): + var c : Color = img.get_pixel(x, y) + + if c.a < 0.5: + img.set_pixel(x, y, Color(0, 0, 0, 0)) + elif c.a < 1: + c.a = 1 + img.set_pixel(x, y, c) + + img.unlock() + +func crop_image(img : Image) -> Image: + img.lock() + + var xmin : int = img.get_width() + 1 + var xmax : int = 0 + var ymin : int = img.get_height() + 1 + var ymax : int = 0 + + for x in range(img.get_width()): + for y in range(img.get_height()): + var c : Color = img.get_pixel(x, y) + + if c.a < 0.02: + continue + + if xmin > x: + xmin = x + + if xmax < x: + xmax = x + + if ymin > y: + ymin = y + + if ymax < y: + ymax = y + + img.unlock() + + var w : int = xmax - xmin + var h : int = ymax - ymin + + var rimg : Image = Image.new() + rimg.create(w, h, false, Image.FORMAT_RGBA8) + + rimg.blit_rect(img, Rect2(xmin, ymin, w, h), Vector2()) + + return rimg + +func set_generate(val): + if val: + generate() + +func get_generate(): + return false diff --git a/game/addons/tile_generator/smple_tile.gd b/game/addons/tile_generator/smple_tile.gd new file mode 100644 index 0000000..ad353c1 --- /dev/null +++ b/game/addons/tile_generator/smple_tile.gd @@ -0,0 +1,128 @@ +tool +extends Resource + +export(Texture) var input : Texture +export(String) var output_image_name : String = "output" +export(int) var image_count : int = 1 +export(int) var image_size_x : int = 64 +export(int) var image_size_y : int = 32 +export(bool) var alpha_crop : bool = true + +export(bool) var generate : bool = false setget set_generate, get_generate + +#from mat_maker_gd +static func rotate(uv : Vector2, center : Vector2, rotate : float) -> Vector2: + var rv : Vector2 = Vector2() + uv -= center + rv.x = cos(rotate)*uv.x + sin(rotate)*uv.y + rv.y = -sin(rotate)*uv.x + cos(rotate)*uv.y + rv += center + return rv + +#from mat_maker_gd +static func scale(uv : Vector2, center : Vector2, scale : Vector2) -> Vector2: + uv -= center + uv /= scale + uv += center + return uv + +func generate(): + if !input: + return + + var inimg : Image = input.get_data() + var img : Image = null + + if image_count > 1: + pass + else: + img = Image.new() + img.create(inimg.get_width() * 3, inimg.get_height() * 3, false, Image.FORMAT_RGBA8) + + var ofsx : int = inimg.get_width() + var ofsy : int = inimg.get_height() + + img.lock() + inimg.lock() + + for x in range(inimg.get_width()): + for y in range(inimg.get_height()): + var np : Vector2 = rotate(Vector2(x, y), Vector2(x / 2, y / 2), deg2rad(90)) + np += Vector2(ofsx, ofsy) + + var c : Color = inimg.get_pixel(x, y) + + img.set_pixel(np.x, np.y, c) + + img.unlock() + inimg.unlock() + + img = crop_image(img) + + img.resize(image_size_x, image_size_y, Image.INTERPOLATE_CUBIC) + + if alpha_crop: + alpha_crop(img) + + img.save_png(resource_path.get_base_dir() + "/" + output_image_name + ".png") + +func alpha_crop(img : Image) -> void: + img.lock() + + for x in range(img.get_width()): + for y in range(img.get_height()): + var c : Color = img.get_pixel(x, y) + + if c.a < 0.5: + img.set_pixel(x, y, Color(0, 0, 0, 0)) + elif c.a < 1: + c.a = 1 + img.set_pixel(x, y, c) + + img.unlock() + +func crop_image(img : Image) -> Image: + img.lock() + + var xmin : int = img.get_width() + 1 + var xmax : int = 0 + var ymin : int = img.get_height() + 1 + var ymax : int = 0 + + for x in range(img.get_width()): + for y in range(img.get_height()): + var c : Color = img.get_pixel(x, y) + + if c.a < 0.02: + continue + + if xmin > x: + xmin = x + + if xmax < x: + xmax = x + + if ymin > y: + ymin = y + + if ymax < y: + ymax = y + + img.unlock() + + var w : int = xmax - xmin + var h : int = ymax - ymin + + var rimg : Image = Image.new() + rimg.create(w, h, false, Image.FORMAT_RGBA8) + + rimg.blit_rect(img, Rect2(xmin, ymin, w, h), Vector2()) + + return rimg + +func set_generate(val): + if val: + generate() + +func get_generate(): + return false diff --git a/game/autoload/Logger.gd b/game/autoload/Logger.gd new file mode 100644 index 0000000..47a8cd2 --- /dev/null +++ b/game/autoload/Logger.gd @@ -0,0 +1,637 @@ +# Copyright (c) 2016 KOBUGE Games +# Distributed under the terms of the MIT license. +# https://github.com/KOBUGE-Games/godot-logger/blob/master/LICENSE.md +# +# Upstream repo: https://github.com/KOBUGE-Games/godot-logger + +extends Node # Needed to work as a singleton + +##================## +## Inner classes ## +##================## + +class Logfile: + # TODO: Godot doesn't support docstrings for inner classes, GoDoIt (GH-1320) + # """Class for log files that can be shared between various modules.""" + var file = null + var path = "" + var queue_mode = QUEUE_NONE + var buffer = PoolStringArray() + var buffer_idx = 0 + + func _init(_path, _queue_mode = QUEUE_NONE): + file = File.new() + if validate_path(_path): + path = _path + queue_mode = _queue_mode + buffer.resize(FILE_BUFFER_SIZE) + + func get_path(): + return path + + func set_queue_mode(new_mode): + queue_mode = new_mode + + func get_queue_mode(): + return queue_mode + + func get_write_mode(): + if not file.file_exists(path): + return File.WRITE # create + else: + return File.READ_WRITE # append + + func validate_path(ppath): + """Validate the path given as argument, making it possible to write to + the designated file or folder. Returns whether the path is valid.""" + if !(ppath.is_abs_path() or ppath.is_rel_path()): + print("[ERROR] [logger] The given path '%s' is not valid." % ppath) + return false + var dir = Directory.new() + var base_dir = ppath.get_base_dir() + if not dir.dir_exists(base_dir): + # TODO: Move directory creation to the function that will actually *write* + var err = dir.make_dir_recursive(base_dir) + if err: + print("[ERROR] [logger] Could not create the '%s' directory; exited with error %d." \ + % [base_dir, err]) + return false + else: + print("[INFO] [logger] Successfully created the '%s' directory." % base_dir) + return true + + func flush_buffer(): + """Flush the buffer, i.e. write its contents to the target file.""" + if buffer_idx == 0: + return # Nothing to write + var err = file.open(path, get_write_mode()) + if err: + print("[ERROR] [logger] Could not open the '%s' log file; exited with error %d." \ + % [path, err]) + return + file.seek_end() + for i in range(buffer_idx): + file.store_line(buffer[i]) + file.close() + buffer_idx = 0 # We don't clear the memory, we'll just overwrite it + + func write(output, level): + """Write the string at the end of the file (append mode), following + the queue mode.""" + var queue_action = queue_mode + if queue_action == QUEUE_SMART: + if level >= WARN: # Don't queue warnings and errors + queue_action = QUEUE_NONE + flush_buffer() + else: # Queue the log, not important enough for "smart" + queue_action = QUEUE_ALL + + if queue_action == QUEUE_NONE: + var err = file.open(path, get_write_mode()) + if err: + print("[ERROR] [logger] Could not open the '%s' log file; exited with error %d." \ + % [path, err]) + return + file.seek_end() + file.store_line(output) + file.close() + + if queue_action == QUEUE_ALL: + buffer[buffer_idx] = output + buffer_idx += 1 + if buffer_idx >= FILE_BUFFER_SIZE: + flush_buffer() + + func get_config(): + return { + "path": get_path(), + "queue_mode": get_queue_mode() + } + + +class Module: + # """Class for customizable logging modules.""" + var name = "" + var output_level = 0 + var output_strategies = [] + var logfile = null + + func _init(_name, _output_level, _output_strategies, _logfile): + name = _name + set_output_level(_output_level) + + if typeof(_output_strategies) == TYPE_INT: # Only one strategy, use it for all + #warning-ignore:unused_variable + for i in range(0, LEVELS.size()): + output_strategies.append(_output_strategies) + else: + for strategy in _output_strategies: # Need to force deep copy + output_strategies.append(strategy) + + set_logfile(_logfile) + + func get_name(): + return name + + func set_output_level(level): + """Set the custom minimal level for the output of the module. + All levels greater or equal to the given once will be output based + on their respective strategies, while levels lower than the given one + will be discarded.""" + if not level in range(0, LEVELS.size()): + print("[ERROR] [%s] The level must be comprised between 0 and %d." \ + % [PLUGIN_NAME, LEVELS.size() - 1]) + return + output_level = level + + func get_output_level(): + return output_level + + func set_common_output_strategy(output_strategy_mask): + """Set the common output strategy mask for all levels of the module.""" + if not output_strategy_mask in range(0, MAX_STRATEGY + 1): + print("[ERROR] [%s] The output strategy mask must be comprised between 0 and %d." \ + % [PLUGIN_NAME, MAX_STRATEGY]) + return + for i in range(0, LEVELS.size()): + output_strategies[i] = output_strategy_mask + + func set_output_strategy(output_strategy_mask, level = -1): + """Set the output strategy for the given level or (by default) all + levels of the module.""" + if not output_strategy_mask in range(0, MAX_STRATEGY + 1): + print("[ERROR] [%s] The output strategy mask must be comprised between 0 and %d." \ + % [PLUGIN_NAME, MAX_STRATEGY]) + return + if level == -1: # Set for all levels + for i in range(0, LEVELS.size()): + output_strategies[i] = output_strategy_mask + else: + if not level in range(0, LEVELS.size()): + print("[ERROR] [%s] The level must be comprised between 0 and %d." \ + % [PLUGIN_NAME, LEVELS.size() - 1]) + return + output_strategies[level] = output_strategy_mask + + func get_output_strategy(level = -1): + if level == -1: + return output_strategies + else: + return output_strategies[level] + + func set_logfile(new_logfile): + """Set the Logfile instance for the module.""" + logfile = new_logfile + + func get_logfile(): + return logfile + + func get_config(): + return { + "name": get_name(), + "output_level": get_output_level(), + "output_strategies": get_output_strategy(), + "logfile_path": get_logfile().get_path() + } + + +##=============## +## Constants ## +##=============## + +const PLUGIN_NAME = "logger" + +# Logging levels - the array and the integers should be matching +const LEVELS = ["VERBOSE", "DEBUG", "INFO", "WARN", "ERROR"] +const VERBOSE = 0 +const DEBUG = 1 +const INFO = 2 +const WARN = 3 +const ERROR = 4 + +# Output strategies +const STRATEGY_MUTE = 0 +const STRATEGY_PRINT = 1 +const STRATEGY_FILE = 2 +const STRATEGY_MEMORY = 4 +const MAX_STRATEGY = STRATEGY_MEMORY*2 - 1 + +# Output format identifiers +const FORMAT_IDS = { + "level": "{LVL}", + "module": "{MOD}", + "message": "{MSG}" +} + +# Queue modes +const QUEUE_NONE = 0 +const QUEUE_ALL = 1 +const QUEUE_SMART = 2 + +const FILE_BUFFER_SIZE = 30 + + +##=============## +## Variables ## +##=============## + +# Configuration +var default_output_level = WARN +# TODO: Find (or implement in Godot) a more clever way to achieve that +var default_output_strategies = [STRATEGY_PRINT, STRATEGY_PRINT, STRATEGY_PRINT, STRATEGY_PRINT, STRATEGY_PRINT] +var default_logfile_path = "user://%s.log" % ProjectSettings.get_setting("application/config/name") +var default_configfile_path = "user://%s.cfg" % PLUGIN_NAME + +# e.g. "[INFO] [main] The young alpaca started growing a goatie." +var output_format = "[{LVL}] [{MOD}] {MSG}" + +# Specific to STRATEGY_MEMORY +var max_memory_size = 30 +var memory_buffer = [] +var memory_idx = 0 +var memory_first_loop = true +var memory_cache = [] +var invalid_memory_cache = false + +# Holds default and custom modules and logfiles defined by the user +# Default modules are initialized in _init via add_module +var logfiles = {} +var modules = {} + + +##=============## +## Functions ## +##=============## + +func put(level, message, module = "main"): + """Log a message in the given module with the given logging level.""" + var module_ref = get_module(module) + var output_strategy = module_ref.get_output_strategy(level) + if output_strategy == STRATEGY_MUTE or module_ref.get_output_level() > level: + return # Out of scope + + var output = format(output_format, level, module, message) + + if output_strategy & STRATEGY_PRINT: + print(output) + + if output_strategy & STRATEGY_FILE: + module_ref.get_logfile().write(output, level) + + if output_strategy & STRATEGY_MEMORY: + memory_buffer[memory_idx] = output + memory_idx += 1 + invalid_memory_cache = true + if memory_idx >= max_memory_size: + memory_idx = 0 + memory_first_loop = false + +# Helper functions for each level +# ------------------------------- + +func verbose(message, module = "main"): + """Log a message in the given module with level VERBOSE.""" + put(VERBOSE, message, module) + +func debug(message, module = "main"): + """Log a message in the given module with level DEBUG.""" + put(DEBUG, message, module) + +func info(message, module = "main"): + """Log a message in the given module with level INFO.""" + put(INFO, message, module) + +func warn(message, module = "main"): + """Log a message in the given module with level WARN.""" + put(WARN, message, module) + +func error(message, module = "main"): + """Log a message in the given module with level ERROR.""" + put(ERROR, message, module) + +# Module management +# ----------------- + +func add_module(name, output_level = default_output_level, \ + output_strategies = default_output_strategies, logfile = null): + """Add a new module with the given parameter or (by default) the + default ones. + Returns a reference to the instanced module.""" + if modules.has(name): + info("The module '%s' already exists; discarding the call to add it anew." \ + % name, PLUGIN_NAME) + else: + if logfile == null: + logfile = get_logfile(default_logfile_path) + modules[name] = Module.new(name, output_level, output_strategies, logfile) + return modules[name] + +func get_module(module = "main"): + """Retrieve the given module if it exists; if not, it will be created.""" + if not modules.has(module): + info("The requested module '%s' does not exist. It will be created with default values." \ + % module, PLUGIN_NAME) + add_module(module) + return modules[module] + +func get_modules(): + """Retrieve the dictionary containing all modules.""" + return modules + +# Logfiles management +# ------------------- + +func set_default_logfile_path(new_logfile_path, keep_old = false): + """Sets the new default logfile path. Unless configured otherwise with + the optional keep_old argument, it will replace the logfile for all + modules which were configured for the previous logfile path.""" + if new_logfile_path == default_logfile_path: + return # Nothing to do + + var old_logfile = get_logfile(default_logfile_path) + var new_logfile = null + if logfiles.has(new_logfile_path): # Already exists + new_logfile = logfiles[new_logfile_path] + else: # Create a new logfile + new_logfile = add_logfile(new_logfile_path) + logfiles[new_logfile_path] = new_logfile + + if not keep_old: # Replace the old defaut logfile in all modules that used it + for module in modules.values(): + if module.get_logfile() == old_logfile: + module.set_logfile(new_logfile) + logfiles.erase(default_logfile_path) + default_logfile_path = new_logfile_path + +func get_default_logfile_path(): + """Return the default logfile path.""" + return default_logfile_path + +func add_logfile(logfile_path = default_logfile_path): + """Add a new logfile that can then be attached to one or more modules. + Returns a reference to the instanced logfile.""" + if logfiles.has(logfile_path): + info("A logfile pointing to '%s' already exists; discarding the call to add it anew." \ + % logfile_path, PLUGIN_NAME) + else: + logfiles[logfile_path] = Logfile.new(logfile_path) + return logfiles[logfile_path] + +func get_logfile(logfile_path): + """Retrieve the given logfile if it exists, otherwise returns null.""" + if not logfiles.has(logfile_path): + warn("The requested logfile pointing to '%s' does not exist." % logfile_path, PLUGIN_NAME) + return null + else: + return logfiles[logfile_path] + +func get_logfiles(): + """Retrieve the dictionary containing all logfiles.""" + return logfiles + +# Default output configuration +# ---------------------------- + +func set_default_output_strategy(output_strategy_mask, level = -1): + """Set the default output strategy mask of the given level or (by + default) all levels for all modules without a custom strategy.""" + if not output_strategy_mask in range(0, MAX_STRATEGY + 1): + error("The output strategy mask must be comprised between 0 and %d." \ + % MAX_STRATEGY, PLUGIN_NAME) + return + if level == -1: # Set for all levels + for i in range(0, LEVELS.size()): + default_output_strategies[i] = output_strategy_mask + info("The default output strategy mask was set to '%d' for all levels." \ + % [output_strategy_mask], PLUGIN_NAME) + else: + if not level in range(0, LEVELS.size()): + error("The level must be comprised between 0 and %d." % (int(LEVELS.size()) - 1), PLUGIN_NAME) + return + default_output_strategies[level] = output_strategy_mask + info("The default output strategy mask was set to '%d' for the '%s' level." \ + % [output_strategy_mask, LEVELS[level]], PLUGIN_NAME) + +func get_default_output_strategy(level): + """Get the default output strategy mask of the given level or (by + default) all levels for all modules without a custom strategy.""" + return default_output_strategies[level] + +func set_default_output_level(level): + """Set the default minimal level for the output of all modules without + a custom output level. + All levels greater or equal to the given once will be output based on + their respective strategies, while levels lower than the given one will + be discarded. + """ + if not level in range(0, LEVELS.size()): + error("The level must be comprised between 0 and %d." % (int(LEVELS.size()) - 1), PLUGIN_NAME) + return + default_output_level = level + info("The default output level was set to '%s'." % LEVELS[level], PLUGIN_NAME) + +func get_default_output_level(): + """Get the default minimal level for the output of all modules without + a custom output level.""" + return default_output_level + +# Output formatting +# ----------------- + +static func format(template, level, module, message): + var output = template + output = output.replace(FORMAT_IDS.level, LEVELS[level]) + output = output.replace(FORMAT_IDS.module, module) + output = output.replace(FORMAT_IDS.message, message) + return output + +func set_output_format(new_format): + """Set the output string format using the following identifiers: + {LVL} for the level, {MOD} for the module, {MSG} for the message. + The three identifiers should be contained in the output format string. + """ + for key in FORMAT_IDS: + if new_format.find(FORMAT_IDS[key]) == -1: + error("Invalid output string format. It lacks the '%s' identifier." \ + % FORMAT_IDS[key], PLUGIN_NAME) + return + output_format = new_format + info("Successfully changed the output format to '%s'." % output_format, PLUGIN_NAME) + +func get_output_format(): + """Get the output string format.""" + return output_format + +# Strategy "memory" +# ----------------- + +func set_max_memory_size(new_size): + """Set the maximum amount of messages to be remembered when + using the STRATEGY_MEMORY output strategy.""" + if new_size <= 0: + error("The maximum amount of remembered messages must be a positive non-null integer. Received %d." \ + % new_size, PLUGIN_NAME) + return + + var new_buffer = [] + var new_idx = 0 + new_buffer.resize(new_size) + + # Better algorithm welcome :D + if memory_first_loop: + var offset = 0 + if memory_idx > new_size: + offset = memory_idx - new_size + memory_first_loop = false + else: + new_idx = memory_idx + for i in range(0, min(memory_idx, new_size)): + new_buffer[i] = memory_buffer[i + offset] + else: + var delta = 0 + if max_memory_size > new_size: + delta = max_memory_size - new_size + else: + new_idx = max_memory_size + memory_first_loop = true + for i in range(0, min(max_memory_size, new_size)): + new_buffer[i] = memory_buffer[(memory_idx + delta + i) % max_memory_size] + + memory_buffer = new_buffer + memory_idx = new_idx + invalid_memory_cache = true + max_memory_size = new_size + info("Successfully set the maximum amount of remembered messages to %d." % max_memory_size, PLUGIN_NAME) + +func get_max_memory_size(): + """Get the maximum amount of messages to be remembered when + using the STRATEGY_MEMORY output strategy.""" + return max_memory_size + +func get_memory(): + """Get an array of the messages remembered following STRATEGY_MEMORY. + The messages are sorted from the oldest to the newest.""" + if invalid_memory_cache: # Need to recreate the cached ordered array + memory_cache = [] + if not memory_first_loop: # else those would be uninitialized + for i in range(memory_idx, max_memory_size): + memory_cache.append(memory_buffer[i]) + for i in range(0, memory_idx): + memory_cache.append(memory_buffer[i]) + invalid_memory_cache = false + return memory_cache + +func clear_memory(): + """Clear the buffer or remembered messages.""" + memory_buffer.clear() + memory_idx = 0 + memory_first_loop = true + invalid_memory_cache = true + + +# Configuration loading/saving +# ---------------------------- + +func save_config(configfile = default_configfile_path): + """Save the default configuration as well as the set of modules and + their respective configurations. + The ConfigFile API is used to generate the config file passed as argument. + A unique section is used, so that it can be merged in a project's engine.cfg. + Returns an error code (OK or some ERR_*).""" + var config = ConfigFile.new() + + # Store default config + config.set_value(PLUGIN_NAME, "default_output_level", default_output_level) + config.set_value(PLUGIN_NAME, "default_output_strategies", default_output_strategies) + config.set_value(PLUGIN_NAME, "default_logfile_path", default_logfile_path) + config.set_value(PLUGIN_NAME, "max_memory_size", max_memory_size) + + # Logfiles config + var logfiles_arr = [] + var sorted_keys = logfiles.keys() + sorted_keys.sort() # Sadly doesn't return the array, so we need to split it + for logfile in sorted_keys: + logfiles_arr.append(logfiles[logfile].get_config()) + config.set_value(PLUGIN_NAME, "logfiles", logfiles_arr) + + # Modules config + var modules_arr = [] + sorted_keys = modules.keys() + sorted_keys.sort() + for module in sorted_keys: + modules_arr.append(modules[module].get_config()) + config.set_value(PLUGIN_NAME, "modules", modules_arr) + + # Save and return the corresponding error code + var err = config.save(configfile) + if err: + error("Could not save the config in '%s'; exited with error %d." \ + % [configfile, err], PLUGIN_NAME) + return err + info("Successfully saved the config to '%s'." % configfile, PLUGIN_NAME) + return OK + +func load_config(configfile = default_configfile_path): + """Load the configuration as well as the set of defined modules and + their respective configurations. The expect file contents must be those + produced by the ConfigFile API. + Returns an error code (OK or some ERR_*).""" + # Look for the file + var dir = Directory.new() + if not dir.file_exists(configfile): + warn("Could not load the config in '%s', the file does not exist." % configfile, PLUGIN_NAME) + return ERR_FILE_NOT_FOUND + + # Load its contents + var config = ConfigFile.new() + var err = config.load(configfile) + if err: + warn("Could not load the config in '%s'; exited with error %d." \ + % [configfile, err], PLUGIN_NAME) + return err + + # Load default config + default_output_level = config.get_value(PLUGIN_NAME, "default_output_level", default_output_level) + default_output_strategies = config.get_value(PLUGIN_NAME, "default_output_strategies", default_output_strategies) + default_logfile_path = config.get_value(PLUGIN_NAME, "default_logfile_path", default_logfile_path) + max_memory_size = config.get_value(PLUGIN_NAME, "max_memory_size", max_memory_size) + + # Load logfiles config and initialize them + logfiles = {} + for logfile_cfg in config.get_value(PLUGIN_NAME, "logfiles"): + var logfile = Logfile.new(logfile_cfg["path"], logfile_cfg["queue_mode"]) + logfiles[logfile_cfg["path"]] = logfile + + # Load modules config and initialize them + modules = {} + for module_cfg in config.get_value(PLUGIN_NAME, "modules"): + var module = Module.new(module_cfg["name"], module_cfg["output_level"], \ + module_cfg["output_strategies"], get_logfile(module_cfg["logfile_path"])) + modules[module_cfg["name"]] = module + + info("Successfully loaded the config from '%s'." % configfile, PLUGIN_NAME) + return OK + + +##=============## +## Callbacks ## +##=============## + +func _init(): + # Default logfile + add_logfile(default_logfile_path) + # Default modules + add_module(PLUGIN_NAME) # needs to be instanced first + add_module("main") + memory_buffer.resize(max_memory_size) + +func _exit_tree(): + # Flush non-empty buffers + var processed_logfiles = [] + var logfile = null + for module in modules: + logfile = modules[module].get_logfile() + if logfile in processed_logfiles: + continue + logfile.flush_buffer() + processed_logfiles.append(logfile) diff --git a/game/autoload/Logger.tscn b/game/autoload/Logger.tscn new file mode 100644 index 0000000..f504f33 --- /dev/null +++ b/game/autoload/Logger.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://autoload/Logger.gd" type="Script" id=1] + +[node name="Logger" type="Node"] +script = ExtResource( 1 ) diff --git a/game/autoload/Server.gd b/game/autoload/Server.gd new file mode 100644 index 0000000..10b3773 --- /dev/null +++ b/game/autoload/Server.gd @@ -0,0 +1,220 @@ +extends Node + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export (int) var port : int = 23223 + +signal cplayer_master_created(player_master) +signal cplayer_master_destroyed(player_master) + +signal splayer_master_created(player_master) +signal splayer_master_destroyed(player_master) + +var splayers_dict : Dictionary = {} +var splayers_array : Array = [] + +var cplayers_dict : Dictionary = {} +var cplayers_array : Array = [] + +var _sseed : int +var _cseed : int + +var local_player_master : PlayerMaster = PlayerMaster.new() + +func _ready() -> void: + #Temporary! REMOVE! + get_multiplayer().allow_object_decoding = true + + get_tree().connect("network_peer_connected", self, "_network_peer_connected") + get_tree().connect("network_peer_disconnected", self, "_network_peer_disconnected") + get_tree().connect("connected_to_server", self, "_connected_to_server") + get_tree().connect("connection_failed", self, "_connection_failed") + get_tree().connect("server_disconnected", self, "_server_disconnected") + + +func start_hosting(p_port : int = 0) -> int: + if p_port == 0: + p_port = port + + var peer : NetworkedMultiplayerENet = NetworkedMultiplayerENet.new() + var err : int = peer.create_server(p_port, 32) + get_tree().set_network_peer(peer) + + _connected_to_server() + + return err + +func start_hosting_websocket(p_port : int = 0) -> int: + if p_port == 0: + p_port = port + + var peer : WebSocketServer = WebSocketServer.new() + var err : int = peer.listen(p_port, [], true) + get_tree().set_network_peer(peer) + + _connected_to_server() + + return err + +func connect_to_server(address : String = "127.0.0.1", p_port : int = 0) -> int: + if p_port == 0: + p_port = port + + var peer = NetworkedMultiplayerENet.new() + var err : int = peer.create_client(address, p_port) + get_tree().set_network_peer(peer) + + return err + +func connect_to_server_websocket(address : String = "127.0.0.1", p_port : int = 0) -> int: + if p_port == 0: + p_port = port + + var peer = WebSocketClient.new() + var err : int = peer.connect_to_url(address + ":" + str(p_port), [], true) + get_tree().set_network_peer(peer) + + return err + +func _network_peer_connected(id : int) -> void: +# Logger.verbose("NetworkManager peer connected " + str(id)) + +# for p in splayers_array: +# rpc_id(id, "cspawn_player", p.my_info, p.sid, p.player.translation) + + var pm : PlayerMaster = PlayerMaster.new() + pm.sid = id + + splayers_array.append(pm) + splayers_dict[id] = pm + + emit_signal("splayer_master_created", pm) + + rpc_id(id, "cset_seed", _sseed) + +func _network_peer_disconnected(id : int) -> void: +# Logger.verbose("NetworkManager peer disconnected " + str(id)) + + var player : PlayerMaster = splayers_dict[id] + splayers_dict.erase(id) + + for pi in range(len(splayers_array)): + if (splayers_array[pi] as PlayerMaster) == player: + splayers_array.remove(pi) + break + + if player: + emit_signal("splayer_master_destroyed", player) + +func _connected_to_server() -> void: +# Logger.verbose("NetworkManager _connected_to_server") + + var pm : PlayerMaster = PlayerMaster.new() + pm.sid = get_tree().get_network_unique_id() + + local_player_master = pm + + emit_signal("cplayer_master_created", pm) + +func _server_disconnected() -> void: +# Logger.verbose("_server_disconnected") + + # Server kicked us; show error and abort. + + for player in get_children(): + emit_signal("NetworkManager cplayer_master_destroyed", player) + player.queue_free() + +func _connection_failed() -> void: +# Logger.verbose("NetworkManager _connection_failed") + + pass # Could not even connect to server; abort. + +func sset_seed(pseed): + _sseed = pseed + + if multiplayer.has_network_peer() and multiplayer.is_network_server(): + rpc("cset_seed", _sseed) + +remote func cset_seed(pseed): + + _cseed = pseed + + print("clientseed set") + + +func set_class(): +# Logger.verbose("set_class") + + if not get_tree().is_network_server(): + rpc_id(1, "crequest_select_class", local_player_master.my_info) + else: + crequest_select_class(local_player_master.my_info) + +remote func crequest_select_class(info : Dictionary) -> void: +# Logger.verbose("NetworkManager crequest_select_class") + + if get_tree().is_network_server(): + var sid : int = get_tree().multiplayer.get_rpc_sender_id() + + if sid == 0: + sid = 1 + + rpc("cspawn_player", info, sid, Vector3(10, 10, 10)) + + +remotesync func cspawn_player(info : Dictionary, sid : int, pos : Vector3): +# Logger.verbose("NetworkManager cspawn_player") + + if sid == get_tree().get_network_unique_id(): + local_player_master.player = ESS.get_ess_entity_spawner().spawn_player(info["selected_class"] as int, pos, info["name"] as String, str(sid), sid) + call_deferred("set_terrarin_player") + + if get_tree().is_network_server() and not splayers_dict.has(sid): + splayers_dict[sid] = local_player_master + splayers_array.append(local_player_master) + else: + var pm : PlayerMaster = PlayerMaster.new() + pm.sid = sid + + pm.player = ESS.get_ess_entity_spawner().spawn_networked_player(info["selected_class"] as int, pos, info["name"] as String, str(sid), sid) + + if get_tree().is_network_server() and not splayers_dict.has(sid): + splayers_dict[sid] = pm + splayers_array.append(pm) + + cplayers_dict[sid] = pm + cplayers_array.append(pm) + + +func upload_character(data : String) -> void: + rpc_id(1, "sreceive_upload_character", data) + +master func sreceive_upload_character(data: String) -> void: + ESS.get_ess_entity_spawner().spawn_networked_player_from_data(data, Vector3(0, 10, 0), multiplayer.get_rpc_sender_id()) + +func set_terrarin_player(): +# Logger.verbose("NetworkManager cspawn_player") + + var terrarin : Node = get_node("/root/GameScene/VoxelWorld") + + if terrarin.has_method("set_player"): + terrarin.set_player(local_player_master.player.get_body()) diff --git a/game/autoload/Server.tscn b/game/autoload/Server.tscn new file mode 100644 index 0000000..2ba6975 --- /dev/null +++ b/game/autoload/Server.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://autoload/Server.gd" type="Script" id=1] + +[node name="Server" type="Node"] +script = ExtResource( 1 ) diff --git a/game/characters/Character.tscn b/game/characters/Character.tscn new file mode 100644 index 0000000..31b09f4 --- /dev/null +++ b/game/characters/Character.tscn @@ -0,0 +1,74 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://player/CharacterSkeleton2DGD.gd" type="Script" id=1] +[ext_resource path="res://characters/CharacterSideModel.tscn" type="PackedScene" id=2] +[ext_resource path="res://characters/CharacterFrontModel.tscn" type="PackedScene" id=3] +[ext_resource path="res://scripts/item_visuals/CharacterAtlas2D.gd" type="Script" id=4] +[ext_resource path="res://scripts/item_visuals/CharacterAtlasEntry2D.gd" type="Script" id=5] +[ext_resource path="res://characters/char_t1_outline_split.png" type="Texture" id=6] + +[sub_resource type="CharacterAtlasEntry" id=1] +script = ExtResource( 5 ) +front_rect = Rect2( 101, 15, 9, 12 ) +back_rect = Rect2( 74, 18, 9, 12 ) +right_rect = Rect2( 8, 13, 9, 12 ) +left_rect = Rect2( 8, 13, 9, 12 ) + +[sub_resource type="CharacterAtlasEntry" id=2] +script = ExtResource( 5 ) +front_rect = Rect2( 102, 2, 7, 8 ) +back_rect = Rect2( 75, 5, 7, 8 ) +right_rect = Rect2( 9, 0, 7, 8 ) +left_rect = Rect2( 9, 0, 7, 8 ) + +[sub_resource type="CharacterAtlas" id=3] +script = ExtResource( 4 ) +comments = "HUMANOID_BONE_HIP = 0, +HUMANOID_BONE_TORSO = 1, +HUMANOID_BONE_LEG_R = 2, +HUMANOID_BONE_FOOT_R = 3, +HUMANOID_BONE_TOE_R = 4, +HUMANOID_BONE_LEG_L = 5, +HUMANOID_BONE_FOOT_L = 6, +HUMANOID_BONE_TOE_L = 7, +HUMANOID_BONE_ARM_R = 8, +#HUMANOID_BONE_SHOULDER_GUARD_R = 0, +HUMANOID_BONE_HAND_R = 9, +HUMANOID_BONE_FINGERS_R = 10, +HUMANOID_BONE_ARM_L = 11, +#HUMANOID_BONE_SHOULDER_GUARD_L = 0, +HUMANOID_BONE_HAND_L = 12, +HUMANOID_BONE_FINGERS_L = 13, +HUMANOID_BONE_HEAD = 14, +HUMANOID_BONE_HEAD_TOP = 15, +HUMANOID_BONES_MAX = 16," +texture = ExtResource( 6 ) +slots = [ null, SubResource( 1 ), null, null, null, null, null, null, null, null, null, null, null, null, SubResource( 2 ), null ] + +[node name="Character" type="CharacterSkeleton2D"] +entity_type = 1 +attach_point_paths/0_left_hand = NodePath("") +attach_point_paths/1_right_hand = NodePath("") +attach_point_paths/2_torso = NodePath("") +attach_point_paths/3_root = NodePath("") +attach_point_paths/4_right_hip = NodePath("") +attach_point_paths/5_left_hip = NodePath("") +attach_point_paths/6_spine_2 = NodePath("") +attach_point_paths/7_weapon_left = NodePath("") +attach_point_paths/8_weapon_right = NodePath("") +attach_point_paths/9_weapon_left_back = NodePath("") +attach_point_paths/10_weapon_right_back = NodePath("") +attach_point_paths/11_weapon_shield_left = NodePath("") +script = ExtResource( 1 ) +front_node_path = NodePath("CharacterFrontModel") +front_animation_player_path = NodePath("../Character/CharacterFrontModel/AnimationPlayer") +front_animation_tree_path = NodePath("../Character/CharacterFrontModel/AnimationTree") +side_node_path = NodePath("CharacterSideModel") +side_animation_player_path = NodePath("../Character/CharacterSideModel/AnimationPlayer") +side_animation_tree_path = NodePath("../Character/CharacterSideModel/AnimationTree") +character_atlas = SubResource( 3 ) + +[node name="CharacterFrontModel" parent="." instance=ExtResource( 3 )] +visible = false + +[node name="CharacterSideModel" parent="." instance=ExtResource( 2 )] diff --git a/game/characters/CharacterFrontModel.tscn b/game/characters/CharacterFrontModel.tscn new file mode 100644 index 0000000..750f395 --- /dev/null +++ b/game/characters/CharacterFrontModel.tscn @@ -0,0 +1,2360 @@ +[gd_scene load_steps=12 format=2] + +[ext_resource path="res://characters/char_t1_outline_split.png" type="Texture" id=1] +[ext_resource path="res://player/HumanoidCharacterBones2D.gd" type="Script" id=2] + +[sub_resource type="Animation" id=1] +resource_name = "casting" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -0.150298, -0.150298, -0.150298 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Torso/leg_l/foot_l:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Torso/leg_l/foot_l:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -2.18314, -2.18314, -2.18314 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Torso/leg_l:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ), Vector2( 1.91221, 1.50001 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Torso/leg_l:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -7.17636, -7.17636, -7.17636 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/Head:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ), Vector2( 0, -10 ), Vector2( 0, -10 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -2.00551, 7.77134 ), Vector2( -2.00551, 7.77134 ), Vector2( -2.00551, 7.77134 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Torso/leg_r/foot_r:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Torso/leg_r/foot_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Torso/leg_r:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -2, 1 ), Vector2( -2, 1.29 ), Vector2( -2, 1 ), Vector2( -2, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/Torso/leg_r:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 6.92582, 6.92582, 6.92582, 6.92582 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ), Vector2( -0.5, 4 ), Vector2( -0.5, 4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 102.313, 97.3286, 102.313, 102.313 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Torso/arm_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -8 ), Vector2( 4, -8 ), Vector2( 4, -8 ), Vector2( 4, -8 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -0.372368, -5.92958, -8.40393, -0.372368 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ), Vector2( 0, 5 ), Vector2( 0, 5 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -109.724, -91.7756, -109.724, -109.724 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 4.9682, 25.8311, 4.9682, 4.9682 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -1.5 ), Vector2( 0, -1.5 ), Vector2( 0, -1.5 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Shadow:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ), Vector2( -0.5, 14 ), Vector2( -0.5, 14 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ), Vector2( 1, -0.2 ), Vector2( 1, -0.2 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Torso:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -2 ), Vector2( -0.0923008, -1.07587 ), Vector2( 0, -2 ), Vector2( 0, -2 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso:rotation_degrees") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, -6.16061, 0.0, 0.0 ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ), Vector2( 0, -14 ), Vector2( 0, -14 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:rotation_degrees") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/38/type = "value" +tracks/38/path = NodePath("Hip/Torso/arm_l/hand_l:z_index") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 1, 1, 1 ] +} + +[sub_resource type="Animation" id=2] +resource_name = "idle" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -0.150298, -0.150298, -0.150298 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Torso/leg_l/foot_l:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Torso/leg_l/foot_l:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -2.18855, -2.18855, -2.18855 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Torso/leg_l:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Torso/leg_l:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.712624, 0.712624, 0.712624 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/Head:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ), Vector2( 0, -10 ), Vector2( 0, -10 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 7.771 ), Vector2( 0, 7.771 ), Vector2( 0, 7.771 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Torso/leg_r/foot_r:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Torso/leg_r/foot_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Torso/leg_r:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -2, 0.999999 ), Vector2( -2, 1 ), Vector2( -2, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/Torso/leg_r:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -0.908402, -0.908402, -0.908402 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ), Vector2( -0.5, 4 ), Vector2( -0.5, 4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Torso/arm_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4.98958, -7.86818 ), Vector2( 4.98958, -7.86818 ), Vector2( 4.98958, -7.86818 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ), Vector2( 0, 5 ), Vector2( 0, 5 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -5.01738, -8.74725 ), Vector2( -5.01738, -8.74725 ), Vector2( -5.01738, -8.74725 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -8.44461e-05, -8.44461e-05, -8.44461e-05 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.913425, -1.12376 ), Vector2( -0.913425, -1.12376 ), Vector2( -0.913425, -1.12376 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Shadow:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ), Vector2( -0.5, 14 ), Vector2( -0.5, 14 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ), Vector2( 1, -0.2 ), Vector2( 1, -0.2 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Torso:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -2 ), Vector2( 0, -2.4 ), Vector2( 0, -2 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso:rotation_degrees") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ), Vector2( 0, -14 ), Vector2( 0, -14 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:rotation_degrees") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/38/type = "value" +tracks/38/path = NodePath("Hip/Torso/arm_l/hand_l:show_behind_parent") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/39/type = "value" +tracks/39/path = NodePath("Hip/Torso/arm_l:show_behind_parent") +tracks/39/interp = 1 +tracks/39/loop_wrap = true +tracks/39/imported = false +tracks/39/enabled = true +tracks/39/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/40/type = "value" +tracks/40/path = NodePath("Hip/Torso/remote_arm_r:show_behind_parent") +tracks/40/interp = 1 +tracks/40/loop_wrap = true +tracks/40/imported = false +tracks/40/enabled = true +tracks/40/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/41/type = "value" +tracks/41/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:show_behind_parent") +tracks/41/interp = 1 +tracks/41/loop_wrap = true +tracks/41/imported = false +tracks/41/enabled = true +tracks/41/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/42/type = "value" +tracks/42/path = NodePath("Hip/Torso/leg_r/foot_r:show_behind_parent") +tracks/42/interp = 1 +tracks/42/loop_wrap = true +tracks/42/imported = false +tracks/42/enabled = true +tracks/42/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/43/type = "value" +tracks/43/path = NodePath("Hip/Torso/leg_r:show_behind_parent") +tracks/43/interp = 1 +tracks/43/loop_wrap = true +tracks/43/imported = false +tracks/43/enabled = true +tracks/43/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/44/type = "value" +tracks/44/path = NodePath("Hip/Torso/leg_l:show_behind_parent") +tracks/44/interp = 1 +tracks/44/loop_wrap = true +tracks/44/imported = false +tracks/44/enabled = true +tracks/44/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/45/type = "value" +tracks/45/path = NodePath("Hip/Torso/leg_l/foot_l:show_behind_parent") +tracks/45/interp = 1 +tracks/45/loop_wrap = true +tracks/45/imported = false +tracks/45/enabled = true +tracks/45/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=3] +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.150298 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Torso/leg_l/foot_l:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Torso/leg_l/foot_l:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -2.18855 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Torso/leg_l:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Torso/leg_l:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.712624 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/Head:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 7.771 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Torso/leg_r/foot_r:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.724068 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ), Vector2( -1, 5 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Torso/leg_r/foot_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Torso/leg_r:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.724068 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -2, 1 ), Vector2( -2, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/Torso/leg_r:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.724068 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -0.908402, -0.908402 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Torso/arm_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 4.98958, -7.86818 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -5.01738, -8.74725 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -8.44461e-05 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.913425, -1.12376 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Shadow:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Torso:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -2 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso:rotation_degrees") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:rotation_degrees") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/38/type = "value" +tracks/38/path = NodePath("Hip/Torso/leg_l/foot_l:show_behind_parent") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/39/type = "value" +tracks/39/path = NodePath("Hip/Torso/leg_r:show_behind_parent") +tracks/39/interp = 1 +tracks/39/loop_wrap = true +tracks/39/imported = false +tracks/39/enabled = true +tracks/39/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/40/type = "value" +tracks/40/path = NodePath("Hip/Torso/leg_l:show_behind_parent") +tracks/40/interp = 1 +tracks/40/loop_wrap = true +tracks/40/imported = false +tracks/40/enabled = true +tracks/40/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/41/type = "value" +tracks/41/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:show_behind_parent") +tracks/41/interp = 1 +tracks/41/loop_wrap = true +tracks/41/imported = false +tracks/41/enabled = true +tracks/41/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/42/type = "value" +tracks/42/path = NodePath("Hip/Torso/remote_arm_r:show_behind_parent") +tracks/42/interp = 1 +tracks/42/loop_wrap = true +tracks/42/imported = false +tracks/42/enabled = true +tracks/42/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/43/type = "value" +tracks/43/path = NodePath("Hip/Torso/arm_l:show_behind_parent") +tracks/43/interp = 1 +tracks/43/loop_wrap = true +tracks/43/imported = false +tracks/43/enabled = true +tracks/43/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/44/type = "value" +tracks/44/path = NodePath("Hip/Torso/arm_l/hand_l:show_behind_parent") +tracks/44/interp = 1 +tracks/44/loop_wrap = true +tracks/44/imported = false +tracks/44/enabled = true +tracks/44/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=4] +loop = true +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -0.150298, -0.150298, -0.150298 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Torso/leg_l/foot_l:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 0.99, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Torso/leg_l/foot_l:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 0.99, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 17.207, 14.9584, 16.2471, 19.1313, 28.7634, 17.207 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Torso/leg_l:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Torso/leg_l:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -0.711522, -9.98104, 3.52254, -7.10074, -0.711522 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/Head:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ), Vector2( 0, -10 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 7.771 ), Vector2( 0, 7.771 ), Vector2( 0, 7.771 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Torso/leg_r/foot_r:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Torso/leg_r/foot_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -15.3779, -10.5059, -12.523, -5.35185, -15.3779 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Torso/leg_r:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -2, 1 ), Vector2( -2, 1 ), Vector2( -2, 1 ), Vector2( -2, 1 ), Vector2( -2, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/Torso/leg_r:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -8.16674, 5.82986, -0.553362, 5.75932, -8.16674 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ), Vector2( -0.5, 4 ), Vector2( -0.5, 4 ), Vector2( -0.5, 4 ), Vector2( -0.5, 4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0.0452981, 5.9654 ), Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0.0452981, 5.9654 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -4.71947, 1.71413, 7.25388, 1.71413, -4.71947 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Torso/arm_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4.98958, -7.86818 ), Vector2( 4.98958, -7.86818 ), Vector2( 4.98958, -7.86818 ), Vector2( 4.98958, -7.86818 ), Vector2( 4.98958, -7.86818 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 12.7564, -1.05097, 3.19122, -1.05097, 12.7564 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ), Vector2( 0, 5 ), Vector2( 0, 5 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -15.989, -5.44135, -5.80149, -3.75818, -15.989 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -5.01738, -8.74725 ), Vector2( -5.01738, -8.74725 ), Vector2( -5.01738, -8.74725 ), Vector2( -5.01738, -8.74725 ), Vector2( -5.01738, -8.74725 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -6.35693, 1.96771, -5.23182, 1.0922, -6.35693 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.913425, -1.12376 ), Vector2( -0.913425, -1.12376 ), Vector2( -0.913425, -1.12376 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Shadow:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ), Vector2( -0.5, 14 ), Vector2( -0.5, 14 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ), Vector2( 1, -0.2 ), Vector2( 1, -0.2 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Torso:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -2.2 ), Vector2( 0, -1.9 ), Vector2( 0.125, -2.2 ), Vector2( 0, -1.9 ), Vector2( 0, -2.2 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso:rotation_degrees") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ), Vector2( 0, -14 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:rotation_degrees") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/38/type = "value" +tracks/38/path = NodePath("Hip/Torso/arm_l/hand_l:show_behind_parent") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/keys = { +"times": PoolRealArray( 0, 0.25, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, true ] +} +tracks/39/type = "value" +tracks/39/path = NodePath("Hip/Torso/arm_l:show_behind_parent") +tracks/39/interp = 1 +tracks/39/loop_wrap = true +tracks/39/imported = false +tracks/39/enabled = true +tracks/39/keys = { +"times": PoolRealArray( 0, 0.25, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, true ] +} +tracks/40/type = "value" +tracks/40/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:show_behind_parent") +tracks/40/interp = 1 +tracks/40/loop_wrap = true +tracks/40/imported = false +tracks/40/enabled = true +tracks/40/keys = { +"times": PoolRealArray( 0, 0.25, 0.75, 1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ false, true, false, false, true ] +} +tracks/41/type = "value" +tracks/41/path = NodePath("Hip/Torso/remote_arm_r:show_behind_parent") +tracks/41/interp = 1 +tracks/41/loop_wrap = true +tracks/41/imported = false +tracks/41/enabled = true +tracks/41/keys = { +"times": PoolRealArray( 0, 0.25, 0.75, 1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ false, true, false, false, true ] +} +tracks/42/type = "value" +tracks/42/path = NodePath("Hip/Torso/leg_l/foot_l:show_behind_parent") +tracks/42/interp = 1 +tracks/42/loop_wrap = true +tracks/42/imported = false +tracks/42/enabled = true +tracks/42/keys = { +"times": PoolRealArray( 0, 0.25, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/43/type = "value" +tracks/43/path = NodePath("Hip/Torso/leg_l:show_behind_parent") +tracks/43/interp = 1 +tracks/43/loop_wrap = true +tracks/43/imported = false +tracks/43/enabled = true +tracks/43/keys = { +"times": PoolRealArray( 0, 0.25, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ false, true, false, false ] +} +tracks/44/type = "value" +tracks/44/path = NodePath("Hip/Torso/leg_r:show_behind_parent") +tracks/44/interp = 1 +tracks/44/loop_wrap = true +tracks/44/imported = false +tracks/44/enabled = true +tracks/44/keys = { +"times": PoolRealArray( 0, 0.25, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, true ] +} +tracks/45/type = "value" +tracks/45/path = NodePath("Hip/Torso/leg_r/foot_r:show_behind_parent") +tracks/45/interp = 1 +tracks/45/loop_wrap = true +tracks/45/imported = false +tracks/45/enabled = true +tracks/45/keys = { +"times": PoolRealArray( 0, 0.25, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, true ] +} + +[sub_resource type="AnimationNodeTimeScale" id=5] + +[sub_resource type="AnimationNodeAnimation" id=6] +animation = "idle" + +[sub_resource type="AnimationNodeAnimation" id=7] +animation = "run" + +[sub_resource type="AnimationNodeBlend2" id=8] + +[sub_resource type="AnimationNodeBlendTree" id=9] +graph_offset = Vector2( -473, 293 ) +nodes/RunScale/node = SubResource( 5 ) +nodes/RunScale/position = Vector2( -60, 500 ) +nodes/idle/node = SubResource( 6 ) +nodes/idle/position = Vector2( -240, 340 ) +nodes/output/position = Vector2( 440, 280 ) +nodes/run/node = SubResource( 7 ) +nodes/run/position = Vector2( -280, 500 ) +nodes/walking/node = SubResource( 8 ) +nodes/walking/position = Vector2( 140, 320 ) +node_connections = [ "output", 0, "walking", "RunScale", 0, "run", "walking", 0, "idle", "walking", 1, "RunScale" ] + +[node name="CharacterFrontModel" type="CharacterBones"] +rotation = 0.000121465 +script = ExtResource( 2 ) +help = "HUMANOID_BONE_HIP = 0, +HUMANOID_BONE_TORSO = 1, +HUMANOID_BONE_LEG_R = 2, +HUMANOID_BONE_FOOT_R = 3, +HUMANOID_BONE_TOE_R = 4, +HUMANOID_BONE_LEG_L = 5, +HUMANOID_BONE_FOOT_L = 6, +HUMANOID_BONE_TOE_L = 7, +HUMANOID_BONE_ARM_R = 8, +#HUMANOID_BONE_SHOULDER_GUARD_R = 0, +HUMANOID_BONE_HAND_R = 9, +HUMANOID_BONE_FINGERS_R = 10, +HUMANOID_BONE_ARM_L = 11, +#HUMANOID_BONE_SHOULDER_GUARD_L = 0, +HUMANOID_BONE_HAND_L = 12, +HUMANOID_BONE_FINGERS_L = 13, +HUMANOID_BONE_HEAD = 14, +HUMANOID_BONE_HEAD_TOP = 15, +HUMANOID_BONES_MAX = 16," +bones = [ NodePath("Hip"), NodePath("Hip/Torso"), NodePath("Hip/Torso/leg_r"), NodePath("Hip/Torso/leg_r/foot_r"), NodePath("Hip/Torso/leg_r/foot_r/Position2D"), NodePath("Hip/Torso/leg_l"), NodePath("Hip/Torso/leg_l/foot_l"), NodePath("Hip/Torso/leg_l/foot_l/Position2D"), NodePath("Hip/Torso/remote_arm_r"), NodePath("Hip/Torso/remote_arm_r/remote_hand_r"), NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Hip/Torso/arm_l"), NodePath("Hip/Torso/arm_l/hand_l"), NodePath("Hip/Torso/arm_l/hand_l/end"), NodePath("Hip/Torso/Head"), NodePath("Hip/Torso/Head/Position2D") ] + +[node name="Hip" type="Sprite" parent="."] +position = Vector2( 0, -14 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 102, 32, 7, 2 ) + +[node name="Shadow" type="Sprite" parent="Hip"] +position = Vector2( -0.5, 14 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 27, 57, 14, 6 ) + +[node name="Torso" type="Sprite" parent="Hip"] +position = Vector2( 0, -2.24034 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -5 ) +region_enabled = true +region_rect = Rect2( 101, 15, 9, 12 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="leg_r" type="Sprite" parent="Hip/Torso"] +position = Vector2( -2, 1 ) +rotation = -0.0158546 +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 97, 39, 5, 8 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="foot_r" type="Sprite" parent="Hip/Torso/leg_r"] +position = Vector2( -1, 5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 4 ) +region_enabled = true +region_rect = Rect2( 96, 51, 6, 10 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/Torso/leg_r/foot_r"] +position = Vector2( 0, 7.771 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="leg_l" type="Sprite" parent="Hip/Torso"] +position = Vector2( 2, 1.5 ) +rotation = 0.0124376 +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 109, 39, 5, 8 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="foot_l" type="Sprite" parent="Hip/Torso/leg_l"] +position = Vector2( 0, 4.5 ) +rotation = -0.0381974 +texture = ExtResource( 1 ) +offset = Vector2( 0, 4 ) +region_enabled = true +region_rect = Rect2( 109, 51, 6, 10 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/Torso/leg_l/foot_l"] +position = Vector2( -0.297693, 7.79954 ) +rotation = -0.0026232 +__meta__ = { +"_edit_bone_": true +} + +[node name="remote_arm_r" type="Sprite" parent="Hip/Torso"] +position = Vector2( -5.01738, -8.74725 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 93, 16, 3, 9 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="shoulder_guard_r" type="Sprite" parent="Hip/Torso/remote_arm_r"] +position = Vector2( 1, -0.2 ) +texture = ExtResource( 1 ) +offset = Vector2( -1, -1 ) +region_enabled = true +region_rect = Rect2( 90, 8, 6, 4 ) + +[node name="remote_hand_r" type="Sprite" parent="Hip/Torso/remote_arm_r"] +position = Vector2( 0, 5.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 93, 28, 3, 6 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/Torso/remote_arm_r/remote_hand_r"] +position = Vector2( 0, 5 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="arm_l" type="Sprite" parent="Hip/Torso"] +position = Vector2( 4.98958, -7.86818 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 2.5 ) +region_enabled = true +region_rect = Rect2( 117, 16, 3, 9 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="hand_l" type="Sprite" parent="Hip/Torso/arm_l"] +position = Vector2( 0, 6 ) +scale = Vector2( 0.995, 1.0113 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 2 ) +region_enabled = true +region_rect = Rect2( 117, 28, 3, 6 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="end" type="Position2D" parent="Hip/Torso/arm_l/hand_l"] +position = Vector2( -0.5, 4 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="shoulder_l" type="Sprite" parent="Hip/Torso/arm_l"] +position = Vector2( -0.913425, -1.12376 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -0.5 ) +region_enabled = true +region_rect = Rect2( 115, 7, 6, 4 ) + +[node name="Head" type="Sprite" parent="Hip/Torso"] +position = Vector2( 0, -10 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -4 ) +region_enabled = true +region_rect = Rect2( 102, 2, 7, 8 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/Torso/Head"] +position = Vector2( -0.0730991, -6.94428 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "idle" +anims/casting = SubResource( 1 ) +anims/idle = SubResource( 2 ) +anims/rest = SubResource( 3 ) +anims/run = SubResource( 4 ) +blend_times = [ "casting", "run", 1.0, "run", "idle", 1.0, "run", "rest", 1.0 ] + +[node name="AnimationTree" type="AnimationTree" parent="."] +tree_root = SubResource( 9 ) +anim_player = NodePath("../AnimationPlayer") +active = true +parameters/RunScale/scale = 1.0 +parameters/walking/blend_amount = 0.0 diff --git a/game/characters/CharacterSideModel.tscn b/game/characters/CharacterSideModel.tscn new file mode 100644 index 0000000..ec03e22 --- /dev/null +++ b/game/characters/CharacterSideModel.tscn @@ -0,0 +1,2113 @@ +[gd_scene load_steps=12 format=2] + +[ext_resource path="res://characters/char_t1_outline_split.png" type="Texture" id=1] +[ext_resource path="res://player/HumanoidCharacterBones2D.gd" type="Script" id=2] + +[sub_resource type="Animation" id=1] +resource_name = "casting" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/leg_l/foot_l/Position2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/leg_l/foot_l/Position2D:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -0.150298, -0.150298, -0.150298 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/leg_l/foot_l:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/leg_l/foot_l:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -2.18314, -2.18314, -2.18314 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/leg_l:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ), Vector2( 1.91221, 1.50001 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/leg_l:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -7.17636, -7.17636, -7.17636 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/Head:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ), Vector2( 0, -10 ), Vector2( 0, -10 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/leg_r/foot_r/Position2D:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 7.771 ), Vector2( 0, 7.771 ), Vector2( 0, 7.771 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/leg_r/foot_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/leg_r/foot_r:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/leg_r/foot_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/leg_r:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -2, 1 ), Vector2( -2, 1.29 ), Vector2( -2, 1 ), Vector2( -2, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/leg_r:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 6.92582, 6.92582, 6.92582, 6.92582 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ), Vector2( -0.5, 4 ), Vector2( -0.5, 4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 102.313, 97.3286, 102.313, 102.313 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Torso/arm_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -8 ), Vector2( 4, -8 ), Vector2( 4, -8 ), Vector2( 4, -8 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -0.372368, -5.92958, -8.40393, -0.372368 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ), Vector2( 0, 5 ), Vector2( 0, 5 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -109.724, -91.7756, -109.724, -109.724 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 4.9682, 25.8311, 4.9682, 4.9682 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -1.5 ), Vector2( 0, -1.5 ), Vector2( 0, -1.5 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Shadow:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ), Vector2( -0.5, 14 ), Vector2( -0.5, 14 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ), Vector2( 1, -0.2 ), Vector2( 1, -0.2 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Torso:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -2 ), Vector2( -0.0923008, -1.07587 ), Vector2( 0, -2 ), Vector2( 0, -2 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso:rotation_degrees") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, -6.16061, 0.0, 0.0 ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ), Vector2( 0, -14 ), Vector2( 0, -14 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:rotation_degrees") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/38/type = "value" +tracks/38/path = NodePath("hand_r:z_index") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 1, 1, 1 ] +} +tracks/39/type = "value" +tracks/39/path = NodePath("Hip/Torso/arm_l/hand_l:z_index") +tracks/39/interp = 1 +tracks/39/loop_wrap = true +tracks/39/imported = false +tracks/39/enabled = true +tracks/39/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 1, 1, 1 ] +} + +[sub_resource type="Animation" id=2] +resource_name = "idle" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/leg_l/foot_l/Position2D:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -0.150298, -0.150298, -0.150298 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/leg_l/foot_l:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/leg_l:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.433445, 0.433445, 0.433445 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/leg_r/foot_r/Position2D:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/leg_r/foot_r:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/leg_r:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip:rotation_degrees") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/leg_l/foot_l/Position2D:position") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ) ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/leg_l/foot_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/leg_l:position") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ) ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/Head:position") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ), Vector2( 0, -10 ), Vector2( 0, -10 ) ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/leg_r/foot_r/Position2D:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 7.771 ), Vector2( 0, 7.771 ), Vector2( 0, 7.771 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/leg_r/foot_r:position") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ) ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/leg_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -2, 1 ), Vector2( -2, 1 ), Vector2( -2, 1 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ), Vector2( -0.5, 4 ), Vector2( -0.5, 4 ) ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l:position") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -8 ), Vector2( 4, -8 ), Vector2( 4, -8 ) ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ), Vector2( 0, 5 ), Vector2( 0, 5 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ) ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -1.5 ), Vector2( 0, -1.5 ), Vector2( 0, -1.5 ) ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Shadow:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ), Vector2( -0.5, 14 ), Vector2( -0.5, 14 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ), Vector2( 1, -0.2 ), Vector2( 1, -0.2 ) ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip/Torso:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -2 ), Vector2( 6.95694e-05, -1.42717 ), Vector2( 0, -2 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:position") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ), Vector2( 0, -14 ), Vector2( 0, -14 ) ] +} +tracks/38/type = "value" +tracks/38/path = NodePath("hand_r:z_index") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ 0, 0 ] +} + +[sub_resource type="Animation" id=3] +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/leg_l/foot_l/Position2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/leg_l/foot_l/Position2D:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.150298 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/leg_l/foot_l:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/leg_l/foot_l:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/leg_l:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/leg_l:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.433445 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/Head:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/leg_r/foot_r/Position2D:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 7.771 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/leg_r/foot_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/leg_r/foot_r:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/leg_r/foot_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/leg_r:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -2, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/leg_r:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Torso/arm_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 4, -8 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -3.50004, -8.61549 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -1.5 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Shadow:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Torso:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -2 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso:rotation_degrees") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:rotation_degrees") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=4] +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/leg_l/foot_l/Position2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/leg_l/foot_l/Position2D:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.150298 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/leg_l/foot_l:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/leg_l/foot_l:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -29.4825, -32.9352, -29.4825 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/leg_l:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/leg_l:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -12.7732, 52.6284, -12.7732 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/Head:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/leg_r/foot_r/Position2D:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 7.771 ), Vector2( 0, 7.771 ), Vector2( 0, 7.771 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/leg_r/foot_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/leg_r/foot_r:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/leg_r/foot_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -23.281, -39.6179, -12.9568 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/leg_r:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -2, 1 ), Vector2( -2, 1 ), Vector2( -2, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/leg_r:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 42.8046, -23.6482, 32.9892 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 43.0307, 9.14528, 43.0307 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Torso/arm_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -8 ), Vector2( 4, -8 ), Vector2( 4, -8 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 13.9033, -32.423, 13.9033 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -15.7785, 0.207499, -15.7785 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -21.3108, 37.0042, -21.3108 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -1.5 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Shadow:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Torso:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.146089, -1.13476 ), Vector2( -0.0730226, -1.35406 ), Vector2( 6.95694e-05, -1.42717 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso:rotation_degrees") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:rotation_degrees") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="AnimationNodeTimeScale" id=5] + +[sub_resource type="AnimationNodeAnimation" id=6] +animation = "idle" + +[sub_resource type="AnimationNodeAnimation" id=7] +animation = "run" + +[sub_resource type="AnimationNodeBlend2" id=8] + +[sub_resource type="AnimationNodeBlendTree" id=9] +graph_offset = Vector2( -453, 345 ) +nodes/RunScale/node = SubResource( 5 ) +nodes/RunScale/position = Vector2( -60, 500 ) +nodes/idle/node = SubResource( 6 ) +nodes/idle/position = Vector2( -240, 340 ) +nodes/output/position = Vector2( 440, 280 ) +nodes/run/node = SubResource( 7 ) +nodes/run/position = Vector2( -280, 500 ) +nodes/walking/node = SubResource( 8 ) +nodes/walking/position = Vector2( 140, 320 ) +node_connections = [ "output", 0, "walking", "walking", 0, "idle", "walking", 1, "RunScale", "RunScale", 0, "run" ] + +[node name="CharacterSideModel" type="CharacterBones"] +rotation = 0.000121465 +script = ExtResource( 2 ) +help = "HUMANOID_BONE_HIP = 0, +HUMANOID_BONE_TORSO = 1, +HUMANOID_BONE_LEG_R = 2, +HUMANOID_BONE_FOOT_R = 3, +HUMANOID_BONE_TOE_R = 4, +HUMANOID_BONE_LEG_L = 5, +HUMANOID_BONE_FOOT_L = 6, +HUMANOID_BONE_TOE_L = 7, +HUMANOID_BONE_ARM_R = 8, +#HUMANOID_BONE_SHOULDER_GUARD_R = 0, +HUMANOID_BONE_HAND_R = 9, +HUMANOID_BONE_FINGERS_R = 10, +HUMANOID_BONE_ARM_L = 11, +#HUMANOID_BONE_SHOULDER_GUARD_L = 0, +HUMANOID_BONE_HAND_L = 12, +HUMANOID_BONE_FINGERS_L = 13, +HUMANOID_BONE_HEAD = 14, +HUMANOID_BONE_HEAD_TOP = 15, +HUMANOID_BONES_MAX = 16," +bones = [ NodePath("Hip"), NodePath("Hip/Torso"), NodePath("Hip/leg_r"), NodePath("Hip/leg_r/foot_r"), NodePath("Hip/leg_r/foot_r/Position2D"), NodePath("Hip/leg_l"), NodePath("Hip/leg_l/foot_l"), NodePath("Hip/leg_l/foot_l/Position2D"), NodePath("arm_r"), NodePath("hand_r"), NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Hip/Torso/arm_l"), NodePath("Hip/Torso/arm_l/hand_l"), NodePath("Hip/Torso/arm_l/hand_l/end"), NodePath("Hip/Torso/Head"), NodePath("Hip/Torso/Head/Position2D") ] + +[node name="arm_r" type="Sprite" parent="."] +position = Vector2( -3.50002, -24.4539 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 1, 11, 4, 9 ) + +[node name="hand_r" type="Sprite" parent="."] +position = Vector2( -3.50002, -18.9539 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 1, 23, 4, 6 ) + +[node name="Hip" type="Sprite" parent="."] +position = Vector2( 0, -14 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 8, 32, 7, 2 ) + +[node name="Shadow" type="Sprite" parent="Hip"] +position = Vector2( -0.5, 14 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 27, 57, 14, 6 ) + +[node name="leg_r" type="Sprite" parent="Hip"] +position = Vector2( -2, 1 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 5, 36, 5, 8 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="foot_r" type="Sprite" parent="Hip/leg_r"] +position = Vector2( -1, 5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 4 ) +region_enabled = true +region_rect = Rect2( 3, 48, 7, 10 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/leg_r/foot_r"] +position = Vector2( 0, 7.771 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="leg_l" type="Sprite" parent="Hip"] +position = Vector2( 2, 1.5 ) +rotation = 0.00756504 +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 14, 36, 5, 9 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="foot_l" type="Sprite" parent="Hip/leg_l"] +position = Vector2( 0, 4.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 4 ) +region_enabled = true +region_rect = Rect2( 14, 48, 5, 10 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/leg_l/foot_l"] +position = Vector2( -0.297693, 7.79954 ) +rotation = -0.0026232 +__meta__ = { +"_edit_bone_": true +} + +[node name="Torso" type="Sprite" parent="Hip"] +position = Vector2( 1.96303e-05, -1.83837 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -5 ) +region_enabled = true +region_rect = Rect2( 8, 13, 9, 12 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="remote_arm_r" type="RemoteTransform2D" parent="Hip/Torso"] +position = Vector2( -3.50004, -8.61549 ) +remote_path = NodePath("../../../arm_r") +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="shoulder_guard_r" type="Sprite" parent="Hip/Torso/remote_arm_r"] +position = Vector2( 1, -0.2 ) +texture = ExtResource( 1 ) +offset = Vector2( -1, -1 ) +region_enabled = true +region_rect = Rect2( 0.39, 5.79, 6.91, 4.67 ) + +[node name="remote_hand_r" type="RemoteTransform2D" parent="Hip/Torso/remote_arm_r"] +position = Vector2( 0, 5.5 ) +remote_path = NodePath("../../../../hand_r") +__meta__ = { +"_edit_bone_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/Torso/remote_arm_r/remote_hand_r"] +position = Vector2( 0, 5 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="Head" type="Sprite" parent="Hip/Torso"] +position = Vector2( 0, -10 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -4 ) +region_enabled = true +region_rect = Rect2( 9, 0, 7, 8 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/Torso/Head"] +position = Vector2( -0.0730991, -6.94428 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="arm_l" type="Sprite" parent="Hip/Torso"] +position = Vector2( 4, -8 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 2.5 ) +region_enabled = true +region_rect = Rect2( 20, 11, 3, 9 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="hand_l" type="Sprite" parent="Hip/Torso/arm_l"] +position = Vector2( 0, 6 ) +z_index = 1 +texture = ExtResource( 1 ) +offset = Vector2( 0, 2 ) +region_enabled = true +region_rect = Rect2( 20, 24, 3, 6 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="end" type="Position2D" parent="Hip/Torso/arm_l/hand_l"] +position = Vector2( -0.5, 4 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="shoulder_l" type="Sprite" parent="Hip/Torso/arm_l"] +position = Vector2( 0, -1.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -0.5 ) +region_enabled = true +region_rect = Rect2( 17.23, 5.56, 6.41, 4.89 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "idle" +anims/casting = SubResource( 1 ) +anims/idle = SubResource( 2 ) +anims/rest = SubResource( 3 ) +anims/run = SubResource( 4 ) +blend_times = [ "casting", "run", 1.0, "run", "idle", 1.0, "run", "rest", 1.0 ] + +[node name="AnimationTree" type="AnimationTree" parent="."] +tree_root = SubResource( 9 ) +anim_player = NodePath("../AnimationPlayer") +active = true +parameters/RunScale/scale = 1.0 +parameters/walking/blend_amount = 0.0 diff --git a/game/characters/CharacterSprite.gd b/game/characters/CharacterSprite.gd new file mode 100644 index 0000000..8565dfc --- /dev/null +++ b/game/characters/CharacterSprite.gd @@ -0,0 +1,133 @@ +extends Sprite + +enum Facing { + FACING_RIGHT = 0, + FACING_LEFT = 1, + FACING_FRONT = 2, + FACING_BACK = 3 +} + +enum Animations { + ANIMATION_RUN = 0, + ANIMATION_WALK = 1, + ANIMATION_CAST = 2, + ANIMATION_STAND = 3 +} + +export(bool) var enabled : bool = true + +export(float) var timer : float = 0.13 + +export(int) var _animset = 0 +export(int) var _animset_size = 16 +export(int) var _animset_count = 16 + +var _min_frame = 0 +var _max_frame = 16 * 16 + +var x = 0 +var y = 0 +var _timer : float = 0 +var _frame : int = 0 + +var _facing : int = Facing.FACING_RIGHT +var _current_animation : int = Animations.ANIMATION_STAND + +# Called when the node enters the scene tree for the first time. +func _ready(): + #set_frame(_min_frame) + update_animset() + #_sprite.set_position(Vector2(x, y)) + +func set_movement_vector(vector): + var a = Vector2(vector.x, vector.z) + a = a.normalized() + + var base = Vector2(0, -1) + + var angle = a.angle_to(base) + PI + + var slice = (2*PI) / _animset_count + + var num_slice = int(angle / slice) + + set_animset(num_slice) + + + +func set_animset(animest_id): + if (animest_id >= _animset_count): + _animset = _animset_count - 1 + + if (animest_id < 0): + _animset = 0 + + _animset = animest_id + + + #_min_frame = _animset * _animset_size + #_max_frame = _animset * _animset_size + _animset_size + +func update_animset(): + _animset = _current_animation * 4 + (_facing) + +func _process(delta): + #set_animset(_animset) + + if not enabled: + set_process(false) + return + + _timer += delta + + if (_timer > timer): + _timer -= timer + _frame += 1 + + if _frame > _animset_size - 1: + _frame = 0 + + set_frame(_frame + (_animset * _animset_size)) + +func set_to_move(): + if _current_animation != Animations.ANIMATION_RUN: + _current_animation = Animations.ANIMATION_RUN + _frame = 0 + +func set_facing(input_direction : Vector2) -> void: + var front : bool = abs(input_direction.dot(Vector2(0, 1))) > 0.9 + + if front: + if input_direction.y > 0: + _facing = Facing.FACING_FRONT + else: + _facing = Facing.FACING_BACK + else: + if input_direction.x > 0.01: + _facing = Facing.FACING_RIGHT + elif input_direction.x < -0.01: + _facing = Facing.FACING_LEFT + + update_animset() + +func set_to_stand(): + if _current_animation != Animations.ANIMATION_STAND: + _current_animation = Animations.ANIMATION_STAND + _frame = 0 + update_animset() + +func set_to_cast(): + if _current_animation != Animations.ANIMATION_CAST: + _current_animation = Animations.ANIMATION_CAST + _frame = 0 + update_animset() + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func a_process(delta): + #x += int(delta * 300) + y += int(delta * 200) + + if y > 700: + y = -50 + + set_position(Vector2(x, y)) diff --git a/game/characters/CharacterTest1Scene.tscn b/game/characters/CharacterTest1Scene.tscn new file mode 100644 index 0000000..fe088e1 --- /dev/null +++ b/game/characters/CharacterTest1Scene.tscn @@ -0,0 +1,109 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://characters/char_t1_outline_split.png" type="Texture" id=1] + + +[node name="CharacterTest1" type="Node2D"] + +[node name="model" type="Sprite" parent="."] +visible = false +texture = ExtResource( 1 ) +offset = Vector2( 0, -15.5 ) +region_enabled = true +region_rect = Rect2( 49, 21, 13, 37 ) + +[node name="Shadow" type="Sprite" parent="."] +position = Vector2( -0.5, 0 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 27, 57, 14, 6 ) + +[node name="RightUpperHand" type="Sprite" parent="."] +position = Vector2( -3.5, -25.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 1, 11, 4, 9 ) + +[node name="RightLowerHand" type="Sprite" parent="."] +position = Vector2( -3.47278, -19.9516 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 1, 23, 4, 8 ) + +[node name="Torso" type="Sprite" parent="."] +position = Vector2( 0, -16 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -5 ) +region_enabled = true +region_rect = Rect2( 8, 13, 9, 12 ) + +[node name="LeftShoulderGuard" type="Sprite" parent="."] +position = Vector2( -2.5, -25 ) +texture = ExtResource( 1 ) +offset = Vector2( -1, -1 ) +region_enabled = true +region_rect = Rect2( 0.39, 5.79, 6.91, 4.67 ) + +[node name="Head" type="Sprite" parent="."] +position = Vector2( 0, -26 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -4 ) +region_enabled = true +region_rect = Rect2( 9, 0, 7, 8 ) + +[node name="LeftUpperArm" type="Sprite" parent="."] +position = Vector2( 4, -24 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 2.5 ) +region_enabled = true +region_rect = Rect2( 20, 11, 3, 9 ) + +[node name="RightShoulderGuard" type="Sprite" parent="."] +position = Vector2( 4, -25.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -0.5 ) +region_enabled = true +region_rect = Rect2( 17.23, 5.56, 6.41, 4.89 ) + +[node name="RightUpperLeg" type="Sprite" parent="."] +position = Vector2( -2, -13 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 5, 36, 5, 8 ) + +[node name="RightLowerLeg" type="Sprite" parent="."] +position = Vector2( -3, -8 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 4 ) +region_enabled = true +region_rect = Rect2( 3, 48, 7, 10 ) + +[node name="LeftUpperLeg" type="Sprite" parent="."] +position = Vector2( 2, -12.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 14, 36, 5, 9 ) + +[node name="LeftLowerLeg" type="Sprite" parent="."] +position = Vector2( 2, -8 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 4 ) +region_enabled = true +region_rect = Rect2( 14, 48, 5, 10 ) + +[node name="Hip" type="Sprite" parent="."] +position = Vector2( 0, -14 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 8, 32, 7, 2 ) + +[node name="LeftLowerArm" type="Sprite" parent="."] +position = Vector2( 4, -18 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 2 ) +region_enabled = true +region_rect = Rect2( 20, 24, 3, 6 ) diff --git a/game/characters/NaturalistSheetRenderer.tscn b/game/characters/NaturalistSheetRenderer.tscn new file mode 100644 index 0000000..3475155 --- /dev/null +++ b/game/characters/NaturalistSheetRenderer.tscn @@ -0,0 +1,52 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://characters/naturalist_characteratlas.tres" type="CharacterAtlas" id=1] +[ext_resource path="res://player/CharacterSkeleton2DGD.gd" type="Script" id=2] +[ext_resource path="res://characters/CharacterSideModel.tscn" type="PackedScene" id=5] +[ext_resource path="res://characters/CharacterFrontModel.tscn" type="PackedScene" id=6] + +[node name="Character" type="CharacterSkeleton2D"] +entity_type = 1 +attach_point_paths/0_left_hand = NodePath("") +attach_point_paths/1_right_hand = NodePath("") +attach_point_paths/2_torso = NodePath("") +attach_point_paths/3_root = NodePath("") +attach_point_paths/4_right_hip = NodePath("") +attach_point_paths/5_left_hip = NodePath("") +attach_point_paths/6_spine_2 = NodePath("") +attach_point_paths/7_weapon_left = NodePath("") +attach_point_paths/8_weapon_right = NodePath("") +attach_point_paths/9_weapon_left_back = NodePath("") +attach_point_paths/10_weapon_right_back = NodePath("") +attach_point_paths/11_weapon_shield_left = NodePath("") +script = ExtResource( 2 ) +front_node_path = NodePath("CharacterFrontModel") +front_animation_player_path = NodePath("../Character/CharacterFrontModel/AnimationPlayer") +front_animation_tree_path = NodePath("../Character/CharacterFrontModel/AnimationTree") +side_node_path = NodePath("CharacterSideModel") +side_animation_player_path = NodePath("../Character/CharacterSideModel/AnimationPlayer") +side_animation_tree_path = NodePath("../Character/CharacterSideModel/AnimationTree") +character_atlas = ExtResource( 1 ) + +[node name="CharacterFrontModel" parent="." instance=ExtResource( 6 )] +visible = false + +[node name="Torso" parent="CharacterFrontModel/Hip" index="1"] +position = Vector2( 0, -2.33066 ) + +[node name="leg_r" parent="CharacterFrontModel/Hip/Torso" index="0"] +position = Vector2( -2, 1 ) + +[node name="CharacterSideModel" parent="." instance=ExtResource( 5 )] + +[node name="arm_r" parent="CharacterSideModel" index="0"] +position = Vector2( -3.49998, -24.142 ) + +[node name="hand_r" parent="CharacterSideModel" index="1"] +position = Vector2( -3.49998, -18.642 ) + +[node name="Torso" parent="CharacterSideModel/Hip" index="3"] +position = Vector2( 5.75098e-05, -1.52647 ) + +[editable path="CharacterFrontModel"] +[editable path="CharacterSideModel"] diff --git a/game/characters/SheetCharacter.gd b/game/characters/SheetCharacter.gd new file mode 100644 index 0000000..be0576c --- /dev/null +++ b/game/characters/SheetCharacter.gd @@ -0,0 +1,27 @@ +extends CharacterSkeleton2D + +export(NodePath) var sprite_path : NodePath + +var _sprite : Sprite +var _standing = true + +func _ready(): + _sprite = get_node(sprite_path) + +func get_sprite() -> Sprite: + return _sprite + +func move_dir(input_dir): + if _standing: + _standing = false + _sprite.set_to_move() + + _sprite.set_facing(input_dir) + +func stand(): + if _standing: + return + + _standing = true + + _sprite.set_to_stand() diff --git a/game/characters/SheetCharacter.tscn b/game/characters/SheetCharacter.tscn new file mode 100644 index 0000000..beba3ca --- /dev/null +++ b/game/characters/SheetCharacter.tscn @@ -0,0 +1,37 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://testsave.png" type="Texture" id=1] +[ext_resource path="res://characters/CharacterSprite.gd" type="Script" id=2] +[ext_resource path="res://characters/SheetCharacter.gd" type="Script" id=3] +[ext_resource path="res://lights/light32x16.png" type="Texture" id=4] + +[node name="SheetCharacter" type="CharacterSkeleton2D"] +entity_type = 1 +attach_point_paths/0_left_hand = NodePath("") +attach_point_paths/1_right_hand = NodePath("") +attach_point_paths/2_torso = NodePath("") +attach_point_paths/3_root = NodePath("") +attach_point_paths/4_right_hip = NodePath("") +attach_point_paths/5_left_hip = NodePath("") +attach_point_paths/6_spine_2 = NodePath("") +attach_point_paths/7_weapon_left = NodePath("") +attach_point_paths/8_weapon_right = NodePath("") +attach_point_paths/9_weapon_left_back = NodePath("") +attach_point_paths/10_weapon_right_back = NodePath("") +attach_point_paths/11_weapon_shield_left = NodePath("") +script = ExtResource( 3 ) +sprite_path = NodePath("CharacterSprite") + +[node name="CharacterSprite" type="Sprite" parent="."] +modulate = Color( 0.737255, 0.737255, 0.784314, 1 ) +position = Vector2( 0, -11.906 ) +z_index = 1 +texture = ExtResource( 1 ) +hframes = 16 +vframes = 16 +script = ExtResource( 2 ) +timer = 0.07 + +[node name="Light2D" type="Light2D" parent="."] +texture = ExtResource( 4 ) +texture_scale = 12.0 diff --git a/game/characters/char_t1_outline_split - Copy.png b/game/characters/char_t1_outline_split - Copy.png new file mode 100644 index 0000000..92205db Binary files /dev/null and b/game/characters/char_t1_outline_split - Copy.png differ diff --git a/game/characters/char_t1_outline_split - Copy.png.import b/game/characters/char_t1_outline_split - Copy.png.import new file mode 100644 index 0000000..6da1bd0 --- /dev/null +++ b/game/characters/char_t1_outline_split - Copy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/char_t1_outline_split - Copy.png-88d6d74e7874948f07096fd2e5e6ae3a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://characters/char_t1_outline_split - Copy.png" +dest_files=[ "res://.import/char_t1_outline_split - Copy.png-88d6d74e7874948f07096fd2e5e6ae3a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/characters/char_t1_outline_split.png b/game/characters/char_t1_outline_split.png new file mode 100644 index 0000000..01155ae Binary files /dev/null and b/game/characters/char_t1_outline_split.png differ diff --git a/game/characters/char_t1_outline_split.png.import b/game/characters/char_t1_outline_split.png.import new file mode 100644 index 0000000..56ee596 --- /dev/null +++ b/game/characters/char_t1_outline_split.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/char_t1_outline_split.png-9c3f609f043903cf305339bc84929b57.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://characters/char_t1_outline_split.png" +dest_files=[ "res://.import/char_t1_outline_split.png-9c3f609f043903cf305339bc84929b57.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/characters/naturalist_characteratlas.tres b/game/characters/naturalist_characteratlas.tres new file mode 100644 index 0000000..fd0cbb9 --- /dev/null +++ b/game/characters/naturalist_characteratlas.tres @@ -0,0 +1,43 @@ +[gd_resource type="CharacterAtlas" load_steps=6 format=2] + +[ext_resource path="res://scripts/item_visuals/CharacterAtlas2D.gd" type="Script" id=1] +[ext_resource path="res://characters/char_t1_outline_split.png" type="Texture" id=2] +[ext_resource path="res://scripts/item_visuals/CharacterAtlasEntry2D.gd" type="Script" id=3] + +[sub_resource type="CharacterAtlasEntry" id=1] +script = ExtResource( 3 ) +front_rect = Rect2( 101, 15, 9, 12 ) +back_rect = Rect2( 74, 18, 9, 12 ) +right_rect = Rect2( 8, 13, 9, 12 ) +left_rect = Rect2( 8, 13, 9, 12 ) + +[sub_resource type="CharacterAtlasEntry" id=2] +script = ExtResource( 3 ) +front_rect = Rect2( 102, 2, 7, 8 ) +back_rect = Rect2( 75, 5, 7, 8 ) +right_rect = Rect2( 9, 0, 7, 8 ) +left_rect = Rect2( 9, 0, 7, 8 ) + +[resource] +script = ExtResource( 1 ) +comments = "HUMANOID_BONE_HIP = 0, +HUMANOID_BONE_TORSO = 1, +HUMANOID_BONE_LEG_R = 2, +HUMANOID_BONE_FOOT_R = 3, +HUMANOID_BONE_TOE_R = 4, +HUMANOID_BONE_LEG_L = 5, +HUMANOID_BONE_FOOT_L = 6, +HUMANOID_BONE_TOE_L = 7, +HUMANOID_BONE_ARM_R = 8, +#HUMANOID_BONE_SHOULDER_GUARD_R = 0, +HUMANOID_BONE_HAND_R = 9, +HUMANOID_BONE_FINGERS_R = 10, +HUMANOID_BONE_ARM_L = 11, +#HUMANOID_BONE_SHOULDER_GUARD_L = 0, +HUMANOID_BONE_HAND_L = 12, +HUMANOID_BONE_FINGERS_L = 13, +HUMANOID_BONE_HEAD = 14, +HUMANOID_BONE_HEAD_TOP = 15, +HUMANOID_BONES_MAX = 16," +texture = ExtResource( 2 ) +slots = [ null, SubResource( 1 ), null, null, null, null, null, null, null, null, null, null, null, null, SubResource( 2 ), null ] diff --git a/game/cursors/arrow.png b/game/cursors/arrow.png new file mode 100644 index 0000000..cec826c Binary files /dev/null and b/game/cursors/arrow.png differ diff --git a/game/cursors/arrow.png.import b/game/cursors/arrow.png.import new file mode 100644 index 0000000..e372432 --- /dev/null +++ b/game/cursors/arrow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow.png-8975d88e42d79b69a60ae159f4e1f4b5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://cursors/arrow.png" +dest_files=[ "res://.import/arrow.png-8975d88e42d79b69a60ae159f4e1f4b5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/cursors/arrow16.png b/game/cursors/arrow16.png new file mode 100644 index 0000000..32b9bc0 Binary files /dev/null and b/game/cursors/arrow16.png differ diff --git a/game/cursors/arrow16.png.import b/game/cursors/arrow16.png.import new file mode 100644 index 0000000..464be63 --- /dev/null +++ b/game/cursors/arrow16.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow16.png-baf1bb0bfce3f74c5621ed9d1df2eb9b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://cursors/arrow16.png" +dest_files=[ "res://.import/arrow16.png-baf1bb0bfce3f74c5621ed9d1df2eb9b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/cursors/arrow32.png b/game/cursors/arrow32.png new file mode 100644 index 0000000..6ff0ba5 Binary files /dev/null and b/game/cursors/arrow32.png differ diff --git a/game/cursors/arrow32.png.import b/game/cursors/arrow32.png.import new file mode 100644 index 0000000..b17859a --- /dev/null +++ b/game/cursors/arrow32.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow32.png-a8397e3d9d049a61672b3e705e50dc8e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://cursors/arrow32.png" +dest_files=[ "res://.import/arrow32.png-a8397e3d9d049a61672b3e705e50dc8e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/cursors/arrow8.png b/game/cursors/arrow8.png new file mode 100644 index 0000000..cec826c Binary files /dev/null and b/game/cursors/arrow8.png differ diff --git a/game/cursors/arrow8.png.import b/game/cursors/arrow8.png.import new file mode 100644 index 0000000..33b08d0 --- /dev/null +++ b/game/cursors/arrow8.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow8.png-01663b296f01b225563cadfe6a06ca3b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://cursors/arrow8.png" +dest_files=[ "res://.import/arrow8.png-01663b296f01b225563cadfe6a06ca3b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/cursors/attack16.png b/game/cursors/attack16.png new file mode 100644 index 0000000..129ed67 Binary files /dev/null and b/game/cursors/attack16.png differ diff --git a/game/cursors/attack16.png.import b/game/cursors/attack16.png.import new file mode 100644 index 0000000..e723e97 --- /dev/null +++ b/game/cursors/attack16.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/attack16.png-0100f945c7e85d87a58a394beb8c3ac7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://cursors/attack16.png" +dest_files=[ "res://.import/attack16.png-0100f945c7e85d87a58a394beb8c3ac7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/cursors/autoload/CursorManager.gd b/game/cursors/autoload/CursorManager.gd new file mode 100644 index 0000000..b20d1cd --- /dev/null +++ b/game/cursors/autoload/CursorManager.gd @@ -0,0 +1,44 @@ +extends Node + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(Texture) var default_cursor : Texture +export(Texture) var loot_cursor : Texture +export(Texture) var attack_cursor : Texture +export(Texture) var speak_cursor : Texture +export(Texture) var drag_drop_cursor : Texture +export(Texture) var forbidden_cursor : Texture +export(Texture) var text_cursor : Texture +export(Vector2) var text_cursor_hotspot : Vector2 + +func _ready(): + # Changes only the arrow shape of the cursor. + # This is similar to changing it in the project settings. + Input.set_custom_mouse_cursor(default_cursor, Input.CURSOR_ARROW) + Input.set_custom_mouse_cursor(attack_cursor, Input.CURSOR_MOVE) + Input.set_custom_mouse_cursor(loot_cursor, Input.CURSOR_CROSS) + Input.set_custom_mouse_cursor(speak_cursor, Input.CURSOR_HELP) + Input.set_custom_mouse_cursor(drag_drop_cursor, Input.CURSOR_CAN_DROP) + Input.set_custom_mouse_cursor(forbidden_cursor, Input.CURSOR_FORBIDDEN) + Input.set_custom_mouse_cursor(text_cursor, Input.CURSOR_IBEAM, text_cursor_hotspot) + + # Changes a specific shape of the cursor (here, the I-beam shape). +# Input.set_custom_mouse_cursor(beam, Input.CURSOR_IBEAM) diff --git a/game/cursors/autoload/CursorManager.tscn b/game/cursors/autoload/CursorManager.tscn new file mode 100644 index 0000000..5bf7760 --- /dev/null +++ b/game/cursors/autoload/CursorManager.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=9 format=2] + +[ext_resource path="res://cursors/autoload/CursorManager.gd" type="Script" id=1] +[ext_resource path="res://cursors/arrow16.png" type="Texture" id=2] +[ext_resource path="res://cursors/loot16.png" type="Texture" id=3] +[ext_resource path="res://cursors/attack16.png" type="Texture" id=4] +[ext_resource path="res://cursors/speak.png" type="Texture" id=5] +[ext_resource path="res://cursors/drag_drop.png" type="Texture" id=6] +[ext_resource path="res://cursors/forbidden.png" type="Texture" id=7] +[ext_resource path="res://cursors/ibeam.png" type="Texture" id=8] + + + + +[node name="CursorManager" type="Node"] +script = ExtResource( 1 ) +default_cursor = ExtResource( 2 ) +loot_cursor = ExtResource( 3 ) +attack_cursor = ExtResource( 4 ) +speak_cursor = ExtResource( 5 ) +drag_drop_cursor = ExtResource( 6 ) +forbidden_cursor = ExtResource( 7 ) +text_cursor = ExtResource( 8 ) +text_cursor_hotspot = Vector2( 2, 11 ) diff --git a/game/cursors/drag_drop.png b/game/cursors/drag_drop.png new file mode 100644 index 0000000..4571488 Binary files /dev/null and b/game/cursors/drag_drop.png differ diff --git a/game/cursors/drag_drop.png.import b/game/cursors/drag_drop.png.import new file mode 100644 index 0000000..24046f0 --- /dev/null +++ b/game/cursors/drag_drop.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/drag_drop.png-58ba6c1076e0e56b172a8f284947b983.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://cursors/drag_drop.png" +dest_files=[ "res://.import/drag_drop.png-58ba6c1076e0e56b172a8f284947b983.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/cursors/forbidden.png b/game/cursors/forbidden.png new file mode 100644 index 0000000..0af4aef Binary files /dev/null and b/game/cursors/forbidden.png differ diff --git a/game/cursors/forbidden.png.import b/game/cursors/forbidden.png.import new file mode 100644 index 0000000..f18e65d --- /dev/null +++ b/game/cursors/forbidden.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/forbidden.png-67d5cfbbc30970ad36439934779f2e25.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://cursors/forbidden.png" +dest_files=[ "res://.import/forbidden.png-67d5cfbbc30970ad36439934779f2e25.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/cursors/ibeam.png b/game/cursors/ibeam.png new file mode 100644 index 0000000..3eff87d Binary files /dev/null and b/game/cursors/ibeam.png differ diff --git a/game/cursors/ibeam.png.import b/game/cursors/ibeam.png.import new file mode 100644 index 0000000..b2d875c --- /dev/null +++ b/game/cursors/ibeam.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/ibeam.png-e50b72e1e43b2d2baac009b39086d913.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://cursors/ibeam.png" +dest_files=[ "res://.import/ibeam.png-e50b72e1e43b2d2baac009b39086d913.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/cursors/loot16.png b/game/cursors/loot16.png new file mode 100644 index 0000000..8a93ddd Binary files /dev/null and b/game/cursors/loot16.png differ diff --git a/game/cursors/loot16.png.import b/game/cursors/loot16.png.import new file mode 100644 index 0000000..c1ff230 --- /dev/null +++ b/game/cursors/loot16.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/loot16.png-79d648584fcb03dcceede3d2ba9034a5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://cursors/loot16.png" +dest_files=[ "res://.import/loot16.png-79d648584fcb03dcceede3d2ba9034a5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/cursors/speak.png b/game/cursors/speak.png new file mode 100644 index 0000000..909748c Binary files /dev/null and b/game/cursors/speak.png differ diff --git a/game/cursors/speak.png.import b/game/cursors/speak.png.import new file mode 100644 index 0000000..1ad60f0 --- /dev/null +++ b/game/cursors/speak.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/speak.png-3d1d6946ebdb2def63f939fa7c38a224.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://cursors/speak.png" +dest_files=[ "res://.import/speak.png-3d1d6946ebdb2def63f939fa7c38a224.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/debug/FreeLookCam.tscn b/game/debug/FreeLookCam.tscn new file mode 100644 index 0000000..424fdff --- /dev/null +++ b/game/debug/FreeLookCam.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://debug/FreeLookCamera.gd" type="Script" id=1] + + + +[node name="Camera" type="Camera"] +transform = Transform( 0.844995, 0.305893, -0.438648, -0.0119927, 0.830883, 0.556318, 0.534639, -0.464826, 0.705761, -7.76488, 10.4889, 10.3045 ) +v_offset = 0.27 +current = true +script = ExtResource( 1 ) diff --git a/game/debug/FreeLookCamera.gd b/game/debug/FreeLookCamera.gd new file mode 100644 index 0000000..edf4c11 --- /dev/null +++ b/game/debug/FreeLookCamera.gd @@ -0,0 +1,98 @@ +extends Camera + +const SPEED = 10 +const TURN_SENSITIVITY = 0.15 + +var x_rot : float = 0.0 +var y_rot : float = 0.0 + +var mouse_right_down : bool = false + +var input_dir : Vector2 = Vector2() + +var key_left : bool = false +var key_right : bool = false +var key_up : bool = false +var key_down : bool = false + +var cursor_grabbed : bool = false +var last_cursor_pos : Vector2 = Vector2() + +func _physics_process(delta): + process_input(delta) + process_movement(delta) + +func process_input(delta: float) -> void: + var key_dir = Vector2() + + if key_up: + key_dir.y -= 1 + if key_down: + key_dir.y += 1 + if key_left: + key_dir.x -= 1 + if key_right: + key_dir.x += 1 + + input_dir = key_dir + + if input_dir.length_squared() > 0.1: + input_dir = input_dir.normalized() + +func _unhandled_input(event : InputEvent) -> void: + if event is InputEventMouseButton and event.button_index == BUTTON_RIGHT and event.device != -1: + mouse_right_down = event.pressed + + if event is InputEventKey: + if event.scancode == KEY_W: + key_up = event.pressed + if event.scancode == KEY_S: + key_down = event.pressed + if event.scancode == KEY_A: + key_left = event.pressed + if event.scancode == KEY_D: + key_right = event.pressed + + if event is InputEventMouseMotion and mouse_right_down and event.device != -1: + rotate_delta(-event.relative.x, -event.relative.y) + + update_cursor_mode() + +func process_movement(delta): + if input_dir.x > 0.1 or input_dir.y > 0.1 or input_dir.x < -0.1 or input_dir.y < -0.1: + var forward = transform.basis.xform(Vector3(0, 0, 1)) + + var right = forward.cross(Vector3(0, 1, 0)) * -input_dir.x + forward *= input_dir.y #only potentially make it zero after getting the right vector + + var dir : Vector3 = forward + dir += right + + if dir.length_squared() > 0.1: + dir = dir.normalized() + translation += dir * delta * SPEED + +func update_cursor_mode(): + if mouse_right_down: + if not cursor_grabbed: + cursor_grabbed = true + last_cursor_pos = get_viewport().get_mouse_position() + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + else: + if cursor_grabbed: + cursor_grabbed = false + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + get_viewport().warp_mouse(last_cursor_pos) + +func rotate_delta(x_delta : float, y_delta : float) -> void: + x_rot += y_delta * TURN_SENSITIVITY + y_rot += x_delta * TURN_SENSITIVITY + + x_rot = clamp(x_rot, -90, 90) + + if y_rot >= 360: + y_rot = 0 + if y_rot < 0: + y_rot = 360 + + rotation_degrees = Vector3(x_rot, y_rot, 0.0) diff --git a/game/default_bus_layout.tres b/game/default_bus_layout.tres new file mode 100644 index 0000000..eb4accc --- /dev/null +++ b/game/default_bus_layout.tres @@ -0,0 +1,3 @@ +[gd_resource type="AudioBusLayout" format=2] + +[resource] diff --git a/game/ess_data.json b/game/ess_data.json new file mode 100644 index 0000000..41b42e6 --- /dev/null +++ b/game/ess_data.json @@ -0,0 +1,3 @@ +[ + +] diff --git a/game/fonts/OFL.txt b/game/fonts/OFL.txt new file mode 100644 index 0000000..3e89993 --- /dev/null +++ b/game/fonts/OFL.txt @@ -0,0 +1,93 @@ +Copyright (c) 2011, Peter Hull (peter.hull@oikoi.com), with Reserved Font Name "VT323". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/game/fonts/VT323-Regular.ttf b/game/fonts/VT323-Regular.ttf new file mode 100644 index 0000000..8eeeae6 Binary files /dev/null and b/game/fonts/VT323-Regular.ttf differ diff --git a/game/icon.png b/game/icon.png new file mode 100644 index 0000000..6ad9b43 Binary files /dev/null and b/game/icon.png differ diff --git a/game/icon.png.flags b/game/icon.png.flags new file mode 100644 index 0000000..5130fd1 --- /dev/null +++ b/game/icon.png.flags @@ -0,0 +1 @@ +gen_mipmaps=false diff --git a/game/icon.png.import b/game/icon.png.import new file mode 100644 index 0000000..f48d5ac --- /dev/null +++ b/game/icon.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ] + +[params] + +compress/mode=3 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=true +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/lights/light128x64.png b/game/lights/light128x64.png new file mode 100644 index 0000000..edb54a8 Binary files /dev/null and b/game/lights/light128x64.png differ diff --git a/game/lights/light128x64.png.import b/game/lights/light128x64.png.import new file mode 100644 index 0000000..cf40f8a --- /dev/null +++ b/game/lights/light128x64.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/light128x64.png-6cca5ab716c06fb666706e84bf7d683f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://lights/light128x64.png" +dest_files=[ "res://.import/light128x64.png-6cca5ab716c06fb666706e84bf7d683f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/lights/light128x64.tres b/game/lights/light128x64.tres new file mode 100644 index 0000000..ea82987 --- /dev/null +++ b/game/lights/light128x64.tres @@ -0,0 +1,91 @@ +[gd_resource type="Resource" load_steps=15 format=2] + +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_material.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_node_universal_property.gd" type="Script" id=2] +[ext_resource path="res://addons/mat_maker_gd/nodes/simple/shape.gd" type="Script" id=3] +[ext_resource path="res://addons/mat_maker_gd/nodes/other/output_image.gd" type="Script" id=4] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/colorize.gd" type="Script" id=5] + +[sub_resource type="Resource" id=1] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=2] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=3] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=4] +script = ExtResource( 3 ) +graph_position = Vector2( -180, 20 ) +image = SubResource( 2 ) +shape_type = 0 +sides = 6 +radius = SubResource( 3 ) +edge = SubResource( 1 ) + +[sub_resource type="Resource" id=7] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=8] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 7 ) + +[sub_resource type="Resource" id=6] +script = ExtResource( 4 ) +graph_position = Vector2( 340, 40 ) +image = SubResource( 8 ) +postfix = "" + +[sub_resource type="Resource" id=9] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 2 ) + +[sub_resource type="Resource" id=10] +script = ExtResource( 5 ) +graph_position = Vector2( 60, 20 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0, 0, 0, 1, 1, 0.242188, 0.242188, 0.242188, 1 ) +image = SubResource( 7 ) +input = SubResource( 9 ) + +[resource] +script = ExtResource( 1 ) +image_size = Vector2( 128, 64 ) +nodes = [ SubResource( 4 ), SubResource( 6 ), SubResource( 10 ) ] diff --git a/game/lights/light256x128.png b/game/lights/light256x128.png new file mode 100644 index 0000000..e02c34f Binary files /dev/null and b/game/lights/light256x128.png differ diff --git a/game/lights/light256x128.png.import b/game/lights/light256x128.png.import new file mode 100644 index 0000000..7e70e27 --- /dev/null +++ b/game/lights/light256x128.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/light256x128.png-5482f6191d95a2320de4a10b747ab3c9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://lights/light256x128.png" +dest_files=[ "res://.import/light256x128.png-5482f6191d95a2320de4a10b747ab3c9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/lights/light256x128.tres b/game/lights/light256x128.tres new file mode 100644 index 0000000..87f00e3 --- /dev/null +++ b/game/lights/light256x128.tres @@ -0,0 +1,91 @@ +[gd_resource type="Resource" load_steps=15 format=2] + +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_material.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_node_universal_property.gd" type="Script" id=2] +[ext_resource path="res://addons/mat_maker_gd/nodes/simple/shape.gd" type="Script" id=3] +[ext_resource path="res://addons/mat_maker_gd/nodes/other/output_image.gd" type="Script" id=4] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/colorize.gd" type="Script" id=5] + +[sub_resource type="Resource" id=1] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=2] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=3] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=4] +script = ExtResource( 3 ) +graph_position = Vector2( -140, 20 ) +image = SubResource( 2 ) +shape_type = 0 +sides = 6 +radius = SubResource( 3 ) +edge = SubResource( 1 ) + +[sub_resource type="Resource" id=7] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=8] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 7 ) + +[sub_resource type="Resource" id=6] +script = ExtResource( 4 ) +graph_position = Vector2( 320, 40 ) +image = SubResource( 8 ) +postfix = "" + +[sub_resource type="Resource" id=9] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 2 ) + +[sub_resource type="Resource" id=10] +script = ExtResource( 5 ) +graph_position = Vector2( 80, 40 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0, 0, 0, 1, 1, 0.28125, 0.28125, 0.28125, 1 ) +image = SubResource( 7 ) +input = SubResource( 9 ) + +[resource] +script = ExtResource( 1 ) +image_size = Vector2( 256, 128 ) +nodes = [ SubResource( 4 ), SubResource( 6 ), SubResource( 10 ) ] diff --git a/game/lights/light32x16.png b/game/lights/light32x16.png new file mode 100644 index 0000000..7f88797 Binary files /dev/null and b/game/lights/light32x16.png differ diff --git a/game/lights/light32x16.png.import b/game/lights/light32x16.png.import new file mode 100644 index 0000000..99f63ec --- /dev/null +++ b/game/lights/light32x16.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/light32x16.png-8fd1a6e3474934b5ebd7d31e24937197.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://lights/light32x16.png" +dest_files=[ "res://.import/light32x16.png-8fd1a6e3474934b5ebd7d31e24937197.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/lights/light32x16.tres b/game/lights/light32x16.tres new file mode 100644 index 0000000..40f432f --- /dev/null +++ b/game/lights/light32x16.tres @@ -0,0 +1,90 @@ +[gd_resource type="Resource" load_steps=15 format=2] + +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_material.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_node_universal_property.gd" type="Script" id=2] +[ext_resource path="res://addons/mat_maker_gd/nodes/simple/shape.gd" type="Script" id=3] +[ext_resource path="res://addons/mat_maker_gd/nodes/other/output_image.gd" type="Script" id=4] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/colorize.gd" type="Script" id=5] + +[sub_resource type="Resource" id=1] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=2] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=3] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=4] +script = ExtResource( 3 ) +graph_position = Vector2( -180, 20 ) +image = SubResource( 2 ) +shape_type = 0 +sides = 6 +radius = SubResource( 3 ) +edge = SubResource( 1 ) + +[sub_resource type="Resource" id=11] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=6] +script = ExtResource( 4 ) +graph_position = Vector2( 320, 40 ) +image = SubResource( 11 ) +postfix = "" + +[sub_resource type="Resource" id=7] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=9] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 2 ) + +[sub_resource type="Resource" id=10] +script = ExtResource( 5 ) +graph_position = Vector2( 60, 20 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0, 0, 0, 1, 1, 0.242188, 0.242188, 0.242188, 1 ) +image = SubResource( 7 ) +input = SubResource( 9 ) + +[resource] +script = ExtResource( 1 ) +image_size = Vector2( 32, 16 ) +nodes = [ SubResource( 4 ), SubResource( 6 ), SubResource( 10 ) ] diff --git a/game/menu/ExitButton.gd b/game/menu/ExitButton.gd new file mode 100644 index 0000000..f987a1f --- /dev/null +++ b/game/menu/ExitButton.gd @@ -0,0 +1,8 @@ +extends Button + +func _ready(): + if OS.has_feature("mobile") || OS.has_feature("web"): + hide() + +func _pressed(): + get_tree().quit() diff --git a/game/modules/core/crafting/1_test_craft.tres b/game/modules/core/crafting/1_test_craft.tres new file mode 100644 index 0000000..3b5e483 --- /dev/null +++ b/game/modules/core/crafting/1_test_craft.tres @@ -0,0 +1,36 @@ +[gd_resource type="CraftRecipe" load_steps=8 format=2] + +[ext_resource path="res://modules/core/item_templates/2_test.tres" type="ItemTemplate" id=1] +[ext_resource path="res://modules/core/item_templates/1_gold.tres" type="ItemTemplate" id=2] + +[sub_resource type="CraftRecipeHelper" id=1] +item = ExtResource( 2 ) +count = 1 + +[sub_resource type="CraftRecipeHelper" id=2] +item = ExtResource( 2 ) +count = 1 + +[sub_resource type="ItemTemplate" id=3] +resource_name = "sdfsdf" +text_name = "sdfsdf" + +[sub_resource type="CraftRecipeHelper" id=4] +item = SubResource( 3 ) + +[sub_resource type="CraftRecipeHelper" id=5] +item = ExtResource( 1 ) +count = 1 + +[resource] +resource_name = "Test" +id = 1 +text_name = "Test" +category = 1 +sub_category = 1 +required_materials_count = 2 +RequiredMaterials_0 = SubResource( 1 ) +RequiredMaterials_1 = SubResource( 2 ) +required_tools_count = 1 +RequiredTools_0 = SubResource( 4 ) +item = SubResource( 5 ) diff --git a/game/modules/core/crafting/2_chest_of_the_infinite_wisdom.tres b/game/modules/core/crafting/2_chest_of_the_infinite_wisdom.tres new file mode 100644 index 0000000..84a6a10 --- /dev/null +++ b/game/modules/core/crafting/2_chest_of_the_infinite_wisdom.tres @@ -0,0 +1,21 @@ +[gd_resource type="CraftRecipe" load_steps=5 format=2] + +[ext_resource path="res://modules/core/item_templates/2_test.tres" type="ItemTemplate" id=1] +[ext_resource path="res://modules/core/item_templates/3_chest_of_the_infinite_wisdom.tres" type="ItemTemplate" id=2] + +[sub_resource type="CraftRecipeHelper" id=1] +item = ExtResource( 1 ) +count = 1 + +[sub_resource type="CraftRecipeHelper" id=2] +item = ExtResource( 2 ) +count = 1 + +[resource] +resource_name = "Chest of the Infinite Wisdom" +id = 2 +text_name = "Chest of the Infinite Wisdom" +category = 3 +required_materials_count = 1 +RequiredMaterials_0 = SubResource( 1 ) +item = SubResource( 2 ) diff --git a/game/modules/core/entity_resources/1_mana_resource.tres b/game/modules/core/entity_resources/1_mana_resource.tres new file mode 100644 index 0000000..909f1ad --- /dev/null +++ b/game/modules/core/entity_resources/1_mana_resource.tres @@ -0,0 +1,7 @@ +[gd_resource type="EntityResource" load_steps=2 format=2] + +[ext_resource path="res://scripts/resources/ManaResource.gd" type="Script" id=1] + +[resource] +id = 1 +script = ExtResource( 1 ) diff --git a/game/modules/core/entity_skills/1_test.tres b/game/modules/core/entity_skills/1_test.tres new file mode 100644 index 0000000..f921777 --- /dev/null +++ b/game/modules/core/entity_skills/1_test.tres @@ -0,0 +1,4 @@ +[gd_resource type="EntitySkillData" format=2] + +[resource] +id = 1 diff --git a/game/modules/core/game_module.tres b/game/modules/core/game_module.tres new file mode 100644 index 0000000..ea6b951 --- /dev/null +++ b/game/modules/core/game_module.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" load_steps=3 format=2] + +[ext_resource path="res://scripts/game_modules/GameModule.gd" type="Script" id=1] +[ext_resource path="res://modules/core/resource_db.tres" type="ESSResourceDBStatic" id=2] + +[resource] +script = ExtResource( 1 ) +enabled = true +resource_db = ExtResource( 2 ) diff --git a/game/modules/core/item_templates/1_gold.tres b/game/modules/core/item_templates/1_gold.tres new file mode 100644 index 0000000..f4eb3d6 --- /dev/null +++ b/game/modules/core/item_templates/1_gold.tres @@ -0,0 +1,11 @@ +[gd_resource type="ItemTemplate" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/items/gold.tres" type="Texture" id=1] + + +[resource] +resource_name = "Gold" +id = 1 +item_type = 13 +icon = ExtResource( 1 ) +text_name = "Gold" diff --git a/game/modules/core/item_templates/2_test.tres b/game/modules/core/item_templates/2_test.tres new file mode 100644 index 0000000..7202038 --- /dev/null +++ b/game/modules/core/item_templates/2_test.tres @@ -0,0 +1,14 @@ +[gd_resource type="ItemTemplate" load_steps=4 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/spells/13_aspect_of_bees_rank_1.tres" type="Spell" id=1] +[ext_resource path="res://modules/icons/3_iron_bar.tres" type="Texture" id=2] +[ext_resource path="res://scripts/items/ItemTemplateGD.gd" type="Script" id=3] + +[resource] +resource_name = "Iron Bar" +id = 2 +stack_size = 10 +icon = ExtResource( 2 ) +use_spell = ExtResource( 1 ) +text_name = "Iron Bar" +script = ExtResource( 3 ) diff --git a/game/modules/core/item_templates/3_chest_of_the_infinite_wisdom.tres b/game/modules/core/item_templates/3_chest_of_the_infinite_wisdom.tres new file mode 100644 index 0000000..7520c29 --- /dev/null +++ b/game/modules/core/item_templates/3_chest_of_the_infinite_wisdom.tres @@ -0,0 +1,17 @@ +[gd_resource type="ItemTemplate" load_steps=4 format=2] + +[ext_resource path="res://modules/icons/4_chest_of_the_infinite_wisdom.tres" type="Texture" id=2] +[ext_resource path="res://scripts/items/ItemTemplateGD.gd" type="Script" id=3] +[ext_resource path="res://modules/entity_classes/naturalist/spells/14_amplify_pain_rank_1.tres" type="Spell" id=4] + +[resource] +resource_name = "Chest of the Infinite Wisdom" +id = 3 +item_type = 1 +rarity = 6 +armor_type = 1 +equip_slot = 3 +icon = ExtResource( 2 ) +use_spell = ExtResource( 4 ) +text_name = "Chest of the Infinite Wisdom" +script = ExtResource( 3 ) diff --git a/game/modules/core/model_visuals/1_chest_of_the_infinite_wisdom.tres b/game/modules/core/model_visuals/1_chest_of_the_infinite_wisdom.tres new file mode 100644 index 0000000..b25acbd --- /dev/null +++ b/game/modules/core/model_visuals/1_chest_of_the_infinite_wisdom.tres @@ -0,0 +1,19 @@ +[gd_resource type="ModelVisual" load_steps=4 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf_v3.png" type="Texture" id=1] + +[sub_resource type="ModelVisualEntry" id=1] +override_layer = 5 +entity_type = 1 +bone = 3 +entry_0/texture = ExtResource( 1 ) + +[sub_resource type="ModelVisualEntry" id=2] +override_layer = 5 +entity_type = 1 +bone = 4 +entry_0/texture = ExtResource( 1 ) + +[resource] +layer = 5 +get_visual_entries = [ SubResource( 1 ), SubResource( 2 ) ] diff --git a/game/modules/core/resource_db.tres b/game/modules/core/resource_db.tres new file mode 100644 index 0000000..d17c5ed --- /dev/null +++ b/game/modules/core/resource_db.tres @@ -0,0 +1,15 @@ +[gd_resource type="ESSResourceDBStatic" load_steps=8 format=2] + +[ext_resource path="res://modules/core/item_templates/2_test.tres" type="ItemTemplate" id=1] +[ext_resource path="res://modules/core/item_templates/3_chest_of_the_infinite_wisdom.tres" type="ItemTemplate" id=2] +[ext_resource path="res://modules/core/crafting/2_chest_of_the_infinite_wisdom.tres" type="CraftRecipe" id=3] +[ext_resource path="res://modules/core/entity_skills/1_test.tres" type="EntitySkillData" id=4] +[ext_resource path="res://modules/core/item_templates/1_gold.tres" type="ItemTemplate" id=5] +[ext_resource path="res://modules/core/crafting/1_test_craft.tres" type="CraftRecipe" id=6] +[ext_resource path="res://modules/core/entity_resources/1_mana_resource.tres" type="EntityResource" id=7] + +[resource] +entity_resources = [ ExtResource( 7 ) ] +entity_skills = [ ExtResource( 4 ) ] +craft_recipes = [ ExtResource( 6 ), ExtResource( 3 ) ] +item_templates = [ ExtResource( 5 ), ExtResource( 1 ), ExtResource( 2 ) ] diff --git a/game/modules/entity_classes/elementalist/2_elementalist.tres b/game/modules/entity_classes/elementalist/2_elementalist.tres new file mode 100644 index 0000000..00fd6be --- /dev/null +++ b/game/modules/entity_classes/elementalist/2_elementalist.tres @@ -0,0 +1,27 @@ +[gd_resource type="EntityClassData" load_steps=51 format=2] + +[ext_resource path="res://scripts/entities/EntityClassDataGD.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/elementalist/character_specs/2_elementalist_fire.tres" type="CharacterSpec" id=2] +[ext_resource path="res://modules/entity_classes/elementalist/character_specs/3_elementalist_water.tres" type="CharacterSpec" id=3] +[ext_resource path="res://modules/entity_classes/elementalist/character_specs/4_elementalist_ice.tres" type="CharacterSpec" id=4] +[ext_resource path="res://modules/entity_classes/elementalist/spells/34_cold.tres" type="Spell" id=5] +[ext_resource path="res://modules/entity_classes/elementalist/spells/32_heat.tres" type="Spell" id=6] +[ext_resource path="res://modules/entity_classes/elementalist/spells/33_normal.tres" type="Spell" id=7] + +[sub_resource type="SimpleLevelStatData" id=1] +agility = 4 +strength = 5 +stamina = 5 +intellect = 3 +spirit = 5 + +[resource] +resource_name = "Elementalist" +id = 2 +text_name = "Elementalist" +stat_data = SubResource( 43 ) +playstyle_type = 2 +specs = [ ExtResource( 2 ), ExtResource( 3 ), ExtResource( 4 ) ] +spells = [ ExtResource( 6 ), ExtResource( 7 ), ExtResource( 5 ) ] +start_spells = [ ExtResource( 7 ) ] +script = ExtResource( 1 ) diff --git a/game/modules/entity_classes/elementalist/character_specs/2_elementalist_fire.tres b/game/modules/entity_classes/elementalist/character_specs/2_elementalist_fire.tres new file mode 100644 index 0000000..759368f --- /dev/null +++ b/game/modules/entity_classes/elementalist/character_specs/2_elementalist_fire.tres @@ -0,0 +1,6 @@ +[gd_resource type="CharacterSpec" format=2] + +[resource] +resource_name = "Elementalist Fire" +id = 2 +text_name = "Elementalist Fire" diff --git a/game/modules/entity_classes/elementalist/character_specs/3_elementalist_water.tres b/game/modules/entity_classes/elementalist/character_specs/3_elementalist_water.tres new file mode 100644 index 0000000..44ccb22 --- /dev/null +++ b/game/modules/entity_classes/elementalist/character_specs/3_elementalist_water.tres @@ -0,0 +1,6 @@ +[gd_resource type="CharacterSpec" format=2] + +[resource] +resource_name = "Elementalist Water" +id = 3 +text_name = "Elementalist Water" diff --git a/game/modules/entity_classes/elementalist/character_specs/4_elementalist_ice.tres b/game/modules/entity_classes/elementalist/character_specs/4_elementalist_ice.tres new file mode 100644 index 0000000..8a517e5 --- /dev/null +++ b/game/modules/entity_classes/elementalist/character_specs/4_elementalist_ice.tres @@ -0,0 +1,6 @@ +[gd_resource type="CharacterSpec" format=2] + +[resource] +resource_name = "Elementalist Ice" +id = 4 +text_name = "Elementalist Ice" diff --git a/game/modules/entity_classes/elementalist/spells/31_overload.tres b/game/modules/entity_classes/elementalist/spells/31_overload.tres new file mode 100644 index 0000000..d45c8b0 --- /dev/null +++ b/game/modules/entity_classes/elementalist/spells/31_overload.tres @@ -0,0 +1,40 @@ +[gd_resource type="Spell" load_steps=7 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/icons/amplify_pain.tres" type="Texture" id=1] +[ext_resource path="res://scripts/resources/spell_effect_visual_basic.gd" type="Script" id=2] +[ext_resource path="res://scripts/spells/amplify_pain.gd" type="Script" id=3] +[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/nature2d/AmplifyPain.tscn" type="PackedScene" id=4] +[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/nature2d/NatureCast.tscn" type="PackedScene" id=5] + + + + +[sub_resource type="SpellEffectVisual" id=1] +script = ExtResource( 2 ) +spell_cast_effect_left_hand = ExtResource( 5 ) +spell_cast_effect_right_hand = ExtResource( 5 ) +torso_aura_effect_time = 0.0 +root_aura_effect_time = 0.0 +torso_spell_cast_finish_effect = ExtResource( 4 ) +torso_spell_cast_finish_effect_time = 0.4 +root_spell_cast_finish_effect_time = 1.0 + +[resource] +resource_name = "Overload" +id = 31 +spell_type = 8 +level = 10 +icon = ExtResource( 1 ) +visual_spell_effects = SubResource( 1 ) +text_name = "Overload" +text_description = "Range: 26m. +Channeled. Free. +Causes your dots to deal 10% more damage." +range_range = 26.0 +cast_cast_time = 1.5 +damage_type = 16 +damage_min = 130 +damage_max = 150 +aoe_targetType = -1910718371 +aoe_colliderType = 1065353216 +script = ExtResource( 3 ) diff --git a/game/modules/entity_classes/elementalist/spells/32_heat.tres b/game/modules/entity_classes/elementalist/spells/32_heat.tres new file mode 100644 index 0000000..35c17a3 --- /dev/null +++ b/game/modules/entity_classes/elementalist/spells/32_heat.tres @@ -0,0 +1,7 @@ +[gd_resource type="Spell" format=2] + +[resource] +resource_name = "Heat" +id = 32 +text_name = "Heat" +text_description = "Increase the temperature of your body, to allow the usange of all fire spells. Water spells are still usable at reduced efficiency." diff --git a/game/modules/entity_classes/elementalist/spells/33_normal.tres b/game/modules/entity_classes/elementalist/spells/33_normal.tres new file mode 100644 index 0000000..0ae7212 --- /dev/null +++ b/game/modules/entity_classes/elementalist/spells/33_normal.tres @@ -0,0 +1,7 @@ +[gd_resource type="Spell" format=2] + +[resource] +resource_name = "Normal temperature" +id = 33 +text_name = "Normal temperature" +text_description = "Use water spells at maximum efficiency. Some ice and fire based spells are also usable at reduced efficiency." diff --git a/game/modules/entity_classes/elementalist/spells/34_cold.tres b/game/modules/entity_classes/elementalist/spells/34_cold.tres new file mode 100644 index 0000000..11bcbbc --- /dev/null +++ b/game/modules/entity_classes/elementalist/spells/34_cold.tres @@ -0,0 +1,7 @@ +[gd_resource type="Spell" format=2] + +[resource] +resource_name = "Cold" +id = 34 +text_name = "Cold" +text_description = "Reduce the temperature of your body, to allow the usange of all ice spells. Water spells are still usable at reduced efficiency." diff --git a/game/modules/entity_classes/naturalist/1_naturalist.tres b/game/modules/entity_classes/naturalist/1_naturalist.tres new file mode 100644 index 0000000..0f3c93c --- /dev/null +++ b/game/modules/entity_classes/naturalist/1_naturalist.tres @@ -0,0 +1,43 @@ +[gd_resource type="EntityClassData" load_steps=28 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/spells/16_close_wounds_rank_1.tres" type="Spell" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/spells/19_uproot_rank_1.tres" type="Spell" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/spells/11_aspect_of_wasps_rank_1.tres" type="Spell" id=3] +[ext_resource path="res://modules/core/entity_resources/1_mana_resource.tres" type="EntityResource" id=4] +[ext_resource path="res://modules/entity_classes/naturalist/spells/13_aspect_of_bees_rank_1.tres" type="Spell" id=5] +[ext_resource path="res://modules/entity_classes/naturalist/specs/aspects.tres" type="CharacterSpec" id=6] +[ext_resource path="res://modules/entity_classes/naturalist/spells/10_aspect_of_scorpions_rank_1.tres" type="Spell" id=7] +[ext_resource path="res://modules/entity_classes/naturalist/specs/nature.tres" type="CharacterSpec" id=8] +[ext_resource path="res://scripts/ai/EntityAIGD.gd" type="Script" id=9] +[ext_resource path="res://modules/entity_classes/naturalist/spells/17_ironbark_rank_1.tres" type="Spell" id=10] +[ext_resource path="res://modules/entity_classes/naturalist/spells/24_attunement_rank_1.tres" type="Spell" id=11] +[ext_resource path="res://modules/entity_classes/naturalist/spells/14_amplify_pain_rank_1.tres" type="Spell" id=12] +[ext_resource path="res://scripts/entities/EntityClassDataGD.gd" type="Script" id=13] +[ext_resource path="res://modules/entity_classes/naturalist/spells/36_regrow.tres" type="Spell" id=14] +[ext_resource path="res://modules/entity_classes/naturalist/spells/12_aspect_of_wolves_rank_1.tres" type="Spell" id=15] +[ext_resource path="res://modules/entity_classes/naturalist/spells/26_rest.tres" type="Spell" id=16] +[ext_resource path="res://modules/entity_classes/naturalist/spells/22_shield_of_barbs_rank_1.tres" type="Spell" id=17] +[ext_resource path="res://modules/entity_classes/naturalist/spells/21_strength_of_nature_rank_1.tres" type="Spell" id=18] +[ext_resource path="res://modules/entity_classes/naturalist/spells/20_root_rank_1.tres" type="Spell" id=19] +[ext_resource path="res://modules/entity_classes/naturalist/spells/23_calm_rank_1.tres" type="Spell" id=20] +[ext_resource path="res://modules/entity_classes/naturalist/spells/35_strike.tres" type="Spell" id=21] +[ext_resource path="res://modules/entity_classes/naturalist/spells/25_inner_will.tres" type="Spell" id=22] +[ext_resource path="res://modules/entity_classes/naturalist/spells/15_rejuvenation_rank_1.tres" type="Spell" id=23] +[ext_resource path="res://modules/entity_classes/naturalist/spells/18_natures_swiftness_rank_1.tres" type="Spell" id=24] +[ext_resource path="res://modules/entity_classes/naturalist/specs/melee.tres" type="CharacterSpec" id=25] +[ext_resource path="res://modules/entity_classes/naturalist/stats/player_statdata.tres" type="StatData" id=26] + +[sub_resource type="EntityAI" id=1] +script = ExtResource( 9 ) + +[resource] +resource_name = "Naturalist" +id = 1 +text_name = "Naturalist" +stat_data = ExtResource( 26 ) +entity_resources = [ ExtResource( 4 ) ] +specs = [ ExtResource( 6 ), ExtResource( 25 ), ExtResource( 8 ) ] +spells = [ ExtResource( 7 ), ExtResource( 3 ), ExtResource( 15 ), ExtResource( 5 ), ExtResource( 12 ), ExtResource( 23 ), ExtResource( 1 ), ExtResource( 10 ), ExtResource( 24 ), ExtResource( 2 ), ExtResource( 19 ), ExtResource( 18 ), ExtResource( 17 ), ExtResource( 20 ), ExtResource( 11 ), ExtResource( 22 ), ExtResource( 16 ), ExtResource( 21 ), ExtResource( 14 ) ] +start_spells = [ ExtResource( 7 ), ExtResource( 21 ), ExtResource( 14 ) ] +ais = [ SubResource( 1 ) ] +script = ExtResource( 13 ) diff --git a/game/modules/entity_classes/naturalist/1_naturalist_vendor.tres b/game/modules/entity_classes/naturalist/1_naturalist_vendor.tres new file mode 100644 index 0000000..bac5d1c --- /dev/null +++ b/game/modules/entity_classes/naturalist/1_naturalist_vendor.tres @@ -0,0 +1,23 @@ +[gd_resource type="EntityClassData" load_steps=8 format=2] + +[ext_resource path="res://modules/core/item_templates/2_test.tres" type="ItemTemplate" id=1] +[ext_resource path="res://modules/core/item_templates/3_chest_of_the_infinite_wisdom.tres" type="ItemTemplate" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/stats/mob_statdata.tres" type="StatData" id=3] +[ext_resource path="res://scripts/entities/EntityClassDataGD.gd" type="Script" id=13] + +[sub_resource type="VendorItemDataEntry" id=1] +item = ExtResource( 2 ) + +[sub_resource type="VendorItemDataEntry" id=2] +item = ExtResource( 1 ) + +[sub_resource type="VendorItemData" id=3] +vendor_datas = [ SubResource( 1 ), SubResource( 2 ) ] + +[resource] +resource_name = "Naturalist" +id = 1 +text_name = "Naturalist" +stat_data = ExtResource( 3 ) +vendor_item_data = SubResource( 3 ) +script = ExtResource( 13 ) diff --git a/game/modules/entity_classes/naturalist/aura_groups/1_aspect_of_scorpions.tres b/game/modules/entity_classes/naturalist/aura_groups/1_aspect_of_scorpions.tres new file mode 100644 index 0000000..46c7350 --- /dev/null +++ b/game/modules/entity_classes/naturalist/aura_groups/1_aspect_of_scorpions.tres @@ -0,0 +1,3 @@ +[gd_resource type="AuraGroup" format=2] + +[resource] diff --git a/game/modules/entity_classes/naturalist/aura_groups/2_aspect_of_wasps.tres b/game/modules/entity_classes/naturalist/aura_groups/2_aspect_of_wasps.tres new file mode 100644 index 0000000..46c7350 --- /dev/null +++ b/game/modules/entity_classes/naturalist/aura_groups/2_aspect_of_wasps.tres @@ -0,0 +1,3 @@ +[gd_resource type="AuraGroup" format=2] + +[resource] diff --git a/game/modules/entity_classes/naturalist/aura_groups/3_aspect_of_wolves.tres b/game/modules/entity_classes/naturalist/aura_groups/3_aspect_of_wolves.tres new file mode 100644 index 0000000..46c7350 --- /dev/null +++ b/game/modules/entity_classes/naturalist/aura_groups/3_aspect_of_wolves.tres @@ -0,0 +1,3 @@ +[gd_resource type="AuraGroup" format=2] + +[resource] diff --git a/game/modules/entity_classes/naturalist/aura_groups/4_aspect_of_bees.tres b/game/modules/entity_classes/naturalist/aura_groups/4_aspect_of_bees.tres new file mode 100644 index 0000000..46c7350 --- /dev/null +++ b/game/modules/entity_classes/naturalist/aura_groups/4_aspect_of_bees.tres @@ -0,0 +1,3 @@ +[gd_resource type="AuraGroup" format=2] + +[resource] diff --git a/game/modules/entity_classes/naturalist/effect_data/aspect_of_scorpions.tres b/game/modules/entity_classes/naturalist/effect_data/aspect_of_scorpions.tres new file mode 100644 index 0000000..9d05767 --- /dev/null +++ b/game/modules/entity_classes/naturalist/effect_data/aspect_of_scorpions.tres @@ -0,0 +1,15 @@ +[gd_resource type="SpellEffectVisual" load_steps=4 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/nature2d/NatureCast.tscn" type="PackedScene" id=1] +[ext_resource path="res://scripts/resources/spell_effect_visual_basic.gd" type="Script" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/nature2d/AOSCastFinish.tscn" type="PackedScene" id=3] + +[resource] +script = ExtResource( 2 ) +spell_cast_effect_left_hand = ExtResource( 1 ) +spell_cast_effect_right_hand = ExtResource( 1 ) +torso_aura_effect_time = 0.0 +root_aura_effect_time = 0.0 +torso_spell_cast_finish_effect = ExtResource( 3 ) +torso_spell_cast_finish_effect_time = 4.0 +root_spell_cast_finish_effect_time = 1.0 diff --git a/game/modules/entity_classes/naturalist/effect_data/natures_swiftness.tres b/game/modules/entity_classes/naturalist/effect_data/natures_swiftness.tres new file mode 100644 index 0000000..1712626 --- /dev/null +++ b/game/modules/entity_classes/naturalist/effect_data/natures_swiftness.tres @@ -0,0 +1,12 @@ +[gd_resource type="SpellEffectVisual" load_steps=3 format=2] + +[ext_resource path="res://scripts/resources/spell_effect_visual_basic.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/nature2d/NautreSwiftness.tscn" type="PackedScene" id=2] + +[resource] +script = ExtResource( 1 ) +torso_aura_effect_time = 0.0 +root_aura_effect = ExtResource( 2 ) +root_aura_effect_time = 0.0 +torso_spell_cast_finish_effect_time = 1.0 +root_spell_cast_finish_effect_time = 1.0 diff --git a/game/modules/entity_classes/naturalist/entities/1_naturalist.tres b/game/modules/entity_classes/naturalist/entities/1_naturalist.tres new file mode 100644 index 0000000..b23fa52 --- /dev/null +++ b/game/modules/entity_classes/naturalist/entities/1_naturalist.tres @@ -0,0 +1,15 @@ +[gd_resource type="EntityData" load_steps=4 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/1_naturalist.tres" type="EntityClassData" id=2] +[ext_resource path="res://modules/species/Human/species_human.tres" type="EntitySpeciesData" id=3] +[ext_resource path="res://scripts/entities/EntityDataGD.gd" type="Script" id=4] + +[resource] +resource_name = "Naturalist" +id = 1 +is_playable = true +text_name = "Naturalist" +bag_size = 24 +entity_species_data = ExtResource( 3 ) +entity_class_data = ExtResource( 2 ) +script = ExtResource( 4 ) diff --git a/game/modules/entity_classes/naturalist/entities/2_naturalist_mob.tres b/game/modules/entity_classes/naturalist/entities/2_naturalist_mob.tres new file mode 100644 index 0000000..af0990c --- /dev/null +++ b/game/modules/entity_classes/naturalist/entities/2_naturalist_mob.tres @@ -0,0 +1,14 @@ +[gd_resource type="EntityData" load_steps=4 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/1_naturalist.tres" type="EntityClassData" id=2] +[ext_resource path="res://scripts/entities/EntityDataGD.gd" type="Script" id=3] + +[sub_resource type="LootDataBase" id=1] + +[resource] +resource_name = "Naturalist" +id = 2 +text_name = "Naturalist" +entity_class_data = ExtResource( 2 ) +loot_db = SubResource( 1 ) +script = ExtResource( 3 ) diff --git a/game/modules/entity_classes/naturalist/entities/3_naturalist_trainer.tres b/game/modules/entity_classes/naturalist/entities/3_naturalist_trainer.tres new file mode 100644 index 0000000..afef3e6 --- /dev/null +++ b/game/modules/entity_classes/naturalist/entities/3_naturalist_trainer.tres @@ -0,0 +1,14 @@ +[gd_resource type="EntityData" load_steps=4 format=2] + +[ext_resource path="res://scripts/entities/EntityDataGD.gd" type="Script" id=1] +[ext_resource path="res://modules/species/Human/species_human.tres" type="EntitySpeciesData" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/1_naturalist.tres" type="EntityClassData" id=3] + +[resource] +resource_name = "Naturalist Trainer" +id = 3 +entity_interaction_type = 4 +text_name = "Naturalist Trainer" +entity_species_data = ExtResource( 2 ) +entity_class_data = ExtResource( 3 ) +script = ExtResource( 1 ) diff --git a/game/modules/entity_classes/naturalist/entities/4_naturalist_vendor.tres b/game/modules/entity_classes/naturalist/entities/4_naturalist_vendor.tres new file mode 100644 index 0000000..faba387 --- /dev/null +++ b/game/modules/entity_classes/naturalist/entities/4_naturalist_vendor.tres @@ -0,0 +1,14 @@ +[gd_resource type="EntityData" load_steps=4 format=2] + +[ext_resource path="res://scripts/entities/EntityDataGD.gd" type="Script" id=1] +[ext_resource path="res://modules/species/Human/species_human.tres" type="EntitySpeciesData" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/1_naturalist_vendor.tres" type="EntityClassData" id=3] + +[resource] +resource_name = "Naturalist Vendor" +id = 3 +entity_interaction_type = 5 +text_name = "Naturalist Vendor" +entity_species_data = ExtResource( 2 ) +entity_class_data = ExtResource( 3 ) +script = ExtResource( 1 ) diff --git a/game/modules/entity_classes/naturalist/game_module.tres b/game/modules/entity_classes/naturalist/game_module.tres new file mode 100644 index 0000000..5923e92 --- /dev/null +++ b/game/modules/entity_classes/naturalist/game_module.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" load_steps=3 format=2] + +[ext_resource path="res://scripts/game_modules/GameModule.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/resource_db.tres" type="ESSResourceDBStatic" id=2] + +[resource] +script = ExtResource( 1 ) +enabled = true +resource_db = ExtResource( 2 ) diff --git a/game/modules/entity_classes/naturalist/icons/amplify_pain.tres b/game/modules/entity_classes/naturalist/icons/amplify_pain.tres new file mode 100644 index 0000000..8bed7cb --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/amplify_pain.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-3/beam-jade-2.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/aspect_of_bees.tres b/game/modules/entity_classes/naturalist/icons/aspect_of_bees.tres new file mode 100644 index 0000000..5f9b9e9 --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/aspect_of_bees.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-4/explosion-royal-2.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/aspect_of_scorpions.tres b/game/modules/entity_classes/naturalist/icons/aspect_of_scorpions.tres new file mode 100644 index 0000000..283b228 --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/aspect_of_scorpions.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-2/enchant-acid-2.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/aspect_of_wasps.tres b/game/modules/entity_classes/naturalist/icons/aspect_of_wasps.tres new file mode 100644 index 0000000..401be86 --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/aspect_of_wasps.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-2/enchant-blue-2.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/aspect_of_wolves.tres b/game/modules/entity_classes/naturalist/icons/aspect_of_wolves.tres new file mode 100644 index 0000000..a8af165 --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/aspect_of_wolves.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-4/wild-orange-2.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/attunement.tres b/game/modules/entity_classes/naturalist/icons/attunement.tres new file mode 100644 index 0000000..f31f7e5 --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/attunement.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-4/horror-acid-3.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/calm.tres b/game/modules/entity_classes/naturalist/icons/calm.tres new file mode 100644 index 0000000..58a2e56 --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/calm.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-5/wind-grasp-acid-2.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/close_wounds.tres b/game/modules/entity_classes/naturalist/icons/close_wounds.tres new file mode 100644 index 0000000..b945e36 --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/close_wounds.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-2/heal-jade-2.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/first_aid.tres b/game/modules/entity_classes/naturalist/icons/first_aid.tres new file mode 100644 index 0000000..4c199b6 --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/first_aid.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-1/61.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/inner_will.tres b/game/modules/entity_classes/naturalist/icons/inner_will.tres new file mode 100644 index 0000000..b0cc416 --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/inner_will.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-5/wind-grasp-eerie-2.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/ironbark.tres b/game/modules/entity_classes/naturalist/icons/ironbark.tres new file mode 100644 index 0000000..f00ed7f --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/ironbark.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-2/protect-acid-3.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/natures_swiftness.tres b/game/modules/entity_classes/naturalist/icons/natures_swiftness.tres new file mode 100644 index 0000000..235bb2c --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/natures_swiftness.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-3/haste-royal-2.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/regenerate.tres b/game/modules/entity_classes/naturalist/icons/regenerate.tres new file mode 100644 index 0000000..3c4ceeb --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/regenerate.tres @@ -0,0 +1,9 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-4/wind-blue-1.png" type="Texture" id=1] + + +[resource] +flags = 4 +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/rejuvenation.tres b/game/modules/entity_classes/naturalist/icons/rejuvenation.tres new file mode 100644 index 0000000..52672a8 --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/rejuvenation.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-4/leaf-acid-1.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/root.tres b/game/modules/entity_classes/naturalist/icons/root.tres new file mode 100644 index 0000000..42eb5f7 --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/root.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-3/vines-plain-1.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/shield_of_barbs.tres b/game/modules/entity_classes/naturalist/icons/shield_of_barbs.tres new file mode 100644 index 0000000..6063752 --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/shield_of_barbs.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-2/protect-eerie-2.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/strength_of_nature.tres b/game/modules/entity_classes/naturalist/icons/strength_of_nature.tres new file mode 100644 index 0000000..46c481a --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/strength_of_nature.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-3/lighting-acid-2.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/test.tres b/game/modules/entity_classes/naturalist/icons/test.tres new file mode 100644 index 0000000..5315e41 --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/test.tres @@ -0,0 +1,9 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons.png" type="Texture" id=1] + + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 80, 928, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/icons/uproot.tres b/game/modules/entity_classes/naturalist/icons/uproot.tres new file mode 100644 index 0000000..fd19ec0 --- /dev/null +++ b/game/modules/entity_classes/naturalist/icons/uproot.tres @@ -0,0 +1,8 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-3/vines-plain-2.png" type="Texture" id=1] + + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/entity_classes/naturalist/resource_db.tres b/game/modules/entity_classes/naturalist/resource_db.tres new file mode 100644 index 0000000..d8e30f8 --- /dev/null +++ b/game/modules/entity_classes/naturalist/resource_db.tres @@ -0,0 +1,44 @@ +[gd_resource type="ESSResourceDBStatic" load_steps=39 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/spells/16_close_wounds_rank_1.tres" type="Spell" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/specs/nature/talent_regrow_r2.tres" type="Spell" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/specs/aspects/talent_aspect_of_scorpions_r3.tres" type="Spell" id=3] +[ext_resource path="res://modules/entity_classes/naturalist/spells/19_uproot_rank_1.tres" type="Spell" id=4] +[ext_resource path="res://modules/entity_classes/naturalist/spells/11_aspect_of_wasps_rank_1.tres" type="Spell" id=5] +[ext_resource path="res://modules/entity_classes/naturalist/specs/aspects/talent_aspect_of_scorpions_r1.tres" type="Spell" id=6] +[ext_resource path="res://modules/entity_classes/naturalist/specs/aspects/talent_aspect_of_scorpions_r2.tres" type="Spell" id=7] +[ext_resource path="res://modules/entity_classes/naturalist/specs/nature/talent_regrow_r3.tres" type="Spell" id=8] +[ext_resource path="res://modules/entity_classes/naturalist/spells/13_aspect_of_bees_rank_1.tres" type="Spell" id=9] +[ext_resource path="res://modules/entity_classes/naturalist/specs/melee/talent_strike_r1.tres" type="Spell" id=10] +[ext_resource path="res://modules/entity_classes/naturalist/spells/10_aspect_of_scorpions_rank_1.tres" type="Spell" id=11] +[ext_resource path="res://modules/entity_classes/naturalist/specs/melee/talent_strike_r2.tres" type="Spell" id=12] +[ext_resource path="res://modules/entity_classes/naturalist/spells/17_ironbark_rank_1.tres" type="Spell" id=13] +[ext_resource path="res://modules/entity_classes/naturalist/spells/24_attunement_rank_1.tres" type="Spell" id=14] +[ext_resource path="res://modules/entity_classes/naturalist/specs/melee/talent_strike_r4.tres" type="Spell" id=15] +[ext_resource path="res://modules/entity_classes/naturalist/specs/melee/talent_strike_r5.tres" type="Spell" id=16] +[ext_resource path="res://modules/entity_classes/naturalist/specs/melee/talent_strike_r3.tres" type="Spell" id=17] +[ext_resource path="res://modules/entity_classes/naturalist/spells/27_aspect_of_scorpions.tres" type="Spell" id=18] +[ext_resource path="res://modules/entity_classes/naturalist/spells/29_aspect_of_wolves.tres" type="Spell" id=19] +[ext_resource path="res://modules/entity_classes/naturalist/spells/28_aspectofwasps.tres" type="Spell" id=20] +[ext_resource path="res://modules/entity_classes/naturalist/specs/nature/talent_regrow_r1.tres" type="Spell" id=21] +[ext_resource path="res://modules/entity_classes/naturalist/spells/30_aspect_of_bees.tres" type="Spell" id=22] +[ext_resource path="res://modules/entity_classes/naturalist/spells/14_amplify_pain_rank_1.tres" type="Spell" id=23] +[ext_resource path="res://modules/entity_classes/naturalist/spells/12_aspect_of_wolves_rank_1.tres" type="Spell" id=25] +[ext_resource path="res://modules/entity_classes/naturalist/spells/26_rest.tres" type="Spell" id=26] +[ext_resource path="res://modules/entity_classes/naturalist/spells/22_shield_of_barbs_rank_1.tres" type="Spell" id=27] +[ext_resource path="res://modules/entity_classes/naturalist/spells/21_strength_of_nature_rank_1.tres" type="Spell" id=28] +[ext_resource path="res://modules/entity_classes/naturalist/spells/20_root_rank_1.tres" type="Spell" id=30] +[ext_resource path="res://modules/entity_classes/naturalist/spells/23_calm_rank_1.tres" type="Spell" id=31] +[ext_resource path="res://modules/entity_classes/naturalist/spells/25_inner_will.tres" type="Spell" id=32] +[ext_resource path="res://modules/entity_classes/naturalist/spells/15_rejuvenation_rank_1.tres" type="Spell" id=33] +[ext_resource path="res://modules/entity_classes/naturalist/spells/18_natures_swiftness_rank_1.tres" type="Spell" id=34] +[ext_resource path="res://modules/entity_classes/naturalist/entities/1_naturalist.tres" type="EntityData" id=35] +[ext_resource path="res://modules/entity_classes/naturalist/entities/2_naturalist_mob.tres" type="EntityData" id=36] +[ext_resource path="res://modules/entity_classes/naturalist/spells/35_strike.tres" type="Spell" id=37] +[ext_resource path="res://modules/entity_classes/naturalist/spells/36_regrow.tres" type="Spell" id=38] +[ext_resource path="res://modules/entity_classes/naturalist/entities/3_naturalist_trainer.tres" type="EntityData" id=50] +[ext_resource path="res://modules/entity_classes/naturalist/entities/4_naturalist_vendor.tres" type="EntityData" id=51] + +[resource] +entity_datas = [ ExtResource( 36 ), ExtResource( 35 ), ExtResource( 50 ), ExtResource( 51 ) ] +spells = [ ExtResource( 11 ), ExtResource( 5 ), ExtResource( 25 ), ExtResource( 9 ), ExtResource( 23 ), ExtResource( 33 ), ExtResource( 1 ), ExtResource( 13 ), ExtResource( 34 ), ExtResource( 4 ), ExtResource( 30 ), ExtResource( 28 ), ExtResource( 27 ), ExtResource( 31 ), ExtResource( 14 ), ExtResource( 32 ), ExtResource( 26 ), ExtResource( 18 ), ExtResource( 20 ), ExtResource( 19 ), ExtResource( 22 ), ExtResource( 37 ), ExtResource( 38 ), ExtResource( 6 ), ExtResource( 7 ), ExtResource( 3 ), ExtResource( 10 ), ExtResource( 12 ), ExtResource( 17 ), ExtResource( 15 ), ExtResource( 16 ), ExtResource( 2 ), ExtResource( 8 ), ExtResource( 21 ) ] diff --git a/game/modules/entity_classes/naturalist/specs/aspects.tres b/game/modules/entity_classes/naturalist/specs/aspects.tres new file mode 100644 index 0000000..cb57907 --- /dev/null +++ b/game/modules/entity_classes/naturalist/specs/aspects.tres @@ -0,0 +1,16 @@ +[gd_resource type="CharacterSpec" load_steps=4 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/specs/aspects/talent_aspect_of_scorpions_r1.tres" type="Spell" id=4] +[ext_resource path="res://modules/entity_classes/naturalist/specs/aspects/talent_aspect_of_scorpions_r3.tres" type="Spell" id=5] +[ext_resource path="res://modules/entity_classes/naturalist/specs/aspects/talent_aspect_of_scorpions_r2.tres" type="Spell" id=6] + +[resource] +resource_name = "Aspects" +text_name = "Aspects" +num_rows = 2 +row_0/size = 1 +row_0/column_0/size = 3 +row_0/column_0/entry_0 = ExtResource( 4 ) +row_0/column_0/entry_1 = ExtResource( 6 ) +row_0/column_0/entry_2 = ExtResource( 5 ) +row_1/size = 0 diff --git a/game/modules/entity_classes/naturalist/specs/aspects/talent_aspect_of_scorpions_r1.tres b/game/modules/entity_classes/naturalist/specs/aspects/talent_aspect_of_scorpions_r1.tres new file mode 100644 index 0000000..3e7696c --- /dev/null +++ b/game/modules/entity_classes/naturalist/specs/aspects/talent_aspect_of_scorpions_r1.tres @@ -0,0 +1,16 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/auras/CastTimeReductionAura.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/aspect_of_scorpions.tres" type="Texture" id=2] + +[resource] +resource_name = "Improved Asperct of Scorpions" +rank = 1 +icon = ExtResource( 2 ) +text_name = "Improved Asperct of Scorpions" +aura_type = 6 +aura_hide = true +aura_text_description = "Reduces the cast time of Aspect of Scorpions by %%reduction_value seconds." +script = ExtResource( 1 ) +spell_name = "Aspect of Scorpions" +reduction_value = 0.1 diff --git a/game/modules/entity_classes/naturalist/specs/aspects/talent_aspect_of_scorpions_r2.tres b/game/modules/entity_classes/naturalist/specs/aspects/talent_aspect_of_scorpions_r2.tres new file mode 100644 index 0000000..5f4aee4 --- /dev/null +++ b/game/modules/entity_classes/naturalist/specs/aspects/talent_aspect_of_scorpions_r2.tres @@ -0,0 +1,16 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/auras/CastTimeReductionAura.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/aspect_of_scorpions.tres" type="Texture" id=2] + +[resource] +resource_name = "Improved Asperct of Scorpions" +rank = 2 +icon = ExtResource( 2 ) +text_name = "Improved Asperct of Scorpions" +aura_type = 6 +aura_hide = true +aura_text_description = "Reduces the cast time of Aspect of Scorpions by %%reduction_value seconds." +script = ExtResource( 1 ) +spell_name = "Aspect of Scorpions" +reduction_value = 0.2 diff --git a/game/modules/entity_classes/naturalist/specs/aspects/talent_aspect_of_scorpions_r3.tres b/game/modules/entity_classes/naturalist/specs/aspects/talent_aspect_of_scorpions_r3.tres new file mode 100644 index 0000000..65e5e6e --- /dev/null +++ b/game/modules/entity_classes/naturalist/specs/aspects/talent_aspect_of_scorpions_r3.tres @@ -0,0 +1,16 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/auras/CastTimeReductionAura.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/aspect_of_scorpions.tres" type="Texture" id=2] + +[resource] +resource_name = "Improved Asperct of Scorpions" +rank = 3 +icon = ExtResource( 2 ) +text_name = "Improved Asperct of Scorpions" +aura_type = 6 +aura_hide = true +aura_text_description = "Reduces the cast time of Aspect of Scorpions by %%reduction_value seconds." +script = ExtResource( 1 ) +spell_name = "Aspect of Scorpions" +reduction_value = 0.3 diff --git a/game/modules/entity_classes/naturalist/specs/melee.tres b/game/modules/entity_classes/naturalist/specs/melee.tres new file mode 100644 index 0000000..a071277 --- /dev/null +++ b/game/modules/entity_classes/naturalist/specs/melee.tres @@ -0,0 +1,19 @@ +[gd_resource type="CharacterSpec" load_steps=6 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/specs/melee/talent_strike_r1.tres" type="Spell" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/specs/melee/talent_strike_r5.tres" type="Spell" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/specs/melee/talent_strike_r4.tres" type="Spell" id=3] +[ext_resource path="res://modules/entity_classes/naturalist/specs/melee/talent_strike_r3.tres" type="Spell" id=4] +[ext_resource path="res://modules/entity_classes/naturalist/specs/melee/talent_strike_r2.tres" type="Spell" id=5] + +[resource] +resource_name = "Melee" +text_name = "Melee" +num_rows = 1 +row_0/size = 1 +row_0/column_0/size = 5 +row_0/column_0/entry_0 = ExtResource( 1 ) +row_0/column_0/entry_1 = ExtResource( 5 ) +row_0/column_0/entry_2 = ExtResource( 4 ) +row_0/column_0/entry_3 = ExtResource( 3 ) +row_0/column_0/entry_4 = ExtResource( 2 ) diff --git a/game/modules/entity_classes/naturalist/specs/melee/talent_strike_r1.tres b/game/modules/entity_classes/naturalist/specs/melee/talent_strike_r1.tres new file mode 100644 index 0000000..fad51bf --- /dev/null +++ b/game/modules/entity_classes/naturalist/specs/melee/talent_strike_r1.tres @@ -0,0 +1,16 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/auras/SpellDamageModAura.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/amplify_pain.tres" type="Texture" id=2] + +[resource] +resource_name = "Improved Strike" +rank = 1 +icon = ExtResource( 2 ) +text_name = "Improved Strike" +aura_type = 6 +aura_hide = true +aura_text_description = "Reduces the cast time of Aspect of Scorpions by %%reduction_value seconds." +script = ExtResource( 1 ) +spell_name = "Strike" +mod_value = 40.0 diff --git a/game/modules/entity_classes/naturalist/specs/melee/talent_strike_r2.tres b/game/modules/entity_classes/naturalist/specs/melee/talent_strike_r2.tres new file mode 100644 index 0000000..dc8a8ba --- /dev/null +++ b/game/modules/entity_classes/naturalist/specs/melee/talent_strike_r2.tres @@ -0,0 +1,16 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/auras/SpellDamageModAura.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/amplify_pain.tres" type="Texture" id=2] + +[resource] +resource_name = "Improved Strike" +rank = 1 +icon = ExtResource( 2 ) +text_name = "Improved Strike" +aura_type = 6 +aura_hide = true +aura_text_description = "Reduces the cast time of Aspect of Scorpions by %%reduction_value seconds." +script = ExtResource( 1 ) +spell_name = "Strike" +mod_value = 200.0 diff --git a/game/modules/entity_classes/naturalist/specs/melee/talent_strike_r3.tres b/game/modules/entity_classes/naturalist/specs/melee/talent_strike_r3.tres new file mode 100644 index 0000000..c98b9f5 --- /dev/null +++ b/game/modules/entity_classes/naturalist/specs/melee/talent_strike_r3.tres @@ -0,0 +1,16 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/auras/SpellDamageModAura.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/amplify_pain.tres" type="Texture" id=2] + +[resource] +resource_name = "Improved Strike" +rank = 1 +icon = ExtResource( 2 ) +text_name = "Improved Strike" +aura_type = 6 +aura_hide = true +aura_text_description = "Reduces the cast time of Aspect of Scorpions by %%reduction_value seconds." +script = ExtResource( 1 ) +spell_name = "Strike" +mod_value = 60.0 diff --git a/game/modules/entity_classes/naturalist/specs/melee/talent_strike_r4.tres b/game/modules/entity_classes/naturalist/specs/melee/talent_strike_r4.tres new file mode 100644 index 0000000..51fe4aa --- /dev/null +++ b/game/modules/entity_classes/naturalist/specs/melee/talent_strike_r4.tres @@ -0,0 +1,16 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/auras/SpellDamageModAura.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/amplify_pain.tres" type="Texture" id=2] + +[resource] +resource_name = "Improved Strike" +rank = 1 +icon = ExtResource( 2 ) +text_name = "Improved Strike" +aura_type = 6 +aura_hide = true +aura_text_description = "Reduces the cast time of Aspect of Scorpions by %%reduction_value seconds." +script = ExtResource( 1 ) +spell_name = "Strike" +mod_value = 80.0 diff --git a/game/modules/entity_classes/naturalist/specs/melee/talent_strike_r5.tres b/game/modules/entity_classes/naturalist/specs/melee/talent_strike_r5.tres new file mode 100644 index 0000000..5b49876 --- /dev/null +++ b/game/modules/entity_classes/naturalist/specs/melee/talent_strike_r5.tres @@ -0,0 +1,16 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/auras/SpellDamageModAura.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/amplify_pain.tres" type="Texture" id=2] + +[resource] +resource_name = "Improved Strike" +rank = 1 +icon = ExtResource( 2 ) +text_name = "Improved Strike" +aura_type = 6 +aura_hide = true +aura_text_description = "Reduces the cast time of Aspect of Scorpions by %%reduction_value seconds." +script = ExtResource( 1 ) +spell_name = "Strike" +mod_value = 100.0 diff --git a/game/modules/entity_classes/naturalist/specs/nature.tres b/game/modules/entity_classes/naturalist/specs/nature.tres new file mode 100644 index 0000000..45f5139 --- /dev/null +++ b/game/modules/entity_classes/naturalist/specs/nature.tres @@ -0,0 +1,15 @@ +[gd_resource type="CharacterSpec" load_steps=4 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/specs/nature/talent_regrow_r3.tres" type="Spell" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/specs/nature/talent_regrow_r1.tres" type="Spell" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/specs/nature/talent_regrow_r2.tres" type="Spell" id=3] + +[resource] +resource_name = "Nature" +text_name = "Nature" +num_rows = 1 +row_0/size = 1 +row_0/column_0/size = 3 +row_0/column_0/entry_0 = ExtResource( 2 ) +row_0/column_0/entry_1 = ExtResource( 3 ) +row_0/column_0/entry_2 = ExtResource( 1 ) diff --git a/game/modules/entity_classes/naturalist/specs/nature/talent_regrow_r1.tres b/game/modules/entity_classes/naturalist/specs/nature/talent_regrow_r1.tres new file mode 100644 index 0000000..0f75882 --- /dev/null +++ b/game/modules/entity_classes/naturalist/specs/nature/talent_regrow_r1.tres @@ -0,0 +1,16 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/icons/root.tres" type="Texture" id=1] +[ext_resource path="res://scripts/auras/CastTimeReductionAura.gd" type="Script" id=2] + +[resource] +resource_name = "Improved Regrow" +rank = 1 +icon = ExtResource( 1 ) +text_name = "Improved Regrow" +aura_type = 6 +aura_hide = true +aura_text_description = "Reduces the cast time of Aspect of Scorpions by %%reduction_value seconds." +script = ExtResource( 2 ) +spell_name = "Regrow" +reduction_value = 0.16 diff --git a/game/modules/entity_classes/naturalist/specs/nature/talent_regrow_r2.tres b/game/modules/entity_classes/naturalist/specs/nature/talent_regrow_r2.tres new file mode 100644 index 0000000..e8f09ef --- /dev/null +++ b/game/modules/entity_classes/naturalist/specs/nature/talent_regrow_r2.tres @@ -0,0 +1,16 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/icons/root.tres" type="Texture" id=1] +[ext_resource path="res://scripts/auras/CastTimeReductionAura.gd" type="Script" id=2] + +[resource] +resource_name = "Improved Regrow" +rank = 2 +icon = ExtResource( 1 ) +text_name = "Improved Regrow" +aura_type = 6 +aura_hide = true +aura_text_description = "Reduces the cast time of Aspect of Scorpions by %%reduction_value seconds." +script = ExtResource( 2 ) +spell_name = "Regrow" +reduction_value = 0.33 diff --git a/game/modules/entity_classes/naturalist/specs/nature/talent_regrow_r3.tres b/game/modules/entity_classes/naturalist/specs/nature/talent_regrow_r3.tres new file mode 100644 index 0000000..8034cd8 --- /dev/null +++ b/game/modules/entity_classes/naturalist/specs/nature/talent_regrow_r3.tres @@ -0,0 +1,16 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/icons/root.tres" type="Texture" id=1] +[ext_resource path="res://scripts/auras/CastTimeReductionAura.gd" type="Script" id=2] + +[resource] +resource_name = "Improved Regrow" +rank = 3 +icon = ExtResource( 1 ) +text_name = "Improved Regrow" +aura_type = 6 +aura_hide = true +aura_text_description = "Reduces the cast time of Aspect of Scorpions by %%reduction_value seconds." +script = ExtResource( 2 ) +spell_name = "Regrow" +reduction_value = 0.5 diff --git a/game/modules/entity_classes/naturalist/spell_effects/nature2d/AOSCastFinish.tscn b/game/modules/entity_classes/naturalist/spell_effects/nature2d/AOSCastFinish.tscn new file mode 100644 index 0000000..19bd56d --- /dev/null +++ b/game/modules/entity_classes/naturalist/spell_effects/nature2d/AOSCastFinish.tscn @@ -0,0 +1,3 @@ +[gd_scene format=2] + +[node name="Spatial" type="Spatial"] diff --git a/game/modules/entity_classes/naturalist/spell_effects/nature2d/AmplifyPain.tscn b/game/modules/entity_classes/naturalist/spell_effects/nature2d/AmplifyPain.tscn new file mode 100644 index 0000000..9e57332 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spell_effects/nature2d/AmplifyPain.tscn @@ -0,0 +1,3 @@ +[gd_scene format=2] + +[node name="AmplifyPain" type="Spatial"] diff --git a/game/modules/entity_classes/naturalist/spell_effects/nature2d/NatureCast.tscn b/game/modules/entity_classes/naturalist/spell_effects/nature2d/NatureCast.tscn new file mode 100644 index 0000000..8812ae3 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spell_effects/nature2d/NatureCast.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/textures/big_glow.png" type="Texture" id=1] + +[node name="NatureCast" type="CPUParticles2D"] +preprocess = 0.8 +randomness = 0.07 +local_coords = false +texture = ExtResource( 1 ) +spread = 112.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 12.0 +initial_velocity_random = 0.54 +angular_velocity = 310.0 +angular_velocity_random = 0.84 +linear_accel = 11.77 +radial_accel = 37.26 +tangential_accel = -13.72 +tangential_accel_random = 0.79 +damping = 77.44 +damping_random = 0.09 +angle = 0.9 +scale_amount = 0.3 +color = Color( 0.13, 0.4, 0.02, 0.83 ) +hue_variation = 0.22 +hue_variation_random = 0.88 diff --git a/game/modules/entity_classes/naturalist/spell_effects/nature2d/NautreSwiftness.tscn b/game/modules/entity_classes/naturalist/spell_effects/nature2d/NautreSwiftness.tscn new file mode 100644 index 0000000..74d25e8 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spell_effects/nature2d/NautreSwiftness.tscn @@ -0,0 +1,3 @@ +[gd_scene format=2] + +[node name="NautreSwiftness" type="Spatial"] diff --git a/game/modules/entity_classes/naturalist/spell_effects/textures/arrows.png b/game/modules/entity_classes/naturalist/spell_effects/textures/arrows.png new file mode 100644 index 0000000..f3f183a Binary files /dev/null and b/game/modules/entity_classes/naturalist/spell_effects/textures/arrows.png differ diff --git a/game/modules/entity_classes/naturalist/spell_effects/textures/arrows.png.import b/game/modules/entity_classes/naturalist/spell_effects/textures/arrows.png.import new file mode 100644 index 0000000..5e26c8b --- /dev/null +++ b/game/modules/entity_classes/naturalist/spell_effects/textures/arrows.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrows.png-03e1173efc34a2c2f5ac82b362e0eda3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/entity_classes/naturalist/spell_effects/textures/arrows.png" +dest_files=[ "res://.import/arrows.png-03e1173efc34a2c2f5ac82b362e0eda3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/entity_classes/naturalist/spell_effects/textures/big_glow.png b/game/modules/entity_classes/naturalist/spell_effects/textures/big_glow.png new file mode 100644 index 0000000..8382a6d Binary files /dev/null and b/game/modules/entity_classes/naturalist/spell_effects/textures/big_glow.png differ diff --git a/game/modules/entity_classes/naturalist/spell_effects/textures/big_glow.png.import b/game/modules/entity_classes/naturalist/spell_effects/textures/big_glow.png.import new file mode 100644 index 0000000..c4e1721 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spell_effects/textures/big_glow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/big_glow.png-df97a9764c4514dfeedfecf176820312.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/entity_classes/naturalist/spell_effects/textures/big_glow.png" +dest_files=[ "res://.import/big_glow.png-df97a9764c4514dfeedfecf176820312.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/entity_classes/naturalist/spell_effects/textures/main_texture.png b/game/modules/entity_classes/naturalist/spell_effects/textures/main_texture.png new file mode 100644 index 0000000..d2e01a1 Binary files /dev/null and b/game/modules/entity_classes/naturalist/spell_effects/textures/main_texture.png differ diff --git a/game/modules/entity_classes/naturalist/spell_effects/textures/main_texture.png.import b/game/modules/entity_classes/naturalist/spell_effects/textures/main_texture.png.import new file mode 100644 index 0000000..98a81ee --- /dev/null +++ b/game/modules/entity_classes/naturalist/spell_effects/textures/main_texture.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/main_texture.png-6116655823a3509ea26ac46bc3689bc0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/entity_classes/naturalist/spell_effects/textures/main_texture.png" +dest_files=[ "res://.import/main_texture.png-6116655823a3509ea26ac46bc3689bc0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/entity_classes/naturalist/spell_effects/textures/small_star.png b/game/modules/entity_classes/naturalist/spell_effects/textures/small_star.png new file mode 100644 index 0000000..3ce8e07 Binary files /dev/null and b/game/modules/entity_classes/naturalist/spell_effects/textures/small_star.png differ diff --git a/game/modules/entity_classes/naturalist/spell_effects/textures/small_star.png.import b/game/modules/entity_classes/naturalist/spell_effects/textures/small_star.png.import new file mode 100644 index 0000000..f1cb2fd --- /dev/null +++ b/game/modules/entity_classes/naturalist/spell_effects/textures/small_star.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/small_star.png-2aeece93bc0331c8ad7b3682bfb322d2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/entity_classes/naturalist/spell_effects/textures/small_star.png" +dest_files=[ "res://.import/small_star.png-2aeece93bc0331c8ad7b3682bfb322d2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=2 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/entity_classes/naturalist/spell_effects/textures/star.png b/game/modules/entity_classes/naturalist/spell_effects/textures/star.png new file mode 100644 index 0000000..bf8a13d Binary files /dev/null and b/game/modules/entity_classes/naturalist/spell_effects/textures/star.png differ diff --git a/game/modules/entity_classes/naturalist/spell_effects/textures/star.png.import b/game/modules/entity_classes/naturalist/spell_effects/textures/star.png.import new file mode 100644 index 0000000..edcd6df --- /dev/null +++ b/game/modules/entity_classes/naturalist/spell_effects/textures/star.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/star.png-f0edde12a69ecac5a6b2138bcc202fd5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/entity_classes/naturalist/spell_effects/textures/star.png" +dest_files=[ "res://.import/star.png-f0edde12a69ecac5a6b2138bcc202fd5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/entity_classes/naturalist/spells/10_aspect_of_scorpions_rank_1.tres b/game/modules/entity_classes/naturalist/spells/10_aspect_of_scorpions_rank_1.tres new file mode 100644 index 0000000..b935c83 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/10_aspect_of_scorpions_rank_1.tres @@ -0,0 +1,40 @@ +[gd_resource type="Spell" load_steps=7 format=2] + +[ext_resource path="res://modules/core/entity_resources/1_mana_resource.tres" type="EntityResource" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/effect_data/aspect_of_scorpions.tres" type="SpellEffectVisual" id=3] +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=4] +[ext_resource path="res://modules/entity_classes/naturalist/icons/aspect_of_scorpions.tres" type="Texture" id=5] +[ext_resource path="res://modules/entity_classes/naturalist/aura_groups/1_aspect_of_scorpions.tres" type="AuraGroup" id=6] + +[sub_resource type="EntityResourceCostDataResource" id=1] +cost = 34 +entity_resource_data = ExtResource( 1 ) + +[resource] +resource_name = "Aspect of Scorpions" +id = 0 +spell_type = 8 +rank = 1 +icon = ExtResource( 5 ) +visual_spell_effects = ExtResource( 3 ) +text_name = "Aspect of Scorpions" +text_description = "Range: 26m. +Casttime: %%cast_cast_time . +Deals 340 to 380 damage every 3 sec, and increases damage taken by 10% for 30 sec." +range_range = 26.0 +cast_enabled = true +cast_cast_time = 1.5 +heal_enabled = true +heal_min = 123 +heal_max = 333 +resource_cost = SubResource( 1 ) +aura_time = 30.0 +aura_tick = 3.0 +aura_debuff = true +aura_group = ExtResource( 6 ) +aura_text_description = "Deals %%damage_min to %%damage_max damage every %%tick sec, and increases damage taken by 10% for 30 sec." +aura_damage_enabled = true +aura_damage_type = 8 +aura_damage_min = 23 +aura_damage_max = 26 +script = ExtResource( 4 ) diff --git a/game/modules/entity_classes/naturalist/spells/11_aspect_of_wasps_rank_1.tres b/game/modules/entity_classes/naturalist/spells/11_aspect_of_wasps_rank_1.tres new file mode 100644 index 0000000..a67198e --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/11_aspect_of_wasps_rank_1.tres @@ -0,0 +1,30 @@ +[gd_resource type="Spell" load_steps=4 format=2] + +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/icons/aspect_of_wasps.tres" type="Texture" id=3] +[ext_resource path="res://modules/entity_classes/naturalist/aura_groups/2_aspect_of_wasps.tres" type="AuraGroup" id=4] + +[resource] +resource_name = "Aspect of Wasps" +spell_type = 8 +level = 2 +rank = 10 +icon = ExtResource( 3 ) +text_name = "Aspect of Wasps" +text_description = "Range: 26m. +Instant. +Deals 230 to 270 damage every 3 sec, this damage increases over the duration, for 21 sec." +range_range = 26.0 +aoe_targetType = 541 +aoe_colliderType = 541 +aura_time = 21.0 +aura_tick = 1.0 +aura_debuff = true +aura_type = 1 +aura_group = ExtResource( 4 ) +aura_text_description = "Deals 230 to 270 damage every 3 sec, this damage increases over the duration, for 21 sec." +aura_damage_enabled = true +aura_damage_type = 16 +aura_damage_min = 280 +aura_damage_max = 300 +script = ExtResource( 2 ) diff --git a/game/modules/entity_classes/naturalist/spells/12_aspect_of_wolves_rank_1.tres b/game/modules/entity_classes/naturalist/spells/12_aspect_of_wolves_rank_1.tres new file mode 100644 index 0000000..8f4bcec --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/12_aspect_of_wolves_rank_1.tres @@ -0,0 +1,31 @@ +[gd_resource type="Spell" load_steps=4 format=2] + +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=1] +[ext_resource path="res://modules/icons/Naturalist/AspectOfScorpions.png" type="Texture" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/aura_groups/3_aspect_of_wolves.tres" type="AuraGroup" id=4] + +[resource] +resource_name = "Aspect of Wolves" +id = 2 +spell_type = 8 +level = 3 +rank = 1 +icon = ExtResource( 2 ) +needs_target = true +text_name = "Aspect of Wolves" +text_description = "Range: 26m. +Deals 280 to 330 damage every 2 sec, and reduces melee and spell damage by 10% for 22 sec." +range_range = 26.0 +aoe_targetType = 1129071960 +aoe_colliderType = 1058050193 +aura_time = 22.0 +aura_tick = 2.0 +aura_debuff = true +aura_type = 1 +aura_group = ExtResource( 4 ) +aura_text_description = "Deals 280 to 330 damage every 2 sec, and reduces melee and spell damage by 10% for 22 sec." +aura_damage_enabled = true +aura_damage_type = 16 +aura_damage_min = 280 +aura_damage_max = 330 +script = ExtResource( 1 ) diff --git a/game/modules/entity_classes/naturalist/spells/13_aspect_of_bees_rank_1.tres b/game/modules/entity_classes/naturalist/spells/13_aspect_of_bees_rank_1.tres new file mode 100644 index 0000000..4bf65f8 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/13_aspect_of_bees_rank_1.tres @@ -0,0 +1,34 @@ +[gd_resource type="Spell" load_steps=4 format=2] + +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/icons/aspect_of_bees.tres" type="Texture" id=3] +[ext_resource path="res://modules/entity_classes/naturalist/aura_groups/4_aspect_of_bees.tres" type="AuraGroup" id=4] + +[resource] +resource_name = "Aspect of Bees" +id = 3 +spell_type = 8 +level = 4 +rank = 1 +icon = ExtResource( 3 ) +needs_target = true +text_name = "Aspect of Bees" +text_description = "Range: 26m. +Instant. +Cooldown: %%cooldown_cooldown sec +Deals 460 to 540 damage every 3 sec, healing you for 80% of the damage." +cooldown_cooldown = 21.0 +range_range = 26.0 +aoe_targetType = -1910718371 +aoe_colliderType = -298046312 +aura_time = 21.0 +aura_tick = 3.0 +aura_debuff = true +aura_type = 1 +aura_group = ExtResource( 4 ) +aura_text_description = "Deals 460 to 540 damage every 3 sec, healing you for 80% of the damage." +aura_damage_enabled = true +aura_damage_type = 16 +aura_damage_min = 420 +aura_damage_max = 440 +script = ExtResource( 2 ) diff --git a/game/modules/entity_classes/naturalist/spells/14_amplify_pain_rank_1.tres b/game/modules/entity_classes/naturalist/spells/14_amplify_pain_rank_1.tres new file mode 100644 index 0000000..f90625c --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/14_amplify_pain_rank_1.tres @@ -0,0 +1,46 @@ +[gd_resource type="Spell" load_steps=7 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/nature2d/NatureCast.tscn" type="PackedScene" id=1] +[ext_resource path="res://scripts/resources/spell_effect_visual_basic.gd" type="Script" id=2] +[ext_resource path="res://scripts/spells/amplify_pain.gd" type="Script" id=3] +[ext_resource path="res://modules/entity_classes/naturalist/icons/amplify_pain.tres" type="Texture" id=4] +[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/nature2d/AmplifyPain.tscn" type="PackedScene" id=5] + +[sub_resource type="SpellEffectVisual" id=1] +script = ExtResource( 2 ) +spell_cast_effect_left_hand = ExtResource( 1 ) +spell_cast_effect_right_hand = ExtResource( 1 ) +torso_aura_effect_time = 0.0 +root_aura_effect_time = 0.0 +torso_spell_cast_finish_effect = ExtResource( 5 ) +torso_spell_cast_finish_effect_time = 0.4 +root_spell_cast_finish_effect_time = 1.0 + +[resource] +resource_name = "Amplify Pain" +id = 4 +spell_type = 8 +level = 10 +icon = ExtResource( 4 ) +needs_target = true +visual_spell_effects = SubResource( 1 ) +text_name = "Amplify Pain" +text_description = "Range: 26m. +Casttime: {3}. +Causes your damage over time effects to tick." +cooldown_cooldown = 16.0 +range_range = 26.0 +cast_cast_time = 1.5 +damage_type = 16 +damage_min = 130 +damage_max = 150 +aoe_targetType = -1910718371 +aoe_colliderType = 1065353216 +aura_time = 30.0 +aura_tick = 3.0 +aura_type = 1 +aura_text_description = "Heals you for 400 to 450 every 3 sec for 30 sec." +aura_heal_enabled = true +aura_heal_min = 400 +aura_heal_max = 450 +script = ExtResource( 3 ) diff --git a/game/modules/entity_classes/naturalist/spells/15_rejuvenation_rank_1.tres b/game/modules/entity_classes/naturalist/spells/15_rejuvenation_rank_1.tres new file mode 100644 index 0000000..d57e9ea --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/15_rejuvenation_rank_1.tres @@ -0,0 +1,19 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/icons/rejuvenation.tres" type="Texture" id=3] + +[resource] +resource_name = "Rejuvenation" +id = 5 +spell_type = 8 +target_type = 2 +target_relation_type = 4 +rank = 1 +icon = ExtResource( 3 ) +text_name = "Rejuvenation" +text_description = "Instant. +Heals you for 400 to 450 every 3 sec for 30 sec." +aoe_targetType = 32758 +aoe_colliderType = -2147479552 +script = ExtResource( 2 ) diff --git a/game/modules/entity_classes/naturalist/spells/16_close_wounds_rank_1.tres b/game/modules/entity_classes/naturalist/spells/16_close_wounds_rank_1.tres new file mode 100644 index 0000000..c6617df --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/16_close_wounds_rank_1.tres @@ -0,0 +1,26 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/icons/close_wounds.tres" type="Texture" id=3] + +[resource] +resource_name = "Close Wounds" +id = 6 +spell_type = 8 +target_type = 2 +rank = 1 +icon = ExtResource( 3 ) +text_name = "Close Wounds" +text_description = "Casttime: 2 sec. +Cooldown: %%cooldown_cooldown sec +Heals you for 720 to 780 every 3 sec for 21 sec." +cast_cast_time = 1.3 +aoe_colliderType = -2147479552 +aura_time = 21.0 +aura_tick = 3.0 +aura_type = 1 +aura_text_description = "Heals you for 720 to 780 every 3 sec for 21 sec." +aura_heal_enabled = true +aura_heal_min = 720 +aura_heal_max = 780 +script = ExtResource( 2 ) diff --git a/game/modules/entity_classes/naturalist/spells/17_ironbark_rank_1.tres b/game/modules/entity_classes/naturalist/spells/17_ironbark_rank_1.tres new file mode 100644 index 0000000..c05bf40 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/17_ironbark_rank_1.tres @@ -0,0 +1,24 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/icons/ironbark.tres" type="Texture" id=2] +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=3] + +[resource] +resource_name = "Ironbark" +id = 7 +spell_type = 8 +target_type = 480 +target_relation_type = 914787760 +rank = 1 +icon = ExtResource( 2 ) +text_name = "Ironbark" +text_description = "Instant. +Cooldown: {2} +Reduces damage taken by 70%. This spell is not on the global cooldown." +cooldown_cooldown = 60.0 +aoe_targetType = -1910718371 +aoe_colliderType = -298046312 +aura_time = 6.0 +aura_type = 1 +aura_text_description = "Reduces damage taken by 70%. This spell is not on the global cooldown." +script = ExtResource( 3 ) diff --git a/game/modules/entity_classes/naturalist/spells/18_natures_swiftness_rank_1.tres b/game/modules/entity_classes/naturalist/spells/18_natures_swiftness_rank_1.tres new file mode 100644 index 0000000..b623a29 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/18_natures_swiftness_rank_1.tres @@ -0,0 +1,27 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/auras/SpeedModAura.gd" type="Script" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/icons/natures_swiftness.tres" type="Texture" id=3] + +[resource] +resource_name = "Nature's Swiftness" +id = 8 +spell_type = 8 +target_type = 520 +target_relation_type = 1 +rank = 1 +icon = ExtResource( 3 ) +text_name = "Nature's Swiftness" +text_description = "Instant. +Cooldown: %%cooldown_cooldown sec +Increases your movement speed by 60% for 6 sec. This spell is not on the global cooldown." +cooldown_cooldown = 20.0 +cooldown_global_cooldown_enabled = false +aoe_targetType = 520 +aoe_colliderType = 186459648 +aura_time = 10.0 +aura_type = 1 +aura_text_description = "Increases your movement speed by 60% for 6 sec. This spell is not on the global cooldown." +script = ExtResource( 2 ) +does_stack = true +mod_speed = 40.0 diff --git a/game/modules/entity_classes/naturalist/spells/19_uproot_rank_1.tres b/game/modules/entity_classes/naturalist/spells/19_uproot_rank_1.tres new file mode 100644 index 0000000..59a0b62 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/19_uproot_rank_1.tres @@ -0,0 +1,22 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/uproot.tres" type="Texture" id=2] + +[resource] +resource_name = "Uproot" +id = 9 +spell_type = 8 +target_type = -2147460864 +rank = 1 +icon = ExtResource( 2 ) +text_name = "Uproot" +text_description = "Instant. +Cooldown: {2} +Roots every enemy around you in a 15m radius for 8 sec. This spell doesn't have diminishing return." +cooldown_cooldown = 24.0 +range_range = 15.0 +aoe = true +aoe_targetType = -572653568 +aoe_colliderType = 537722880 +script = ExtResource( 1 ) diff --git a/game/modules/entity_classes/naturalist/spells/20_root_rank_1.tres b/game/modules/entity_classes/naturalist/spells/20_root_rank_1.tres new file mode 100644 index 0000000..4f11240 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/20_root_rank_1.tres @@ -0,0 +1,24 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/icons/root.tres" type="Texture" id=3] + +[resource] +resource_name = "Root" +id = 10 +spell_type = 8 +rank = 1 +icon = ExtResource( 3 ) +text_name = "Root" +text_description = "Range: 26m. +Casttime: 1.5 sec. +Cooldown: {2} +Roots the target for 8 sec." +cast_cast_time = 1.4 +aoe_targetType = 8 +aoe_colliderType = 537722880 +aura_time = 10.0 +aura_debuff = true +aura_type = 1 +aura_states_add = 4 +script = ExtResource( 2 ) diff --git a/game/modules/entity_classes/naturalist/spells/21_strength_of_nature_rank_1.tres b/game/modules/entity_classes/naturalist/spells/21_strength_of_nature_rank_1.tres new file mode 100644 index 0000000..e452806 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/21_strength_of_nature_rank_1.tres @@ -0,0 +1,35 @@ +[gd_resource type="Spell" load_steps=4 format=2] + +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/strength_of_nature.tres" type="Texture" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/aura_groups/1_aspect_of_scorpions.tres" type="AuraGroup" id=3] + +[resource] +resource_name = "Strength of Nature" +id = 11 +spell_type = 8 +target_type = -2147477248 +target_relation_type = 24 +level = 11 +rank = 1 +icon = ExtResource( 2 ) +text_name = "Strength of Nature" +text_description = "Instant. +Cooldown: {2} +Heals you for 6700 to 7000." +cooldown_cooldown = 150.0 +heal_min = 6700 +heal_max = 7000 +aoe_targetType = 5 +aoe_colliderType = 7602273 +aura_time = 30.0 +aura_tick = 3.0 +aura_debuff = true +aura_type = 1 +aura_group = ExtResource( 3 ) +aura_text_description = "Deals 340 to 380 damage every 3 sec, and increases damage taken by 10% for 30 sec." +aura_damage_enabled = true +aura_damage_type = 8 +aura_damage_min = 10 +aura_damage_max = 20 +script = ExtResource( 1 ) diff --git a/game/modules/entity_classes/naturalist/spells/22_shield_of_barbs_rank_1.tres b/game/modules/entity_classes/naturalist/spells/22_shield_of_barbs_rank_1.tres new file mode 100644 index 0000000..2e42089 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/22_shield_of_barbs_rank_1.tres @@ -0,0 +1,32 @@ +[gd_resource type="Spell" load_steps=4 format=2] + +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/shield_of_barbs.tres" type="Texture" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/aura_groups/2_aspect_of_wasps.tres" type="AuraGroup" id=3] + +[resource] +resource_name = "Shield of Barbs" +id = 12 +spell_type = 8 +target_type = -2147456768 +target_relation_type = 24 +rank = 1 +icon = ExtResource( 2 ) +text_name = "Shield of Barbs" +text_description = "Instant. +Cooldown: {2} +Absorbs 4200 to 4400 damage, also deals 340 to 380 damage to any attacker, for 30 sec." +cooldown_cooldown = 45.0 +aoe_targetType = 5 +aoe_colliderType = 7929968 +aura_time = 21.0 +aura_tick = 1.0 +aura_debuff = true +aura_type = 1 +aura_group = ExtResource( 3 ) +aura_text_description = "Deals 230 to 270 damage every 3 sec, this damage increases over the duration, for 21 sec." +aura_damage_enabled = true +aura_damage_type = 16 +aura_damage_min = 6 +aura_damage_max = 7 +script = ExtResource( 1 ) diff --git a/game/modules/entity_classes/naturalist/spells/23_calm_rank_1.tres b/game/modules/entity_classes/naturalist/spells/23_calm_rank_1.tres new file mode 100644 index 0000000..038b3a5 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/23_calm_rank_1.tres @@ -0,0 +1,20 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/calm.tres" type="Texture" id=2] + +[resource] +resource_name = "Calm" +id = 13 +spell_type = 8 +rank = 1 +icon = ExtResource( 2 ) +text_name = "Calm" +text_description = "Range: 26m. +Instant. +Cooldown: {2} +Reduces the target's melee and spell damage by 50% for 10 sec." +cooldown_cooldown = 90.0 +aoe_targetType = -2147478784 +aoe_colliderType = 7602273 +script = ExtResource( 1 ) diff --git a/game/modules/entity_classes/naturalist/spells/24_attunement_rank_1.tres b/game/modules/entity_classes/naturalist/spells/24_attunement_rank_1.tres new file mode 100644 index 0000000..df9cd94 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/24_attunement_rank_1.tres @@ -0,0 +1,21 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/icons/attunement.tres" type="Texture" id=1] +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=2] + +[resource] +resource_name = "Attunement" +id = 14 +spell_type = 8 +target_type = -2147448576 +target_relation_type = 24 +rank = 1 +icon = ExtResource( 1 ) +text_name = "Attunement" +text_description = "Instant. +Cooldown: {2} +Increases your spell damage by 30% for 20 sec." +cooldown_cooldown = 180.0 +aoe_targetType = 2 +aoe_colliderType = 480 +script = ExtResource( 2 ) diff --git a/game/modules/entity_classes/naturalist/spells/25_inner_will.tres b/game/modules/entity_classes/naturalist/spells/25_inner_will.tres new file mode 100644 index 0000000..96475fb --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/25_inner_will.tres @@ -0,0 +1,19 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/inner_will.tres" type="Texture" id=2] + +[resource] +resource_name = "Inner Will" +id = 15 +spell_type = 1 +target_type = 2 +target_relation_type = -11822355 +icon = ExtResource( 2 ) +text_name = "Inner Will" +text_description = "Cooldown: 1.5 min. +Removes any movement impairing effects, stuns, and effects which makes you lose control of your character. This spell is not on the global cooldown." +cooldown_cooldown = 90.0 +aoe_targetType = 7 +aoe_colliderType = 480 +script = ExtResource( 1 ) diff --git a/game/modules/entity_classes/naturalist/spells/26_rest.tres b/game/modules/entity_classes/naturalist/spells/26_rest.tres new file mode 100644 index 0000000..f4a317f --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/26_rest.tres @@ -0,0 +1,17 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/icons/regenerate.tres" type="Texture" id=1] +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=2] + +[resource] +resource_name = "Rest" +id = 16 +spell_type = 1 +target_type = 2 +target_relation_type = 24 +icon = ExtResource( 1 ) +text_name = "Rest" +text_description = "Rest for 30 seconds, greatly increasing your regeneration." +aoe_targetType = 5 +aoe_colliderType = 1065353216 +script = ExtResource( 2 ) diff --git a/game/modules/entity_classes/naturalist/spells/27_aspect_of_scorpions.tres b/game/modules/entity_classes/naturalist/spells/27_aspect_of_scorpions.tres new file mode 100644 index 0000000..bd609c7 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/27_aspect_of_scorpions.tres @@ -0,0 +1,22 @@ +[gd_resource type="Spell" load_steps=4 format=2] + +[ext_resource path="res://modules/entity_classes/naturalist/icons/aspect_of_scorpions.tres" type="Texture" id=1] +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/effect_data/aspect_of_scorpions.tres" type="SpellEffectVisual" id=4] + +[resource] +resource_name = "Aspect of Scorpions" +id = 17 +spell_type = 8 +rank = 1 +icon = ExtResource( 1 ) +visual_spell_effects = ExtResource( 4 ) +text_name = "Aspect of Scorpions" +text_description = "Range: 26m. +Casttime: {3}. +Deals 340 to 380 damage every 3 sec, and increases damage taken by 10% for 30 sec." +range_range = 26.0 +cast_enabled = true +cast_cast_time = 1.2 +spell_cooldown_mainpulation_data_count = -1 +script = ExtResource( 2 ) diff --git a/game/modules/entity_classes/naturalist/spells/28_aspectofwasps.tres b/game/modules/entity_classes/naturalist/spells/28_aspectofwasps.tres new file mode 100644 index 0000000..4afb7ae --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/28_aspectofwasps.tres @@ -0,0 +1,19 @@ +[gd_resource type="Spell" load_steps=3 format=2] + +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/aspect_of_wasps.tres" type="Texture" id=3] + +[resource] +resource_name = "Aspect of Wasps" +id = 18 +spell_type = 8 +rank = 1 +icon = ExtResource( 3 ) +text_name = "Aspect of Wasps" +text_description = "Range: 26m. +Instant. +Deals 230 to 270 damage every 3 sec, this damage increases over the duration, for 21 sec." +range_range = 26.0 +aoe_targetType = 541 +aoe_colliderType = 541 +script = ExtResource( 1 ) diff --git a/game/modules/entity_classes/naturalist/spells/29_aspect_of_wolves.tres b/game/modules/entity_classes/naturalist/spells/29_aspect_of_wolves.tres new file mode 100644 index 0000000..f57edde --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/29_aspect_of_wolves.tres @@ -0,0 +1,30 @@ +[gd_resource type="Spell" load_steps=4 format=2] + +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/aspect_of_wolves.tres" type="Texture" id=3] +[ext_resource path="res://modules/entity_classes/naturalist/aura_groups/3_aspect_of_wolves.tres" type="AuraGroup" id=4] + +[resource] +resource_name = "Aspect of Wolves" +id = 19 +spell_type = 8 +rank = 1 +icon = ExtResource( 3 ) +needs_target = true +text_name = "Aspect of Wolves" +text_description = "Range: 26m. +Deals 280 to 330 damage every 2 sec, and reduces melee and spell damage by 10% for 22 sec." +range_range = 26.0 +aoe_targetType = 1129071960 +aoe_colliderType = 1058050193 +aura_time = 22.0 +aura_tick = 2.0 +aura_debuff = true +aura_type = 1 +aura_group = ExtResource( 4 ) +aura_text_description = "Deals 280 to 330 damage every 2 sec, and reduces melee and spell damage by 10% for 22 sec." +aura_damage_enabled = true +aura_damage_type = 16 +aura_damage_min = 10 +aura_damage_max = 12 +script = ExtResource( 1 ) diff --git a/game/modules/entity_classes/naturalist/spells/30_aspect_of_bees.tres b/game/modules/entity_classes/naturalist/spells/30_aspect_of_bees.tres new file mode 100644 index 0000000..a572102 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/30_aspect_of_bees.tres @@ -0,0 +1,34 @@ +[gd_resource type="Spell" load_steps=4 format=2] + +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/icons/aspect_of_bees.tres" type="Texture" id=3] +[ext_resource path="res://modules/entity_classes/naturalist/aura_groups/4_aspect_of_bees.tres" type="AuraGroup" id=4] + +[resource] +resource_name = "Aspect of Bees" +id = 20 +spell_type = 8 +level = 10 +rank = 1 +icon = ExtResource( 3 ) +needs_target = true +text_name = "Aspect of Bees" +text_description = "Range: 26m. +Instant. +Cooldown: {2} +Deals 460 to 540 damage every 3 sec, healing you for 80% of the damage." +cooldown_cooldown = 21.0 +range_range = 26.0 +aoe_targetType = -1910718371 +aoe_colliderType = -298046312 +aura_time = 21.0 +aura_tick = 3.0 +aura_debuff = true +aura_type = 1 +aura_group = ExtResource( 4 ) +aura_text_description = "Deals 460 to 540 damage every 3 sec, healing you for 80% of the damage." +aura_damage_enabled = true +aura_damage_type = 16 +aura_damage_min = 60 +aura_damage_max = 80 +script = ExtResource( 1 ) diff --git a/game/modules/entity_classes/naturalist/spells/35_strike.tres b/game/modules/entity_classes/naturalist/spells/35_strike.tres new file mode 100644 index 0000000..e4ee4ea --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/35_strike.tres @@ -0,0 +1,42 @@ +[gd_resource type="Spell" load_steps=7 format=2] + +[ext_resource path="res://scripts/resources/spell_effect_visual_basic.gd" type="Script" id=1] +[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/nature2d/AmplifyPain.tscn" type="PackedScene" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/nature2d/NatureCast.tscn" type="PackedScene" id=3] +[ext_resource path="res://scripts/spells/amplify_pain.gd" type="Script" id=4] +[ext_resource path="res://modules/entity_classes/naturalist/icons/amplify_pain.tres" type="Texture" id=5] + +[sub_resource type="SpellEffectVisual" id=1] +script = ExtResource( 1 ) +spell_cast_effect_left_hand = ExtResource( 3 ) +spell_cast_effect_right_hand = ExtResource( 3 ) +torso_aura_effect_time = 0.0 +root_aura_effect_time = 0.0 +torso_spell_cast_finish_effect = ExtResource( 2 ) +torso_spell_cast_finish_effect_time = 0.4 +root_spell_cast_finish_effect_time = 1.0 + +[resource] +resource_name = "Strike" +id = 35 +spell_type = 1 +rank = 1 +icon = ExtResource( 5 ) +needs_target = true +visual_spell_effects = SubResource( 1 ) +text_name = "Strike" +text_description = "Range: Melee +Strike the target with your weapon, dealing weapon damage, and an additional %%damage_min - %%damage_max ." +cooldown_cooldown = 3.0 +range_enabled = true +range_range = 3.0 +cast_cast_time = 1.5 +damage_enabled = true +damage_type = 1 +damage_min = 29 +damage_max = 34 +damage_scale_stat = 41 +damage_scale_coeff = 1.0 +aoe_targetType = -1910718371 +aoe_colliderType = 1065353216 +script = ExtResource( 4 ) diff --git a/game/modules/entity_classes/naturalist/spells/36_regrow.tres b/game/modules/entity_classes/naturalist/spells/36_regrow.tres new file mode 100644 index 0000000..731e6a9 --- /dev/null +++ b/game/modules/entity_classes/naturalist/spells/36_regrow.tres @@ -0,0 +1,30 @@ +[gd_resource type="Spell" load_steps=5 format=2] + +[ext_resource path="res://modules/core/entity_resources/1_mana_resource.tres" type="EntityResource" id=1] +[ext_resource path="res://scripts/spells/gd_spell_script.gd" type="Script" id=2] +[ext_resource path="res://modules/entity_classes/naturalist/icons/root.tres" type="Texture" id=3] + +[sub_resource type="EntityResourceCostDataResource" id=1] +cost = 90 +entity_resource_data = ExtResource( 1 ) + +[resource] +resource_name = "Regrow" +id = 36 +spell_type = 8 +target_relation_type = 5 +rank = 1 +icon = ExtResource( 3 ) +text_name = "Regrow" +text_description = "Heals you for %%heal_min to %%heal_max ." +range_enabled = true +range_range = 30.0 +cast_enabled = true +cast_cast_time = 2.0 +heal_enabled = true +heal_min = 89 +heal_max = 102 +heal_scale_stat = 14 +heal_scale_coeff = 0.1 +resource_cost = SubResource( 1 ) +script = ExtResource( 2 ) diff --git a/game/modules/entity_classes/naturalist/stats/mob_statdata.tres b/game/modules/entity_classes/naturalist/stats/mob_statdata.tres new file mode 100644 index 0000000..7c38348 --- /dev/null +++ b/game/modules/entity_classes/naturalist/stats/mob_statdata.tres @@ -0,0 +1,19 @@ +[gd_resource type="StatData" load_steps=2 format=2] + +[sub_resource type="SimpleLevelStatData" id=1] +agility = 3 +strength = 2 +stamina = 3 +intellect = 4 +spirit = 5 + +[resource] +level_stat_data = SubResource( 1 ) +stat/agility = 14.0 +stat/strength = 15.0 +stat/stamina = 13.0 +stat/intellect = 13.0 +stat/spirit = 10.0 +stat/health = 20.0 +stat/mana = 20.0 +stat/global_cooldown = 1.5 diff --git a/game/modules/entity_classes/naturalist/stats/player_statdata.tres b/game/modules/entity_classes/naturalist/stats/player_statdata.tres new file mode 100644 index 0000000..4245838 --- /dev/null +++ b/game/modules/entity_classes/naturalist/stats/player_statdata.tres @@ -0,0 +1,19 @@ +[gd_resource type="StatData" load_steps=2 format=2] + +[sub_resource type="SimpleLevelStatData" id=1] +agility = 4 +strength = 3 +stamina = 6 +intellect = 5 +spirit = 3 + +[resource] +level_stat_data = SubResource( 1 ) +stat/agility = 23.0 +stat/strength = 14.0 +stat/stamina = 23.0 +stat/intellect = 19.0 +stat/spirit = 3.0 +stat/health = 100.0 +stat/mana = 100.0 +stat/global_cooldown = 1.5 diff --git a/game/modules/icons/ parts/circles.svg b/game/modules/icons/ parts/circles.svg new file mode 100644 index 0000000..9dc3f8a --- /dev/null +++ b/game/modules/icons/ parts/circles.svg @@ -0,0 +1,81 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/game/modules/icons/ parts/circles.svg.import b/game/modules/icons/ parts/circles.svg.import new file mode 100644 index 0000000..dc2762f --- /dev/null +++ b/game/modules/icons/ parts/circles.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/circles.svg-d79adc035d41c6e5748ab1ee734ddde8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/ parts/circles.svg" +dest_files=[ "res://.import/circles.svg-d79adc035d41c6e5748ab1ee734ddde8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/3_iron_bar.tres b/game/modules/icons/3_iron_bar.tres new file mode 100644 index 0000000..5893fc2 --- /dev/null +++ b/game/modules/icons/3_iron_bar.tres @@ -0,0 +1,9 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-1/11.png" type="Texture" id=1] + + +[resource] +flags = 4 +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/icons/4_chest_of_the_infinite_wisdom.tres b/game/modules/icons/4_chest_of_the_infinite_wisdom.tres new file mode 100644 index 0000000..ebbcdad --- /dev/null +++ b/game/modules/icons/4_chest_of_the_infinite_wisdom.tres @@ -0,0 +1,9 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-1/43.png" type="Texture" id=1] + + +[resource] +flags = 4 +atlas = ExtResource( 1 ) +region = Rect2( 1, 0, 16, 16 ) diff --git a/game/modules/icons/Naturalist/AspectOfScorpions.png b/game/modules/icons/Naturalist/AspectOfScorpions.png new file mode 100644 index 0000000..de41ad0 Binary files /dev/null and b/game/modules/icons/Naturalist/AspectOfScorpions.png differ diff --git a/game/modules/icons/Naturalist/AspectOfScorpions.png.import b/game/modules/icons/Naturalist/AspectOfScorpions.png.import new file mode 100644 index 0000000..a2e24f1 --- /dev/null +++ b/game/modules/icons/Naturalist/AspectOfScorpions.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/AspectOfScorpions.png-57bf81255e358a2289de8af818917a62.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/Naturalist/AspectOfScorpions.png" +dest_files=[ "res://.import/AspectOfScorpions.png-57bf81255e358a2289de8af818917a62.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=2 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/Naturalist/AspectOfScorpions.tscn b/game/modules/icons/Naturalist/AspectOfScorpions.tscn new file mode 100644 index 0000000..5a08150 --- /dev/null +++ b/game/modules/icons/Naturalist/AspectOfScorpions.tscn @@ -0,0 +1,104 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://texture_tools/LayeredTextureMaker.gd" type="Script" id=1] +[ext_resource path="res://modules/icons/Naturalist/AspectOfScorpions.png" type="Texture" id=2] +[ext_resource path="res://modules/icons/ parts/circles.svg" type="Texture" id=3] +[ext_resource path="res://modules/icons/icons.png" type="Texture" id=4] + + +[sub_resource type="Gradient" id=1] +offsets = PoolRealArray( 0, 0.166667, 1 ) +colors = PoolColorArray( 0, 0, 0, 1, 0.871094, 0.871094, 0.871094, 1, 1, 1, 1, 1 ) + +[node name="LayeredTextureMaker" type="Node2D"] +script = ExtResource( 1 ) +__meta__ = { +"_edit_lock_": true +} +texture = ExtResource( 2 ) + +[node name="Sprite" type="Sprite" parent="."] +modulate = Color( 0, 0, 0, 1 ) +self_modulate = Color( 0, 0, 0, 1 ) +position = Vector2( 22.1815, 14.0857 ) +scale = Vector2( 0.85584, 0.746345 ) +texture = ExtResource( 4 ) + +[node name="circles" type="Sprite" parent="."] +visible = false +modulate = Color( 0.427451, 0.0588235, 0.0588235, 1 ) +self_modulate = Color( 0.772549, 0.458824, 0.458824, 1 ) +position = Vector2( 5.77751, 5.69682 ) +scale = Vector2( 0.0683068, 0.0707925 ) +texture = ExtResource( 3 ) + +[node name="CPUParticles2D" type="CPUParticles2D" parent="."] +modulate = Color( 0.662745, 0.207843, 0.207843, 1 ) +position = Vector2( 6.35167, 10.2869 ) +scale = Vector2( 0.05, 0.05 ) +amount = 24 +texture = ExtResource( 3 ) +direction = Vector2( 0.5, 0.5 ) +spread = 108.36 +gravity = Vector2( 0, 0 ) +initial_velocity = 40.0 +linear_accel = 3.2 +linear_accel_random = 0.21 +color_ramp = SubResource( 1 ) +hue_variation_random = 0.02 + +[node name="CPUParticles2D2" type="CPUParticles2D" parent="."] +modulate = Color( 0.662745, 0.207843, 0.207843, 1 ) +position = Vector2( 4.59298, 2.6762 ) +scale = Vector2( 0.02, 0.02 ) +amount = 20 +lifetime = 0.74 +explosiveness = 0.14 +randomness = 0.59 +lifetime_randomness = 0.38 +texture = ExtResource( 3 ) +direction = Vector2( 0.5, 0.5 ) +spread = 108.36 +gravity = Vector2( 0, 0 ) +initial_velocity = 40.0 +linear_accel = 3.2 +linear_accel_random = 0.21 +color_ramp = SubResource( 1 ) + +[node name="CPUParticles2D3" type="CPUParticles2D" parent="."] +modulate = Color( 0.662745, 0.207843, 0.207843, 1 ) +position = Vector2( 10.675, 2.7188 ) +scale = Vector2( 0.02, 0.02 ) +amount = 20 +lifetime = 0.74 +preprocess = 14.4 +explosiveness = 0.14 +randomness = 0.59 +lifetime_randomness = 0.38 +texture = ExtResource( 3 ) +direction = Vector2( 0.5, 0.5 ) +spread = 108.36 +gravity = Vector2( 0, 0 ) +initial_velocity = 40.0 +linear_accel = 3.2 +linear_accel_random = 0.21 +color_ramp = SubResource( 1 ) + +[node name="CPUParticles2D4" type="CPUParticles2D" parent="."] +modulate = Color( 0.662745, 0.207843, 0.207843, 1 ) +position = Vector2( 13.4834, 6.60399 ) +scale = Vector2( 0.02, 0.02 ) +amount = 20 +lifetime = 0.74 +preprocess = 9.6 +explosiveness = 0.14 +randomness = 0.59 +lifetime_randomness = 0.38 +texture = ExtResource( 3 ) +direction = Vector2( 0.5, 0.5 ) +spread = 108.36 +gravity = Vector2( 0, 0 ) +initial_velocity = 40.0 +linear_accel = 3.2 +linear_accel_random = 0.21 +color_ramp = SubResource( 1 ) diff --git a/game/modules/icons/icons-1/11.png b/game/modules/icons/icons-1/11.png new file mode 100644 index 0000000..eeb2975 Binary files /dev/null and b/game/modules/icons/icons-1/11.png differ diff --git a/game/modules/icons/icons-1/11.png.import b/game/modules/icons/icons-1/11.png.import new file mode 100644 index 0000000..6b1861a --- /dev/null +++ b/game/modules/icons/icons-1/11.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/11.png-cf6a3818bea90c2961e6fe8f6de32ac9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-1/11.png" +dest_files=[ "res://.import/11.png-cf6a3818bea90c2961e6fe8f6de32ac9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-1/43.png b/game/modules/icons/icons-1/43.png new file mode 100644 index 0000000..3c8609c Binary files /dev/null and b/game/modules/icons/icons-1/43.png differ diff --git a/game/modules/icons/icons-1/43.png.import b/game/modules/icons/icons-1/43.png.import new file mode 100644 index 0000000..fece893 --- /dev/null +++ b/game/modules/icons/icons-1/43.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/43.png-4c4995347800bfcff6dd264ab60cdcbb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-1/43.png" +dest_files=[ "res://.import/43.png-4c4995347800bfcff6dd264ab60cdcbb.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-1/5.png b/game/modules/icons/icons-1/5.png new file mode 100644 index 0000000..2bbb459 Binary files /dev/null and b/game/modules/icons/icons-1/5.png differ diff --git a/game/modules/icons/icons-1/5.png.import b/game/modules/icons/icons-1/5.png.import new file mode 100644 index 0000000..d72f6bc --- /dev/null +++ b/game/modules/icons/icons-1/5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/5.png-5ab45144da6dcf7f1946e8c3d281b2b1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-1/5.png" +dest_files=[ "res://.import/5.png-5ab45144da6dcf7f1946e8c3d281b2b1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-1/61.png b/game/modules/icons/icons-1/61.png new file mode 100644 index 0000000..c24ff5f Binary files /dev/null and b/game/modules/icons/icons-1/61.png differ diff --git a/game/modules/icons/icons-1/61.png.import b/game/modules/icons/icons-1/61.png.import new file mode 100644 index 0000000..176a5f7 --- /dev/null +++ b/game/modules/icons/icons-1/61.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/61.png-e30c40a844f41c77476cfcb46bf64a9e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-1/61.png" +dest_files=[ "res://.import/61.png-e30c40a844f41c77476cfcb46bf64a9e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-1/Readme.txt b/game/modules/icons/icons-1/Readme.txt new file mode 100644 index 0000000..9506d30 --- /dev/null +++ b/game/modules/icons/icons-1/Readme.txt @@ -0,0 +1,16 @@ +All graphics in this folder is under CCO license, that means you can do whatever you want with them. + +The sources is not included because i lost them. + +I would be greatful if you email me at DustyChest@gmail.com and infoem where are you using these graphics. :) + +Good luck with your projects! :) + + +My website(blog): http://dustychest.blogspot.com/ + +Contact: DustyChest@gmail.com + +from https://opengameart.org/content/skill-item-and-spell-icons + +Thanks! diff --git a/game/modules/icons/icons-2/README.txt b/game/modules/icons/icons-2/README.txt new file mode 100644 index 0000000..153e533 --- /dev/null +++ b/game/modules/icons/icons-2/README.txt @@ -0,0 +1,12 @@ +From https://opengameart.org/content/painterly-spell-icons-part-1 + +License(s): +CC-BY 3.0 +CC-BY-SA 3.0 +GPL 3.0 +GPL 2.0 + +Copyright/Attribution Notice: +J. W. Bjerk (eleazzaar) -- www.jwbjerk.com/art -- find this and other open art at: http://opengameart.org + +Thanks! diff --git a/game/modules/icons/icons-2/enchant-acid-2.png b/game/modules/icons/icons-2/enchant-acid-2.png new file mode 100644 index 0000000..541e072 Binary files /dev/null and b/game/modules/icons/icons-2/enchant-acid-2.png differ diff --git a/game/modules/icons/icons-2/enchant-acid-2.png.import b/game/modules/icons/icons-2/enchant-acid-2.png.import new file mode 100644 index 0000000..73abed4 --- /dev/null +++ b/game/modules/icons/icons-2/enchant-acid-2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/enchant-acid-2.png-99f3b58b04be56c3516cb8a0ed8b8525.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-2/enchant-acid-2.png" +dest_files=[ "res://.import/enchant-acid-2.png-99f3b58b04be56c3516cb8a0ed8b8525.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-2/enchant-blue-2.png b/game/modules/icons/icons-2/enchant-blue-2.png new file mode 100644 index 0000000..c824393 Binary files /dev/null and b/game/modules/icons/icons-2/enchant-blue-2.png differ diff --git a/game/modules/icons/icons-2/enchant-blue-2.png.import b/game/modules/icons/icons-2/enchant-blue-2.png.import new file mode 100644 index 0000000..c67388f --- /dev/null +++ b/game/modules/icons/icons-2/enchant-blue-2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/enchant-blue-2.png-62269ec03cda74c14260d8eec2def3e0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-2/enchant-blue-2.png" +dest_files=[ "res://.import/enchant-blue-2.png-62269ec03cda74c14260d8eec2def3e0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-2/heal-jade-2.png b/game/modules/icons/icons-2/heal-jade-2.png new file mode 100644 index 0000000..84df53d Binary files /dev/null and b/game/modules/icons/icons-2/heal-jade-2.png differ diff --git a/game/modules/icons/icons-2/heal-jade-2.png.import b/game/modules/icons/icons-2/heal-jade-2.png.import new file mode 100644 index 0000000..81a1817 --- /dev/null +++ b/game/modules/icons/icons-2/heal-jade-2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/heal-jade-2.png-d014e1e194c6dc4bfb8e4d42e88bb5ce.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-2/heal-jade-2.png" +dest_files=[ "res://.import/heal-jade-2.png-d014e1e194c6dc4bfb8e4d42e88bb5ce.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-2/protect-acid-3.png b/game/modules/icons/icons-2/protect-acid-3.png new file mode 100644 index 0000000..f4ce0d6 Binary files /dev/null and b/game/modules/icons/icons-2/protect-acid-3.png differ diff --git a/game/modules/icons/icons-2/protect-acid-3.png.import b/game/modules/icons/icons-2/protect-acid-3.png.import new file mode 100644 index 0000000..705a1bc --- /dev/null +++ b/game/modules/icons/icons-2/protect-acid-3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/protect-acid-3.png-148f513b4d4101c7032bae49aae0efa1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-2/protect-acid-3.png" +dest_files=[ "res://.import/protect-acid-3.png-148f513b4d4101c7032bae49aae0efa1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-2/protect-eerie-2.png b/game/modules/icons/icons-2/protect-eerie-2.png new file mode 100644 index 0000000..85cc9a4 Binary files /dev/null and b/game/modules/icons/icons-2/protect-eerie-2.png differ diff --git a/game/modules/icons/icons-2/protect-eerie-2.png.import b/game/modules/icons/icons-2/protect-eerie-2.png.import new file mode 100644 index 0000000..21d063a --- /dev/null +++ b/game/modules/icons/icons-2/protect-eerie-2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/protect-eerie-2.png-bccadc55b87aeb28c975ab0b4740570f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-2/protect-eerie-2.png" +dest_files=[ "res://.import/protect-eerie-2.png-bccadc55b87aeb28c975ab0b4740570f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-3/README.txt b/game/modules/icons/icons-3/README.txt new file mode 100644 index 0000000..d6ec7e1 --- /dev/null +++ b/game/modules/icons/icons-3/README.txt @@ -0,0 +1,11 @@ +From https://opengameart.org/content/painterly-spell-icons-part-2 + +License(s): +CC-BY 3.0 +CC-BY-SA 3.0 +GPL 2.0 + +Copyright/Attribution Notice: +J. W. Bjerk (eleazzaar) -- www.jwbjerk.com/art -- find this and other open art at: http://opengameart.org + +Thanks! diff --git a/game/modules/icons/icons-3/beam-jade-2.png b/game/modules/icons/icons-3/beam-jade-2.png new file mode 100644 index 0000000..49fb7b0 Binary files /dev/null and b/game/modules/icons/icons-3/beam-jade-2.png differ diff --git a/game/modules/icons/icons-3/beam-jade-2.png.import b/game/modules/icons/icons-3/beam-jade-2.png.import new file mode 100644 index 0000000..6ac3fff --- /dev/null +++ b/game/modules/icons/icons-3/beam-jade-2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/beam-jade-2.png-ceabb88da08168269701daf0250cdc44.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-3/beam-jade-2.png" +dest_files=[ "res://.import/beam-jade-2.png-ceabb88da08168269701daf0250cdc44.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=2 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-3/haste-royal-2.png b/game/modules/icons/icons-3/haste-royal-2.png new file mode 100644 index 0000000..5cfce1e Binary files /dev/null and b/game/modules/icons/icons-3/haste-royal-2.png differ diff --git a/game/modules/icons/icons-3/haste-royal-2.png.import b/game/modules/icons/icons-3/haste-royal-2.png.import new file mode 100644 index 0000000..ff17a74 --- /dev/null +++ b/game/modules/icons/icons-3/haste-royal-2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/haste-royal-2.png-cd163e8f72a686e7523535ebf65a25b6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-3/haste-royal-2.png" +dest_files=[ "res://.import/haste-royal-2.png-cd163e8f72a686e7523535ebf65a25b6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-3/lighting-acid-2.png b/game/modules/icons/icons-3/lighting-acid-2.png new file mode 100644 index 0000000..6b47089 Binary files /dev/null and b/game/modules/icons/icons-3/lighting-acid-2.png differ diff --git a/game/modules/icons/icons-3/lighting-acid-2.png.import b/game/modules/icons/icons-3/lighting-acid-2.png.import new file mode 100644 index 0000000..d1689ee --- /dev/null +++ b/game/modules/icons/icons-3/lighting-acid-2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/lighting-acid-2.png-9abc216af06e1cfbe15aad780ec2ae22.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-3/lighting-acid-2.png" +dest_files=[ "res://.import/lighting-acid-2.png-9abc216af06e1cfbe15aad780ec2ae22.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-3/vines-plain-1.png b/game/modules/icons/icons-3/vines-plain-1.png new file mode 100644 index 0000000..18561fd Binary files /dev/null and b/game/modules/icons/icons-3/vines-plain-1.png differ diff --git a/game/modules/icons/icons-3/vines-plain-1.png.import b/game/modules/icons/icons-3/vines-plain-1.png.import new file mode 100644 index 0000000..b6b1359 --- /dev/null +++ b/game/modules/icons/icons-3/vines-plain-1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/vines-plain-1.png-015727be85510d540cfd3fa42eabde75.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-3/vines-plain-1.png" +dest_files=[ "res://.import/vines-plain-1.png-015727be85510d540cfd3fa42eabde75.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-3/vines-plain-2.png b/game/modules/icons/icons-3/vines-plain-2.png new file mode 100644 index 0000000..85decfd Binary files /dev/null and b/game/modules/icons/icons-3/vines-plain-2.png differ diff --git a/game/modules/icons/icons-3/vines-plain-2.png.import b/game/modules/icons/icons-3/vines-plain-2.png.import new file mode 100644 index 0000000..8d34f6b --- /dev/null +++ b/game/modules/icons/icons-3/vines-plain-2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/vines-plain-2.png-3d0c7bfa9b3bcb5be54c391ea218d48c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-3/vines-plain-2.png" +dest_files=[ "res://.import/vines-plain-2.png-3d0c7bfa9b3bcb5be54c391ea218d48c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-4/README.txt b/game/modules/icons/icons-4/README.txt new file mode 100644 index 0000000..fb7d29c --- /dev/null +++ b/game/modules/icons/icons-4/README.txt @@ -0,0 +1,24 @@ +Painterly Spell Icon set part 3 + +These icons are released by the artist under the following licenses: +GNU GPL 2.0 +GNU GPL 3.0 +CC-BY 3.0 +CC-BY-SA 3.0 + +Attribution: + +J. W. Bjerk (eleazzaar) -- www.jwbjerk.com/art -- find this and other open art at: http://opengameart.org + + +If you find these icons useful, I'd appreciate it if you send me a line, with a link to your project -- just to satisfy my curiosity. +Also I can probably be commissioned to extend or expand this set at a reasonable rate. + +Enjoy... + +J.W.Bjerk +me AT jwbjerk D0T com + +From https://opengameart.org/content/painterly-spell-icons-part-3 +Thanks! + diff --git a/game/modules/icons/icons-4/explosion-royal-2.png b/game/modules/icons/icons-4/explosion-royal-2.png new file mode 100644 index 0000000..27f5a9a Binary files /dev/null and b/game/modules/icons/icons-4/explosion-royal-2.png differ diff --git a/game/modules/icons/icons-4/explosion-royal-2.png.import b/game/modules/icons/icons-4/explosion-royal-2.png.import new file mode 100644 index 0000000..c004405 --- /dev/null +++ b/game/modules/icons/icons-4/explosion-royal-2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/explosion-royal-2.png-1916fa89496be67d5979356389761480.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-4/explosion-royal-2.png" +dest_files=[ "res://.import/explosion-royal-2.png-1916fa89496be67d5979356389761480.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-4/horror-acid-3.png b/game/modules/icons/icons-4/horror-acid-3.png new file mode 100644 index 0000000..b83b74b Binary files /dev/null and b/game/modules/icons/icons-4/horror-acid-3.png differ diff --git a/game/modules/icons/icons-4/horror-acid-3.png.import b/game/modules/icons/icons-4/horror-acid-3.png.import new file mode 100644 index 0000000..35c937c --- /dev/null +++ b/game/modules/icons/icons-4/horror-acid-3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/horror-acid-3.png-0f7b5e203b5c15197f56fb12245a0d30.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-4/horror-acid-3.png" +dest_files=[ "res://.import/horror-acid-3.png-0f7b5e203b5c15197f56fb12245a0d30.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-4/leaf-acid-1.png b/game/modules/icons/icons-4/leaf-acid-1.png new file mode 100644 index 0000000..1547714 Binary files /dev/null and b/game/modules/icons/icons-4/leaf-acid-1.png differ diff --git a/game/modules/icons/icons-4/leaf-acid-1.png.import b/game/modules/icons/icons-4/leaf-acid-1.png.import new file mode 100644 index 0000000..23412c5 --- /dev/null +++ b/game/modules/icons/icons-4/leaf-acid-1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/leaf-acid-1.png-f5edc0fde55192d58a4a07dc7a345253.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-4/leaf-acid-1.png" +dest_files=[ "res://.import/leaf-acid-1.png-f5edc0fde55192d58a4a07dc7a345253.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-4/wild-orange-2.png b/game/modules/icons/icons-4/wild-orange-2.png new file mode 100644 index 0000000..c7a49cc Binary files /dev/null and b/game/modules/icons/icons-4/wild-orange-2.png differ diff --git a/game/modules/icons/icons-4/wild-orange-2.png.import b/game/modules/icons/icons-4/wild-orange-2.png.import new file mode 100644 index 0000000..75a0683 --- /dev/null +++ b/game/modules/icons/icons-4/wild-orange-2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/wild-orange-2.png-a1c2f62becf274e77ab25df55fd4cd00.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-4/wild-orange-2.png" +dest_files=[ "res://.import/wild-orange-2.png-a1c2f62becf274e77ab25df55fd4cd00.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-4/wind-blue-1.png b/game/modules/icons/icons-4/wind-blue-1.png new file mode 100644 index 0000000..1824137 Binary files /dev/null and b/game/modules/icons/icons-4/wind-blue-1.png differ diff --git a/game/modules/icons/icons-4/wind-blue-1.png.import b/game/modules/icons/icons-4/wind-blue-1.png.import new file mode 100644 index 0000000..74e2796 --- /dev/null +++ b/game/modules/icons/icons-4/wind-blue-1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/wind-blue-1.png-071ec0121c0ad31079f6275496dc9113.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-4/wind-blue-1.png" +dest_files=[ "res://.import/wind-blue-1.png-071ec0121c0ad31079f6275496dc9113.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/modules/icons/icons-5/README.txt b/game/modules/icons/icons-5/README.txt new file mode 100644 index 0000000..dc2d436 --- /dev/null +++ b/game/modules/icons/icons-5/README.txt @@ -0,0 +1,23 @@ +Painterly Spell Icon set part 4 + +These icons are released by the artist under the following licenses: +GNU GPL 2.0 +GNU GPL 3.0 +CC-BY 3.0 +CC-BY-SA 3.0 + +Attribution: + +J. W. Bjerk (eleazzaar) -- www.jwbjerk.com/art -- find this and other open art at: http://opengameart.org + + +If you find these icons useful, I'd appreciate it if you send me a line, with a link to your project -- just to satisfy my curiosity. +Also I can probably be commissioned to extend or expand this set at a reasonable rate. + +Enjoy... + +J.W.Bjerk +me AT jwbjerk D0T com + +From https://opengameart.org/content/painterly-spell-icons-part-4 +Thanks! diff --git a/game/modules/icons/icons-5/wind-grasp-acid-2.png b/game/modules/icons/icons-5/wind-grasp-acid-2.png new file mode 100644 index 0000000..b7da529 Binary files /dev/null and b/game/modules/icons/icons-5/wind-grasp-acid-2.png differ diff --git a/game/modules/icons/icons-5/wind-grasp-acid-2.png.import b/game/modules/icons/icons-5/wind-grasp-acid-2.png.import new file mode 100644 index 0000000..476b15e --- /dev/null +++ b/game/modules/icons/icons-5/wind-grasp-acid-2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/wind-grasp-acid-2.png-c42bfa6709d944a971f4ba70993d7bd8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-5/wind-grasp-acid-2.png" +dest_files=[ "res://.import/wind-grasp-acid-2.png-c42bfa6709d944a971f4ba70993d7bd8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons-5/wind-grasp-eerie-2.png b/game/modules/icons/icons-5/wind-grasp-eerie-2.png new file mode 100644 index 0000000..2574485 Binary files /dev/null and b/game/modules/icons/icons-5/wind-grasp-eerie-2.png differ diff --git a/game/modules/icons/icons-5/wind-grasp-eerie-2.png.import b/game/modules/icons/icons-5/wind-grasp-eerie-2.png.import new file mode 100644 index 0000000..c5c725f --- /dev/null +++ b/game/modules/icons/icons-5/wind-grasp-eerie-2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/wind-grasp-eerie-2.png-9a2ed92dad2306877d6739a288d98058.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons-5/wind-grasp-eerie-2.png" +dest_files=[ "res://.import/wind-grasp-eerie-2.png-9a2ed92dad2306877d6739a288d98058.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/icons.png b/game/modules/icons/icons.png new file mode 100644 index 0000000..115185b Binary files /dev/null and b/game/modules/icons/icons.png differ diff --git a/game/modules/icons/icons.png.import b/game/modules/icons/icons.png.import new file mode 100644 index 0000000..00983cf --- /dev/null +++ b/game/modules/icons/icons.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icons.png-3101ee0e9ec50bf5f6d426a6b0a534ad.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/icons/icons.png" +dest_files=[ "res://.import/icons.png-3101ee0e9ec50bf5f6d426a6b0a534ad.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=2 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/icons/items/gold.tres b/game/modules/icons/items/gold.tres new file mode 100644 index 0000000..a485146 --- /dev/null +++ b/game/modules/icons/items/gold.tres @@ -0,0 +1,9 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://modules/icons/icons-1/5.png" type="Texture" id=1] + + +[resource] +flags = 4 +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) diff --git a/game/modules/planets/TileMap64x32.tscn b/game/modules/planets/TileMap64x32.tscn new file mode 100644 index 0000000..7a6e3ff --- /dev/null +++ b/game/modules/planets/TileMap64x32.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://modules/planets/new_rtileset.tres" type="RTileSet" id=1] + +[node name="TileMap" type="RTileMap"] +mode = 1 +tile_set = ExtResource( 1 ) +cell_size = Vector2( 64, 32 ) +cell_tile_origin = 2 +cell_y_sort = true +format = 1 +tile_data = PoolIntArray( -4456472, 2, 0, -4456471, 2, 0, -4456470, 2, 0, -4456469, 2, 0, -4456468, 2, 0, -4456467, 2, 0, -4456466, 2, 0, -4390939, 2, 0, -4390938, 2, 0, -4390937, 2, 0, -4390929, 2, 0, -4390928, 2, 0, -4390927, 2, 0, -4390926, 2, 0, -4390925, 2, 0, -4390924, 2, 0, -4390923, 2, 0, -4390922, 2, 0, -4390921, 2, 0, -4325405, 2, 0, -4325404, 2, 0, -4325399, 1, 0, -4325398, 1, 0, -4325397, 1, 0, -4325396, 1, 0, -4325395, 0, 0, -4325394, 0, 0, -4325393, 0, 0, -4325384, 2, 0, -4325383, 2, 0, -4325382, 2, 0, -4325381, 2, 0, -4259870, 2, 0, -4259866, 0, 0, -4259865, 0, 0, -4259864, 0, 0, -4259863, 1, 0, -4259862, 1, 0, -4259861, 1, 0, -4259860, 1, 0, -4259859, 1, 0, -4259858, 1, 0, -4259857, 1, 0, -4259856, 1, 0, -4259855, 1, 0, -4259854, 1, 0, -4259853, 1, 0, -4259852, 1, 0, -4259851, 1, 0, -4259850, 1, 0, -4259849, 1, 0, -4259848, 1, 0, -4259844, 2, 0, -4259843, 2, 0, -4194341, 1, 0, -4194336, 2, 0, -4194335, 2, 0, -4194332, 0, 0, -4194331, 0, 0, -4194330, 0, 0, -4194329, 0, 0, -4194328, 0, 0, -4194327, 1, 0, -4194326, 1, 0, -4194325, 1, 0, -4194324, 1, 0, -4194323, 1, 0, -4194322, 1, 0, -4194321, 1, 0, -4194320, 1, 0, -4194319, 1, 0, -4194318, 1, 0, -4194317, 1, 0, -4194316, 1, 0, -4194315, 1, 0, -4194314, 0, 0, -4194313, 0, 0, -4194312, 0, 0, -4194311, 0, 0, -4194310, 0, 0, -4194309, 0, 0, -4194308, 0, 0, -4194306, 2, 0, -4194305, 2, 0, -4128806, 1, 0, -4128805, 1, 0, -4128797, 0, 0, -4128796, 0, 0, -4128795, 0, 0, -4128794, 0, 0, -4128793, 0, 0, -4128792, 0, 0, -4128791, 0, 0, -4128790, 1, 0, -4128789, 1, 0, -4128788, 1, 0, -4128787, 1, 0, -4128786, 0, 0, -4128785, 0, 0, -4128784, 0, 0, -4128783, 0, 0, -4128782, 1, 0, -4128781, 1, 0, -4128780, 0, 0, -4128779, 0, 0, -4128778, 0, 0, -4128777, 0, 0, -4128776, 0, 0, -4128775, 0, 0, -4128774, 0, 0, -4128773, 0, 0, -4128772, 0, 0, -4128771, 0, 0, -4128770, 0, 0, -4194304, 2, 0, -4194303, 2, 0, -4063270, 1, 0, -4063269, 1, 0, -4063263, 0, 0, -4063262, 0, 0, -4063261, 0, 0, -4063260, 0, 0, -4063259, 0, 0, -4063258, 0, 0, -4063257, 0, 0, -4063256, 0, 0, -4063255, 0, 0, -4063254, 0, 0, -4063253, 0, 0, -4063252, 0, 0, -4063251, 0, 0, -4063250, 0, 0, -4063249, 0, 0, -4063248, 0, 0, -4063247, 0, 0, -4063246, 0, 0, -4063245, 0, 0, -4063244, 0, 0, -4063243, 0, 0, -4063242, 0, 0, -4063241, 0, 0, -4063240, 0, 0, -4063239, 0, 0, -4063238, 0, 0, -4063237, 0, 0, -4063236, 0, 0, -4063235, 0, 0, -4063234, 0, 0, -4063233, 0, 0, -4128768, 0, 0, -4128766, 2, 0, -4128765, 2, 0, -3997734, 1, 0, -3997733, 1, 0, -3997728, 0, 0, -3997727, 0, 0, -3997726, 0, 0, -3997725, 0, 0, -3997724, 0, 0, -3997723, 0, 0, -3997722, 0, 0, -3997721, 0, 0, -3997720, 0, 0, -3997719, 0, 0, -3997718, 0, 0, -3997717, 0, 0, -3997716, 0, 0, -3997715, 0, 0, -3997714, 0, 0, -3997713, 1, 0, -3997712, 0, 0, -3997711, 0, 0, -3997710, 0, 0, -3997709, 0, 0, -3997708, 0, 0, -3997707, 0, 0, -3997706, 0, 0, -3997705, 0, 0, -3997704, 0, 0, -3997703, 0, 0, -3997702, 0, 0, -3997701, 0, 0, -3997700, 0, 0, -3997699, 0, 0, -3997698, 0, 0, -3997697, 0, 0, -4063232, 0, 0, -4063231, 0, 0, -4063230, 0, 0, -4063228, 2, 0, -3932199, 1, 0, -3932198, 1, 0, -3932194, 0, 0, -3932193, 0, 0, -3932192, 0, 0, -3932191, 0, 0, -3932190, 0, 0, -3932189, 0, 0, -3932188, 0, 0, -3932187, 0, 0, -3932186, 0, 0, -3932185, 0, 0, -3932184, 0, 0, -3932183, 0, 0, -3932182, 0, 0, -3932181, 0, 0, -3932180, 0, 0, -3932179, 0, 0, -3932178, 0, 0, -3932177, 1, 0, -3932176, 0, 0, -3932175, 0, 0, -3932174, 0, 0, -3932173, 0, 0, -3932172, 0, 0, -3932171, 0, 0, -3932170, 0, 0, -3932169, 0, 0, -3932168, 0, 0, -3932167, 0, 0, -3932166, 0, 0, -3932165, 0, 0, -3932164, 0, 0, -3932163, 0, 0, -3932162, 0, 0, -3932161, 0, 0, -3997696, 0, 0, -3997695, 0, 0, -3997694, 0, 0, -3997693, 0, 0, -3997692, 0, 0, -3997691, 2, 0, -3997690, 2, 0, -3866663, 1, 0, -3866662, 1, 0, -3866659, 0, 0, -3866658, 0, 0, -3866657, 0, 0, -3866656, 0, 0, -3866655, 0, 0, -3866654, 0, 0, -3866653, 0, 0, -3866652, 0, 0, -3866651, 0, 0, -3866650, 0, 0, -3866649, 0, 0, -3866648, 0, 0, -3866647, 0, 0, -3866646, 0, 0, -3866645, 1, 0, -3866644, 0, 0, -3866643, 0, 0, -3866642, 0, 0, -3866641, 0, 0, -3866640, 1, 0, -3866639, 0, 0, -3866638, 0, 0, -3866637, 0, 0, -3866636, 0, 0, -3866635, 0, 0, -3866634, 0, 0, -3866633, 0, 0, -3866632, 0, 0, -3866631, 0, 0, -3866630, 0, 0, -3866629, 0, 0, -3866628, 0, 0, -3866627, 0, 0, -3866626, 0, 0, -3866625, 0, 0, -3932160, 0, 0, -3932159, 0, 0, -3932158, 0, 0, -3932157, 0, 0, -3932156, 0, 0, -3932155, 0, 0, -3932153, 2, 0, -3932152, 2, 0, -3801128, 1, 0, -3801126, 1, 0, -3801124, 0, 0, -3801123, 0, 0, -3801122, 0, 0, -3801121, 0, 0, -3801120, 0, 0, -3801119, 0, 0, -3801118, 0, 0, -3801117, 0, 0, -3801116, 0, 0, -3801115, 0, 0, -3801114, 0, 0, -3801113, 0, 0, -3801112, 0, 0, -3801111, 0, 0, -3801110, 0, 0, -3801109, 1, 0, -3801108, 0, 0, -3801107, 0, 0, -3801106, 0, 0, -3801105, 0, 0, -3801104, 0, 0, -3801103, 1, 0, -3801102, 0, 0, -3801101, 0, 0, -3801100, 0, 0, -3801099, 0, 0, -3801098, 0, 0, -3801097, 0, 0, -3801096, 0, 0, -3801095, 0, 0, -3801094, 0, 0, -3801093, 0, 0, -3801092, 0, 0, -3801091, 0, 0, -3801090, 0, 0, -3801089, 0, 0, -3866624, 0, 0, -3866623, 0, 0, -3866622, 0, 0, -3866621, 0, 0, -3866620, 0, 0, -3866619, 0, 0, -3866618, 0, 0, -3866617, 0, 0, -3866615, 2, 0, -3866614, 2, 0, -3735592, 1, 0, -3735590, 1, 0, -3735589, 0, 0, -3735588, 0, 0, -3735587, 0, 0, -3735586, 0, 0, -3735585, 0, 0, -3735584, 0, 0, -3735583, 0, 0, -3735582, 0, 0, -3735581, 0, 0, -3735580, 0, 0, -3735579, 0, 0, -3735578, 0, 0, -3735577, 0, 0, -3735576, 0, 0, -3735575, 0, 0, -3735574, 0, 0, -3735573, 1, 0, -3735572, 0, 0, -3735571, 0, 0, -3735570, 0, 0, -3735569, 0, 0, -3735568, 0, 0, -3735567, 0, 0, -3735566, 1, 0, -3735565, 0, 0, -3735564, 0, 0, -3735563, 0, 0, -3735562, 0, 0, -3735561, 0, 0, -3735560, 0, 0, -3735559, 0, 0, -3735558, 0, 0, -3735557, 0, 0, -3735556, 0, 0, -3735555, 0, 0, -3735554, 0, 0, -3735553, 0, 0, -3801088, 0, 0, -3801087, 0, 0, -3801086, 0, 0, -3801085, 0, 0, -3801084, 0, 0, -3801083, 0, 0, -3801082, 0, 0, -3801081, 0, 0, -3801080, 0, 0, -3801079, 0, 0, -3801077, 2, 0, -3670054, 1, 0, -3670053, 0, 0, -3670052, 0, 0, -3670051, 0, 0, -3670050, 0, 0, -3670049, 0, 0, -3670048, 0, 0, -3670047, 0, 0, -3670046, 0, 0, -3670045, 0, 0, -3670044, 0, 0, -3670043, 0, 0, -3670042, 1, 0, -3670041, 1, 0, -3670040, 1, 0, -3670039, 1, 0, -3670038, 1, 0, -3670037, 1, 0, -3670036, 1, 0, -3670035, 0, 0, -3670034, 0, 0, -3670033, 0, 0, -3670032, 0, 0, -3670031, 0, 0, -3670030, 0, 0, -3670029, 1, 0, -3670028, 1, 0, -3670027, 0, 0, -3670026, 0, 0, -3670025, 0, 0, -3670024, 0, 0, -3670023, 0, 0, -3670022, 0, 0, -3670021, 0, 0, -3670020, 0, 0, -3670019, 0, 0, -3670018, 0, 0, -3670017, 0, 0, -3735552, 0, 0, -3735551, 0, 0, -3735550, 0, 0, -3735549, 0, 0, -3735548, 0, 0, -3735547, 0, 0, -3735546, 0, 0, -3735545, 0, 0, -3735544, 0, 0, -3735543, 0, 0, -3735542, 0, 0, -3735541, 0, 0, -3735540, 2, 0, -3604519, 1, 0, -3604518, 0, 0, -3604517, 0, 0, -3604516, 0, 0, -3604515, 0, 0, -3604514, 0, 0, -3604513, 0, 0, -3604512, 0, 0, -3604511, 0, 0, -3604510, 0, 0, -3604509, 0, 0, -3604508, 0, 0, -3604507, 1, 0, -3604506, 0, 0, -3604505, 0, 0, -3604504, 0, 0, -3604503, 0, 0, -3604502, 0, 0, -3604501, 1, 0, -3604500, 0, 0, -3604499, 0, 0, -3604498, 0, 0, -3604497, 0, 0, -3604496, 0, 0, -3604495, 0, 0, -3604494, 0, 0, -3604493, 0, 0, -3604492, 0, 0, -3604491, 1, 0, -3604490, 0, 0, -3604489, 0, 0, -3604488, 0, 0, -3604487, 0, 0, -3604486, 0, 0, -3604485, 0, 0, -3604484, 0, 0, -3604483, 0, 0, -3604482, 0, 0, -3604481, 0, 0, -3670016, 0, 0, -3670015, 0, 0, -3670014, 0, 0, -3670013, 0, 0, -3670012, 0, 0, -3670011, 0, 0, -3670010, 0, 0, -3670009, 0, 0, -3670008, 0, 0, -3670007, 0, 0, -3670006, 0, 0, -3670005, 0, 0, -3670004, 0, 0, -3670003, 2, 0, -3670002, 2, 0, -3538983, 1, 0, -3538982, 0, 0, -3538981, 0, 0, -3538980, 0, 0, -3538979, 0, 0, -3538978, 0, 0, -3538977, 0, 0, -3538976, 0, 0, -3538975, 0, 0, -3538974, 0, 0, -3538973, 0, 0, -3538972, 0, 0, -3538971, 1, 0, -3538970, 1, 0, -3538969, 1, 0, -3538968, 0, 0, -3538967, 0, 0, -3538966, 0, 0, -3538965, 1, 0, -3538964, 0, 0, -3538963, 0, 0, -3538962, 0, 0, -3538961, 0, 0, -3538960, 0, 0, -3538959, 0, 0, -3538958, 0, 0, -3538957, 0, 0, -3538956, 0, 0, -3538955, 0, 0, -3538954, 0, 0, -3538953, 0, 0, -3538952, 0, 0, -3538951, 0, 0, -3538950, 0, 0, -3538949, 0, 0, -3538948, 0, 0, -3538947, 0, 0, -3538946, 0, 0, -3538945, 0, 0, -3604480, 0, 0, -3604479, 0, 0, -3604478, 1, 0, -3604477, 0, 0, -3604476, 0, 0, -3604475, 0, 0, -3604474, 0, 0, -3604473, 0, 0, -3604472, 0, 0, -3604471, 0, 0, -3604470, 0, 0, -3604469, 0, 0, -3604468, 0, 0, -3604467, 0, 0, -3604465, 2, 0, -3473448, 0, 0, -3473447, 1, 0, -3473446, 0, 0, -3473445, 0, 0, -3473444, 0, 0, -3473443, 0, 0, -3473442, 0, 0, -3473441, 0, 0, -3473440, 0, 0, -3473439, 0, 0, -3473438, 0, 0, -3473437, 0, 0, -3473436, 1, 0, -3473435, 0, 0, -3473434, 0, 0, -3473433, 0, 0, -3473432, 1, 0, -3473431, 1, 0, -3473430, 0, 0, -3473429, 1, 0, -3473428, 0, 0, -3473427, 0, 0, -3473426, 0, 0, -3473425, 0, 0, -3473424, 0, 0, -3473423, 0, 0, -3473422, 0, 0, -3473421, 0, 0, -3473420, 0, 0, -3473419, 0, 0, -3473418, 0, 0, -3473417, 0, 0, -3473416, 0, 0, -3473415, 0, 0, -3473414, 0, 0, -3473413, 0, 0, -3473412, 0, 0, -3473411, 0, 0, -3473410, 0, 0, -3473409, 0, 0, -3538944, 0, 0, -3538943, 0, 0, -3538942, 0, 0, -3538941, 1, 0, -3538940, 1, 0, -3538939, 0, 0, -3538938, 0, 0, -3538937, 0, 0, -3538936, 0, 0, -3538935, 0, 0, -3538934, 0, 0, -3538933, 0, 0, -3538932, 0, 0, -3538931, 0, 0, -3538930, 0, 0, -3538929, 0, 0, -3538928, 2, 0, -3407912, 0, 0, -3407911, 1, 0, -3407910, 0, 0, -3407909, 0, 0, -3407908, 0, 0, -3407907, 0, 0, -3407906, 0, 0, -3407905, 0, 0, -3407904, 0, 0, -3407903, 0, 0, -3407902, 0, 0, -3407901, 0, 0, -3407900, 1, 0, -3407899, 0, 0, -3407898, 0, 0, -3407897, 0, 0, -3407896, 0, 0, -3407895, 0, 0, -3407894, 1, 0, -3407893, 1, 0, -3407892, 0, 0, -3407891, 0, 0, -3407890, 0, 0, -3407889, 0, 0, -3407888, 0, 0, -3407887, 0, 0, -3407886, 0, 0, -3407885, 0, 0, -3407884, 0, 0, -3407883, 0, 0, -3407882, 0, 0, -3407881, 0, 0, -3407880, 0, 0, -3407879, 0, 0, -3407878, 0, 0, -3407877, 0, 0, -3407876, 0, 0, -3407875, 0, 0, -3407874, 0, 0, -3407873, 0, 0, -3473408, 0, 0, -3473407, 0, 0, -3473406, 0, 0, -3473405, 0, 0, -3473404, 0, 0, -3473403, 1, 0, -3473402, 1, 0, -3473401, 0, 0, -3473400, 0, 0, -3473399, 0, 0, -3473398, 0, 0, -3473397, 0, 0, -3473396, 0, 0, -3473395, 0, 0, -3473394, 0, 0, -3473393, 0, 0, -3473392, 0, 0, -3473391, 2, 0, -3342377, 0, 0, -3342376, 1, 0, -3342375, 0, 0, -3342374, 0, 0, -3342373, 0, 0, -3342372, 0, 0, -3342371, 0, 0, -3342370, 0, 0, -3342369, 0, 0, -3342368, 0, 0, -3342367, 0, 0, -3342366, 0, 0, -3342365, 1, 0, -3342364, 0, 0, -3342363, 0, 0, -3342362, 0, 0, -3342361, 0, 0, -3342360, 0, 0, -3342359, 0, 0, -3342358, 0, 0, -3342357, 1, 0, -3342356, 1, 0, -3342355, 1, 0, -3342354, 0, 0, -3342353, 0, 0, -3342352, 0, 0, -3342351, 0, 0, -3342350, 0, 0, -3342349, 0, 0, -3342348, 0, 0, -3342347, 0, 0, -3342346, 0, 0, -3342345, 0, 0, -3342344, 0, 0, -3342343, 0, 0, -3342342, 0, 0, -3342341, 0, 0, -3342340, 0, 0, -3342339, 0, 0, -3342338, 0, 0, -3342337, 0, 0, -3407872, 0, 0, -3407871, 0, 0, -3407870, 0, 0, -3407869, 0, 0, -3407868, 0, 0, -3407867, 0, 0, -3407866, 0, 0, -3407865, 1, 0, -3407864, 0, 0, -3407863, 0, 0, -3407862, 0, 0, -3407861, 0, 0, -3407860, 0, 0, -3407859, 0, 0, -3407858, 0, 0, -3407857, 0, 0, -3407856, 0, 0, -3407855, 0, 0, -3407854, 2, 0, -3276842, 0, 0, -3276841, 0, 0, -3276840, 1, 0, -3276839, 0, 0, -3276838, 0, 0, -3276837, 0, 0, -3276836, 0, 0, -3276835, 0, 0, -3276834, 0, 0, -3276833, 0, 0, -3276832, 0, 0, -3276831, 0, 0, -3276830, 0, 0, -3276829, 1, 0, -3276828, 0, 0, -3276827, 0, 0, -3276826, 0, 0, -3276825, 0, 0, -3276824, 1, 0, -3276823, 0, 0, -3276822, 0, 0, -3276821, 1, 0, -3276820, 0, 0, -3276819, 0, 0, -3276818, 1, 0, -3276817, 1, 0, -3276816, 0, 0, -3276815, 0, 0, -3276814, 0, 0, -3276813, 0, 0, -3276812, 0, 0, -3276811, 0, 0, -3276810, 0, 0, -3276809, 0, 0, -3276808, 0, 0, -3276807, 0, 0, -3276806, 0, 0, -3276805, 0, 0, -3276804, 0, 0, -3276803, 0, 0, -3276802, 0, 0, -3276801, 0, 0, -3342336, 0, 0, -3342335, 0, 0, -3342334, 0, 0, -3342333, 0, 0, -3342332, 0, 0, -3342331, 0, 0, -3342330, 0, 0, -3342329, 0, 0, -3342328, 1, 0, -3342327, 1, 0, -3342326, 0, 0, -3342325, 0, 0, -3342324, 0, 0, -3342323, 0, 0, -3342322, 0, 0, -3342321, 0, 0, -3342320, 0, 0, -3342319, 0, 0, -3342318, 0, 0, -3211306, 0, 0, -3211305, 0, 0, -3211304, 1, 0, -3211303, 0, 0, -3211302, 0, 0, -3211301, 0, 0, -3211300, 0, 0, -3211299, 0, 0, -3211298, 0, 0, -3211297, 0, 0, -3211296, 0, 0, -3211295, 0, 0, -3211294, 1, 0, -3211293, 0, 0, -3211292, 0, 0, -3211291, 0, 0, -3211290, 0, 0, -3211289, 0, 0, -3211288, 1, 0, -3211287, 0, 0, -3211286, 1, 0, -3211285, 0, 0, -3211284, 0, 0, -3211283, 0, 0, -3211282, 0, 0, -3211281, 0, 0, -3211280, 1, 0, -3211279, 1, 0, -3211278, 0, 0, -3211277, 0, 0, -3211276, 0, 0, -3211275, 0, 0, -3211274, 0, 0, -3211273, 0, 0, -3211272, 1, 0, -3211271, 1, 0, -3211270, 1, 0, -3211269, 1, 0, -3211268, 1, 0, -3211267, 1, 0, -3211266, 1, 0, -3211265, 1, 0, -3276800, 1, 0, -3276799, 1, 0, -3276798, 1, 0, -3276797, 1, 0, -3276796, 1, 0, -3276795, 1, 0, -3276794, 1, 0, -3276793, 1, 0, -3276792, 0, 0, -3276791, 0, 0, -3276790, 1, 0, -3276789, 1, 0, -3276788, 0, 0, -3276787, 0, 0, -3276786, 0, 0, -3276785, 0, 0, -3276784, 0, 0, -3276783, 0, 0, -3276782, 0, 0, -3276781, 0, 0, -3145771, 0, 0, -3145770, 0, 0, -3145769, 0, 0, -3145768, 1, 0, -3145767, 0, 0, -3145766, 0, 0, -3145765, 0, 0, -3145764, 0, 0, -3145763, 0, 0, -3145762, 0, 0, -3145761, 0, 0, -3145760, 0, 0, -3145759, 1, 0, -3145758, 0, 0, -3145757, 0, 0, -3145756, 0, 0, -3145755, 0, 0, -3145754, 0, 0, -3145753, 0, 0, -3145752, 1, 0, -3145751, 0, 0, -3145750, 1, 0, -3145749, 0, 0, -3145748, 0, 0, -3145747, 0, 0, -3145746, 0, 0, -3145745, 0, 0, -3145744, 0, 0, -3145743, 0, 0, -3145742, 1, 0, -3145741, 1, 0, -3145740, 1, 0, -3145739, 1, 0, -3145738, 1, 0, -3145737, 1, 0, -3145736, 0, 0, -3145735, 0, 0, -3145734, 0, 0, -3145733, 0, 0, -3145732, 0, 0, -3145731, 0, 0, -3145730, 0, 0, -3145729, 0, 0, -3211264, 0, 0, -3211263, 0, 0, -3211262, 0, 0, -3211261, 0, 0, -3211260, 0, 0, -3211259, 0, 0, -3211258, 0, 0, -3211257, 0, 0, -3211256, 1, 0, -3211255, 1, 0, -3211254, 1, 0, -3211253, 0, 0, -3211252, 1, 0, -3211251, 1, 0, -3211250, 0, 0, -3211249, 0, 0, -3211248, 0, 0, -3211247, 0, 0, -3211246, 0, 0, -3211245, 0, 0, -3211244, 0, 0, -3211243, 0, 0, -3080237, 0, 0, -3080236, 0, 0, -3080235, 0, 0, -3080234, 0, 0, -3080233, 1, 0, -3080232, 0, 0, -3080231, 0, 0, -3080230, 0, 0, -3080229, 0, 0, -3080228, 0, 0, -3080227, 0, 0, -3080226, 0, 0, -3080225, 0, 0, -3080224, 0, 0, -3080223, 1, 0, -3080222, 0, 0, -3080221, 0, 0, -3080220, 0, 0, -3080219, 0, 0, -3080218, 0, 0, -3080217, 0, 0, -3080216, 1, 0, -3080215, 0, 0, -3080214, 1, 0, -3080213, 0, 0, -3080212, 1, 0, -3080211, 1, 0, -3080210, 1, 0, -3080209, 1, 0, -3080208, 1, 0, -3080207, 1, 0, -3080206, 0, 0, -3080205, 0, 0, -3080204, 1, 0, -3080203, 1, 0, -3080202, 1, 0, -3080201, 0, 0, -3080200, 0, 0, -3080199, 0, 0, -3080198, 0, 0, -3080197, 0, 0, -3080196, 0, 0, -3080195, 0, 0, -3080194, 0, 0, -3080193, 0, 0, -3145728, 0, 0, -3145727, 0, 0, -3145726, 0, 0, -3145725, 0, 0, -3145724, 0, 0, -3145723, 0, 0, -3145722, 0, 0, -3145721, 1, 0, -3145720, 1, 0, -3145719, 1, 0, -3145718, 0, 0, -3145717, 0, 0, -3145716, 0, 0, -3145715, 0, 0, -3145714, 1, 0, -3145713, 1, 0, -3145712, 0, 0, -3145711, 0, 0, -3145710, 0, 0, -3145709, 0, 0, -3145708, 1, 0, -3145707, 0, 0, -3145706, 0, 0, -3014702, 0, 0, -3014701, 0, 0, -3014700, 0, 0, -3014699, 0, 0, -3014698, 0, 0, -3014697, 1, 0, -3014696, 0, 0, -3014695, 0, 0, -3014694, 0, 0, -3014693, 0, 0, -3014692, 0, 0, -3014691, 0, 0, -3014690, 0, 0, -3014689, 0, 0, -3014688, 1, 0, -3014687, 0, 0, -3014686, 1, 0, -3014685, 0, 0, -3014684, 0, 0, -3014683, 0, 0, -3014682, 1, 0, -3014681, 1, 0, -3014680, 1, 0, -3014679, 1, 0, -3014678, 1, 0, -3014677, 1, 0, -3014676, 1, 0, -3014675, 1, 0, -3014674, 1, 0, -3014673, 1, 0, -3014672, 1, 0, -3014671, 1, 0, -3014670, 1, 0, -3014669, 1, 0, -3014668, 1, 0, -3014667, 1, 0, -3014666, 1, 0, -3014665, 1, 0, -3014664, 1, 0, -3014663, 1, 0, -3014662, 1, 0, -3014661, 1, 0, -3014660, 1, 0, -3014659, 1, 0, -3014658, 0, 0, -3014657, 0, 0, -3080192, 0, 0, -3080191, 0, 0, -3080190, 0, 0, -3080189, 0, 0, -3080188, 0, 0, -3080187, 0, 0, -3080186, 0, 0, -3080185, 0, 0, -3080184, 0, 0, -3080183, 1, 0, -3080182, 0, 0, -3080181, 0, 0, -3080180, 0, 0, -3080179, 0, 0, -3080178, 0, 0, -3080177, 0, 0, -3080176, 1, 0, -3080175, 1, 0, -3080174, 1, 0, -3080173, 1, 0, -3080172, 1, 0, -3080171, 0, 0, -3080170, 0, 0, -3080169, 0, 0, -2949167, 0, 0, -2949166, 0, 0, -2949165, 0, 0, -2949164, 0, 0, -2949163, 0, 0, -2949162, 1, 0, -2949161, 0, 0, -2949160, 0, 0, -2949159, 0, 0, -2949158, 0, 0, -2949157, 0, 0, -2949156, 0, 0, -2949155, 0, 0, -2949154, 0, 0, -2949153, 0, 0, -2949152, 1, 0, -2949151, 1, 0, -2949150, 1, 0, -2949149, 1, 0, -2949148, 1, 0, -2949147, 1, 0, -2949146, 1, 0, -2949145, 1, 0, -2949144, 0, 0, -2949143, 1, 0, -2949142, 0, 0, -2949141, 0, 0, -2949140, 0, 0, -2949139, 0, 0, -2949138, 0, 0, -2949137, 0, 0, -2949136, 0, 0, -2949135, 0, 0, -2949134, 0, 0, -2949133, 0, 0, -2949132, 0, 0, -2949131, 0, 0, -2949130, 0, 0, -2949129, 0, 0, -2949128, 0, 0, -2949127, 0, 0, -2949126, 0, 0, -2949125, 1, 0, -2949124, 1, 0, -2949123, 1, 0, -2949122, 1, 0, -2949121, 0, 0, -3014656, 0, 0, -3014655, 0, 0, -3014654, 0, 0, -3014653, 0, 0, -3014652, 0, 0, -3014651, 0, 0, -3014650, 0, 0, -3014649, 0, 0, -3014648, 0, 0, -3014647, 0, 0, -3014646, 0, 0, -3014645, 0, 0, -3014644, 0, 0, -3014643, 0, 0, -3014642, 0, 0, -3014641, 0, 0, -3014640, 0, 0, -3014639, 0, 0, -3014638, 0, 0, -3014637, 0, 0, -3014636, 0, 0, -3014635, 0, 0, -3014634, 0, 0, -3014633, 0, 0, -3014632, 0, 0, -2883632, 0, 0, -2883631, 0, 0, -2883630, 0, 0, -2883629, 0, 0, -2883628, 0, 0, -2883627, 0, 0, -2883626, 1, 0, -2883625, 0, 0, -2883624, 0, 0, -2883623, 0, 0, -2883622, 0, 0, -2883621, 0, 0, -2883620, 0, 0, -2883619, 0, 0, -2883618, 0, 0, -2883617, 1, 0, -2883616, 1, 0, -2883615, 1, 0, -2883614, 1, 0, -2883613, 0, 0, -2883612, 0, 0, -2883611, 1, 0, -2883610, 0, 0, -2883609, 1, 0, -2883608, 0, 0, -2883607, 1, 0, -2883606, 0, 0, -2883605, 0, 0, -2883604, 0, 0, -2883603, 0, 0, -2883602, 0, 0, -2883601, 0, 0, -2883600, 0, 0, -2883599, 0, 0, -2883598, 0, 0, -2883597, 0, 0, -2883596, 0, 0, -2883595, 0, 0, -2883594, 0, 0, -2883593, 0, 0, -2883592, 0, 0, -2883591, 0, 0, -2883590, 0, 0, -2883589, 0, 0, -2883588, 0, 0, -2883587, 0, 0, -2883586, 0, 0, -2883585, 1, 0, -2949120, 1, 0, -2949119, 1, 0, -2949118, 1, 0, -2949117, 0, 0, -2949116, 0, 0, -2949115, 0, 0, -2949114, 0, 0, -2949113, 0, 0, -2949112, 0, 0, -2949111, 0, 0, -2949110, 0, 0, -2949109, 0, 0, -2949108, 0, 0, -2949107, 0, 0, -2949106, 0, 0, -2949105, 0, 0, -2949104, 0, 0, -2949103, 0, 0, -2949102, 0, 0, -2949101, 0, 0, -2949100, 0, 0, -2949099, 0, 0, -2949098, 0, 0, -2949097, 0, 0, -2949096, 0, 0, -2949095, 0, 0, -2949094, 0, 0, -2818096, 0, 0, -2818095, 0, 0, -2818094, 0, 0, -2818093, 0, 0, -2818092, 0, 0, -2818091, 0, 0, -2818090, 1, 0, -2818089, 0, 0, -2818088, 0, 0, -2818087, 0, 0, -2818086, 0, 0, -2818085, 1, 0, -2818084, 1, 0, -2818083, 1, 0, -2818082, 1, 0, -2818081, 1, 0, -2818080, 0, 0, -2818079, 1, 0, -2818078, 0, 0, -2818077, 0, 0, -2818076, 0, 0, -2818075, 0, 0, -2818074, 1, 0, -2818073, 1, 0, -2818072, 0, 0, -2818071, 1, 0, -2818070, 0, 0, -2818069, 0, 0, -2818068, 0, 0, -2818067, 0, 0, -2818066, 0, 0, -2818065, 0, 0, -2818064, 0, 0, -2818063, 0, 0, -2818062, 0, 0, -2818061, 0, 0, -2818060, 0, 0, -2818059, 0, 0, -2818058, 0, 0, -2818057, 0, 0, -2818056, 0, 0, -2818055, 0, 0, -2818054, 0, 0, -2818053, 0, 0, -2818052, 0, 0, -2818051, 0, 0, -2818050, 0, 0, -2818049, 0, 0, -2883584, 0, 0, -2883583, 0, 0, -2883582, 0, 0, -2883581, 1, 0, -2883580, 1, 0, -2883579, 1, 0, -2883578, 0, 0, -2883577, 0, 0, -2883576, 0, 0, -2883575, 0, 0, -2883574, 0, 0, -2883573, 0, 0, -2883572, 0, 0, -2883571, 0, 0, -2883570, 0, 0, -2883569, 0, 0, -2883568, 0, 0, -2883567, 0, 0, -2883566, 0, 0, -2883565, 0, 0, -2883564, 0, 0, -2883563, 0, 0, -2883562, 0, 0, -2883561, 0, 0, -2883560, 0, 0, -2883559, 0, 0, -2883558, 0, 0, -2883557, 0, 0, -2752561, 0, 0, -2752560, 0, 0, -2752559, 0, 0, -2752558, 0, 0, -2752557, 0, 0, -2752556, 0, 0, -2752555, 1, 0, -2752554, 0, 0, -2752553, 0, 0, -2752552, 0, 0, -2752551, 0, 0, -2752550, 0, 0, -2752549, 0, 0, -2752548, 0, 0, -2752547, 0, 0, -2752546, 1, 0, -2752545, 0, 0, -2752544, 0, 0, -2752543, 1, 0, -2752542, 0, 0, -2752541, 0, 0, -2752540, 0, 0, -2752539, 0, 0, -2752538, 0, 0, -2752537, 1, 0, -2752536, 0, 0, -2752535, 1, 0, -2752534, 0, 0, -2752533, 0, 0, -2752532, 0, 0, -2752531, 0, 0, -2752530, 0, 0, -2752529, 0, 0, -2752528, 0, 0, -2752527, 0, 0, -2752526, 0, 0, -2752525, 0, 0, -2752524, 0, 0, -2752523, 0, 0, -2752522, 0, 0, -2752521, 0, 0, -2752520, 0, 0, -2752519, 0, 0, -2752518, 1, 0, -2752517, 1, 0, -2752516, 0, 0, -2752515, 0, 0, -2752514, 0, 0, -2752513, 0, 0, -2818048, 0, 0, -2818047, 0, 0, -2818046, 0, 0, -2818045, 0, 0, -2818044, 0, 0, -2818043, 0, 0, -2818042, 0, 0, -2818041, 0, 0, -2818040, 0, 0, -2818039, 0, 0, -2818038, 0, 0, -2818037, 0, 0, -2818036, 0, 0, -2818035, 0, 0, -2818034, 0, 0, -2818033, 0, 0, -2818032, 0, 0, -2818031, 0, 0, -2818030, 0, 0, -2818029, 0, 0, -2818028, 0, 0, -2818027, 0, 0, -2818026, 0, 0, -2818025, 0, 0, -2818024, 0, 0, -2818023, 0, 0, -2818022, 0, 0, -2818021, 0, 0, -2818020, 0, 0, -2687026, 0, 0, -2687025, 0, 0, -2687024, 0, 0, -2687023, 0, 0, -2687022, 0, 0, -2687021, 0, 0, -2687020, 0, 0, -2687019, 1, 0, -2687018, 0, 0, -2687017, 0, 0, -2687016, 0, 0, -2687015, 0, 0, -2687014, 0, 0, -2687013, 0, 0, -2687012, 0, 0, -2687011, 0, 0, -2687010, 1, 0, -2687009, 0, 0, -2687008, 1, 0, -2687007, 0, 0, -2687006, 0, 0, -2687005, 0, 0, -2687004, 0, 0, -2687003, 0, 0, -2687002, 1, 0, -2687001, 1, 0, -2687000, 1, 0, -2686999, 0, 0, -2686998, 0, 0, -2686997, 0, 0, -2686996, 0, 0, -2686995, 0, 0, -2686994, 0, 0, -2686993, 0, 0, -2686992, 0, 0, -2686991, 0, 0, -2686990, 0, 0, -2686989, 0, 0, -2686988, 0, 0, -2686987, 0, 0, -2686986, 0, 0, -2686985, 0, 0, -2686984, 0, 0, -2686983, 0, 0, -2686982, 0, 0, -2686981, 1, 0, -2686980, 1, 0, -2686979, 1, 0, -2686978, 1, 0, -2686977, 1, 0, -2752512, 1, 0, -2752511, 1, 0, -2752510, 1, 0, -2752509, 1, 0, -2752508, 1, 0, -2752507, 1, 0, -2752506, 1, 0, -2752505, 1, 0, -2752504, 1, 0, -2752503, 1, 0, -2752502, 1, 0, -2752501, 1, 0, -2752500, 1, 0, -2752499, 1, 0, -2752498, 1, 0, -2752497, 1, 0, -2752496, 1, 0, -2752495, 0, 0, -2752494, 0, 0, -2752493, 0, 0, -2752492, 0, 0, -2752491, 0, 0, -2752490, 0, 0, -2752489, 0, 0, -2752488, 0, 0, -2752487, 0, 0, -2752486, 0, 0, -2752485, 0, 0, -2752484, 0, 0, -2752483, 0, 0, -2621491, 0, 0, -2621490, 0, 0, -2621489, 0, 0, -2621488, 0, 0, -2621487, 0, 0, -2621486, 0, 0, -2621485, 0, 0, -2621484, 1, 0, -2621483, 0, 0, -2621482, 0, 0, -2621481, 0, 0, -2621480, 1, 0, -2621479, 0, 0, -2621478, 0, 0, -2621477, 0, 0, -2621476, 0, 0, -2621475, 1, 0, -2621474, 0, 0, -2621473, 0, 0, -2621472, 1, 0, -2621471, 0, 0, -2621470, 0, 0, -2621469, 0, 0, -2621468, 0, 0, -2621467, 0, 0, -2621466, 1, 0, -2621465, 0, 0, -2621464, 1, 0, -2621463, 0, 0, -2621462, 0, 0, -2621461, 0, 0, -2621460, 0, 0, -2621459, 1, 0, -2621458, 1, 0, -2621457, 1, 0, -2621456, 1, 0, -2621455, 1, 0, -2621454, 1, 0, -2621453, 1, 0, -2621452, 1, 0, -2621451, 1, 0, -2621450, 1, 0, -2621449, 1, 0, -2621448, 1, 0, -2621447, 1, 0, -2621446, 0, 0, -2621445, 0, 0, -2621444, 0, 0, -2621443, 0, 0, -2621442, 1, 0, -2621441, 1, 0, -2686976, 1, 0, -2686975, 0, 0, -2686974, 0, 0, -2686973, 0, 0, -2686972, 0, 0, -2686971, 0, 0, -2686970, 0, 0, -2686969, 0, 0, -2686968, 0, 0, -2686967, 0, 0, -2686966, 0, 0, -2686965, 0, 0, -2686964, 0, 0, -2686963, 0, 0, -2686962, 0, 0, -2686961, 0, 0, -2686960, 0, 0, -2686959, 1, 0, -2686958, 1, 0, -2686957, 1, 0, -2686956, 1, 0, -2686955, 1, 0, -2686954, 1, 0, -2686953, 0, 0, -2686952, 0, 0, -2686951, 0, 0, -2686950, 0, 0, -2686949, 0, 0, -2686948, 0, 0, -2686947, 0, 0, -2686946, 0, 0, -2555955, 0, 0, -2555954, 0, 0, -2555953, 0, 0, -2555952, 0, 0, -2555951, 0, 0, -2555950, 0, 0, -2555949, 0, 0, -2555948, 1, 0, -2555947, 0, 0, -2555946, 0, 0, -2555945, 1, 0, -2555944, 1, 0, -2555943, 0, 0, -2555942, 0, 0, -2555941, 0, 0, -2555940, 0, 0, -2555939, 1, 0, -2555938, 0, 0, -2555937, 0, 0, -2555936, 1, 0, -2555935, 0, 0, -2555934, 0, 0, -2555933, 0, 0, -2555932, 0, 0, -2555931, 1, 0, -2555930, 0, 0, -2555929, 0, 0, -2555928, 1, 0, -2555927, 0, 0, -2555926, 1, 0, -2555925, 1, 0, -2555924, 1, 0, -2555923, 1, 0, -2555922, 1, 0, -2555921, 1, 0, -2555920, 1, 0, -2555919, 1, 0, -2555918, 1, 0, -2555917, 1, 0, -2555916, 1, 0, -2555915, 1, 0, -2555914, 1, 0, -2555913, 1, 0, -2555912, 1, 0, -2555911, 1, 0, -2555910, 1, 0, -2555909, 1, 0, -2555908, 1, 0, -2555907, 1, 0, -2555906, 1, 0, -2555905, 1, 0, -2621440, 0, 0, -2621439, 1, 0, -2621438, 1, 0, -2621437, 0, 0, -2621436, 0, 0, -2621435, 0, 0, -2621434, 0, 0, -2621433, 0, 0, -2621432, 0, 0, -2621431, 0, 0, -2621430, 0, 0, -2621429, 0, 0, -2621428, 0, 0, -2621427, 0, 0, -2621426, 0, 0, -2621425, 0, 0, -2621424, 0, 0, -2621423, 0, 0, -2621422, 0, 0, -2621421, 0, 0, -2621420, 0, 0, -2621419, 0, 0, -2621418, 0, 0, -2621417, 0, 0, -2621416, 0, 0, -2621415, 0, 0, -2621414, 0, 0, -2621413, 0, 0, -2621412, 0, 0, -2621411, 0, 0, -2621410, 0, 0, -2621409, 0, 0, -2490420, 0, 0, -2490419, 0, 0, -2490418, 0, 0, -2490417, 0, 0, -2490416, 0, 0, -2490415, 0, 0, -2490414, 0, 0, -2490413, 0, 0, -2490412, 1, 0, -2490411, 0, 0, -2490410, 1, 0, -2490409, 0, 0, -2490408, 1, 0, -2490407, 0, 0, -2490406, 0, 0, -2490405, 0, 0, -2490404, 0, 0, -2490403, 1, 0, -2490402, 0, 0, -2490401, 1, 0, -2490400, 0, 0, -2490399, 0, 0, -2490398, 0, 0, -2490397, 0, 0, -2490396, 0, 0, -2490395, 1, 0, -2490394, 0, 0, -2490393, 0, 0, -2490392, 1, 0, -2490391, 1, 0, -2490390, 1, 0, -2490389, 1, 0, -2490388, 1, 0, -2490387, 1, 0, -2490386, 1, 0, -2490385, 1, 0, -2490384, 1, 0, -2490383, 1, 0, -2490382, 1, 0, -2490381, 1, 0, -2490380, 1, 0, -2490379, 1, 0, -2490378, 1, 0, -2490377, 1, 0, -2490376, 1, 0, -2490375, 1, 0, -2490374, 1, 0, -2490373, 1, 0, -2490372, 1, 0, -2490371, 1, 0, -2490370, 1, 0, -2490369, 1, 0, -2555904, 1, 0, -2555903, 1, 0, -2555902, 0, 0, -2555901, 1, 0, -2555900, 1, 0, -2555899, 0, 0, -2555898, 0, 0, -2555897, 0, 0, -2555896, 0, 0, -2555895, 0, 0, -2555894, 0, 0, -2555893, 0, 0, -2555892, 0, 0, -2555891, 0, 0, -2555890, 0, 0, -2555889, 0, 0, -2555888, 0, 0, -2555887, 0, 0, -2555886, 0, 0, -2555885, 0, 0, -2555884, 0, 0, -2555883, 0, 0, -2555882, 0, 0, -2555881, 0, 0, -2555880, 0, 0, -2555879, 0, 0, -2555878, 0, 0, -2555877, 0, 0, -2555876, 0, 0, -2555875, 0, 0, -2555874, 0, 0, -2555873, 0, 0, -2555872, 0, 0, -2424885, 0, 0, -2424884, 0, 0, -2424883, 0, 0, -2424882, 0, 0, -2424881, 0, 0, -2424880, 0, 0, -2424879, 0, 0, -2424878, 0, 0, -2424877, 1, 0, -2424876, 0, 0, -2424875, 1, 0, -2424874, 0, 0, -2424873, 0, 0, -2424872, 1, 0, -2424871, 0, 0, -2424870, 0, 0, -2424869, 0, 0, -2424868, 1, 0, -2424867, 0, 0, -2424866, 0, 0, -2424865, 1, 0, -2424864, 0, 0, -2424863, 0, 0, -2424862, 0, 0, -2424861, 0, 0, -2424860, 1, 0, -2424859, 0, 0, -2424858, 0, 0, -2424857, 1, 0, -2424856, 1, 0, -2424855, 1, 0, -2424854, 1, 0, -2424853, 1, 0, -2424852, 1, 0, -2424851, 1, 0, -2424850, 1, 0, -2424849, 1, 0, -2424848, 1, 0, -2424847, 1, 0, -2424846, 1, 0, -2424845, 1, 0, -2424844, 1, 0, -2424843, 1, 0, -2424842, 1, 0, -2424841, 1, 0, -2424840, 1, 0, -2424839, 1, 0, -2424838, 1, 0, -2424837, 1, 0, -2424836, 1, 0, -2424835, 1, 0, -2424834, 1, 0, -2424833, 1, 0, -2490368, 1, 0, -2490367, 1, 0, -2490366, 1, 0, -2490365, 1, 0, -2490364, 1, 0, -2490363, 1, 0, -2490362, 1, 0, -2490361, 1, 0, -2490360, 1, 0, -2490359, 0, 0, -2490358, 0, 0, -2490357, 0, 0, -2490356, 0, 0, -2490355, 0, 0, -2490354, 0, 0, -2490353, 0, 0, -2490352, 0, 0, -2490351, 0, 0, -2490350, 0, 0, -2490349, 0, 0, -2490348, 1, 0, -2490347, 0, 0, -2490346, 0, 0, -2490345, 0, 0, -2490344, 0, 0, -2490343, 0, 0, -2490342, 0, 0, -2490341, 0, 0, -2490340, 0, 0, -2490339, 0, 0, -2490338, 0, 0, -2490337, 0, 0, -2490336, 0, 0, -2490335, 0, 0, -2359350, 0, 0, -2359349, 0, 0, -2359348, 0, 0, -2359347, 0, 0, -2359346, 0, 0, -2359345, 0, 0, -2359344, 0, 0, -2359343, 0, 0, -2359342, 0, 0, -2359341, 1, 0, -2359340, 0, 0, -2359339, 0, 0, -2359338, 0, 0, -2359337, 0, 0, -2359336, 1, 0, -2359335, 0, 0, -2359334, 0, 0, -2359333, 0, 0, -2359332, 1, 0, -2359331, 0, 0, -2359330, 0, 0, -2359329, 1, 0, -2359328, 0, 0, -2359327, 0, 0, -2359326, 0, 0, -2359325, 0, 0, -2359324, 1, 0, -2359323, 0, 0, -2359322, 1, 0, -2359321, 1, 0, -2359320, 1, 0, -2359319, 1, 0, -2359318, 1, 0, -2359317, 1, 0, -2359316, 1, 0, -2359315, 1, 0, -2359314, 1, 0, -2359313, 1, 0, -2359312, 1, 0, -2359311, 1, 0, -2359310, 1, 0, -2359309, 1, 0, -2359308, 1, 0, -2359307, 1, 0, -2359306, 1, 0, -2359305, 1, 0, -2359304, 1, 0, -2359303, 1, 0, -2359302, 1, 0, -2359301, 1, 0, -2359300, 1, 0, -2359299, 1, 0, -2359298, 1, 0, -2359297, 1, 0, -2424832, 1, 0, -2424831, 1, 0, -2424830, 1, 0, -2424829, 1, 0, -2424828, 1, 0, -2424827, 1, 0, -2424826, 1, 0, -2424825, 1, 0, -2424824, 0, 0, -2424823, 1, 0, -2424822, 1, 0, -2424821, 1, 0, -2424820, 1, 0, -2424819, 1, 0, -2424818, 1, 0, -2424817, 1, 0, -2424816, 1, 0, -2424815, 1, 0, -2424814, 1, 0, -2424813, 1, 0, -2424812, 1, 0, -2424811, 0, 0, -2424810, 0, 0, -2424809, 0, 0, -2424808, 0, 0, -2424807, 0, 0, -2424806, 0, 0, -2424805, 0, 0, -2424804, 0, 0, -2424803, 0, 0, -2424802, 0, 0, -2424801, 0, 0, -2424800, 0, 0, -2424799, 0, 0, -2424798, 0, 0, -2293814, 0, 0, -2293813, 0, 0, -2293812, 0, 0, -2293811, 0, 0, -2293810, 0, 0, -2293809, 0, 0, -2293808, 0, 0, -2293807, 0, 0, -2293806, 1, 0, -2293805, 0, 0, -2293804, 0, 0, -2293803, 0, 0, -2293802, 0, 0, -2293801, 1, 0, -2293800, 0, 0, -2293799, 0, 0, -2293798, 0, 0, -2293797, 1, 0, -2293796, 0, 0, -2293795, 0, 0, -2293794, 0, 0, -2293793, 1, 0, -2293792, 0, 0, -2293791, 0, 0, -2293790, 0, 0, -2293789, 1, 0, -2293788, 0, 0, -2293787, 1, 0, -2293786, 1, 0, -2293785, 1, 0, -2293784, 1, 0, -2293783, 1, 0, -2293782, 1, 0, -2293781, 1, 0, -2293780, 1, 0, -2293779, 1, 0, -2293778, 1, 0, -2293777, 1, 0, -2293776, 1, 0, -2293775, 1, 0, -2293774, 1, 0, -2293773, 1, 0, -2293772, 1, 0, -2293762, 1, 0, -2293761, 1, 0, -2359296, 1, 0, -2359295, 1, 0, -2359294, 1, 0, -2359293, 1, 0, -2359292, 1, 0, -2359291, 1, 0, -2359290, 1, 0, -2359289, 1, 0, -2359288, 1, 0, -2359287, 1, 0, -2359286, 0, 0, -2359285, 0, 0, -2359284, 0, 0, -2359283, 0, 0, -2359282, 0, 0, -2359281, 0, 0, -2359280, 0, 0, -2359279, 0, 0, -2359278, 0, 0, -2359277, 0, 0, -2359276, 0, 0, -2359275, 0, 0, -2359274, 0, 0, -2359273, 0, 0, -2359272, 0, 0, -2359271, 0, 0, -2359270, 0, 0, -2359269, 1, 0, -2359268, 0, 0, -2359267, 0, 0, -2359266, 0, 0, -2359265, 0, 0, -2359264, 0, 0, -2359263, 0, 0, -2359262, 0, 0, -2359261, 0, 0, -2228279, 0, 0, -2228278, 0, 0, -2228277, 0, 0, -2228276, 0, 0, -2228275, 0, 0, -2228274, 0, 0, -2228273, 0, 0, -2228272, 0, 0, -2228271, 0, 0, -2228270, 1, 0, -2228269, 0, 0, -2228268, 0, 0, -2228267, 0, 0, -2228266, 0, 0, -2228265, 1, 0, -2228264, 0, 0, -2228263, 0, 0, -2228262, 0, 0, -2228261, 1, 0, -2228260, 0, 0, -2228259, 0, 0, -2228258, 1, 0, -2228257, 0, 0, -2228256, 0, 0, -2228255, 0, 0, -2228254, 0, 0, -2228253, 1, 0, -2228252, 1, 0, -2228251, 1, 0, -2228250, 1, 0, -2228249, 1, 0, -2228248, 1, 0, -2228247, 1, 0, -2228246, 1, 0, -2228245, 1, 0, -2228244, 1, 0, -2228243, 1, 0, -2228242, 1, 0, -2228241, 1, 0, -2228240, 1, 0, -2228239, 1, 0, -2228238, 1, 0, -2228237, 1, 0, -2293759, 1, 0, -2293758, 1, 0, -2293757, 1, 0, -2293756, 1, 0, -2293755, 1, 0, -2293754, 1, 0, -2293753, 1, 0, -2293752, 1, 0, -2293751, 1, 0, -2293750, 1, 0, -2293749, 1, 0, -2293748, 0, 0, -2293747, 0, 0, -2293746, 0, 0, -2293745, 0, 0, -2293744, 0, 0, -2293743, 0, 0, -2293742, 0, 0, -2293741, 0, 0, -2293740, 0, 0, -2293739, 0, 0, -2293738, 0, 0, -2293737, 0, 0, -2293736, 0, 0, -2293735, 0, 0, -2293734, 1, 0, -2293733, 1, 0, -2293732, 0, 0, -2293731, 0, 0, -2293730, 0, 0, -2293729, 0, 0, -2293728, 0, 0, -2293727, 0, 0, -2293726, 0, 0, -2293725, 0, 0, -2293724, 0, 0, -2162744, 0, 0, -2162743, 0, 0, -2162742, 0, 0, -2162741, 0, 0, -2162740, 0, 0, -2162739, 0, 0, -2162738, 0, 0, -2162737, 0, 0, -2162736, 0, 0, -2162735, 1, 0, -2162734, 0, 0, -2162733, 0, 0, -2162732, 0, 0, -2162731, 0, 0, -2162730, 0, 0, -2162729, 1, 0, -2162728, 0, 0, -2162727, 0, 0, -2162726, 0, 0, -2162725, 1, 0, -2162724, 0, 0, -2162723, 0, 0, -2162722, 1, 0, -2162721, 0, 0, -2162720, 0, 0, -2162719, 1, 0, -2162718, 1, 0, -2162717, 1, 0, -2162716, 1, 0, -2162715, 1, 0, -2162714, 1, 0, -2162713, 1, 0, -2162712, 1, 0, -2162711, 1, 0, -2162710, 1, 0, -2162709, 1, 0, -2162708, 1, 0, -2162707, 1, 0, -2162706, 1, 0, -2162705, 1, 0, -2162704, 1, 0, -2162703, 1, 0, -2162702, 1, 0, -2162701, 1610612738, 0, -2228222, 1, 0, -2228221, 1, 0, -2228220, 1, 0, -2228219, 1, 0, -2228218, 1, 0, -2228217, 1, 0, -2228216, 1, 0, -2228215, 1, 0, -2228214, 1, 0, -2228213, 1, 0, -2228212, 1, 0, -2228211, 1, 0, -2228210, 0, 0, -2228209, 0, 0, -2228208, 0, 0, -2228207, 0, 0, -2228206, 0, 0, -2228205, 0, 0, -2228204, 0, 0, -2228203, 0, 0, -2228202, 0, 0, -2228201, 0, 0, -2228200, 0, 0, -2228199, 1, 0, -2228198, 0, 0, -2228197, 1, 0, -2228196, 0, 0, -2228195, 0, 0, -2228194, 0, 0, -2228193, 0, 0, -2228192, 0, 0, -2228191, 0, 0, -2228190, 0, 0, -2228189, 0, 0, -2228188, 0, 0, -2228187, 0, 0, -2097208, 0, 0, -2097207, 0, 0, -2097206, 0, 0, -2097205, 0, 0, -2097204, 0, 0, -2097203, 0, 0, -2097202, 0, 0, -2097201, 0, 0, -2097200, 0, 0, -2097199, 1, 0, -2097198, 0, 0, -2097197, 0, 0, -2097196, 0, 0, -2097195, 0, 0, -2097194, 1, 0, -2097193, 1, 0, -2097192, 0, 0, -2097191, 0, 0, -2097190, 1, 0, -2097189, 0, 0, -2097188, 0, 0, -2097187, 1, 0, -2097186, 0, 0, -2097185, 0, 0, -2097184, 1, 0, -2097183, 0, 0, -2097182, 0, 0, -2097181, 1, 0, -2097180, 1, 0, -2097179, 1, 0, -2097178, 1, 0, -2097177, 1, 0, -2097176, 1, 0, -2097175, 1, 0, -2097174, 1, 0, -2097173, 1, 0, -2097172, 1, 0, -2097171, 1, 0, -2097170, 1, 0, -2097169, 1, 0, -2097168, 1, 0, -2097167, 1, 0, -2097166, 1, 0, -2162686, 1, 0, -2162685, 1, 0, -2162684, 1, 0, -2162683, 1, 0, -2162682, 1, 0, -2162681, 1, 0, -2162680, 1, 0, -2162679, 1, 0, -2162678, 1, 0, -2162677, 1, 0, -2162676, 1, 0, -2162675, 1, 0, -2162674, 1, 0, -2162673, 1, 0, -2162672, 0, 0, -2162671, 0, 0, -2162670, 0, 0, -2162669, 0, 0, -2162668, 0, 0, -2162667, 0, 0, -2162666, 0, 0, -2162665, 0, 0, -2162664, 0, 0, -2162663, 1, 0, -2162662, 0, 0, -2162661, 1, 0, -2162660, 0, 0, -2162659, 0, 0, -2162658, 0, 0, -2162657, 0, 0, -2162656, 0, 0, -2162655, 0, 0, -2162654, 0, 0, -2162653, 0, 0, -2162652, 1, 0, -2162651, 1, 0, -2162650, 0, 0, -2031673, 0, 0, -2031672, 0, 0, -2031671, 0, 0, -2031670, 0, 0, -2031669, 0, 0, -2031668, 0, 0, -2031667, 0, 0, -2031666, 0, 0, -2031665, 0, 0, -2031664, 1, 0, -2031663, 0, 0, -2031662, 1, 0, -2031661, 1, 0, -2031660, 0, 0, -2031659, 0, 0, -2031658, 1, 0, -2031657, 1, 0, -2031656, 0, 0, -2031655, 0, 0, -2031654, 1, 0, -2031653, 0, 0, -2031652, 1, 0, -2031651, 0, 0, -2031650, 0, 0, -2031649, 0, 0, -2031648, 0, 0, -2031647, 0, 0, -2031646, 1, 0, -2031645, 1, 0, -2031644, 1, 0, -2031643, 1, 0, -2031642, 1, 0, -2031641, 1, 0, -2031640, 1, 0, -2031639, 1, 0, -2031638, 1, 0, -2031637, 1, 0, -2031636, 1, 0, -2031635, 1, 0, -2031634, 1, 0, -2031633, 1, 0, -2031632, 1, 0, -2031631, 1, 0, -2031630, 1, 0, -2031629, 1, 0, -2031628, 1610612738, 0, -2031627, 1610612738, 0, -2031626, 1610612738, 0, -2031625, 1610612738, 0, -2031624, 1610612738, 0, -2031620, 1610612738, 0, -2031619, 1610612738, 0, -2031618, 1610612738, 0, -2031617, 1610612738, 0, -2097152, 1610612738, 0, -2097151, 1610612738, 0, -2097150, 1, 0, -2097149, 1, 0, -2097148, 1, 0, -2097147, 1, 0, -2097146, 1, 0, -2097145, 1, 0, -2097144, 1, 0, -2097143, 1, 0, -2097142, 1, 0, -2097141, 1, 0, -2097140, 1, 0, -2097139, 1, 0, -2097138, 1, 0, -2097137, 1, 0, -2097136, 1, 0, -2097135, 0, 0, -2097134, 0, 0, -2097133, 0, 0, -2097132, 0, 0, -2097131, 0, 0, -2097130, 0, 0, -2097129, 0, 0, -2097128, 0, 0, -2097127, 1, 0, -2097126, 0, 0, -2097125, 1, 0, -2097124, 0, 0, -2097123, 0, 0, -2097122, 0, 0, -2097121, 0, 0, -2097120, 0, 0, -2097119, 0, 0, -2097118, 1, 0, -2097117, 1, 0, -2097116, 0, 0, -2097115, 1, 0, -2097114, 0, 0, -2097113, 0, 0, -1966137, 0, 0, -1966136, 0, 0, -1966135, 0, 0, -1966134, 0, 0, -1966133, 0, 0, -1966132, 0, 0, -1966131, 0, 0, -1966130, 0, 0, -1966129, 1, 0, -1966128, 0, 0, -1966127, 1, 0, -1966126, 0, 0, -1966125, 1, 0, -1966124, 0, 0, -1966123, 1, 0, -1966122, 0, 0, -1966121, 1, 0, -1966120, 0, 0, -1966119, 1, 0, -1966118, 0, 0, -1966117, 0, 0, -1966116, 1, 0, -1966115, 0, 0, -1966114, 0, 0, -1966113, 0, 0, -1966112, 0, 0, -1966111, 1, 0, -1966110, 1, 0, -1966109, 1, 0, -1966108, 1, 0, -1966107, 1, 0, -1966106, 1, 0, -1966105, 1, 0, -1966104, 1, 0, -1966103, 1, 0, -1966102, 1, 0, -1966101, 1, 0, -1966100, 1, 0, -1966099, 1, 0, -1966098, 1, 0, -1966097, 1, 0, -1966096, 1, 0, -1966095, 1, 0, -1966094, 1, 0, -1966093, 1, 0, -1966092, 1, 0, -1966091, 1, 0, -1966090, 1, 0, -1966089, 1, 0, -1966088, 1, 0, -1966087, 1610612738, 0, -1966086, 1610612738, 0, -1966085, 1610612738, 0, -1966084, 1, 0, -1966083, 1, 0, -1966082, 1, 0, -1966081, 1, 0, -2031616, 1, 0, -2031615, 1, 0, -2031614, 1, 0, -2031613, 1, 0, -2031612, 1, 0, -2031611, 1, 0, -2031610, 1, 0, -2031609, 1, 0, -2031608, 1, 0, -2031607, 1, 0, -2031606, 1, 0, -2031605, 1, 0, -2031604, 1, 0, -2031603, 1, 0, -2031602, 1, 0, -2031601, 1, 0, -2031600, 1, 0, -2031599, 1, 0, -2031598, 1, 0, -2031597, 0, 0, -2031596, 0, 0, -2031595, 0, 0, -2031594, 0, 0, -2031593, 0, 0, -2031592, 0, 0, -2031591, 1, 0, -2031590, 0, 0, -2031589, 0, 0, -2031588, 1, 0, -2031587, 0, 0, -2031586, 0, 0, -2031585, 0, 0, -2031584, 0, 0, -2031583, 1, 0, -2031582, 0, 0, -2031581, 0, 0, -2031580, 0, 0, -2031579, 1, 0, -2031578, 0, 0, -2031577, 0, 0, -2031576, 0, 0, -1900601, 0, 0, -1900600, 0, 0, -1900599, 0, 0, -1900598, 0, 0, -1900597, 0, 0, -1900596, 0, 0, -1900595, 0, 0, -1900594, 0, 0, -1900593, 1, 0, -1900592, 1, 0, -1900591, 0, 0, -1900590, 0, 0, -1900589, 1, 0, -1900588, 0, 0, -1900587, 1, 0, -1900586, 0, 0, -1900585, 1, 0, -1900584, 0, 0, -1900583, 1, 0, -1900582, 0, 0, -1900581, 1, 0, -1900580, 0, 0, -1900579, 0, 0, -1900578, 0, 0, -1900577, 0, 0, -1900576, 1, 0, -1900575, 1, 0, -1900574, 1, 0, -1900573, 1, 0, -1900572, 1, 0, -1900571, 1, 0, -1900570, 1, 0, -1900569, 1, 0, -1900568, 1, 0, -1900567, 1, 0, -1900566, 1, 0, -1900565, 1, 0, -1900564, 1, 0, -1900563, 1, 0, -1900562, 1, 0, -1900561, 1, 0, -1900560, 1, 0, -1900559, 1, 0, -1900558, 1, 0, -1900557, 1, 0, -1900556, 1, 0, -1900555, 1, 0, -1900554, 0, 0, -1900553, 0, 0, -1900552, 0, 0, -1900551, 1, 0, -1900550, 1, 0, -1900549, 1, 0, -1900548, 1, 0, -1900547, 1, 0, -1900546, 1, 0, -1900545, 1, 0, -1966080, 1, 0, -1966079, 1, 0, -1966078, 1, 0, -1966077, 1, 0, -1966076, 1, 0, -1966075, 1, 0, -1966074, 1, 0, -1966073, 1, 0, -1966072, 1, 0, -1966071, 1, 0, -1966070, 1, 0, -1966069, 1, 0, -1966068, 1, 0, -1966067, 1, 0, -1966066, 1, 0, -1966065, 1, 0, -1966064, 1, 0, -1966063, 1, 0, -1966062, 1, 0, -1966061, 1, 0, -1966060, 0, 0, -1966059, 0, 0, -1966058, 0, 0, -1966057, 0, 0, -1966056, 1, 0, -1966055, 0, 0, -1966054, 0, 0, -1966053, 0, 0, -1966052, 1, 0, -1966051, 0, 0, -1966050, 0, 0, -1966049, 0, 0, -1966048, 1, 0, -1966047, 0, 0, -1966046, 0, 0, -1966045, 0, 0, -1966044, 0, 0, -1966043, 1, 0, -1966042, 0, 0, -1966041, 0, 0, -1966040, 0, 0, -1966039, 0, 0, -1835066, 0, 0, -1835065, 0, 0, -1835064, 0, 0, -1835063, 0, 0, -1835062, 0, 0, -1835061, 0, 0, -1835060, 0, 0, -1835059, 0, 0, -1835058, 1, 0, -1835057, 0, 0, -1835056, 1, 0, -1835055, 0, 0, -1835054, 0, 0, -1835053, 1, 0, -1835052, 1, 0, -1835051, 0, 0, -1835050, 0, 0, -1835049, 1, 0, -1835048, 1, 0, -1835047, 1, 0, -1835046, 1, 0, -1835045, 0, 0, -1835044, 0, 0, -1835043, 0, 0, -1835042, 0, 0, -1835041, 1, 0, -1835040, 1, 0, -1835039, 1, 0, -1835038, 1, 0, -1835037, 1, 0, -1835036, 1, 0, -1835035, 1, 0, -1835034, 1, 0, -1835033, 1, 0, -1835032, 1, 0, -1835031, 1, 0, -1835030, 1, 0, -1835029, 1, 0, -1835028, 1, 0, -1835027, 1, 0, -1835026, 1, 0, -1835025, 1, 0, -1835024, 1, 0, -1835023, 1, 0, -1835022, 1, 0, -1835021, 1, 0, -1835020, 1, 0, -1835019, 1, 0, -1835018, 1, 0, -1835017, 1, 0, -1835016, 1, 0, -1835015, 1, 0, -1835014, 1, 0, -1835013, 1, 0, -1835012, 1, 0, -1835011, 1, 0, -1835010, 1, 0, -1835009, 1, 0, -1900544, 1, 0, -1900543, 1, 0, -1900542, 1, 0, -1900541, 1, 0, -1900540, 1, 0, -1900539, 1, 0, -1900538, 1, 0, -1900537, 1, 0, -1900536, 1, 0, -1900535, 1, 0, -1900534, 1, 0, -1900533, 1, 0, -1900532, 1, 0, -1900531, 1, 0, -1900530, 1, 0, -1900529, 1, 0, -1900528, 1, 0, -1900527, 1, 0, -1900526, 1, 0, -1900525, 1, 0, -1900524, 1, 0, -1900523, 0, 0, -1900522, 0, 0, -1900521, 0, 0, -1900520, 1, 0, -1900519, 0, 0, -1900518, 0, 0, -1900517, 0, 0, -1900516, 1, 0, -1900515, 0, 0, -1900514, 0, 0, -1900513, 1, 0, -1900512, 0, 0, -1900511, 0, 0, -1900510, 0, 0, -1900509, 0, 0, -1900508, 0, 0, -1900507, 1, 0, -1900506, 0, 0, -1900505, 0, 0, -1900504, 0, 0, -1900503, 0, 0, -1900502, 0, 0, -1769530, 0, 0, -1769529, 0, 0, -1769528, 0, 0, -1769527, 0, 0, -1769526, 0, 0, -1769525, 0, 0, -1769524, 0, 0, -1769523, 0, 0, -1769522, 1, 0, -1769521, 1, 0, -1769520, 0, 0, -1769519, 0, 0, -1769518, 0, 0, -1769517, 1, 0, -1769516, 0, 0, -1769515, 0, 0, -1769514, 0, 0, -1769513, 1, 0, -1769512, 1, 0, -1769511, 0, 0, -1769510, 0, 0, -1769509, 0, 0, -1769508, 0, 0, -1769507, 0, 0, -1769506, 1, 0, -1769505, 1, 0, -1769504, 1, 0, -1769503, 1, 0, -1769502, 1, 0, -1769501, 1, 0, -1769500, 1, 0, -1769499, 1, 0, -1769498, 0, 0, -1769497, 0, 0, -1769496, 1, 0, -1769495, 1, 0, -1769494, 1, 0, -1769493, 1, 0, -1769492, 1, 0, -1769491, 1, 0, -1769490, 1, 0, -1769489, 1, 0, -1769488, 1, 0, -1769487, 1, 0, -1769486, 1, 0, -1769485, 1, 0, -1769484, 1, 0, -1769483, 1, 0, -1769482, 1, 0, -1769481, 1, 0, -1769480, 1, 0, -1769479, 1, 0, -1769478, 1, 0, -1769477, 1, 0, -1769476, 1, 0, -1769475, 1, 0, -1769474, 1, 0, -1769473, 1, 0, -1835008, 1, 0, -1835007, 1, 0, -1835006, 1, 0, -1835005, 1, 0, -1835004, 1, 0, -1835003, 1, 0, -1835002, 1, 0, -1835001, 1, 0, -1835000, 1, 0, -1834999, 1, 0, -1834998, 1, 0, -1834997, 1, 0, -1834996, 1, 0, -1834995, 1, 0, -1834994, 1, 0, -1834993, 1, 0, -1834992, 1, 0, -1834991, 1, 0, -1834990, 1, 0, -1834989, 1, 0, -1834988, 1, 0, -1834987, 1, 0, -1834986, 1, 0, -1834985, 0, 0, -1834984, 1, 0, -1834983, 0, 0, -1834982, 0, 0, -1834981, 0, 0, -1834980, 0, 0, -1834979, 1, 0, -1834978, 1, 0, -1834977, 0, 0, -1834976, 0, 0, -1834975, 0, 0, -1834974, 0, 0, -1834973, 0, 0, -1834972, 0, 0, -1834971, 1, 0, -1834970, 0, 0, -1834969, 0, 0, -1834968, 0, 0, -1834967, 0, 0, -1834966, 0, 0, -1834965, 0, 0, -1703994, 0, 0, -1703993, 0, 0, -1703992, 0, 0, -1703991, 0, 0, -1703990, 0, 0, -1703989, 0, 0, -1703988, 0, 0, -1703987, 1, 0, -1703986, 1, 0, -1703985, 0, 0, -1703984, 0, 0, -1703983, 0, 0, -1703982, 1, 0, -1703981, 0, 0, -1703980, 1, 0, -1703979, 0, 0, -1703978, 1, 0, -1703977, 1, 0, -1703976, 1, 0, -1703975, 0, 0, -1703974, 0, 0, -1703973, 0, 0, -1703972, 0, 0, -1703971, 0, 0, -1703970, 1, 0, -1703969, 1, 0, -1703968, 1, 0, -1703967, 1, 0, -1703966, 1, 0, -1703965, 1, 0, -1703964, 1, 0, -1703963, 1, 0, -1703962, 0, 0, -1703961, 1, 0, -1703960, 1, 0, -1703959, 1, 0, -1703958, 1, 0, -1703957, 1, 0, -1703956, 1, 0, -1703955, 1, 0, -1703954, 1, 0, -1703953, 1, 0, -1703952, 1, 0, -1703951, 1, 0, -1703950, 1, 0, -1703949, 1, 0, -1703948, 1, 0, -1703947, 1, 0, -1703946, 1, 0, -1703945, 1, 0, -1703944, 1, 0, -1703943, 1, 0, -1703942, 1, 0, -1703941, 1, 0, -1703940, 1, 0, -1703939, 1, 0, -1703938, 1, 0, -1703937, 1, 0, -1769472, 1, 0, -1769471, 1, 0, -1769470, 1, 0, -1769469, 1, 0, -1769468, 1, 0, -1769467, 1, 0, -1769466, 1, 0, -1769465, 1, 0, -1769464, 1, 0, -1769463, 1, 0, -1769462, 1, 0, -1769461, 1, 0, -1769460, 1, 0, -1769459, 1, 0, -1769458, 1, 0, -1769457, 1, 0, -1769456, 1, 0, -1769455, 1, 0, -1769454, 1, 0, -1769453, 1, 0, -1769452, 1, 0, -1769451, 1, 0, -1769450, 1, 0, -1769449, 1, 0, -1769448, 1, 0, -1769447, 0, 0, -1769446, 0, 0, -1769445, 0, 0, -1769444, 0, 0, -1769443, 0, 0, -1769442, 0, 0, -1769441, 0, 0, -1769440, 0, 0, -1769439, 0, 0, -1769438, 0, 0, -1769437, 0, 0, -1769436, 0, 0, -1769435, 1, 0, -1769434, 0, 0, -1769433, 0, 0, -1769432, 0, 0, -1769431, 0, 0, -1769430, 0, 0, -1769429, 0, 0, -1769428, 0, 0, -1638458, 0, 0, -1638457, 0, 0, -1638456, 0, 0, -1638455, 0, 0, -1638454, 0, 0, -1638453, 0, 0, -1638452, 1, 0, -1638451, 0, 0, -1638450, 1, 0, -1638449, 0, 0, -1638448, 0, 0, -1638447, 0, 0, -1638446, 1, 0, -1638445, 0, 0, -1638444, 1, 0, -1638443, 0, 0, -1638442, 0, 0, -1638441, 0, 0, -1638440, 0, 0, -1638439, 0, 0, -1638438, 0, 0, -1638437, 0, 0, -1638436, 0, 0, -1638435, 1, 0, -1638434, 1, 0, -1638433, 1, 0, -1638432, 1, 0, -1638431, 1, 0, -1638430, 1, 0, -1638429, 1, 0, -1638428, 1, 0, -1638427, 1, 0, -1638426, 1, 0, -1638425, 1, 0, -1638424, 1, 0, -1638423, 1, 0, -1638422, 1, 0, -1638421, 1, 0, -1638420, 1, 0, -1638419, 1, 0, -1638418, 1, 0, -1638417, 1, 0, -1638416, 1, 0, -1638415, 1, 0, -1638414, 1, 0, -1638413, 1, 0, -1638412, 1, 0, -1638411, 1, 0, -1638410, 1, 0, -1638409, 1, 0, -1638408, 1, 0, -1638407, 1, 0, -1638406, 1, 0, -1638405, 1, 0, -1638404, 1, 0, -1638403, 1, 0, -1638402, 1, 0, -1638401, 1, 0, -1703936, 1, 0, -1703935, 1, 0, -1703934, 1, 0, -1703933, 1, 0, -1703932, 1, 0, -1703931, 1, 0, -1703930, 1, 0, -1703929, 1, 0, -1703928, 1, 0, -1703927, 1, 0, -1703926, 1, 0, -1703925, 1, 0, -1703924, 1, 0, -1703923, 1, 0, -1703922, 1, 0, -1703921, 1, 0, -1703920, 1, 0, -1703919, 1, 0, -1703918, 1, 0, -1703917, 1, 0, -1703916, 1, 0, -1703915, 1, 0, -1703914, 1, 0, -1703913, 1, 0, -1703912, 1, 0, -1703911, 0, 0, -1703910, 0, 0, -1703909, 0, 0, -1703908, 1, 0, -1703907, 0, 0, -1703906, 0, 0, -1703905, 0, 0, -1703904, 0, 0, -1703903, 0, 0, -1703902, 0, 0, -1703901, 0, 0, -1703900, 0, 0, -1703899, 1, 0, -1703898, 0, 0, -1703897, 0, 0, -1703896, 0, 0, -1703895, 0, 0, -1703894, 0, 0, -1703893, 0, 0, -1703892, 0, 0, -1703891, 0, 0, -1572921, 0, 0, -1572920, 0, 0, -1572919, 0, 0, -1572918, 0, 0, -1572917, 1, 0, -1572916, 1, 0, -1572915, 1, 0, -1572914, 0, 0, -1572913, 0, 0, -1572912, 0, 0, -1572911, 1, 0, -1572910, 0, 0, -1572909, 0, 0, -1572908, 1, 0, -1572907, 0, 0, -1572906, 0, 0, -1572905, 0, 0, -1572904, 0, 0, -1572903, 0, 0, -1572902, 0, 0, -1572901, 0, 0, -1572900, 1, 0, -1572899, 1, 0, -1572898, 1, 0, -1572897, 1, 0, -1572896, 1, 0, -1572895, 1, 0, -1572894, 1, 0, -1572893, 1, 0, -1572892, 1, 0, -1572891, 1, 0, -1572890, 1, 0, -1572889, 1, 0, -1572888, 1, 0, -1572887, 1, 0, -1572886, 1, 0, -1572885, 1, 0, -1572884, 1, 0, -1572883, 1, 0, -1572882, 1, 0, -1572881, 1, 0, -1572880, 1, 0, -1572879, 1, 0, -1572878, 1, 0, -1572877, 1, 0, -1572876, 1, 0, -1572875, 1, 0, -1572874, 1, 0, -1572873, 1, 0, -1572872, 1, 0, -1572871, 1, 0, -1572870, 1, 0, -1572869, 1, 0, -1572868, 1, 0, -1572867, 1, 0, -1572866, 1, 0, -1572865, 1, 0, -1638400, 1, 0, -1638399, 1, 0, -1638398, 1, 0, -1638397, 1, 0, -1638396, 1, 0, -1638395, 1, 0, -1638394, 1, 0, -1638393, 1, 0, -1638392, 1, 0, -1638391, 1, 0, -1638390, 1, 0, -1638389, 1, 0, -1638388, 1, 0, -1638387, 1, 0, -1638386, 1, 0, -1638385, 1, 0, -1638384, 1, 0, -1638383, 1, 0, -1638382, 1, 0, -1638381, 1, 0, -1638380, 1, 0, -1638379, 1, 0, -1638378, 1, 0, -1638377, 1, 0, -1638376, 1, 0, -1638375, 1, 0, -1638374, 1, 0, -1638373, 0, 0, -1638372, 1, 0, -1638371, 0, 0, -1638370, 0, 0, -1638369, 0, 0, -1638368, 0, 0, -1638367, 0, 0, -1638366, 0, 0, -1638365, 0, 0, -1638364, 0, 0, -1638363, 1, 0, -1638362, 0, 0, -1638361, 0, 0, -1638360, 0, 0, -1638359, 0, 0, -1638358, 0, 0, -1638357, 0, 0, -1638356, 0, 0, -1638355, 0, 0, -1638354, 0, 0, -1507385, 0, 0, -1507384, 0, 0, -1507383, 0, 0, -1507382, 0, 0, -1507381, 1, 0, -1507380, 0, 0, -1507379, 0, 0, -1507378, 0, 0, -1507377, 0, 0, -1507376, 1, 0, -1507375, 0, 0, -1507374, 0, 0, -1507373, 0, 0, -1507372, 1, 0, -1507371, 0, 0, -1507370, 0, 0, -1507369, 0, 0, -1507368, 0, 0, -1507367, 0, 0, -1507366, 0, 0, -1507365, 0, 0, -1507364, 1, 0, -1507363, 1, 0, -1507362, 1, 0, -1507361, 1, 0, -1507360, 1, 0, -1507359, 1, 0, -1507358, 1, 0, -1507357, 1, 0, -1507356, 1, 0, -1507355, 1, 0, -1507354, 1, 0, -1507353, 1, 0, -1507352, 1, 0, -1507351, 1, 0, -1507350, 1, 0, -1507349, 1, 0, -1507348, 1, 0, -1507347, 1, 0, -1507346, 1, 0, -1507345, 1, 0, -1507344, 1, 0, -1507343, 1, 0, -1507342, 1, 0, -1507341, 1, 0, -1507340, 1, 0, -1507339, 0, 0, -1507338, 1, 0, -1507337, 1, 0, -1507336, 1, 0, -1507335, 1, 0, -1507334, 1, 0, -1507333, 1, 0, -1507332, 1, 0, -1507331, 1, 0, -1507330, 1, 0, -1507329, 1, 0, -1572864, 1, 0, -1572863, 1, 0, -1572862, 1, 0, -1572861, 1, 0, -1572860, 1, 0, -1572859, 1, 0, -1572858, 1, 0, -1572857, 1, 0, -1572856, 1, 0, -1572855, 1, 0, -1572854, 1, 0, -1572853, 1, 0, -1572852, 1, 0, -1572851, 1, 0, -1572850, 1, 0, -1572849, 1, 0, -1572848, 1, 0, -1572847, 1, 0, -1572846, 1, 0, -1572845, 1, 0, -1572844, 1, 0, -1572843, 1, 0, -1572842, 1, 0, -1572841, 1, 0, -1572840, 1, 0, -1572839, 1, 0, -1572838, 1, 0, -1572837, 1, 0, -1572836, 1, 0, -1572835, 0, 0, -1572834, 0, 0, -1572833, 0, 0, -1572832, 0, 0, -1572831, 0, 0, -1572830, 0, 0, -1572829, 0, 0, -1572828, 0, 0, -1572827, 1, 0, -1572826, 0, 0, -1572825, 0, 0, -1572824, 0, 0, -1572823, 0, 0, -1572822, 0, 0, -1572821, 0, 0, -1572820, 0, 0, -1572819, 0, 0, -1572818, 0, 0, -1572817, 0, 0, -1441849, 0, 0, -1441848, 0, 0, -1441847, 0, 0, -1441846, 1, 0, -1441845, 0, 0, -1441844, 0, 0, -1441843, 0, 0, -1441842, 0, 0, -1441841, 0, 0, -1441840, 0, 0, -1441839, 0, 0, -1441838, 0, 0, -1441837, 0, 0, -1441836, 1, 0, -1441835, 0, 0, -1441834, 0, 0, -1441833, 0, 0, -1441832, 0, 0, -1441831, 0, 0, -1441830, 0, 0, -1441829, 1, 0, -1441828, 1, 0, -1441827, 1, 0, -1441826, 1, 0, -1441825, 1, 0, -1441824, 1, 0, -1441823, 1, 0, -1441822, 1, 0, -1441821, 1, 0, -1441820, 1, 0, -1441819, 1, 0, -1441818, 1, 0, -1441817, 1, 0, -1441816, 1, 0, -1441815, 1, 0, -1441814, 1, 0, -1441813, 1, 0, -1441812, 1, 0, -1441811, 1, 0, -1441810, 1, 0, -1441809, 1, 0, -1441808, 1, 0, -1441807, 1, 0, -1441806, 1, 0, -1441805, 1, 0, -1441804, 1, 0, -1441803, 1, 0, -1441802, 0, 0, -1441801, 0, 0, -1441800, 1, 0, -1441799, 1, 0, -1441798, 1, 0, -1441797, 1, 0, -1441796, 1, 0, -1441795, 1, 0, -1441794, 1, 0, -1441793, 1, 0, -1507328, 1, 0, -1507327, 1, 0, -1507326, 1, 0, -1507325, 1, 0, -1507324, 1, 0, -1507323, 1, 0, -1507322, 1, 0, -1507321, 1, 0, -1507320, 1, 0, -1507319, 1, 0, -1507318, 1, 0, -1507317, 1, 0, -1507316, 1, 0, -1507315, 1, 0, -1507314, 1, 0, -1507313, 1, 0, -1507312, 1, 0, -1507311, 1, 0, -1507310, 1, 0, -1507309, 1, 0, -1507308, 1, 0, -1507307, 1, 0, -1507306, 1, 0, -1507305, 1, 0, -1507304, 1, 0, -1507303, 1, 0, -1507302, 1, 0, -1507301, 1, 0, -1507300, 0, 0, -1507299, 1, 0, -1507298, 0, 0, -1507297, 0, 0, -1507296, 0, 0, -1507295, 0, 0, -1507294, 0, 0, -1507293, 0, 0, -1507292, 0, 0, -1507291, 1, 0, -1507290, 0, 0, -1507289, 0, 0, -1507288, 0, 0, -1507287, 0, 0, -1507286, 0, 0, -1507285, 0, 0, -1507284, 0, 0, -1507283, 0, 0, -1507282, 0, 0, -1507281, 0, 0, -1507280, 0, 0, -1376313, 0, 0, -1376312, 0, 0, -1376311, 1, 0, -1376310, 0, 0, -1376309, 0, 0, -1376308, 0, 0, -1376307, 0, 0, -1376306, 0, 0, -1376305, 0, 0, -1376304, 0, 0, -1376303, 0, 0, -1376302, 0, 0, -1376301, 0, 0, -1376300, 1, 0, -1376299, 0, 0, -1376298, 0, 0, -1376297, 0, 0, -1376296, 0, 0, -1376295, 0, 0, -1376294, 0, 0, -1376293, 1, 0, -1376292, 1, 0, -1376291, 1, 0, -1376290, 1, 0, -1376289, 1, 0, -1376288, 1, 0, -1376287, 1, 0, -1376286, 1, 0, -1376285, 1, 0, -1376284, 1, 0, -1376283, 1, 0, -1376282, 1, 0, -1376281, 1, 0, -1376280, 1, 0, -1376279, 1, 0, -1376278, 1, 0, -1376277, 1, 0, -1376276, 1, 0, -1376275, 1, 0, -1376274, 1, 0, -1376273, 1, 0, -1376272, 1, 0, -1376271, 1, 0, -1376270, 1, 0, -1376269, 1, 0, -1376268, 1, 0, -1376267, 1, 0, -1376266, 0, 0, -1376265, 1, 0, -1376264, 0, 0, -1376263, 0, 0, -1376262, 0, 0, -1376261, 0, 0, -1376260, 1, 0, -1376259, 1, 0, -1376258, 1, 0, -1376257, 1, 0, -1441792, 1, 0, -1441791, 1, 0, -1441790, 1, 0, -1441789, 1, 0, -1441788, 1, 0, -1441787, 1, 0, -1441786, 1, 0, -1441785, 1, 0, -1441784, 1, 0, -1441783, 1, 0, -1441782, 1, 0, -1441781, 1, 0, -1441780, 1, 0, -1441779, 1, 0, -1441778, 1, 0, -1441777, 1, 0, -1441776, 1, 0, -1441775, 1, 0, -1441774, 1, 0, -1441773, 1, 0, -1441772, 1, 0, -1441771, 1, 0, -1441770, 1, 0, -1441769, 1, 0, -1441768, 1, 0, -1441767, 1, 0, -1441766, 1, 0, -1441765, 1, 0, -1441764, 1, 0, -1441763, 0, 0, -1441762, 0, 0, -1441761, 0, 0, -1441760, 0, 0, -1441759, 0, 0, -1441758, 0, 0, -1441757, 0, 0, -1441756, 0, 0, -1441755, 1, 0, -1441754, 0, 0, -1441753, 0, 0, -1441752, 0, 0, -1441751, 0, 0, -1441750, 0, 0, -1441749, 0, 0, -1441748, 0, 0, -1441747, 0, 0, -1441746, 0, 0, -1441745, 0, 0, -1441744, 0, 0, -1441743, 0, 0, -1310777, 0, 0, -1310776, 1, 0, -1310775, 0, 0, -1310774, 0, 0, -1310773, 0, 0, -1310772, 0, 0, -1310771, 0, 0, -1310770, 1, 0, -1310769, 1, 0, -1310768, 0, 0, -1310767, 0, 0, -1310766, 0, 0, -1310765, 0, 0, -1310764, 0, 0, -1310763, 1, 0, -1310762, 0, 0, -1310761, 0, 0, -1310760, 0, 0, -1310759, 0, 0, -1310758, 0, 0, -1310757, 1, 0, -1310756, 1, 0, -1310755, 1, 0, -1310754, 1, 0, -1310753, 1, 0, -1310752, 1, 0, -1310751, 1, 0, -1310750, 1, 0, -1310749, 1, 0, -1310748, 1, 0, -1310747, 1, 0, -1310746, 1, 0, -1310745, 1, 0, -1310744, 1, 0, -1310743, 1, 0, -1310742, 1, 0, -1310741, 1, 0, -1310740, 1, 0, -1310739, 1, 0, -1310738, 1, 0, -1310737, 1, 0, -1310736, 1, 0, -1310735, 1, 0, -1310734, 1, 0, -1310733, 1, 0, -1310732, 1, 0, -1310731, 1, 0, -1310730, 0, 0, -1310729, 1, 0, -1310728, 1, 0, -1310727, 1, 0, -1310726, 1, 0, -1310725, 1, 0, -1310724, 0, 0, -1310723, 0, 0, -1310722, 0, 0, -1310721, 0, 0, -1376256, 1, 0, -1376255, 1, 0, -1376254, 1, 0, -1376253, 1, 0, -1376252, 1, 0, -1376251, 1, 0, -1376250, 1, 0, -1376249, 1, 0, -1376248, 1, 0, -1376247, 1, 0, -1376246, 1, 0, -1376245, 1, 0, -1376244, 1, 0, -1376243, 1, 0, -1376242, 1, 0, -1376241, 1, 0, -1376240, 1, 0, -1376239, 1, 0, -1376238, 1, 0, -1376237, 1, 0, -1376236, 1, 0, -1376235, 1, 0, -1376234, 1, 0, -1376233, 1, 0, -1376232, 1, 0, -1376231, 1, 0, -1376230, 1, 0, -1376229, 1, 0, -1376228, 1, 0, -1376227, 1, 0, -1376226, 0, 0, -1376225, 0, 0, -1376224, 0, 0, -1376223, 0, 0, -1376222, 0, 0, -1376221, 0, 0, -1376220, 0, 0, -1376219, 1, 0, -1376218, 0, 0, -1376217, 0, 0, -1376216, 0, 0, -1376215, 0, 0, -1376214, 0, 0, -1376213, 0, 0, -1376212, 0, 0, -1376211, 0, 0, -1376210, 0, 0, -1376209, 0, 0, -1376208, 0, 0, -1376207, 0, 0, -1245241, 0, 0, -1245240, 0, 0, -1245239, 0, 0, -1245238, 0, 0, -1245237, 0, 0, -1245236, 0, 0, -1245235, 0, 0, -1245234, 0, 0, -1245233, 0, 0, -1245232, 1, 0, -1245231, 1, 0, -1245230, 1, 0, -1245229, 0, 0, -1245228, 0, 0, -1245227, 1, 0, -1245226, 0, 0, -1245225, 0, 0, -1245224, 0, 0, -1245223, 0, 0, -1245222, 0, 0, -1245221, 1, 0, -1245220, 1, 0, -1245219, 1, 0, -1245218, 1, 0, -1245217, 1, 0, -1245216, 1, 0, -1245215, 1, 0, -1245214, 1, 0, -1245213, 1, 0, -1245212, 1, 0, -1245211, 1, 0, -1245210, 1, 0, -1245209, 1, 0, -1245208, 1, 0, -1245207, 1, 0, -1245206, 1, 0, -1245205, 1, 0, -1245204, 1, 0, -1245203, 1, 0, -1245202, 1, 0, -1245201, 1, 0, -1245200, 1, 0, -1245199, 1, 0, -1245198, 1, 0, -1245197, 1, 0, -1245196, 1, 0, -1245195, 1, 0, -1245194, 0, 0, -1245193, 1, 0, -1245192, 1, 0, -1245191, 1, 0, -1245190, 1, 0, -1245189, 1, 0, -1245188, 1, 0, -1245187, 1, 0, -1245186, 1, 0, -1245185, 1, 0, -1310720, 0, 0, -1310719, 0, 0, -1310718, 0, 0, -1310717, 1, 0, -1310716, 1, 0, -1310715, 1, 0, -1310714, 1, 0, -1310713, 1, 0, -1310712, 1, 0, -1310711, 1, 0, -1310710, 1, 0, -1310709, 1, 0, -1310708, 1, 0, -1310707, 1, 0, -1310706, 1, 0, -1310705, 1, 0, -1310704, 1, 0, -1310703, 1, 0, -1310702, 1, 0, -1310701, 1, 0, -1310700, 1, 0, -1310699, 1, 0, -1310698, 1, 0, -1310697, 1, 0, -1310696, 1, 0, -1310695, 1, 0, -1310694, 1, 0, -1310693, 1, 0, -1310692, 1, 0, -1310691, 1, 0, -1310690, 1, 0, -1310689, 0, 0, -1310688, 0, 0, -1310687, 0, 0, -1310686, 0, 0, -1310685, 0, 0, -1310684, 0, 0, -1310683, 0, 0, -1310682, 1, 0, -1310681, 0, 0, -1310680, 0, 0, -1310679, 0, 0, -1310678, 0, 0, -1310677, 0, 0, -1310676, 0, 0, -1310675, 0, 0, -1310674, 0, 0, -1310673, 0, 0, -1310672, 0, 0, -1310671, 0, 0, -1310670, 0, 0, -1179704, 0, 0, -1179703, 0, 0, -1179702, 0, 0, -1179701, 0, 0, -1179700, 0, 0, -1179699, 0, 0, -1179698, 0, 0, -1179697, 0, 0, -1179696, 0, 0, -1179695, 0, 0, -1179694, 0, 0, -1179693, 1, 0, -1179692, 1, 0, -1179691, 1, 0, -1179690, 1, 0, -1179689, 0, 0, -1179688, 0, 0, -1179687, 0, 0, -1179686, 0, 0, -1179685, 1, 0, -1179684, 1, 0, -1179683, 1, 0, -1179682, 1, 0, -1179681, 1, 0, -1179680, 1, 0, -1179679, 1, 0, -1179678, 1, 0, -1179677, 1, 0, -1179676, 1, 0, -1179675, 1, 0, -1179674, 1, 0, -1179673, 1, 0, -1179672, 1, 0, -1179671, 1, 0, -1179670, 1, 0, -1179669, 1, 0, -1179668, 1, 0, -1179667, 1, 0, -1179666, 1, 0, -1179665, 1, 0, -1179664, 1, 0, -1179663, 1, 0, -1179662, 1, 0, -1179661, 1, 0, -1179660, 1, 0, -1179659, 1, 0, -1179658, 1, 0, -1179657, 1, 0, -1179656, 1, 0, -1179655, 1, 0, -1179654, 1, 0, -1179653, 1, 0, -1179652, 1, 0, -1179651, 1, 0, -1179650, 1, 0, -1179649, 1, 0, -1245184, 1, 0, -1245183, 1, 0, -1245182, 1, 0, -1245181, 0, 0, -1245180, 0, 0, -1245179, 1, 0, -1245178, 1, 0, -1245177, 1, 0, -1245176, 1, 0, -1245175, 1, 0, -1245174, 1, 0, -1245173, 1, 0, -1245172, 1, 0, -1245171, 1, 0, -1245170, 1, 0, -1245169, 1, 0, -1245168, 1, 0, -1245167, 1, 0, -1245166, 1, 0, -1245165, 1, 0, -1245164, 1, 0, -1245163, 1, 0, -1245162, 1, 0, -1245161, 1, 0, -1245160, 1, 0, -1245159, 1, 0, -1245158, 1, 0, -1245157, 1, 0, -1245156, 1, 0, -1245155, 1, 0, -1245154, 1, 0, -1245153, 0, 0, -1245152, 0, 0, -1245151, 0, 0, -1245150, 0, 0, -1245149, 0, 0, -1245148, 0, 0, -1245147, 0, 0, -1245146, 1, 0, -1245145, 0, 0, -1245144, 0, 0, -1245143, 0, 0, -1245142, 0, 0, -1245141, 0, 0, -1245140, 0, 0, -1245139, 0, 0, -1245138, 0, 0, -1245137, 0, 0, -1245136, 0, 0, -1245135, 0, 0, -1245134, 0, 0, -1245133, 0, 0, -1114168, 0, 0, -1114167, 0, 0, -1114166, 0, 0, -1114165, 0, 0, -1114164, 0, 0, -1114163, 0, 0, -1114162, 0, 0, -1114161, 0, 0, -1114160, 0, 0, -1114159, 0, 0, -1114158, 0, 0, -1114157, 0, 0, -1114156, 0, 0, -1114155, 1, 0, -1114154, 0, 0, -1114153, 1, 0, -1114152, 1, 0, -1114151, 1, 0, -1114150, 0, 0, -1114149, 0, 0, -1114148, 1, 0, -1114147, 1, 0, -1114146, 1, 0, -1114145, 1, 0, -1114144, 1, 0, -1114143, 1, 0, -1114142, 1, 0, -1114141, 1, 0, -1114140, 1, 0, -1114139, 1, 0, -1114138, 1, 0, -1114137, 1, 0, -1114136, 1, 0, -1114135, 1, 0, -1114134, 1, 0, -1114133, 1, 0, -1114132, 1, 0, -1114131, 1, 0, -1114130, 1, 0, -1114129, 1, 0, -1114128, 1, 0, -1114127, 1, 0, -1114126, 1, 0, -1114125, 1, 0, -1114124, 1, 0, -1114123, 1, 0, -1114122, 1, 0, -1114121, 1, 0, -1114120, 1, 0, -1114119, 1, 0, -1114118, 1, 0, -1114117, 1, 0, -1114116, 1, 0, -1114115, 1, 0, -1114114, 1, 0, -1114113, 1, 0, -1179648, 1, 0, -1179647, 1, 0, -1179646, 0, 0, -1179645, 1, 0, -1179644, 1, 0, -1179643, 0, 0, -1179642, 0, 0, -1179641, 1, 0, -1179640, 1, 0, -1179639, 1, 0, -1179638, 1, 0, -1179637, 1, 0, -1179636, 1, 0, -1179635, 1, 0, -1179634, 1, 0, -1179633, 1, 0, -1179632, 1, 0, -1179631, 1, 0, -1179630, 1, 0, -1179629, 1, 0, -1179628, 1, 0, -1179627, 1, 0, -1179626, 1, 0, -1179625, 1, 0, -1179624, 1, 0, -1179623, 1, 0, -1179622, 1, 0, -1179621, 1, 0, -1179620, 1, 0, -1179619, 1, 0, -1179618, 1, 0, -1179617, 1, 0, -1179616, 0, 0, -1179615, 0, 0, -1179614, 0, 0, -1179613, 0, 0, -1179612, 0, 0, -1179611, 0, 0, -1179610, 1, 0, -1179609, 0, 0, -1179608, 0, 0, -1179607, 0, 0, -1179606, 0, 0, -1179605, 0, 0, -1179604, 0, 0, -1179603, 0, 0, -1179602, 0, 0, -1179601, 1, 0, -1179600, 0, 0, -1179599, 0, 0, -1179598, 0, 0, -1179597, 0, 0, -1179596, 0, 0, -1048631, 0, 0, -1048630, 0, 0, -1048629, 0, 0, -1048628, 0, 0, -1048627, 0, 0, -1048626, 0, 0, -1048625, 0, 0, -1048624, 0, 0, -1048623, 0, 0, -1048622, 0, 0, -1048621, 0, 0, -1048620, 0, 0, -1048619, 1, 0, -1048618, 0, 0, -1048617, 0, 0, -1048616, 0, 0, -1048615, 0, 0, -1048614, 1, 0, -1048613, 0, 0, -1048612, 1, 0, -1048611, 1, 0, -1048610, 1, 0, -1048609, 1, 0, -1048608, 1, 0, -1048607, 1, 0, -1048606, 1, 0, -1048605, 1, 0, -1048604, 1, 0, -1048603, 1, 0, -1048602, 1, 0, -1048601, 1, 0, -1048600, 1, 0, -1048599, 1, 0, -1048598, 1, 0, -1048597, 1, 0, -1048596, 1, 0, -1048595, 1, 0, -1048594, 1, 0, -1048593, 1, 0, -1048592, 1, 0, -1048591, 1, 0, -1048590, 1, 0, -1048589, 1, 0, -1048588, 1, 0, -1048587, 1, 0, -1048586, 1, 0, -1048585, 1, 0, -1048584, 1, 0, -1048583, 1, 0, -1048582, 1, 0, -1048581, 1, 0, -1048580, 1, 0, -1048579, 1, 0, -1048578, 1, 0, -1048577, 1, 0, -1114112, 1, 0, -1114111, 0, 0, -1114110, 1, 0, -1114109, 1, 0, -1114108, 1, 0, -1114107, 1, 0, -1114106, 1, 0, -1114105, 0, 0, -1114104, 1, 0, -1114103, 1, 0, -1114102, 1, 0, -1114101, 1, 0, -1114100, 1, 0, -1114099, 1, 0, -1114098, 1, 0, -1114097, 1, 0, -1114096, 1, 0, -1114095, 1, 0, -1114094, 1, 0, -1114093, 1, 0, -1114092, 1, 0, -1114091, 1, 0, -1114090, 1, 0, -1114089, 1, 0, -1114088, 1, 0, -1114087, 1, 0, -1114086, 1, 0, -1114085, 1, 0, -1114084, 1, 0, -1114083, 1, 0, -1114082, 1, 0, -1114081, 1, 0, -1114080, 1, 0, -1114079, 0, 0, -1114078, 0, 0, -1114077, 0, 0, -1114076, 0, 0, -1114075, 0, 0, -1114074, 1, 0, -1114073, 0, 0, -1114072, 0, 0, -1114071, 0, 0, -1114070, 0, 0, -1114069, 0, 0, -1114068, 0, 0, -1114067, 0, 0, -1114066, 0, 0, -1114065, 1, 0, -1114064, 0, 0, -1114063, 0, 0, -1114062, 0, 0, -1114061, 0, 0, -1114060, 0, 0, -1114059, 0, 0, -983095, 0, 0, -983094, 0, 0, -983093, 0, 0, -983092, 0, 0, -983091, 0, 0, -983090, 0, 0, -983089, 0, 0, -983088, 0, 0, -983087, 0, 0, -983086, 0, 0, -983085, 0, 0, -983084, 0, 0, -983083, 1, 0, -983082, 0, 0, -983081, 0, 0, -983080, 0, 0, -983079, 0, 0, -983078, 0, 0, -983077, 1, 0, -983076, 0, 0, -983075, 1, 0, -983074, 1, 0, -983073, 1, 0, -983072, 1, 0, -983071, 1, 0, -983070, 1, 0, -983069, 1, 0, -983068, 1, 0, -983067, 1, 0, -983066, 1, 0, -983065, 1, 0, -983064, 1, 0, -983063, 1, 0, -983062, 1, 0, -983061, 1, 0, -983060, 1, 0, -983059, 1, 0, -983058, 1, 0, -983057, 1, 0, -983056, 1, 0, -983055, 1, 0, -983054, 1, 0, -983053, 1, 0, -983052, 1, 0, -983051, 1, 0, -983050, 1, 0, -983049, 1, 0, -983048, 1, 0, -983047, 1, 0, -983046, 0, 0, -983045, 1, 0, -983044, 1, 0, -983043, 1, 0, -983042, 1, 0, -983041, 1, 0, -1048576, 1, 0, -1048575, 0, 0, -1048574, 1, 0, -1048573, 1, 0, -1048572, 1, 0, -1048571, 1, 0, -1048570, 1, 0, -1048569, 1, 0, -1048568, 0, 0, -1048567, 0, 0, -1048566, 0, 0, -1048565, 1, 0, -1048564, 1, 0, -1048563, 1, 0, -1048562, 1, 0, -1048561, 1, 0, -1048560, 1, 0, -1048559, 1, 0, -1048558, 1, 0, -1048557, 1, 0, -1048556, 1, 0, -1048555, 1, 0, -1048554, 1, 0, -1048553, 1, 0, -1048552, 1, 0, -1048551, 1, 0, -1048550, 1, 0, -1048549, 1, 0, -1048548, 1, 0, -1048547, 1, 0, -1048546, 1, 0, -1048545, 1, 0, -1048544, 1, 0, -1048543, 1, 0, -1048542, 0, 0, -1048541, 0, 0, -1048540, 0, 0, -1048539, 0, 0, -1048538, 1, 0, -1048537, 0, 0, -1048536, 0, 0, -1048535, 0, 0, -1048534, 0, 0, -1048533, 0, 0, -1048532, 0, 0, -1048531, 0, 0, -1048530, 0, 0, -1048529, 1, 0, -1048528, 1, 0, -1048527, 1, 0, -1048526, 1, 0, -1048525, 1, 0, -1048524, 1, 0, -1048523, 1, 0, -1048522, 1, 0, -1048521, 1, 0, -1048520, 1, 0, -1048519, 1, 0, -917558, 0, 0, -917557, 0, 0, -917556, 0, 0, -917555, 0, 0, -917554, 0, 0, -917553, 0, 0, -917552, 0, 0, -917551, 0, 0, -917550, 0, 0, -917549, 0, 0, -917548, 0, 0, -917547, 0, 0, -917546, 1, 0, -917545, 0, 0, -917544, 0, 0, -917543, 0, 0, -917542, 0, 0, -917541, 0, 0, -917540, 1, 0, -917539, 0, 0, -917538, 1, 0, -917537, 1, 0, -917536, 1, 0, -917535, 1, 0, -917534, 1, 0, -917533, 1, 0, -917532, 1, 0, -917531, 1, 0, -917530, 1, 0, -917529, 1, 0, -917528, 1, 0, -917527, 1, 0, -917526, 1, 0, -917525, 1, 0, -917524, 1, 0, -917523, 1, 0, -917522, 1, 0, -917521, 1, 0, -917520, 1, 0, -917519, 1, 0, -917518, 1, 0, -917517, 1, 0, -917516, 1, 0, -917515, 1, 0, -917514, 0, 0, -917513, 0, 0, -917512, 1, 0, -917511, 1, 0, -917510, 0, 0, -917509, 1, 0, -917508, 1, 0, -917507, 1, 0, -917506, 1, 0, -917505, 1, 0, -983040, 0, 0, -983039, 1, 0, -983038, 1, 0, -983037, 1, 0, -983036, 1, 0, -983035, 1, 0, -983034, 1, 0, -983033, 1, 0, -983032, 1, 0, -983031, 1, 0, -983030, 1, 0, -983029, 0, 0, -983028, 0, 0, -983027, 1, 0, -983026, 1, 0, -983025, 1, 0, -983024, 1, 0, -983023, 1, 0, -983022, 1, 0, -983021, 1, 0, -983020, 1, 0, -983019, 1, 0, -983018, 1, 0, -983017, 1, 0, -983016, 1, 0, -983015, 1, 0, -983014, 1, 0, -983013, 1, 0, -983012, 1, 0, -983011, 1, 0, -983010, 1, 0, -983009, 1, 0, -983008, 1, 0, -983007, 1, 0, -983006, 0, 0, -983005, 0, 0, -983004, 0, 0, -983003, 0, 0, -983002, 1, 0, -983001, 0, 0, -983000, 0, 0, -982999, 0, 0, -982998, 0, 0, -982997, 0, 0, -982996, 0, 0, -982995, 0, 0, -982994, 1, 0, -982993, 1, 0, -982992, 1, 0, -982991, 0, 0, -982990, 0, 0, -982989, 0, 0, -982988, 0, 0, -982987, 0, 0, -982986, 0, 0, -982982, 1, 0, -982981, 1, 0, -852022, 0, 0, -852021, 0, 0, -852020, 0, 0, -852019, 0, 0, -852018, 0, 0, -852017, 0, 0, -852016, 0, 0, -852015, 0, 0, -852014, 0, 0, -852013, 0, 0, -852012, 0, 0, -852011, 0, 0, -852010, 1, 0, -852009, 0, 0, -852008, 0, 0, -852007, 0, 0, -852006, 0, 0, -852005, 0, 0, -852004, 0, 0, -852003, 1, 0, -852002, 1, 0, -852001, 1, 0, -852000, 1, 0, -851999, 1, 0, -851998, 1, 0, -851997, 1, 0, -851996, 1, 0, -851995, 1, 0, -851994, 1, 0, -851993, 1, 0, -851992, 1, 0, -851991, 1, 0, -851990, 1, 0, -851989, 1, 0, -851988, 1, 0, -851987, 1, 0, -851986, 1, 0, -851985, 1, 0, -851984, 0, 0, -851983, 1, 0, -851982, 1, 0, -851981, 1, 0, -851980, 1, 0, -851979, 1, 0, -851978, 1, 0, -851977, 1, 0, -851976, 0, 0, -851975, 1, 0, -851974, 0, 0, -851973, 1, 0, -851972, 1, 0, -851971, 1, 0, -851970, 1, 0, -851969, 1, 0, -917504, 0, 0, -917503, 1, 0, -917502, 1, 0, -917501, 1, 0, -917500, 1, 0, -917499, 1, 0, -917498, 1, 0, -917497, 1, 0, -917496, 1, 0, -917495, 1, 0, -917494, 1, 0, -917493, 1, 0, -917492, 1, 0, -917491, 0, 0, -917490, 1, 0, -917489, 1, 0, -917488, 1, 0, -917487, 1, 0, -917486, 1, 0, -917485, 1, 0, -917484, 1, 0, -917483, 1, 0, -917482, 1, 0, -917481, 1, 0, -917480, 1, 0, -917479, 1, 0, -917478, 1, 0, -917477, 1, 0, -917476, 1, 0, -917475, 1, 0, -917474, 1, 0, -917473, 1, 0, -917472, 1, 0, -917471, 1, 0, -917470, 1, 0, -917469, 0, 0, -917468, 0, 0, -917467, 0, 0, -917466, 1, 0, -917465, 0, 0, -917464, 0, 0, -917463, 0, 0, -917462, 0, 0, -917461, 0, 0, -917460, 0, 0, -917459, 1, 0, -917458, 1, 0, -917457, 0, 0, -917456, 1, 0, -917455, 0, 0, -917454, 0, 0, -917453, 0, 0, -917452, 0, 0, -917451, 0, 0, -917450, 0, 0, -917449, 0, 0, -917444, 1, 0, -786485, 0, 0, -786484, 0, 0, -786483, 0, 0, -786482, 0, 0, -786481, 0, 0, -786480, 0, 0, -786479, 0, 0, -786478, 0, 0, -786477, 0, 0, -786476, 0, 0, -786475, 0, 0, -786474, 1, 0, -786473, 0, 0, -786472, 0, 0, -786471, 0, 0, -786470, 0, 0, -786469, 0, 0, -786468, 0, 0, -786467, 1, 0, -786466, 0, 0, -786465, 1, 0, -786464, 1, 0, -786463, 1, 0, -786462, 1, 0, -786461, 1, 0, -786460, 1, 0, -786459, 1, 0, -786458, 1, 0, -786457, 1, 0, -786456, 1, 0, -786455, 1, 0, -786454, 1, 0, -786453, 1, 0, -786452, 1, 0, -786451, 0, 0, -786450, 0, 0, -786449, 0, 0, -786448, 1, 0, -786447, 1, 0, -786446, 1, 0, -786445, 1, 0, -786444, 1, 0, -786443, 1, 0, -786442, 1, 0, -786441, 1, 0, -786440, 1, 0, -786439, 0, 0, -786438, 0, 0, -786437, 1, 0, -786436, 1, 0, -786435, 1, 0, -786434, 1, 0, -786433, 0, 0, -851968, 0, 0, -851967, 0, 0, -851966, 0, 0, -851965, 0, 0, -851964, 0, 0, -851963, 0, 0, -851962, 1, 0, -851961, 1, 0, -851960, 1, 0, -851959, 1, 0, -851958, 1, 0, -851957, 1, 0, -851956, 1, 0, -851955, 1, 0, -851954, 1, 0, -851953, 1, 0, -851952, 1, 0, -851951, 1, 0, -851950, 1, 0, -851949, 1, 0, -851948, 1, 0, -851947, 1, 0, -851946, 1, 0, -851945, 1, 0, -851944, 1, 0, -851943, 1, 0, -851942, 1, 0, -851941, 1, 0, -851940, 1, 0, -851939, 1, 0, -851938, 1, 0, -851937, 1, 0, -851936, 1, 0, -851935, 1, 0, -851934, 1, 0, -851933, 1, 0, -851932, 0, 0, -851931, 0, 0, -851930, 1, 0, -851929, 0, 0, -851928, 0, 0, -851927, 0, 0, -851926, 0, 0, -851925, 0, 0, -851924, 1, 0, -851923, 0, 0, -851922, 1, 0, -851921, 0, 0, -851920, 1, 0, -851919, 0, 0, -851918, 0, 0, -851917, 0, 0, -851916, 0, 0, -851915, 0, 0, -851914, 0, 0, -851913, 0, 0, -851908, 1, 0, -720949, 0, 0, -720948, 0, 0, -720947, 0, 0, -720946, 0, 0, -720945, 0, 0, -720944, 0, 0, -720943, 0, 0, -720942, 0, 0, -720941, 0, 0, -720940, 0, 0, -720939, 0, 0, -720938, 1, 0, -720937, 0, 0, -720936, 0, 0, -720935, 0, 0, -720934, 0, 0, -720933, 0, 0, -720932, 0, 0, -720931, 0, 0, -720930, 0, 0, -720929, 1, 0, -720928, 1, 0, -720927, 1, 0, -720926, 1, 0, -720925, 1, 0, -720924, 1, 0, -720923, 1, 0, -720922, 1, 0, -720921, 1, 0, -720920, 1, 0, -720919, 1, 0, -720918, 1, 0, -720917, 1, 0, -720916, 1, 0, -720915, 1, 0, -720914, 0, 0, -720913, 0, 0, -720912, 0, 0, -720911, 0, 0, -720910, 0, 0, -720909, 1, 0, -720908, 1, 0, -720907, 1, 0, -720906, 1, 0, -720905, 1, 0, -720904, 1, 0, -720903, 1, 0, -720902, 0, 0, -720901, 0, 0, -720900, 1, 0, -720899, 1, 0, -720898, 1, 0, -720897, 1, 0, -786432, 1, 0, -786431, 0, 0, -786430, 1, 0, -786429, 1, 0, -786428, 1, 0, -786427, 1, 0, -786426, 1, 0, -786425, 1, 0, -786424, 1, 0, -786423, 1, 0, -786422, 1, 0, -786421, 1, 0, -786420, 1, 0, -786419, 1, 0, -786418, 1, 0, -786417, 1, 0, -786416, 1, 0, -786415, 1, 0, -786414, 1, 0, -786413, 1, 0, -786412, 1, 0, -786411, 1, 0, -786410, 1, 0, -786409, 1, 0, -786408, 1, 0, -786407, 1, 0, -786406, 1, 0, -786405, 1, 0, -786404, 1, 0, -786403, 1, 0, -786402, 1, 0, -786401, 1, 0, -786400, 1, 0, -786399, 1, 0, -786398, 1, 0, -786397, 1, 0, -786396, 0, 0, -786395, 0, 0, -786394, 0, 0, -786393, 1, 0, -786392, 0, 0, -786391, 0, 0, -786390, 0, 0, -786389, 1, 0, -786388, 0, 0, -786387, 0, 0, -786386, 1, 0, -786385, 0, 0, -786384, 1, 0, -786383, 1, 0, -786382, 0, 0, -786381, 0, 0, -786380, 0, 0, -786379, 0, 0, -786378, 0, 0, -786377, 0, 0, -786376, 0, 0, -786375, 1, 0, -786371, 1, 0, -655412, 0, 0, -655411, 0, 0, -655410, 0, 0, -655409, 0, 0, -655408, 0, 0, -655407, 0, 0, -655406, 0, 0, -655405, 0, 0, -655404, 0, 0, -655403, 0, 0, -655402, 0, 0, -655401, 1, 0, -655400, 0, 0, -655399, 0, 0, -655398, 0, 0, -655397, 0, 0, -655396, 0, 0, -655395, 0, 0, -655394, 0, 0, -655393, 1, 0, -655392, 1, 0, -655391, 1, 0, -655390, 1, 0, -655389, 1, 0, -655388, 1, 0, -655387, 1, 0, -655386, 1, 0, -655385, 1, 0, -655384, 1, 0, -655383, 1, 0, -655382, 1, 0, -655381, 1, 0, -655380, 1, 0, -655379, 1, 0, -655378, 1, 0, -655377, 1, 0, -655376, 0, 0, -655375, 1, 0, -655374, 1, 0, -655373, 1, 0, -655372, 1, 0, -655371, 1, 0, -655370, 1, 0, -655369, 0, 0, -655368, 0, 0, -655367, 1, 0, -655366, 1, 0, -655365, 1, 0, -655364, 1, 0, -655363, 1, 0, -655362, 1, 0, -655361, 1, 0, -720896, 1, 0, -720895, 0, 0, -720894, 1, 0, -720893, 1, 0, -720892, 1, 0, -720891, 1, 0, -720890, 1, 0, -720889, 1, 0, -720888, 1, 0, -720887, 1, 0, -720886, 1, 0, -720885, 1, 0, -720884, 1, 0, -720883, 1, 0, -720882, 1, 0, -720881, 1, 0, -720880, 1, 0, -720879, 1, 0, -720878, 1, 0, -720877, 1, 0, -720876, 1, 0, -720875, 1, 0, -720874, 1, 0, -720873, 1, 0, -720872, 1, 0, -720871, 1, 0, -720870, 1, 0, -720869, 1, 0, -720868, 1, 0, -720867, 1, 0, -720866, 1, 0, -720865, 1, 0, -720864, 1, 0, -720863, 1, 0, -720862, 1, 0, -720861, 1, 0, -720860, 1, 0, -720859, 0, 0, -720858, 0, 0, -720857, 1, 0, -720856, 0, 0, -720855, 0, 0, -720854, 1, 0, -720853, 0, 0, -720852, 0, 0, -720851, 0, 0, -720850, 1, 0, -720849, 0, 0, -720848, 1, 0, -720847, 1, 0, -720846, 0, 0, -720845, 0, 0, -720844, 0, 0, -720843, 0, 0, -720842, 0, 0, -720841, 1, 0, -720840, 1, 0, -720839, 1, 0, -720835, 1, 0, -589876, 0, 0, -589875, 0, 0, -589874, 0, 0, -589873, 0, 0, -589872, 0, 0, -589871, 0, 0, -589870, 0, 0, -589869, 0, 0, -589868, 0, 0, -589867, 0, 0, -589866, 0, 0, -589865, 1, 0, -589864, 0, 0, -589863, 0, 0, -589862, 1, 0, -589861, 0, 0, -589860, 0, 0, -589859, 0, 0, -589858, 0, 0, -589857, 0, 0, -589856, 1, 0, -589855, 1, 0, -589854, 1, 0, -589853, 1, 0, -589852, 1, 0, -589851, 1, 0, -589850, 1, 0, -589849, 1, 0, -589848, 1, 0, -589847, 1, 0, -589846, 1, 0, -589845, 1, 0, -589844, 1, 0, -589843, 1, 0, -589842, 1, 0, -589841, 1, 0, -589840, 1, 0, -589839, 0, 0, -589838, 1, 0, -589837, 1, 0, -589836, 1, 0, -589835, 1, 0, -589834, 1, 0, -589833, 1, 0, -589832, 0, 0, -589831, 0, 0, -589830, 0, 0, -589829, 0, 0, -589828, 1, 0, -589827, 1, 0, -589826, 1, 0, -589825, 1, 0, -655360, 1, 0, -655359, 1, 0, -655358, 1, 0, -655357, 1, 0, -655356, 1, 0, -655355, 1, 0, -655354, 1, 0, -655353, 1, 0, -655352, 1, 0, -655351, 1, 0, -655350, 1, 0, -655349, 1, 0, -655348, 1, 0, -655347, 1, 0, -655346, 1, 0, -655345, 1, 0, -655344, 1, 0, -655343, 1, 0, -655342, 1, 0, -655341, 1, 0, -655340, 1, 0, -655339, 1, 0, -655338, 1, 0, -655337, 1, 0, -655336, 1, 0, -655335, 1, 0, -655334, 1, 0, -655333, 1, 0, -655332, 1, 0, -655331, 1, 0, -655330, 1, 0, -655329, 1, 0, -655328, 1, 0, -655327, 1, 0, -655326, 1, 0, -655325, 1, 0, -655324, 1, 0, -655323, 1, 0, -655322, 0, 0, -655321, 1, 0, -655320, 0, 0, -655319, 1, 0, -655318, 0, 0, -655317, 0, 0, -655316, 0, 0, -655315, 1, 0, -655314, 0, 0, -655313, 0, 0, -655312, 1, 0, -655311, 1, 0, -655310, 0, 0, -655309, 0, 0, -655308, 0, 0, -655307, 0, 0, -655306, 1, 0, -655305, 0, 0, -655304, 0, 0, -655303, 1, 0, -655299, 1, 0, -524339, 0, 0, -524338, 0, 0, -524337, 0, 0, -524336, 0, 0, -524335, 0, 0, -524334, 0, 0, -524333, 0, 0, -524332, 0, 0, -524331, 0, 0, -524330, 0, 0, -524329, 1, 0, -524328, 0, 0, -524327, 0, 0, -524326, 1, 0, -524325, 0, 0, -524324, 0, 0, -524323, 0, 0, -524322, 0, 0, -524321, 0, 0, -524320, 1, 0, -524319, 1, 0, -524318, 1, 0, -524317, 1, 0, -524316, 1, 0, -524315, 1, 0, -524314, 1, 0, -524313, 1, 0, -524312, 1, 0, -524311, 1, 0, -524310, 1, 0, -524309, 1, 0, -524308, 1, 0, -524307, 1, 0, -524306, 1, 0, -524305, 1, 0, -524304, 1, 0, -524303, 1, 0, -524302, 1, 0, -524301, 0, 0, -524300, 0, 0, -524299, 0, 0, -524298, 1, 0, -524297, 1, 0, -524296, 1, 0, -524295, 1, 0, -524294, 1, 0, -524293, 1, 0, -524292, 1, 0, -524291, 1, 0, -524290, 0, 0, -524289, 1, 0, -589824, 1, 0, -589823, 1, 0, -589822, 1, 0, -589821, 1, 0, -589820, 1, 0, -589819, 1, 0, -589818, 1, 0, -589817, 1, 0, -589816, 1, 0, -589815, 1, 0, -589814, 1, 0, -589813, 1, 0, -589812, 1, 0, -589811, 1, 0, -589810, 1, 0, -589809, 1, 0, -589808, 1, 0, -589807, 1, 0, -589806, 1, 0, -589805, 1, 0, -589804, 1, 0, -589803, 1, 0, -589802, 1, 0, -589801, 1, 0, -589800, 1, 0, -589799, 1, 0, -589798, 1, 0, -589797, 1, 0, -589796, 1, 0, -589795, 1, 0, -589794, 1, 0, -589793, 1, 0, -589792, 1, 0, -589791, 1, 0, -589790, 1, 0, -589789, 1, 0, -589788, 1, 0, -589787, 1, 0, -589786, 0, 0, -589785, 1, 0, -589784, 0, 0, -589783, 1, 0, -589782, 0, 0, -589781, 0, 0, -589780, 0, 0, -589779, 1, 0, -589778, 0, 0, -589777, 1, 0, -589776, 1, 0, -589775, 1, 0, -589774, 0, 0, -589773, 0, 0, -589772, 0, 0, -589771, 1, 0, -589770, 0, 0, -589769, 0, 0, -589768, 0, 0, -589767, 1, 0, -589766, 0, 0, -589763, 1, 0, -458803, 0, 0, -458802, 0, 0, -458801, 0, 0, -458800, 0, 0, -458799, 0, 0, -458798, 0, 0, -458797, 0, 0, -458796, 0, 0, -458795, 0, 0, -458794, 0, 0, -458793, 1, 0, -458792, 0, 0, -458791, 0, 0, -458790, 0, 0, -458789, 1, 0, -458788, 0, 0, -458787, 0, 0, -458786, 0, 0, -458785, 0, 0, -458784, 0, 0, -458783, 1, 0, -458782, 1, 0, -458781, 1, 0, -458780, 1, 0, -458779, 1, 0, -458778, 1, 0, -458777, 1, 0, -458776, 1, 0, -458775, 1, 0, -458774, 1, 0, -458773, 1, 0, -458772, 1, 0, -458771, 1, 0, -458770, 1, 0, -458769, 1, 0, -458768, 1, 0, -458767, 1, 0, -458766, 1, 0, -458765, 1, 0, -458764, 1, 0, -458763, 1, 0, -458762, 1, 0, -458761, 1, 0, -458760, 1, 0, -458759, 1, 0, -458758, 1, 0, -458757, 1, 0, -458756, 1, 0, -458755, 1, 0, -458754, 1, 0, -458753, 0, 0, -524288, 1, 0, -524287, 1, 0, -524286, 1, 0, -524285, 1, 0, -524284, 1, 0, -524283, 1, 0, -524282, 1, 0, -524281, 1, 0, -524280, 1, 0, -524279, 1, 0, -524278, 1, 0, -524277, 1, 0, -524276, 1, 0, -524275, 1, 0, -524274, 1, 0, -524273, 1, 0, -524272, 1, 0, -524271, 1, 0, -524270, 1, 0, -524269, 1, 0, -524268, 1, 0, -524267, 1, 0, -524266, 1, 0, -524265, 1, 0, -524264, 1, 0, -524263, 1, 0, -524262, 1, 0, -524261, 1, 0, -524260, 1, 0, -524259, 1, 0, -524258, 1, 0, -524257, 1, 0, -524256, 1, 0, -524255, 1, 0, -524254, 1, 0, -524253, 1, 0, -524252, 1, 0, -524251, 1, 0, -524250, 1, 0, -524249, 0, 0, -524248, 1, 0, -524247, 0, 0, -524246, 0, 0, -524245, 0, 0, -524244, 0, 0, -524243, 1, 0, -524242, 1, 0, -524241, 0, 0, -524240, 1, 0, -524239, 1, 0, -524238, 0, 0, -524237, 0, 0, -524236, 0, 0, -524235, 1, 0, -524234, 0, 0, -524233, 0, 0, -524232, 0, 0, -524231, 0, 0, -524230, 1, 0, -524227, 1, 0, -393266, 0, 0, -393265, 0, 0, -393264, 0, 0, -393263, 0, 0, -393262, 0, 0, -393261, 0, 0, -393260, 0, 0, -393259, 0, 0, -393258, 0, 0, -393257, 0, 0, -393256, 1, 0, -393255, 0, 0, -393254, 0, 0, -393253, 1, 0, -393252, 1, 0, -393251, 0, 0, -393250, 0, 0, -393249, 0, 0, -393248, 0, 0, -393247, 1, 0, -393246, 1, 0, -393245, 1, 0, -393244, 1, 0, -393243, 1, 0, -393242, 1, 0, -393241, 1, 0, -393240, 1, 0, -393239, 1, 0, -393238, 1, 0, -393237, 1, 0, -393236, 1, 0, -393235, 1, 0, -393234, 1, 0, -393233, 1, 0, -393232, 1, 0, -393231, 1, 0, -393230, 1, 0, -393229, 1, 0, -393228, 1, 0, -393227, 1, 0, -393226, 1, 0, -393225, 1, 0, -393224, 1, 0, -393223, 1, 0, -393222, 1, 0, -393221, 1, 0, -393220, 1, 0, -393219, 1, 0, -393218, 0, 0, -393217, 1, 0, -458752, 1, 0, -458751, 1, 0, -458750, 1, 0, -458749, 1, 0, -458748, 1, 0, -458747, 1, 0, -458746, 1, 0, -458745, 1, 0, -458744, 1, 0, -458743, 1, 0, -458742, 1, 0, -458741, 1, 0, -458740, 1, 0, -458739, 1, 0, -458738, 1, 0, -458737, 1, 0, -458736, 1, 0, -458735, 1, 0, -458734, 1, 0, -458733, 1, 0, -458732, 1, 0, -458731, 1, 0, -458730, 1, 0, -458729, 1, 0, -458728, 1, 0, -458727, 1, 0, -458726, 1, 0, -458725, 1, 0, -458724, 1, 0, -458723, 1, 0, -458722, 1, 0, -458721, 1, 0, -458720, 1, 0, -458719, 1, 0, -458718, 1, 0, -458717, 1, 0, -458716, 1, 0, -458715, 1, 0, -458714, 1, 0, -458713, 0, 0, -458712, 0, 0, -458711, 0, 0, -458710, 0, 0, -458709, 0, 0, -458708, 0, 0, -458707, 1, 0, -458706, 0, 0, -458705, 0, 0, -458704, 1, 0, -458703, 0, 0, -458702, 0, 0, -458701, 0, 0, -458700, 1, 0, -458699, 0, 0, -458698, 0, 0, -458697, 0, 0, -458696, 0, 0, -458695, 0, 0, -458694, 1, 0, -458693, 0, 0, -458691, 1, 0, -327729, 0, 0, -327728, 0, 0, -327727, 0, 0, -327726, 0, 0, -327725, 0, 0, -327724, 0, 0, -327723, 0, 0, -327722, 0, 0, -327721, 0, 0, -327720, 1, 0, -327719, 0, 0, -327718, 0, 0, -327717, 0, 0, -327716, 1, 0, -327715, 0, 0, -327714, 0, 0, -327713, 0, 0, -327712, 0, 0, -327711, 0, 0, -327710, 1, 0, -327709, 1, 0, -327708, 1, 0, -327707, 1, 0, -327706, 1, 0, -327705, 1, 0, -327704, 1, 0, -327703, 1, 0, -327702, 1, 0, -327701, 1, 0, -327700, 1, 0, -327699, 1, 0, -327698, 1, 0, -327697, 1, 0, -327696, 1, 0, -327695, 1, 0, -327694, 1, 0, -327693, 1, 0, -327692, 1, 0, -327691, 1, 0, -327690, 1, 0, -327689, 1, 0, -327688, 1, 0, -327687, 1, 0, -327686, 1, 0, -327685, 1, 0, -327684, 1, 0, -327683, 1, 0, -327682, 1, 0, -327681, 1, 0, -393216, 1, 0, -393215, 1, 0, -393214, 1, 0, -393213, 1, 0, -393212, 1, 0, -393211, 1, 0, -393210, 1, 0, -393209, 1, 0, -393208, 1, 0, -393207, 1, 0, -393206, 1, 0, -393205, 1, 0, -393204, 1, 0, -393203, 1, 0, -393202, 1, 0, -393201, 1, 0, -393200, 1, 0, -393199, 1, 0, -393198, 1, 0, -393197, 1, 0, -393196, 1, 0, -393195, 1, 0, -393194, 1, 0, -393193, 1, 0, -393192, 1, 0, -393191, 1, 0, -393190, 1, 0, -393189, 1, 0, -393188, 1, 0, -393187, 1, 0, -393186, 1, 0, -393185, 1, 0, -393184, 1, 0, -393183, 1, 0, -393182, 1, 0, -393181, 1, 0, -393180, 1, 0, -393179, 1, 0, -393178, 1, 0, -393177, 1, 0, -393176, 0, 0, -393175, 0, 0, -393174, 0, 0, -393173, 0, 0, -393172, 1, 0, -393171, 1, 0, -393170, 0, 0, -393169, 0, 0, -393168, 1, 0, -393167, 0, 0, -393166, 0, 0, -393165, 1, 0, -393164, 0, 0, -393163, 0, 0, -393162, 0, 0, -393161, 0, 0, -393160, 0, 0, -393159, 0, 0, -393158, 1, 0, -393157, 0, 0, -393156, 0, 0, -393155, 1, 0, -262193, 0, 0, -262192, 0, 0, -262191, 0, 0, -262190, 0, 0, -262189, 0, 0, -262188, 0, 0, -262187, 0, 0, -262186, 0, 0, -262185, 0, 0, -262184, 1, 0, -262183, 0, 0, -262182, 0, 0, -262181, 0, 0, -262180, 0, 0, -262179, 0, 0, -262178, 0, 0, -262177, 0, 0, -262176, 0, 0, -262175, 0, 0, -262174, 0, 0, -262173, 1, 0, -262172, 1, 0, -262171, 1, 0, -262170, 1, 0, -262169, 1, 0, -262168, 1, 0, -262167, 1, 0, -262166, 1, 0, -262165, 1, 0, -262164, 1, 0, -262163, 1, 0, -262162, 1, 0, -262161, 1, 0, -262160, 1, 0, -262159, 1, 0, -262158, 1, 0, -262157, 1, 0, -262156, 1, 0, -262155, 1, 0, -262154, 1, 0, -262153, 1, 0, -262152, 1, 0, -262151, 1, 0, -262150, 1, 0, -262149, 1, 0, -262148, 1, 0, -262147, 1, 0, -262146, 1, 0, -262145, 1, 0, -327680, 1, 0, -327679, 1, 0, -327678, 1, 0, -327677, 1, 0, -327676, 1, 0, -327675, 1, 0, -327674, 1, 0, -327673, 1, 0, -327672, 1, 0, -327671, 1, 0, -327670, 1, 0, -327669, 1, 0, -327668, 1, 0, -327667, 1, 0, -327666, 1, 0, -327665, 1, 0, -327664, 1, 0, -327663, 1, 0, -327662, 1, 0, -327661, 1, 0, -327660, 1, 0, -327659, 1, 0, -327658, 1, 0, -327657, 1, 0, -327656, 1, 0, -327655, 1, 0, -327654, 1, 0, -327653, 1, 0, -327652, 1, 0, -327651, 1, 0, -327650, 1, 0, -327649, 1, 0, -327648, 1, 0, -327647, 1, 0, -327646, 1, 0, -327645, 1, 0, -327644, 1, 0, -327643, 1, 0, -327642, 1, 0, -327641, 1, 0, -327640, 0, 0, -327639, 0, 0, -327638, 0, 0, -327637, 1, 0, -327636, 0, 0, -327635, 1, 0, -327634, 0, 0, -327633, 1, 0, -327632, 1, 0, -327631, 0, 0, -327630, 1, 0, -327629, 0, 0, -327628, 0, 0, -327627, 0, 0, -327626, 0, 0, -327625, 0, 0, -327624, 0, 0, -327623, 0, 0, -327622, 1, 0, -327621, 0, 0, -327620, 0, 0, -327619, 1, 0, -196656, 0, 0, -196655, 0, 0, -196654, 0, 0, -196653, 0, 0, -196652, 0, 0, -196651, 0, 0, -196650, 0, 0, -196649, 0, 0, -196648, 0, 0, -196647, 1, 0, -196646, 0, 0, -196645, 0, 0, -196644, 0, 0, -196643, 0, 0, -196642, 0, 0, -196641, 0, 0, -196640, 0, 0, -196639, 0, 0, -196638, 0, 0, -196637, 0, 0, -196636, 1, 0, -196635, 1, 0, -196634, 1, 0, -196633, 1, 0, -196632, 1, 0, -196631, 1, 0, -196630, 1, 0, -196629, 1, 0, -196628, 1, 0, -196627, 1, 0, -196626, 1, 0, -196625, 1, 0, -196624, 1, 0, -196623, 1, 0, -196622, 1, 0, -196621, 1, 0, -196620, 1, 0, -196619, 1, 0, -196618, 1, 0, -196617, 1, 0, -196616, 1, 0, -196615, 1, 0, -196614, 1, 0, -196613, 1, 0, -196612, 1, 0, -196611, 0, 0, -196610, 1, 0, -196609, 1, 0, -262144, 1, 0, -262143, 1, 0, -262142, 1, 0, -262141, 1, 0, -262140, 1, 0, -262139, 1, 0, -262138, 0, 0, -262137, 1, 0, -262136, 1, 0, -262135, 1, 0, -262134, 1, 0, -262133, 1, 0, -262132, 1, 0, -262131, 1, 0, -262130, 1, 0, -262129, 1, 0, -262128, 1, 0, -262127, 1, 0, -262126, 1, 0, -262125, 1, 0, -262124, 1, 0, -262123, 1, 0, -262122, 1, 0, -262121, 1, 0, -262120, 1, 0, -262119, 1, 0, -262118, 1, 0, -262117, 1, 0, -262116, 1, 0, -262115, 1, 0, -262114, 1, 0, -262113, 1, 0, -262112, 1, 0, -262111, 1, 0, -262110, 1, 0, -262109, 1, 0, -262108, 1, 0, -262107, 1, 0, -262106, 1, 0, -262105, 1, 0, -262104, 0, 0, -262103, 0, 0, -262102, 1, 0, -262101, 0, 0, -262100, 0, 0, -262099, 1, 0, -262098, 0, 0, -262097, 1, 0, -262096, 1, 0, -262095, 0, 0, -262094, 1, 0, -262093, 0, 0, -262092, 0, 0, -262091, 0, 0, -262090, 0, 0, -262089, 0, 0, -262088, 0, 0, -262087, 0, 0, -262086, 1, 0, -262085, 0, 0, -262084, 0, 0, -262083, 1, 0, -131120, 0, 0, -131119, 0, 0, -131118, 0, 0, -131117, 0, 0, -131116, 0, 0, -131115, 0, 0, -131114, 0, 0, -131113, 0, 0, -131112, 0, 0, -131111, 1, 0, -131110, 0, 0, -131109, 0, 0, -131108, 0, 0, -131107, 0, 0, -131106, 0, 0, -131105, 0, 0, -131104, 0, 0, -131103, 0, 0, -131102, 0, 0, -131101, 0, 0, -131100, 0, 0, -131099, 1, 0, -131098, 1, 0, -131097, 1, 0, -131096, 1, 0, -131095, 1, 0, -131094, 1, 0, -131093, 1, 0, -131092, 1, 0, -131091, 1, 0, -131090, 1, 0, -131089, 1, 0, -131088, 1, 0, -131087, 1, 0, -131086, 1, 0, -131085, 1, 0, -131084, 1, 0, -131083, 1, 0, -131082, 1, 0, -131081, 1, 0, -131080, 1, 0, -131079, 1, 0, -131078, 1, 0, -131077, 1, 0, -131076, 1, 0, -131075, 0, 0, -131074, 1, 0, -131073, 1, 0, -196608, 1, 0, -196607, 1, 0, -196606, 1, 0, -196605, 1, 0, -196604, 1, 0, -196603, 1, 0, -196602, 0, 0, -196601, 0, 0, -196600, 1, 0, -196599, 1, 0, -196598, 1, 0, -196597, 1, 0, -196596, 1, 0, -196595, 1, 0, -196594, 1, 0, -196593, 1, 0, -196592, 1, 0, -196591, 1, 0, -196590, 1, 0, -196589, 1, 0, -196588, 1, 0, -196587, 1, 0, -196586, 1, 0, -196585, 1, 0, -196584, 1, 0, -196583, 1, 0, -196582, 1, 0, -196581, 1, 0, -196580, 1, 0, -196579, 1, 0, -196578, 1, 0, -196577, 1, 0, -196576, 1, 0, -196575, 1, 0, -196574, 1, 0, -196573, 1, 0, -196572, 1, 0, -196571, 1, 0, -196570, 1, 0, -196569, 1, 0, -196568, 1, 0, -196567, 1, 0, -196566, 0, 0, -196565, 0, 0, -196564, 0, 0, -196563, 1, 0, -196562, 0, 0, -196561, 1, 0, -196560, 1, 0, -196559, 1, 0, -196558, 0, 0, -196557, 0, 0, -196556, 0, 0, -196555, 0, 0, -196554, 0, 0, -196553, 0, 0, -196552, 0, 0, -196551, 1, 0, -196550, 0, 0, -196549, 0, 0, -196548, 1, 0, -196547, 0, 0, -196546, 0, 0, -65583, 0, 0, -65582, 0, 0, -65581, 0, 0, -65580, 0, 0, -65579, 0, 0, -65578, 0, 0, -65577, 0, 0, -65576, 0, 0, -65575, 1, 0, -65574, 0, 0, -65573, 0, 0, -65572, 0, 0, -65571, 0, 0, -65570, 0, 0, -65569, 0, 0, -65568, 0, 0, -65567, 0, 0, -65566, 0, 0, -65565, 0, 0, -65564, 0, 0, -65563, 0, 0, -65562, 1, 0, -65561, 1, 0, -65560, 1, 0, -65559, 1, 0, -65558, 1, 0, -65557, 1, 0, -65556, 1, 0, -65555, 1, 0, -65554, 1, 0, -65553, 1, 0, -65552, 1, 0, -65551, 1, 0, -65550, 1, 0, -65549, 1, 0, -65548, 1, 0, -65547, 1, 0, -65546, 1, 0, -65545, 1, 0, -65544, 1, 0, -65543, 1, 0, -65542, 1, 0, -65541, 1, 0, -65540, 0, 0, -65539, 1, 0, -65538, 1, 0, -65537, 1, 0, -131072, 1, 0, -131071, 1, 0, -131070, 1, 0, -131069, 1, 0, -131068, 1, 0, -131067, 1, 0, -131066, 1, 0, -131065, 0, 0, -131064, 1, 0, -131063, 1, 0, -131062, 1, 0, -131061, 1, 0, -131060, 1, 0, -131059, 1, 0, -131058, 1, 0, -131057, 1, 0, -131056, 1, 0, -131055, 1, 0, -131054, 1, 0, -131053, 1, 0, -131052, 1, 0, -131051, 1, 0, -131050, 1, 0, -131049, 1, 0, -131048, 1, 0, -131047, 1, 0, -131046, 1, 0, -131045, 1, 0, -131044, 1, 0, -131043, 1, 0, -131042, 1, 0, -131041, 1, 0, -131040, 1, 0, -131039, 1, 0, -131038, 1, 0, -131037, 1, 0, -131036, 1, 0, -131035, 1, 0, -131034, 1, 0, -131033, 1, 0, -131032, 1, 0, -131031, 0, 0, -131030, 0, 0, -131029, 0, 0, -131028, 1, 0, -131027, 0, 0, -131026, 1, 0, -131025, 0, 0, -131024, 1, 0, -131023, 0, 0, -131022, 0, 0, -131021, 0, 0, -131020, 0, 0, -131019, 0, 0, -131018, 0, 0, -131017, 0, 0, -131016, 0, 0, -131015, 1, 0, -131014, 0, 0, -131013, 0, 0, -131012, 1, 0, -131011, 0, 0, -131010, 0, 0, -46, 0, 0, -45, 0, 0, -44, 0, 0, -43, 0, 0, -42, 0, 0, -41, 0, 0, -40, 0, 0, -39, 0, 0, -38, 1, 0, -37, 0, 0, -36, 0, 0, -35, 0, 0, -34, 0, 0, -33, 0, 0, -32, 0, 0, -31, 0, 0, -30, 0, 0, -29, 0, 0, -28, 0, 0, -27, 0, 0, -26, 0, 0, -25, 1, 0, -24, 1, 0, -23, 1, 0, -22, 1, 0, -21, 1, 0, -20, 1, 0, -19, 1, 0, -18, 1, 0, -17, 1, 0, -16, 1, 0, -15, 1, 0, -14, 1, 0, -13, 1, 0, -12, 1, 0, -11, 1, 0, -10, 1, 0, -9, 1, 0, -8, 1, 0, -7, 1, 0, -6, 1, 0, -5, 1, 0, -4, 0, 0, -3, 1, 0, -2, 1, 0, -1, 1, 0, -65536, 1, 0, -65535, 1, 0, -65534, 1, 0, -65533, 1, 0, -65532, 1, 0, -65531, 1, 0, -65530, 1, 0, -65529, 0, 0, -65528, 0, 0, -65527, 1, 0, -65526, 1, 0, -65525, 1, 0, -65524, 1, 0, -65523, 1, 0, -65522, 1, 0, -65521, 1, 0, -65520, 1, 0, -65519, 1, 0, -65518, 1, 0, -65517, 1, 0, -65516, 1, 0, -65515, 1, 0, -65514, 1, 0, -65513, 1, 0, -65512, 1, 0, -65511, 1, 0, -65510, 1, 0, -65509, 1, 0, -65508, 1, 0, -65507, 1, 0, -65506, 1, 0, -65505, 1, 0, -65504, 1, 0, -65503, 1, 0, -65502, 1, 0, -65501, 1, 0, -65500, 1, 0, -65499, 1, 0, -65498, 1, 0, -65497, 1, 0, -65496, 1, 0, -65495, 0, 0, -65494, 0, 0, -65493, 0, 0, -65492, 1, 0, -65491, 0, 0, -65490, 1, 0, -65489, 0, 0, -65488, 1, 0, -65487, 0, 0, -65486, 0, 0, -65485, 0, 0, -65484, 0, 0, -65483, 0, 0, -65482, 0, 0, -65481, 0, 0, -65480, 0, 0, -65479, 1, 0, -65478, 0, 0, -65477, 0, 0, -65476, 1, 0, -65475, 0, 0, -65474, 0, 0, -65473, 0, 0, 65490, 0, 0, 65491, 0, 0, 65492, 0, 0, 65493, 0, 0, 65494, 0, 0, 65495, 0, 0, 65496, 0, 0, 65497, 0, 0, 65498, 1, 0, 65499, 0, 0, 65500, 0, 0, 65501, 0, 0, 65502, 0, 0, 65503, 0, 0, 65504, 0, 0, 65505, 0, 0, 65506, 0, 0, 65507, 0, 0, 65508, 0, 0, 65509, 0, 0, 65510, 0, 0, 65511, 0, 0, 65512, 1, 0, 65513, 1, 0, 65514, 1, 0, 65515, 1, 0, 65516, 1, 0, 65517, 1, 0, 65518, 1, 0, 65519, 1, 0, 65520, 1, 0, 65521, 1, 0, 65522, 1, 0, 65523, 1, 0, 65524, 1, 0, 65525, 1, 0, 65526, 1, 0, 65527, 1, 0, 65528, 1, 0, 65529, 1, 0, 65530, 1, 0, 65531, 1, 0, 65532, 0, 0, 65533, 1, 0, 65534, 1, 0, 65535, 1, 0, 0, 1, 0, 1, 1, 0, 2, 1, 0, 3, 1, 0, 4, 1, 0, 5, 1, 0, 6, 1, 0, 7, 1, 0, 8, 0, 0, 9, 1, 0, 10, 1, 0, 11, 1, 0, 12, 1, 0, 13, 1, 0, 14, 1, 0, 15, 1, 0, 16, 1, 0, 17, 1, 0, 18, 1, 0, 19, 1, 0, 20, 1, 0, 21, 1, 0, 22, 0, 0, 23, 1, 0, 24, 1, 0, 25, 1, 0, 26, 1, 0, 27, 1, 0, 28, 1, 0, 29, 1, 0, 30, 1, 0, 31, 1, 0, 32, 1, 0, 33, 1, 0, 34, 1, 0, 35, 1, 0, 36, 1, 0, 37, 1, 0, 38, 1, 0, 39, 1, 0, 40, 1, 0, 41, 1, 0, 42, 1, 0, 43, 1, 0, 44, 1, 0, 45, 1, 0, 46, 1, 0, 47, 1, 0, 48, 1, 0, 49, 0, 0, 50, 0, 0, 51, 0, 0, 52, 0, 0, 53, 0, 0, 54, 0, 0, 55, 0, 0, 56, 0, 0, 57, 1, 0, 58, 0, 0, 59, 0, 0, 60, 1, 0, 61, 0, 0, 62, 0, 0, 63, 0, 0, 131027, 0, 0, 131028, 0, 0, 131029, 0, 0, 131030, 0, 0, 131031, 0, 0, 131032, 0, 0, 131033, 0, 0, 131034, 1, 0, 131035, 0, 0, 131036, 0, 0, 131037, 0, 0, 131038, 0, 0, 131039, 0, 0, 131040, 0, 0, 131041, 0, 0, 131042, 0, 0, 131043, 0, 0, 131044, 0, 0, 131045, 0, 0, 131046, 0, 0, 131047, 0, 0, 131048, 0, 0, 131049, 1, 0, 131050, 1, 0, 131051, 1, 0, 131052, 1, 0, 131053, 1, 0, 131054, 1, 0, 131055, 1, 0, 131056, 1, 0, 131057, 1, 0, 131058, 1, 0, 131059, 1, 0, 131060, 1, 0, 131061, 1, 0, 131062, 1, 0, 131063, 1, 0, 131064, 1, 0, 131065, 1, 0, 131066, 1, 0, 131067, 0, 0, 131068, 1, 0, 131069, 1, 0, 131070, 1, 0, 131071, 1, 0, 65536, 1, 0, 65537, 1, 0, 65538, 1, 0, 65539, 1, 0, 65540, 1, 0, 65541, 1, 0, 65542, 1, 0, 65543, 1, 0, 65544, 0, 0, 65545, 0, 0, 65546, 1, 0, 65547, 1, 0, 65548, 1, 0, 65549, 1, 0, 65550, 1, 0, 65551, 1, 0, 65552, 1, 0, 65553, 1, 0, 65554, 1, 0, 65555, 1, 0, 65556, 1, 0, 65557, 1, 0, 65558, 0, 0, 65559, 0, 0, 65560, 1, 0, 65561, 1, 0, 65562, 1, 0, 65563, 1, 0, 65564, 1, 0, 65565, 1, 0, 65566, 1, 0, 65567, 1, 0, 65568, 1, 0, 65569, 1, 0, 65570, 1, 0, 65571, 1, 0, 65572, 1, 0, 65573, 1, 0, 65574, 1, 0, 65575, 1, 0, 65576, 1, 0, 65577, 0, 0, 65578, 0, 0, 65579, 0, 0, 65580, 1, 0, 65581, 1, 0, 65582, 0, 0, 65583, 1, 0, 65584, 1, 0, 65585, 1, 0, 65586, 1, 0, 65587, 1, 0, 65588, 0, 0, 65589, 0, 0, 65590, 0, 0, 65591, 0, 0, 65592, 0, 0, 65593, 1, 0, 65594, 0, 0, 65595, 1, 0, 65596, 0, 0, 65597, 0, 0, 65598, 0, 0, 65599, 0, 0, 65600, 0, 0, 196563, 0, 0, 196564, 0, 0, 196565, 0, 0, 196566, 0, 0, 196567, 0, 0, 196568, 0, 0, 196569, 0, 0, 196570, 0, 0, 196571, 1, 0, 196572, 0, 0, 196573, 0, 0, 196574, 0, 0, 196575, 0, 0, 196576, 0, 0, 196577, 0, 0, 196578, 0, 0, 196579, 0, 0, 196580, 0, 0, 196581, 0, 0, 196582, 0, 0, 196583, 0, 0, 196584, 0, 0, 196585, 0, 0, 196586, 1, 0, 196587, 1, 0, 196588, 1, 0, 196589, 1, 0, 196590, 1, 0, 196591, 1, 0, 196592, 1, 0, 196593, 1, 0, 196594, 1, 0, 196595, 1, 0, 196596, 1, 0, 196597, 1, 0, 196598, 1, 0, 196599, 1, 0, 196600, 1, 0, 196601, 1, 0, 196602, 0, 0, 196603, 1, 0, 196604, 1, 0, 196605, 1, 0, 196606, 1, 0, 196607, 1, 0, 131072, 1, 0, 131073, 0, 0, 131074, 1, 0, 131075, 1, 0, 131076, 1, 0, 131077, 1, 0, 131078, 1, 0, 131079, 1, 0, 131080, 1, 0, 131081, 0, 0, 131082, 1, 0, 131083, 1, 0, 131084, 1, 0, 131085, 1, 0, 131086, 1, 0, 131087, 1, 0, 131088, 1, 0, 131089, 1, 0, 131090, 1, 0, 131091, 1, 0, 131092, 1, 0, 131093, 1, 0, 131094, 1, 0, 131095, 0, 0, 131096, 1, 0, 131097, 1, 0, 131098, 1, 0, 131099, 1, 0, 131100, 1, 0, 131101, 1, 0, 131102, 1, 0, 131103, 1, 0, 131104, 1, 0, 131105, 1, 0, 131106, 1, 0, 131107, 1, 0, 131108, 1, 0, 131109, 1, 0, 131110, 1, 0, 131111, 1, 0, 131112, 1, 0, 131113, 0, 0, 131114, 0, 0, 131115, 0, 0, 131116, 1, 0, 131117, 0, 0, 131118, 1, 0, 131119, 1, 0, 131120, 0, 0, 131121, 0, 0, 131122, 0, 0, 131123, 0, 0, 131124, 1, 0, 131125, 1, 0, 131126, 1, 0, 131127, 0, 0, 131128, 1, 0, 131129, 0, 0, 131130, 0, 0, 131131, 1, 0, 131132, 0, 0, 131133, 0, 0, 131134, 0, 0, 131135, 0, 0, 131136, 0, 0, 262100, 0, 0, 262101, 0, 0, 262102, 0, 0, 262103, 0, 0, 262104, 0, 0, 262105, 0, 0, 262106, 0, 0, 262107, 1, 0, 262108, 0, 0, 262109, 0, 0, 262110, 0, 0, 262111, 0, 0, 262112, 0, 0, 262113, 0, 0, 262114, 0, 0, 262115, 0, 0, 262116, 0, 0, 262117, 0, 0, 262118, 0, 0, 262119, 0, 0, 262120, 0, 0, 262121, 0, 0, 262122, 0, 0, 262123, 1, 0, 262124, 1, 0, 262125, 1, 0, 262126, 1, 0, 262127, 1, 0, 262128, 1, 0, 262129, 1, 0, 262130, 1, 0, 262131, 1, 0, 262132, 1, 0, 262133, 1, 0, 262134, 1, 0, 262135, 1, 0, 262136, 1, 0, 262137, 1, 0, 262138, 0, 0, 262139, 1, 0, 262140, 1, 0, 262141, 1, 0, 262142, 1, 0, 262143, 1, 0, 196608, 1, 0, 196609, 0, 0, 196610, 1, 0, 196611, 1, 0, 196612, 1, 0, 196613, 1, 0, 196614, 1, 0, 196615, 1, 0, 196616, 1, 0, 196617, 0, 0, 196618, 1, 0, 196619, 1, 0, 196620, 1, 0, 196621, 1, 0, 196622, 1, 0, 196623, 1, 0, 196624, 1, 0, 196625, 1, 0, 196626, 1, 0, 196627, 1, 0, 196628, 1, 0, 196629, 1, 0, 196630, 1, 0, 196631, 1, 0, 196632, 1, 0, 196633, 1, 0, 196634, 1, 0, 196635, 1, 0, 196636, 1, 0, 196637, 1, 0, 196638, 1, 0, 196639, 1, 0, 196640, 1, 0, 196641, 1, 0, 196642, 1, 0, 196643, 1, 0, 196644, 1, 0, 196645, 1, 0, 196646, 1, 0, 196647, 1, 0, 196648, 1, 0, 196649, 0, 0, 196650, 0, 0, 196651, 0, 0, 196652, 1, 0, 196653, 0, 0, 196654, 1, 0, 196655, 1, 0, 196656, 0, 0, 196657, 0, 0, 196658, 0, 0, 196659, 0, 0, 196660, 0, 0, 196661, 0, 0, 196662, 1, 0, 196663, 0, 0, 196664, 1, 0, 196665, 0, 0, 196666, 0, 0, 196667, 1, 0, 196668, 0, 0, 196669, 0, 0, 196670, 0, 0, 196671, 0, 0, 196672, 0, 0, 196673, 0, 0, 327637, 0, 0, 327638, 0, 0, 327639, 0, 0, 327640, 0, 0, 327641, 0, 0, 327642, 0, 0, 327643, 0, 0, 327644, 1, 0, 327645, 0, 0, 327646, 0, 0, 327647, 0, 0, 327648, 0, 0, 327649, 0, 0, 327650, 0, 0, 327651, 0, 0, 327652, 0, 0, 327653, 0, 0, 327654, 0, 0, 327655, 0, 0, 327656, 0, 0, 327657, 0, 0, 327658, 0, 0, 327659, 0, 0, 327660, 1, 0, 327661, 1, 0, 327662, 1, 0, 327663, 1, 0, 327664, 1, 0, 327665, 1, 0, 327666, 1, 0, 327667, 1, 0, 327668, 1, 0, 327669, 1, 0, 327670, 1, 0, 327671, 1, 0, 327672, 1, 0, 327673, 1, 0, 327674, 0, 0, 327675, 1, 0, 327676, 1, 0, 327677, 1, 0, 327678, 1, 0, 327679, 1, 0, 262144, 1, 0, 262145, 0, 0, 262146, 1, 0, 262147, 1, 0, 262148, 1, 0, 262149, 1, 0, 262150, 1, 0, 262151, 1, 0, 262152, 1, 0, 262153, 1, 0, 262154, 0, 0, 262155, 1, 0, 262156, 1, 0, 262157, 1, 0, 262158, 1, 0, 262159, 1, 0, 262160, 1, 0, 262161, 1, 0, 262162, 1, 0, 262163, 1, 0, 262164, 1, 0, 262165, 1, 0, 262166, 1, 0, 262167, 1, 0, 262168, 1, 0, 262169, 1, 0, 262170, 1, 0, 262171, 1, 0, 262172, 1, 0, 262173, 1, 0, 262174, 1, 0, 262175, 1, 0, 262176, 1, 0, 262177, 1, 0, 262178, 1, 0, 262179, 1, 0, 262180, 1, 0, 262181, 1, 0, 262182, 1, 0, 262183, 1, 0, 262184, 1, 0, 262185, 0, 0, 262186, 0, 0, 262187, 1, 0, 262188, 1, 0, 262189, 1, 0, 262190, 0, 0, 262191, 1, 0, 262192, 0, 0, 262193, 0, 0, 262194, 0, 0, 262195, 0, 0, 262196, 0, 0, 262197, 0, 0, 262198, 0, 0, 262199, 1, 0, 262200, 1, 0, 262201, 0, 0, 262202, 0, 0, 262203, 1, 0, 262204, 0, 0, 262205, 0, 0, 262206, 0, 0, 262207, 0, 0, 262208, 0, 0, 262209, 0, 0, 393174, 0, 0, 393175, 0, 0, 393176, 0, 0, 393177, 0, 0, 393178, 0, 0, 393179, 0, 0, 393180, 0, 0, 393181, 1, 0, 393182, 0, 0, 393183, 0, 0, 393184, 1, 0, 393185, 0, 0, 393186, 0, 0, 393187, 0, 0, 393188, 0, 0, 393189, 0, 0, 393190, 0, 0, 393191, 0, 0, 393192, 0, 0, 393193, 0, 0, 393194, 0, 0, 393195, 0, 0, 393196, 1, 0, 393197, 1, 0, 393198, 1, 0, 393199, 1, 0, 393200, 1, 0, 393201, 1, 0, 393202, 1, 0, 393203, 1, 0, 393204, 1, 0, 393205, 1, 0, 393206, 1, 0, 393207, 1, 0, 393208, 1, 0, 393209, 1, 0, 393210, 0, 0, 393211, 0, 0, 393212, 0, 0, 393213, 0, 0, 393214, 1, 0, 393215, 1, 0, 327680, 1, 0, 327681, 1, 0, 327682, 1, 0, 327683, 1, 0, 327684, 1, 0, 327685, 1, 0, 327686, 1, 0, 327687, 1, 0, 327688, 1, 0, 327689, 1, 0, 327690, 0, 0, 327691, 1, 0, 327692, 1, 0, 327693, 1, 0, 327694, 1, 0, 327695, 1, 0, 327696, 1, 0, 327697, 1, 0, 327698, 0, 0, 327699, 1, 0, 327700, 1, 0, 327701, 1, 0, 327702, 1, 0, 327703, 1, 0, 327704, 1, 0, 327705, 1, 0, 327706, 1, 0, 327707, 1, 0, 327708, 1, 0, 327709, 1, 0, 327710, 1, 0, 327711, 1, 0, 327712, 1, 0, 327713, 1, 0, 327714, 1, 0, 327715, 1, 0, 327716, 1, 0, 327717, 1, 0, 327718, 1, 0, 327719, 1, 0, 327720, 1, 0, 327721, 0, 0, 327722, 1, 0, 327723, 0, 0, 327724, 1, 0, 327725, 1, 0, 327726, 0, 0, 327727, 1, 0, 327728, 0, 0, 327729, 0, 0, 327730, 0, 0, 327731, 0, 0, 327732, 0, 0, 327733, 0, 0, 327734, 0, 0, 327735, 0, 0, 327736, 1, 0, 327737, 0, 0, 327738, 1, 0, 327739, 0, 0, 327740, 0, 0, 327741, 0, 0, 327742, 0, 0, 327743, 0, 0, 327744, 0, 0, 327745, 0, 0, 458710, 0, 0, 458711, 0, 0, 458712, 0, 0, 458713, 0, 0, 458714, 0, 0, 458715, 0, 0, 458716, 0, 0, 458717, 0, 0, 458718, 0, 0, 458719, 0, 0, 458720, 0, 0, 458721, 1, 0, 458722, 0, 0, 458723, 0, 0, 458724, 0, 0, 458725, 0, 0, 458726, 0, 0, 458727, 0, 0, 458728, 0, 0, 458729, 0, 0, 458730, 0, 0, 458731, 0, 0, 458732, 0, 0, 458733, 1, 0, 458734, 1, 0, 458735, 1, 0, 458736, 1, 0, 458737, 1, 0, 458738, 1, 0, 458739, 1, 0, 458740, 1, 0, 458741, 1, 0, 458742, 1, 0, 458743, 1, 0, 458744, 1, 0, 458745, 1, 0, 458746, 1, 0, 458747, 1, 0, 458748, 1, 0, 458749, 1, 0, 458750, 1, 0, 458751, 1, 0, 393216, 1, 0, 393217, 1, 0, 393218, 1, 0, 393219, 1, 0, 393220, 1, 0, 393221, 1, 0, 393222, 1, 0, 393223, 1, 0, 393224, 1, 0, 393225, 1, 0, 393226, 1, 0, 393227, 0, 0, 393228, 1, 0, 393229, 1, 0, 393230, 1, 0, 393231, 1, 0, 393232, 1, 0, 393233, 1, 0, 393234, 0, 0, 393235, 1, 0, 393236, 1, 0, 393237, 1, 0, 393238, 1, 0, 393239, 1, 0, 393240, 1, 0, 393241, 1, 0, 393242, 1, 0, 393243, 1, 0, 393244, 1, 0, 393245, 1, 0, 393246, 1, 0, 393247, 1, 0, 393248, 1, 0, 393249, 1, 0, 393250, 1, 0, 393251, 1, 0, 393252, 1, 0, 393253, 1, 0, 393254, 1, 0, 393255, 1, 0, 393256, 1, 0, 393257, 0, 0, 393258, 1, 0, 393259, 0, 0, 393260, 1, 0, 393261, 1, 0, 393262, 0, 0, 393263, 1, 0, 393264, 0, 0, 393265, 0, 0, 393266, 0, 0, 393267, 0, 0, 393268, 0, 0, 393269, 0, 0, 393270, 0, 0, 393271, 0, 0, 393272, 1, 0, 393273, 0, 0, 393274, 1, 0, 393275, 0, 0, 393276, 0, 0, 393277, 0, 0, 393278, 0, 0, 393279, 0, 0, 393280, 0, 0, 393281, 0, 0, 524247, 0, 0, 524248, 0, 0, 524249, 0, 0, 524250, 0, 0, 524251, 0, 0, 524252, 0, 0, 524253, 0, 0, 524254, 0, 0, 524255, 0, 0, 524256, 0, 0, 524257, 0, 0, 524258, 1, 0, 524259, 1, 0, 524260, 0, 0, 524261, 0, 0, 524262, 0, 0, 524263, 0, 0, 524264, 0, 0, 524265, 0, 0, 524266, 0, 0, 524267, 0, 0, 524268, 0, 0, 524269, 0, 0, 524270, 1, 0, 524271, 1, 0, 524272, 1, 0, 524273, 1, 0, 524274, 1, 0, 524275, 1, 0, 524276, 1, 0, 524277, 1, 0, 524278, 1, 0, 524279, 1, 0, 524280, 1, 0, 524281, 1, 0, 524282, 1, 0, 524283, 1, 0, 524284, 1, 0, 524285, 1, 0, 524286, 1, 0, 524287, 1, 0, 458752, 1, 0, 458753, 1, 0, 458754, 1, 0, 458755, 1, 0, 458756, 1, 0, 458757, 1, 0, 458758, 1, 0, 458759, 1, 0, 458760, 1, 0, 458761, 1, 0, 458762, 1, 0, 458763, 0, 0, 458764, 1, 0, 458765, 1, 0, 458766, 1, 0, 458767, 1, 0, 458768, 1, 0, 458769, 0, 0, 458770, 1, 0, 458771, 1, 0, 458772, 1, 0, 458773, 1, 0, 458774, 1, 0, 458775, 1, 0, 458776, 1, 0, 458777, 1, 0, 458778, 1, 0, 458779, 1, 0, 458780, 1, 0, 458781, 1, 0, 458782, 1, 0, 458783, 1, 0, 458784, 1, 0, 458785, 1, 0, 458786, 1, 0, 458787, 1, 0, 458788, 1, 0, 458789, 1, 0, 458790, 1, 0, 458791, 1, 0, 458792, 1, 0, 458793, 1, 0, 458794, 0, 0, 458795, 0, 0, 458796, 1, 0, 458797, 1, 0, 458798, 0, 0, 458799, 1, 0, 458800, 0, 0, 458801, 0, 0, 458802, 0, 0, 458803, 0, 0, 458804, 0, 0, 458805, 0, 0, 458806, 0, 0, 458807, 0, 0, 458808, 1, 0, 458809, 1, 0, 458810, 0, 0, 458811, 0, 0, 458812, 0, 0, 458813, 0, 0, 458814, 0, 0, 458815, 0, 0, 589784, 0, 0, 589785, 0, 0, 589786, 0, 0, 589787, 0, 0, 589788, 0, 0, 589789, 0, 0, 589790, 0, 0, 589791, 0, 0, 589792, 0, 0, 589793, 0, 0, 589794, 0, 0, 589795, 0, 0, 589796, 1, 0, 589797, 0, 0, 589798, 0, 0, 589799, 0, 0, 589800, 0, 0, 589801, 0, 0, 589802, 0, 0, 589803, 0, 0, 589804, 0, 0, 589805, 0, 0, 589806, 0, 0, 589807, 1, 0, 589808, 1, 0, 589809, 1, 0, 589810, 1, 0, 589811, 1, 0, 589812, 1, 0, 589813, 1, 0, 589814, 1, 0, 589815, 1, 0, 589816, 1, 0, 589817, 1, 0, 589818, 1, 0, 589819, 1, 0, 589820, 1, 0, 589821, 1, 0, 589822, 1, 0, 589823, 1, 0, 524288, 1, 0, 524289, 1, 0, 524290, 1, 0, 524291, 1, 0, 524292, 1, 0, 524293, 1, 0, 524294, 1, 0, 524295, 1, 0, 524296, 1, 0, 524297, 1, 0, 524298, 1, 0, 524299, 1, 0, 524300, 0, 0, 524301, 1, 0, 524302, 1, 0, 524303, 1, 0, 524304, 0, 0, 524305, 1, 0, 524306, 1, 0, 524307, 1, 0, 524308, 1, 0, 524309, 1, 0, 524310, 1, 0, 524311, 1, 0, 524312, 1, 0, 524313, 1, 0, 524314, 1, 0, 524315, 1, 0, 524316, 1, 0, 524317, 1, 0, 524318, 1, 0, 524319, 1, 0, 524320, 1, 0, 524321, 1, 0, 524322, 1, 0, 524323, 1, 0, 524324, 1, 0, 524325, 1, 0, 524326, 1, 0, 524327, 1, 0, 524328, 1, 0, 524329, 0, 0, 524330, 0, 0, 524331, 0, 0, 524332, 0, 0, 524333, 0, 0, 524334, 0, 0, 524335, 1, 0, 524336, 0, 0, 524337, 0, 0, 524338, 0, 0, 524339, 0, 0, 524340, 0, 0, 524341, 0, 0, 524342, 0, 0, 524343, 0, 0, 524344, 1, 0, 524345, 1, 0, 524346, 0, 0, 524347, 0, 0, 524348, 0, 0, 524349, 0, 0, 524350, 0, 0, 655321, 0, 0, 655322, 0, 0, 655323, 0, 0, 655324, 0, 0, 655325, 0, 0, 655326, 0, 0, 655327, 0, 0, 655328, 0, 0, 655329, 0, 0, 655330, 0, 0, 655331, 0, 0, 655332, 0, 0, 655333, 1, 0, 655334, 0, 0, 655335, 0, 0, 655336, 0, 0, 655337, 0, 0, 655338, 0, 0, 655339, 0, 0, 655340, 0, 0, 655341, 0, 0, 655342, 0, 0, 655343, 0, 0, 655344, 1, 0, 655345, 1, 0, 655346, 1, 0, 655347, 1, 0, 655348, 1, 0, 655349, 1, 0, 655350, 1, 0, 655351, 1, 0, 655352, 1, 0, 655353, 1, 0, 655354, 1, 0, 655355, 1, 0, 655356, 1, 0, 655357, 1, 0, 655358, 1, 0, 655359, 1, 0, 589824, 1, 0, 589825, 1, 0, 589826, 1, 0, 589827, 1, 0, 589828, 1, 0, 589829, 1, 0, 589830, 1, 0, 589831, 1, 0, 589832, 1, 0, 589833, 1, 0, 589834, 1, 0, 589835, 1, 0, 589836, 1, 0, 589837, 0, 0, 589838, 1, 0, 589839, 0, 0, 589840, 1, 0, 589841, 1, 0, 589842, 1, 0, 589843, 1, 0, 589844, 1, 0, 589845, 1, 0, 589846, 1, 0, 589847, 1, 0, 589848, 1, 0, 589849, 1, 0, 589850, 1, 0, 589851, 1, 0, 589852, 1, 0, 589853, 1, 0, 589854, 1, 0, 589855, 1, 0, 589856, 1, 0, 589857, 1, 0, 589858, 1, 0, 589859, 1, 0, 589860, 1, 0, 589861, 1, 0, 589862, 1, 0, 589863, 1, 0, 589864, 1, 0, 589865, 0, 0, 589866, 0, 0, 589867, 0, 0, 589868, 0, 0, 589869, 0, 0, 589870, 0, 0, 589871, 1, 0, 589872, 0, 0, 589873, 0, 0, 589874, 0, 0, 589875, 0, 0, 589876, 0, 0, 589877, 0, 0, 589878, 0, 0, 589879, 0, 0, 589880, 1, 0, 589881, 1, 0, 589882, 0, 0, 589883, 0, 0, 589884, 0, 0, 589885, 0, 0, 589886, 0, 0, 720858, 0, 0, 720859, 0, 0, 720860, 0, 0, 720861, 0, 0, 720862, 0, 0, 720863, 0, 0, 720864, 0, 0, 720865, 0, 0, 720866, 0, 0, 720867, 0, 0, 720868, 0, 0, 720869, 1, 0, 720870, 0, 0, 720871, 0, 0, 720872, 0, 0, 720873, 0, 0, 720874, 0, 0, 720875, 0, 0, 720876, 0, 0, 720877, 0, 0, 720878, 0, 0, 720879, 0, 0, 720880, 0, 0, 720881, 1, 0, 720882, 1, 0, 720883, 1, 0, 720884, 1, 0, 720885, 1, 0, 720886, 1, 0, 720887, 1, 0, 720888, 1, 0, 720889, 1, 0, 720890, 1, 0, 720891, 1, 0, 720892, 1, 0, 720893, 1, 0, 720894, 1, 0, 720895, 1, 0, 655360, 1, 0, 655361, 1, 0, 655362, 1, 0, 655363, 1, 0, 655364, 1, 0, 655365, 1, 0, 655366, 1, 0, 655367, 1, 0, 655368, 1, 0, 655369, 1, 0, 655370, 1, 0, 655371, 1, 0, 655372, 1, 0, 655373, 1, 0, 655374, 0, 0, 655375, 1, 0, 655376, 1, 0, 655377, 1, 0, 655378, 1, 0, 655379, 1, 0, 655380, 1, 0, 655381, 1, 0, 655382, 1, 0, 655383, 1, 0, 655384, 1, 0, 655385, 1, 0, 655386, 1, 0, 655387, 1, 0, 655388, 1, 0, 655389, 1, 0, 655390, 1, 0, 655391, 1, 0, 655392, 1, 0, 655393, 1, 0, 655394, 1, 0, 655395, 1, 0, 655396, 1, 0, 655397, 1, 0, 655398, 1, 0, 655399, 1, 0, 655400, 0, 0, 655401, 0, 0, 655402, 0, 0, 655403, 0, 0, 655404, 0, 0, 655405, 0, 0, 655406, 0, 0, 655407, 1, 0, 655408, 0, 0, 655409, 0, 0, 655410, 0, 0, 655411, 0, 0, 655412, 0, 0, 655413, 0, 0, 655414, 0, 0, 655415, 0, 0, 655416, 1, 0, 655417, 1, 0, 655418, 0, 0, 655419, 0, 0, 655420, 0, 0, 655421, 0, 0, 655422, 0, 0, 786394, 0, 0, 786395, 0, 0, 786396, 0, 0, 786397, 0, 0, 786398, 0, 0, 786399, 0, 0, 786400, 0, 0, 786401, 0, 0, 786402, 0, 0, 786403, 0, 0, 786404, 0, 0, 786405, 0, 0, 786406, 1, 0, 786407, 0, 0, 786408, 0, 0, 786409, 0, 0, 786410, 0, 0, 786411, 0, 0, 786412, 0, 0, 786413, 0, 0, 786414, 0, 0, 786415, 0, 0, 786416, 0, 0, 786417, 0, 0, 786418, 1, 0, 786419, 1, 0, 786420, 1, 0, 786421, 1, 0, 786422, 1, 0, 786423, 1, 0, 786424, 1, 0, 786425, 1, 0, 786426, 1, 0, 786427, 1, 0, 786428, 1, 0, 786429, 1, 0, 786430, 1, 0, 786431, 1, 0, 720896, 1, 0, 720897, 1, 0, 720898, 1, 0, 720899, 1, 0, 720900, 1, 0, 720901, 1, 0, 720902, 1, 0, 720903, 1, 0, 720904, 1, 0, 720905, 1, 0, 720906, 1, 0, 720907, 1, 0, 720908, 1, 0, 720909, 1, 0, 720910, 1, 0, 720911, 1, 0, 720912, 1, 0, 720913, 1, 0, 720914, 1, 0, 720915, 1, 0, 720916, 1, 0, 720917, 1, 0, 720918, 1, 0, 720919, 1, 0, 720920, 1, 0, 720921, 1, 0, 720922, 1, 0, 720923, 1, 0, 720924, 1, 0, 720925, 1, 0, 720926, 1, 0, 720927, 1, 0, 720928, 1, 0, 720929, 1, 0, 720930, 1, 0, 720931, 1, 0, 720932, 1, 0, 720933, 1, 0, 720934, 1, 0, 720935, 1, 0, 720936, 0, 0, 720937, 0, 0, 720938, 0, 0, 720939, 0, 0, 720940, 0, 0, 720941, 0, 0, 720942, 0, 0, 720943, 1, 0, 720944, 0, 0, 720945, 0, 0, 720946, 0, 0, 720947, 0, 0, 720948, 0, 0, 720949, 0, 0, 720950, 0, 0, 720951, 0, 0, 720952, 1, 0, 720953, 1, 0, 720954, 0, 0, 720955, 0, 0, 720956, 0, 0, 720957, 0, 0, 720958, 0, 0, 720959, 0, 0, 851931, 0, 0, 851932, 0, 0, 851933, 0, 0, 851934, 0, 0, 851935, 0, 0, 851936, 0, 0, 851937, 0, 0, 851938, 0, 0, 851939, 0, 0, 851940, 0, 0, 851941, 0, 0, 851942, 1, 0, 851943, 0, 0, 851944, 0, 0, 851945, 0, 0, 851946, 0, 0, 851947, 0, 0, 851948, 0, 0, 851949, 0, 0, 851950, 0, 0, 851951, 0, 0, 851952, 0, 0, 851953, 0, 0, 851954, 1, 0, 851955, 1, 0, 851956, 1, 0, 851957, 1, 0, 851958, 1, 0, 851959, 1, 0, 851960, 1, 0, 851961, 1, 0, 851962, 1, 0, 851963, 1, 0, 851964, 1, 0, 851965, 1, 0, 851966, 1, 0, 851967, 1, 0, 786432, 1, 0, 786433, 1, 0, 786434, 1, 0, 786435, 1, 0, 786436, 1, 0, 786437, 1, 0, 786438, 1, 0, 786439, 1, 0, 786440, 1, 0, 786441, 1, 0, 786442, 1, 0, 786443, 1, 0, 786444, 1, 0, 786445, 1, 0, 786446, 1, 0, 786447, 1, 0, 786448, 1, 0, 786449, 1, 0, 786450, 1, 0, 786451, 1, 0, 786452, 1, 0, 786453, 1, 0, 786454, 1, 0, 786455, 1, 0, 786456, 1, 0, 786457, 1, 0, 786458, 1, 0, 786459, 1, 0, 786460, 1, 0, 786461, 1, 0, 786462, 1, 0, 786463, 1, 0, 786464, 1, 0, 786465, 1, 0, 786466, 1, 0, 786467, 1, 0, 786468, 1, 0, 786469, 1, 0, 786470, 1, 0, 786471, 0, 0, 786472, 0, 0, 786473, 0, 0, 786474, 0, 0, 786475, 0, 0, 786476, 0, 0, 786477, 1, 0, 786478, 1, 0, 786479, 1, 0, 786480, 0, 0, 786481, 0, 0, 786482, 0, 0, 786483, 0, 0, 786484, 0, 0, 786485, 0, 0, 786486, 0, 0, 786487, 0, 0, 786488, 1, 0, 786489, 1, 0, 786490, 0, 0, 786491, 0, 0, 786492, 0, 0, 786493, 0, 0, 786494, 0, 0, 786495, 0, 0, 917468, 0, 0, 917469, 0, 0, 917470, 0, 0, 917471, 0, 0, 917472, 0, 0, 917473, 0, 0, 917474, 0, 0, 917475, 0, 0, 917476, 0, 0, 917477, 0, 0, 917478, 0, 0, 917479, 1, 0, 917480, 0, 0, 917481, 0, 0, 917482, 0, 0, 917483, 0, 0, 917484, 0, 0, 917485, 0, 0, 917486, 0, 0, 917487, 0, 0, 917488, 0, 0, 917489, 0, 0, 917490, 1, 0, 917491, 0, 0, 917492, 1, 0, 917493, 1, 0, 917494, 1, 0, 917495, 1, 0, 917496, 1, 0, 917497, 1, 0, 917498, 1, 0, 917499, 1, 0, 917500, 1, 0, 917501, 1, 0, 917502, 1, 0, 917503, 1, 0, 851968, 1, 0, 851969, 1, 0, 851970, 1, 0, 851971, 1, 0, 851972, 1, 0, 851973, 1, 0, 851974, 1, 0, 851975, 1, 0, 851976, 1, 0, 851977, 1, 0, 851978, 1, 0, 851979, 1, 0, 851980, 1, 0, 851981, 1, 0, 851982, 1, 0, 851983, 1, 0, 851984, 1, 0, 851985, 1, 0, 851986, 1, 0, 851987, 1, 0, 851988, 1, 0, 851989, 1, 0, 851990, 1, 0, 851991, 1, 0, 851992, 1, 0, 851993, 1, 0, 851994, 1, 0, 851995, 1, 0, 851996, 1, 0, 851997, 1, 0, 851998, 1, 0, 851999, 1, 0, 852000, 1, 0, 852001, 1, 0, 852002, 1, 0, 852003, 1, 0, 852004, 1, 0, 852005, 1, 0, 852006, 1, 0, 852007, 0, 0, 852008, 0, 0, 852009, 0, 0, 852010, 0, 0, 852011, 0, 0, 852012, 0, 0, 852013, 0, 0, 852014, 0, 0, 852015, 0, 0, 852016, 0, 0, 852017, 0, 0, 852018, 0, 0, 852019, 0, 0, 852020, 0, 0, 852021, 0, 0, 852022, 0, 0, 852023, 0, 0, 852024, 1, 0, 852025, 0, 0, 852026, 1, 0, 852027, 0, 0, 852028, 0, 0, 852029, 0, 0, 852030, 0, 0, 852031, 0, 0, 983005, 0, 0, 983006, 0, 0, 983007, 0, 0, 983008, 0, 0, 983009, 0, 0, 983010, 0, 0, 983011, 0, 0, 983012, 0, 0, 983013, 0, 0, 983014, 0, 0, 983015, 0, 0, 983016, 1, 0, 983017, 0, 0, 983018, 0, 0, 983019, 0, 0, 983020, 0, 0, 983021, 0, 0, 983022, 0, 0, 983023, 0, 0, 983024, 0, 0, 983025, 0, 0, 983026, 1, 0, 983027, 0, 0, 983028, 0, 0, 983029, 1, 0, 983030, 1, 0, 983031, 1, 0, 983032, 1, 0, 983033, 1, 0, 983034, 1, 0, 983035, 1, 0, 983036, 1, 0, 983037, 1, 0, 983038, 1, 0, 983039, 1, 0, 917504, 1, 0, 917505, 1, 0, 917506, 1, 0, 917507, 1, 0, 917508, 1, 0, 917509, 1, 0, 917510, 1, 0, 917511, 1, 0, 917512, 1, 0, 917513, 1, 0, 917514, 1, 0, 917515, 1, 0, 917516, 1, 0, 917517, 1, 0, 917518, 1, 0, 917519, 1, 0, 917520, 1, 0, 917521, 1, 0, 917522, 1, 0, 917523, 1, 0, 917524, 1, 0, 917525, 1, 0, 917526, 1, 0, 917527, 1, 0, 917528, 1, 0, 917529, 1, 0, 917530, 1, 0, 917531, 1, 0, 917532, 1, 0, 917533, 1, 0, 917534, 1, 0, 917535, 1, 0, 917536, 1, 0, 917537, 1, 0, 917538, 1, 0, 917539, 1, 0, 917540, 1, 0, 917541, 0, 0, 917542, 0, 0, 917543, 0, 0, 917544, 0, 0, 917545, 0, 0, 917546, 0, 0, 917547, 0, 0, 917548, 0, 0, 917549, 0, 0, 917550, 0, 0, 917551, 0, 0, 917552, 0, 0, 917553, 0, 0, 917554, 0, 0, 917555, 0, 0, 917556, 0, 0, 917557, 0, 0, 917558, 0, 0, 917559, 0, 0, 917560, 1, 0, 917561, 0, 0, 917562, 1, 0, 917563, 0, 0, 917564, 0, 0, 917565, 0, 0, 917566, 0, 0, 917567, 0, 0, 1048542, 0, 0, 1048543, 0, 0, 1048544, 0, 0, 1048545, 0, 0, 1048546, 0, 0, 1048547, 0, 0, 1048548, 0, 0, 1048549, 0, 0, 1048550, 0, 0, 1048551, 0, 0, 1048552, 1, 0, 1048553, 0, 0, 1048554, 0, 0, 1048555, 0, 0, 1048556, 0, 0, 1048557, 0, 0, 1048558, 0, 0, 1048559, 0, 0, 1048560, 0, 0, 1048561, 0, 0, 1048562, 1, 0, 1048563, 0, 0, 1048564, 0, 0, 1048565, 0, 0, 1048566, 1, 0, 1048567, 1, 0, 1048568, 1, 0, 1048569, 1, 0, 1048570, 1, 0, 1048571, 1, 0, 1048572, 1, 0, 1048573, 1, 0, 1048574, 1, 0, 1048575, 1, 0, 983040, 1, 0, 983041, 1, 0, 983042, 1, 0, 983043, 1, 0, 983044, 1, 0, 983045, 1, 0, 983046, 1, 0, 983047, 1, 0, 983048, 1, 0, 983049, 1, 0, 983050, 1, 0, 983051, 1, 0, 983052, 1, 0, 983053, 1, 0, 983054, 1, 0, 983055, 1, 0, 983056, 1, 0, 983057, 1, 0, 983058, 1, 0, 983059, 1, 0, 983060, 1, 0, 983061, 1, 0, 983062, 1, 0, 983063, 1, 0, 983064, 1, 0, 983065, 1, 0, 983066, 1, 0, 983067, 1, 0, 983068, 1, 0, 983069, 1, 0, 983070, 1, 0, 983071, 1, 0, 983072, 1, 0, 983073, 1, 0, 983074, 1, 0, 983075, 1, 0, 983076, 1, 0, 983077, 0, 0, 983078, 0, 0, 983079, 0, 0, 983080, 0, 0, 983081, 0, 0, 983082, 0, 0, 983083, 0, 0, 983084, 0, 0, 983085, 0, 0, 983086, 0, 0, 983087, 0, 0, 983088, 0, 0, 983089, 0, 0, 983090, 0, 0, 983091, 0, 0, 983092, 0, 0, 983093, 0, 0, 983094, 0, 0, 983095, 0, 0, 983096, 1, 0, 983097, 0, 0, 983098, 1, 0, 983099, 0, 0, 983100, 0, 0, 983101, 0, 0, 983102, 0, 0, 983103, 0, 0, 1114079, 0, 0, 1114080, 0, 0, 1114081, 0, 0, 1114082, 0, 0, 1114083, 0, 0, 1114084, 0, 0, 1114085, 0, 0, 1114086, 0, 0, 1114087, 0, 0, 1114088, 0, 0, 1114089, 1, 0, 1114090, 0, 0, 1114091, 0, 0, 1114092, 0, 0, 1114093, 0, 0, 1114094, 0, 0, 1114095, 0, 0, 1114096, 0, 0, 1114097, 0, 0, 1114098, 1, 0, 1114099, 0, 0, 1114100, 0, 0, 1114101, 0, 0, 1114102, 0, 0, 1114103, 1, 0, 1114104, 1, 0, 1114105, 1, 0, 1114106, 1, 0, 1114107, 1, 0, 1114108, 1, 0, 1114109, 1, 0, 1114110, 1, 0, 1114111, 1, 0, 1048576, 1, 0, 1048577, 1, 0, 1048578, 1, 0, 1048579, 1, 0, 1048580, 1, 0, 1048581, 1, 0, 1048582, 1, 0, 1048583, 1, 0, 1048584, 1, 0, 1048585, 1, 0, 1048586, 1, 0, 1048587, 1, 0, 1048588, 1, 0, 1048589, 1, 0, 1048590, 1, 0, 1048591, 1, 0, 1048592, 1, 0, 1048593, 1, 0, 1048594, 1, 0, 1048595, 1, 0, 1048596, 1, 0, 1048597, 1, 0, 1048598, 1, 0, 1048599, 1, 0, 1048600, 1, 0, 1048601, 1, 0, 1048602, 1, 0, 1048603, 1, 0, 1048604, 1, 0, 1048605, 1, 0, 1048606, 1, 0, 1048607, 1, 0, 1048608, 1, 0, 1048609, 1, 0, 1048610, 1, 0, 1048611, 1, 0, 1048612, 0, 0, 1048613, 0, 0, 1048614, 0, 0, 1048615, 0, 0, 1048616, 0, 0, 1048617, 0, 0, 1048618, 0, 0, 1048619, 0, 0, 1048620, 0, 0, 1048621, 0, 0, 1048622, 0, 0, 1048623, 0, 0, 1048624, 1, 0, 1048625, 0, 0, 1048626, 0, 0, 1048627, 0, 0, 1048628, 0, 0, 1048629, 0, 0, 1048630, 0, 0, 1048631, 0, 0, 1048632, 1, 0, 1048633, 0, 0, 1048634, 1, 0, 1048635, 0, 0, 1048636, 0, 0, 1048637, 0, 0, 1048638, 0, 0, 1179616, 0, 0, 1179617, 0, 0, 1179618, 0, 0, 1179619, 0, 0, 1179620, 0, 0, 1179621, 0, 0, 1179622, 0, 0, 1179623, 0, 0, 1179624, 0, 0, 1179625, 0, 0, 1179626, 1, 0, 1179627, 1, 0, 1179628, 0, 0, 1179629, 0, 0, 1179630, 0, 0, 1179631, 0, 0, 1179632, 0, 0, 1179633, 0, 0, 1179634, 1, 0, 1179635, 0, 0, 1179636, 0, 0, 1179637, 0, 0, 1179638, 0, 0, 1179639, 1, 0, 1179640, 1, 0, 1179641, 1, 0, 1179642, 1, 0, 1179643, 1, 0, 1179644, 1, 0, 1179645, 1, 0, 1179646, 1, 0, 1179647, 1, 0, 1114112, 1, 0, 1114113, 1, 0, 1114114, 1, 0, 1114115, 1, 0, 1114116, 1, 0, 1114117, 1, 0, 1114118, 1, 0, 1114119, 1, 0, 1114120, 1, 0, 1114121, 1, 0, 1114122, 1, 0, 1114123, 1, 0, 1114124, 1, 0, 1114125, 1, 0, 1114126, 1, 0, 1114127, 1, 0, 1114128, 1, 0, 1114129, 1, 0, 1114130, 1, 0, 1114131, 1, 0, 1114132, 1, 0, 1114133, 1, 0, 1114134, 1, 0, 1114135, 1, 0, 1114136, 1, 0, 1114137, 1, 0, 1114138, 1, 0, 1114139, 1, 0, 1114140, 1, 0, 1114141, 1, 0, 1114142, 1, 0, 1114143, 1, 0, 1114144, 1, 0, 1114145, 1, 0, 1114146, 1, 0, 1114147, 1, 0, 1114148, 0, 0, 1114149, 0, 0, 1114150, 0, 0, 1114151, 0, 0, 1114152, 0, 0, 1114153, 0, 0, 1114154, 0, 0, 1114155, 0, 0, 1114156, 0, 0, 1114157, 0, 0, 1114158, 0, 0, 1114159, 0, 0, 1114160, 1, 0, 1114161, 0, 0, 1114162, 0, 0, 1114163, 0, 0, 1114164, 0, 0, 1114165, 0, 0, 1114166, 0, 0, 1114167, 0, 0, 1114168, 0, 0, 1114169, 0, 0, 1114170, 1, 0, 1114171, 0, 0, 1114172, 0, 0, 1114173, 0, 0, 1114174, 0, 0, 1245153, 0, 0, 1245154, 0, 0, 1245155, 0, 0, 1245156, 0, 0, 1245157, 0, 0, 1245158, 0, 0, 1245159, 0, 0, 1245160, 0, 0, 1245161, 0, 0, 1245162, 0, 0, 1245163, 0, 0, 1245164, 1, 0, 1245165, 0, 0, 1245166, 0, 0, 1245167, 0, 0, 1245168, 0, 0, 1245169, 0, 0, 1245170, 1, 0, 1245171, 0, 0, 1245172, 0, 0, 1245173, 0, 0, 1245174, 0, 0, 1245175, 0, 0, 1245176, 1, 0, 1245177, 1, 0, 1245178, 1, 0, 1245179, 1, 0, 1245180, 1, 0, 1245181, 1, 0, 1245182, 1, 0, 1245183, 1, 0, 1179648, 1, 0, 1179649, 1, 0, 1179650, 1, 0, 1179651, 1, 0, 1179652, 1, 0, 1179653, 1, 0, 1179654, 1, 0, 1179655, 1, 0, 1179656, 1, 0, 1179657, 1, 0, 1179658, 1, 0, 1179659, 1, 0, 1179660, 1, 0, 1179661, 1, 0, 1179662, 1, 0, 1179663, 1, 0, 1179664, 1, 0, 1179665, 1, 0, 1179666, 1, 0, 1179667, 1, 0, 1179668, 1, 0, 1179669, 1, 0, 1179670, 1, 0, 1179671, 1, 0, 1179672, 1, 0, 1179673, 1, 0, 1179674, 1, 0, 1179675, 1, 0, 1179676, 1, 0, 1179677, 1, 0, 1179678, 1, 0, 1179679, 1, 0, 1179680, 1, 0, 1179681, 1, 0, 1179682, 1, 0, 1179683, 0, 0, 1179684, 0, 0, 1179685, 0, 0, 1179686, 0, 0, 1179687, 0, 0, 1179688, 0, 0, 1179689, 0, 0, 1179690, 0, 0, 1179691, 0, 0, 1179692, 0, 0, 1179693, 0, 0, 1179694, 0, 0, 1179695, 1, 0, 1179696, 0, 0, 1179697, 0, 0, 1179698, 0, 0, 1179699, 0, 0, 1179700, 0, 0, 1179701, 0, 0, 1179702, 0, 0, 1179703, 0, 0, 1179704, 0, 0, 1179705, 0, 0, 1179706, 1, 0, 1179707, 0, 0, 1179708, 0, 0, 1179709, 0, 0, 1179710, 0, 0, 1310690, 0, 0, 1310691, 0, 0, 1310692, 0, 0, 1310693, 0, 0, 1310694, 0, 0, 1310695, 0, 0, 1310696, 0, 0, 1310697, 0, 0, 1310698, 0, 0, 1310699, 0, 0, 1310700, 0, 0, 1310701, 0, 0, 1310702, 0, 0, 1310703, 0, 0, 1310704, 0, 0, 1310705, 0, 0, 1310706, 1, 0, 1310707, 0, 0, 1310708, 0, 0, 1310709, 0, 0, 1310710, 0, 0, 1310711, 0, 0, 1310712, 1, 0, 1310713, 0, 0, 1310714, 0, 0, 1310715, 1, 0, 1310716, 1, 0, 1310717, 1, 0, 1310718, 1, 0, 1310719, 1, 0, 1245184, 1, 0, 1245185, 1, 0, 1245186, 1, 0, 1245187, 1, 0, 1245188, 1, 0, 1245189, 1, 0, 1245190, 1, 0, 1245191, 1, 0, 1245192, 1, 0, 1245193, 1, 0, 1245194, 1, 0, 1245195, 1, 0, 1245196, 1, 0, 1245197, 1, 0, 1245198, 1, 0, 1245199, 1, 0, 1245200, 1, 0, 1245201, 1, 0, 1245202, 1, 0, 1245203, 1, 0, 1245204, 1, 0, 1245205, 1, 0, 1245206, 1, 0, 1245207, 1, 0, 1245208, 1, 0, 1245209, 1, 0, 1245210, 1, 0, 1245211, 1, 0, 1245212, 1, 0, 1245213, 1, 0, 1245214, 1, 0, 1245215, 1, 0, 1245216, 1, 0, 1245217, 1, 0, 1245218, 1, 0, 1245219, 0, 0, 1245220, 0, 0, 1245221, 0, 0, 1245222, 0, 0, 1245223, 0, 0, 1245224, 0, 0, 1245225, 0, 0, 1245226, 0, 0, 1245227, 0, 0, 1245228, 0, 0, 1245229, 0, 0, 1245230, 1, 0, 1245231, 0, 0, 1245232, 0, 0, 1245233, 0, 0, 1245234, 0, 0, 1245235, 0, 0, 1245236, 0, 0, 1245237, 0, 0, 1245238, 0, 0, 1245239, 0, 0, 1245240, 0, 0, 1245241, 0, 0, 1245242, 1, 0, 1245243, 0, 0, 1245244, 0, 0, 1245245, 0, 0, 1376226, 0, 0, 1376227, 0, 0, 1376228, 0, 0, 1376229, 0, 0, 1376230, 0, 0, 1376231, 0, 0, 1376232, 0, 0, 1376233, 0, 0, 1376234, 0, 0, 1376235, 0, 0, 1376236, 0, 0, 1376237, 0, 0, 1376238, 0, 0, 1376239, 0, 0, 1376240, 0, 0, 1376241, 0, 0, 1376242, 1, 0, 1376243, 0, 0, 1376244, 0, 0, 1376245, 0, 0, 1376246, 0, 0, 1376247, 0, 0, 1376248, 1, 0, 1376249, 0, 0, 1376250, 0, 0, 1376251, 0, 0, 1376252, 1, 0, 1376253, 1, 0, 1376254, 1, 0, 1376255, 1, 0, 1310720, 1, 0, 1310721, 1, 0, 1310722, 1, 0, 1310723, 1, 0, 1310724, 1, 0, 1310725, 1, 0, 1310726, 1, 0, 1310727, 1, 0, 1310728, 1, 0, 1310729, 1, 0, 1310730, 1, 0, 1310731, 1, 0, 1310732, 1, 0, 1310733, 1, 0, 1310734, 1, 0, 1310735, 1, 0, 1310736, 1, 0, 1310737, 1, 0, 1310738, 1, 0, 1310739, 1, 0, 1310740, 1, 0, 1310741, 1, 0, 1310742, 1, 0, 1310743, 1, 0, 1310744, 1, 0, 1310745, 1, 0, 1310746, 1, 0, 1310747, 1, 0, 1310748, 1, 0, 1310749, 1, 0, 1310750, 1, 0, 1310751, 1, 0, 1310752, 1, 0, 1310753, 1, 0, 1310754, 1, 0, 1310755, 0, 0, 1310756, 0, 0, 1310757, 0, 0, 1310758, 0, 0, 1310759, 0, 0, 1310760, 0, 0, 1310761, 0, 0, 1310762, 0, 0, 1310763, 0, 0, 1310764, 0, 0, 1310765, 1, 0, 1310766, 0, 0, 1310767, 0, 0, 1310768, 0, 0, 1310769, 0, 0, 1310770, 0, 0, 1310771, 0, 0, 1310772, 0, 0, 1310773, 0, 0, 1310774, 0, 0, 1310775, 0, 0, 1310776, 0, 0, 1310777, 0, 0, 1310778, 1, 0, 1310779, 0, 0, 1310780, 0, 0, 1441763, 0, 0, 1441764, 0, 0, 1441765, 0, 0, 1441766, 0, 0, 1441767, 0, 0, 1441768, 0, 0, 1441769, 0, 0, 1441770, 0, 0, 1441771, 0, 0, 1441772, 0, 0, 1441773, 0, 0, 1441774, 0, 0, 1441775, 0, 0, 1441776, 0, 0, 1441777, 0, 0, 1441778, 1, 0, 1441779, 0, 0, 1441780, 0, 0, 1441781, 0, 0, 1441782, 0, 0, 1441783, 0, 0, 1441784, 0, 0, 1441785, 1, 0, 1441786, 0, 0, 1441787, 0, 0, 1441788, 0, 0, 1441789, 0, 0, 1441790, 1, 0, 1441791, 1, 0, 1376256, 1, 0, 1376257, 1, 0, 1376258, 1, 0, 1376259, 1, 0, 1376260, 1, 0, 1376261, 1, 0, 1376262, 1, 0, 1376263, 1, 0, 1376264, 1, 0, 1376265, 1, 0, 1376266, 1, 0, 1376267, 1, 0, 1376268, 1, 0, 1376269, 1, 0, 1376270, 1, 0, 1376271, 1, 0, 1376272, 1, 0, 1376273, 1, 0, 1376274, 1, 0, 1376275, 1, 0, 1376276, 1, 0, 1376277, 1, 0, 1376278, 1, 0, 1376279, 1, 0, 1376280, 1, 0, 1376281, 1, 0, 1376282, 1, 0, 1376283, 1, 0, 1376284, 1, 0, 1376285, 1, 0, 1376286, 1, 0, 1376287, 1, 0, 1376288, 1, 0, 1376289, 0, 0, 1376290, 0, 0, 1376291, 1, 0, 1376292, 1, 0, 1376293, 1, 0, 1376294, 0, 0, 1376295, 0, 0, 1376296, 0, 0, 1376297, 0, 0, 1376298, 0, 0, 1376299, 0, 0, 1376300, 1, 0, 1376301, 0, 0, 1376302, 0, 0, 1376303, 0, 0, 1376304, 0, 0, 1376305, 0, 0, 1376306, 0, 0, 1376307, 0, 0, 1376308, 0, 0, 1376309, 0, 0, 1376310, 0, 0, 1376311, 0, 0, 1376312, 0, 0, 1376313, 0, 0, 1376314, 1, 0, 1376315, 0, 0, 1507300, 0, 0, 1507301, 0, 0, 1507302, 0, 0, 1507303, 0, 0, 1507304, 0, 0, 1507305, 0, 0, 1507306, 0, 0, 1507307, 0, 0, 1507308, 0, 0, 1507309, 0, 0, 1507310, 0, 0, 1507311, 1, 0, 1507312, 0, 0, 1507313, 0, 0, 1507314, 1, 0, 1507315, 0, 0, 1507316, 0, 0, 1507317, 0, 0, 1507318, 0, 0, 1507319, 0, 0, 1507320, 0, 0, 1507321, 1, 0, 1507322, 0, 0, 1507323, 0, 0, 1507324, 0, 0, 1507325, 0, 0, 1507326, 0, 0, 1507327, 0, 0, 1441792, 1, 0, 1441793, 1, 0, 1441794, 1, 0, 1441795, 1, 0, 1441796, 1, 0, 1441797, 1, 0, 1441798, 1, 0, 1441799, 1, 0, 1441800, 1, 0, 1441801, 1, 0, 1441802, 1, 0, 1441803, 1, 0, 1441804, 1, 0, 1441805, 1, 0, 1441806, 1, 0, 1441807, 1, 0, 1441808, 1, 0, 1441809, 1, 0, 1441810, 1, 0, 1441811, 1, 0, 1441812, 1, 0, 1441813, 1, 0, 1441814, 1, 0, 1441815, 1, 0, 1441816, 1, 0, 1441817, 1, 0, 1441818, 1, 0, 1441819, 1, 0, 1441820, 1, 0, 1441821, 1, 0, 1441822, 1, 0, 1441823, 1, 0, 1441824, 1, 0, 1441825, 0, 0, 1441826, 0, 0, 1441827, 0, 0, 1441828, 0, 0, 1441829, 0, 0, 1441830, 1, 0, 1441831, 1, 0, 1441832, 0, 0, 1441833, 0, 0, 1441834, 0, 0, 1441835, 1, 0, 1441836, 0, 0, 1441837, 0, 0, 1441838, 0, 0, 1441839, 0, 0, 1441840, 0, 0, 1441841, 0, 0, 1441842, 0, 0, 1441843, 0, 0, 1441844, 0, 0, 1441845, 0, 0, 1441846, 0, 0, 1441847, 0, 0, 1441848, 0, 0, 1441849, 0, 0, 1441850, 1, 0, 1441851, 0, 0, 1572837, 0, 0, 1572838, 0, 0, 1572839, 0, 0, 1572840, 0, 0, 1572841, 0, 0, 1572842, 0, 0, 1572843, 0, 0, 1572844, 0, 0, 1572845, 0, 0, 1572846, 0, 0, 1572847, 1, 0, 1572848, 0, 0, 1572849, 0, 0, 1572850, 1, 0, 1572851, 0, 0, 1572852, 0, 0, 1572853, 0, 0, 1572854, 0, 0, 1572855, 0, 0, 1572856, 0, 0, 1572857, 1, 0, 1572858, 0, 0, 1572859, 0, 0, 1572860, 0, 0, 1572861, 0, 0, 1572862, 0, 0, 1572863, 0, 0, 1507328, 0, 0, 1507329, 0, 0, 1507330, 0, 0, 1507331, 1, 0, 1507332, 1, 0, 1507333, 1, 0, 1507334, 1, 0, 1507335, 1, 0, 1507336, 1, 0, 1507337, 1, 0, 1507338, 1, 0, 1507339, 1, 0, 1507340, 1, 0, 1507341, 1, 0, 1507342, 1, 0, 1507343, 1, 0, 1507344, 1, 0, 1507345, 1, 0, 1507346, 1, 0, 1507347, 1, 0, 1507348, 1, 0, 1507349, 1, 0, 1507350, 1, 0, 1507351, 1, 0, 1507352, 1, 0, 1507353, 1, 0, 1507354, 1, 0, 1507355, 1, 0, 1507356, 1, 0, 1507357, 1, 0, 1507358, 1, 0, 1507359, 1, 0, 1507360, 0, 0, 1507361, 0, 0, 1507362, 0, 0, 1507363, 0, 0, 1507364, 0, 0, 1507365, 0, 0, 1507366, 0, 0, 1507367, 0, 0, 1507368, 1, 0, 1507369, 0, 0, 1507370, 1, 0, 1507371, 0, 0, 1507372, 0, 0, 1507373, 0, 0, 1507374, 0, 0, 1507375, 0, 0, 1507376, 0, 0, 1507377, 0, 0, 1507378, 0, 0, 1507379, 0, 0, 1507380, 0, 0, 1507381, 0, 0, 1507382, 0, 0, 1507383, 0, 0, 1507384, 0, 0, 1507385, 0, 0, 1507386, 1, 0, 1638375, 0, 0, 1638376, 0, 0, 1638377, 0, 0, 1638378, 0, 0, 1638379, 0, 0, 1638380, 0, 0, 1638381, 0, 0, 1638382, 0, 0, 1638383, 0, 0, 1638384, 1, 0, 1638385, 1, 0, 1638386, 0, 0, 1638387, 0, 0, 1638388, 0, 0, 1638389, 0, 0, 1638390, 0, 0, 1638391, 0, 0, 1638392, 0, 0, 1638393, 0, 0, 1638394, 1, 0, 1638395, 0, 0, 1638396, 0, 0, 1638397, 0, 0, 1638398, 0, 0, 1638399, 0, 0, 1572864, 0, 0, 1572865, 0, 0, 1572866, 0, 0, 1572867, 0, 0, 1572868, 0, 0, 1572869, 1, 0, 1572870, 1, 0, 1572871, 1, 0, 1572872, 1, 0, 1572873, 1, 0, 1572874, 1, 0, 1572875, 1, 0, 1572876, 1, 0, 1572877, 1, 0, 1572878, 1, 0, 1572879, 1, 0, 1572880, 1, 0, 1572881, 1, 0, 1572882, 1, 0, 1572883, 1, 0, 1572884, 1, 0, 1572885, 1, 0, 1572886, 1, 0, 1572887, 1, 0, 1572888, 1, 0, 1572889, 1, 0, 1572890, 1, 0, 1572891, 1, 0, 1572892, 1, 0, 1572893, 1, 0, 1572894, 0, 0, 1572895, 1, 0, 1572896, 0, 0, 1572897, 0, 0, 1572898, 0, 0, 1572899, 0, 0, 1572900, 0, 0, 1572901, 0, 0, 1572902, 0, 0, 1572903, 0, 0, 1572904, 0, 0, 1572905, 1, 0, 1572906, 1, 0, 1572907, 0, 0, 1572908, 0, 0, 1572909, 0, 0, 1572910, 0, 0, 1572911, 0, 0, 1572912, 0, 0, 1572913, 0, 0, 1572914, 0, 0, 1572915, 0, 0, 1572916, 0, 0, 1572917, 0, 0, 1572918, 0, 0, 1572919, 0, 0, 1572920, 0, 0, 1572921, 0, 0, 1572922, 1, 0, 1703913, 0, 0, 1703914, 0, 0, 1703915, 0, 0, 1703916, 0, 0, 1703917, 0, 0, 1703918, 0, 0, 1703919, 0, 0, 1703920, 0, 0, 1703921, 1, 0, 1703922, 0, 0, 1703923, 0, 0, 1703924, 0, 0, 1703925, 0, 0, 1703926, 0, 0, 1703927, 0, 0, 1703928, 0, 0, 1703929, 0, 0, 1703930, 1, 0, 1703931, 0, 0, 1703932, 0, 0, 1703933, 0, 0, 1703934, 0, 0, 1703935, 0, 0, 1638400, 0, 0, 1638401, 0, 0, 1638402, 0, 0, 1638403, 0, 0, 1638404, 0, 0, 1638405, 0, 0, 1638406, 1, 0, 1638407, 1, 0, 1638408, 1, 0, 1638409, 1, 0, 1638410, 1, 0, 1638411, 1, 0, 1638412, 1, 0, 1638413, 1, 0, 1638414, 1, 0, 1638415, 1, 0, 1638416, 1, 0, 1638417, 1, 0, 1638418, 1, 0, 1638419, 1, 0, 1638420, 1, 0, 1638421, 1, 0, 1638422, 1, 0, 1638423, 1, 0, 1638424, 1, 0, 1638425, 1, 0, 1638426, 1, 0, 1638427, 1, 0, 1638428, 1, 0, 1638429, 0, 0, 1638430, 1, 0, 1638431, 0, 0, 1638432, 0, 0, 1638433, 0, 0, 1638434, 0, 0, 1638435, 0, 0, 1638436, 0, 0, 1638437, 0, 0, 1638438, 0, 0, 1638439, 0, 0, 1638440, 1, 0, 1638441, 1, 0, 1638442, 0, 0, 1638443, 1, 0, 1638444, 0, 0, 1638445, 0, 0, 1638446, 0, 0, 1638447, 0, 0, 1638448, 0, 0, 1638449, 0, 0, 1638450, 0, 0, 1638451, 0, 0, 1638452, 0, 0, 1638453, 0, 0, 1638454, 0, 0, 1638455, 0, 0, 1638456, 0, 0, 1638457, 1, 0, 1769450, 0, 0, 1769451, 0, 0, 1769452, 0, 0, 1769453, 0, 0, 1769454, 0, 0, 1769455, 0, 0, 1769456, 0, 0, 1769457, 0, 0, 1769458, 0, 0, 1769459, 0, 0, 1769460, 0, 0, 1769461, 0, 0, 1769462, 0, 0, 1769463, 0, 0, 1769464, 0, 0, 1769465, 0, 0, 1769466, 0, 0, 1769467, 1, 0, 1769468, 0, 0, 1769469, 0, 0, 1769470, 0, 0, 1769471, 0, 0, 1703936, 0, 0, 1703937, 0, 0, 1703938, 0, 0, 1703939, 0, 0, 1703940, 0, 0, 1703941, 0, 0, 1703942, 1, 0, 1703943, 0, 0, 1703944, 0, 0, 1703945, 1, 0, 1703946, 1, 0, 1703947, 1, 0, 1703948, 1, 0, 1703949, 1, 0, 1703950, 1, 0, 1703951, 1, 0, 1703952, 1, 0, 1703953, 1, 0, 1703954, 1, 0, 1703955, 1, 0, 1703956, 1, 0, 1703957, 1, 0, 1703958, 1, 0, 1703959, 1, 0, 1703960, 1, 0, 1703961, 1, 0, 1703962, 1, 0, 1703963, 0, 0, 1703964, 0, 0, 1703965, 0, 0, 1703966, 1, 0, 1703967, 0, 0, 1703968, 0, 0, 1703969, 0, 0, 1703970, 0, 0, 1703971, 0, 0, 1703972, 0, 0, 1703973, 0, 0, 1703974, 0, 0, 1703975, 0, 0, 1703976, 1, 0, 1703977, 0, 0, 1703978, 0, 0, 1703979, 1, 0, 1703980, 0, 0, 1703981, 0, 0, 1703982, 0, 0, 1703983, 0, 0, 1703984, 0, 0, 1703985, 0, 0, 1703986, 0, 0, 1703987, 0, 0, 1703988, 0, 0, 1703989, 0, 0, 1703990, 0, 0, 1703991, 0, 0, 1703993, 1, 0, 1834987, 0, 0, 1834988, 0, 0, 1834989, 0, 0, 1834990, 0, 0, 1834991, 0, 0, 1834992, 0, 0, 1834993, 0, 0, 1834994, 0, 0, 1834995, 0, 0, 1834996, 0, 0, 1834997, 0, 0, 1834998, 0, 0, 1834999, 0, 0, 1835000, 0, 0, 1835001, 0, 0, 1835002, 0, 0, 1835003, 0, 0, 1835004, 1, 0, 1835005, 0, 0, 1835006, 0, 0, 1835007, 0, 0, 1769472, 0, 0, 1769473, 0, 0, 1769474, 0, 0, 1769475, 0, 0, 1769476, 0, 0, 1769477, 0, 0, 1769478, 0, 0, 1769479, 1, 0, 1769480, 0, 0, 1769481, 0, 0, 1769482, 0, 0, 1769483, 0, 0, 1769484, 1, 0, 1769485, 1, 0, 1769486, 1, 0, 1769487, 1, 0, 1769488, 1, 0, 1769489, 1, 0, 1769490, 1, 0, 1769491, 1, 0, 1769492, 1, 0, 1769493, 1, 0, 1769494, 1, 0, 1769495, 1, 0, 1769496, 1, 0, 1769497, 0, 0, 1769498, 0, 0, 1769499, 0, 0, 1769500, 0, 0, 1769501, 1, 0, 1769502, 0, 0, 1769503, 0, 0, 1769504, 0, 0, 1769505, 0, 0, 1769506, 0, 0, 1769507, 0, 0, 1769508, 0, 0, 1769509, 0, 0, 1769510, 0, 0, 1769511, 1, 0, 1769512, 0, 0, 1769513, 0, 0, 1769514, 0, 0, 1769515, 1, 0, 1769516, 0, 0, 1769517, 0, 0, 1769518, 0, 0, 1769519, 0, 0, 1769520, 0, 0, 1769521, 0, 0, 1769522, 0, 0, 1769523, 0, 0, 1769524, 0, 0, 1769525, 0, 0, 1769526, 0, 0, 1769528, 1, 0, 1900524, 0, 0, 1900525, 0, 0, 1900526, 0, 0, 1900527, 0, 0, 1900528, 0, 0, 1900529, 0, 0, 1900530, 0, 0, 1900531, 0, 0, 1900532, 0, 0, 1900533, 0, 0, 1900534, 0, 0, 1900535, 0, 0, 1900536, 0, 0, 1900537, 0, 0, 1900538, 0, 0, 1900539, 0, 0, 1900540, 0, 0, 1900541, 1, 0, 1900542, 0, 0, 1900543, 0, 0, 1835008, 0, 0, 1835009, 0, 0, 1835010, 0, 0, 1835011, 0, 0, 1835012, 0, 0, 1835013, 0, 0, 1835014, 0, 0, 1835015, 1, 0, 1835016, 0, 0, 1835017, 0, 0, 1835018, 0, 0, 1835019, 0, 0, 1835020, 0, 0, 1835021, 0, 0, 1835022, 0, 0, 1835023, 0, 0, 1835024, 1, 0, 1835025, 1, 0, 1835026, 1, 0, 1835027, 1, 0, 1835028, 1, 0, 1835029, 0, 0, 1835030, 0, 0, 1835031, 1, 0, 1835032, 0, 0, 1835033, 0, 0, 1835034, 0, 0, 1835035, 0, 0, 1835036, 0, 0, 1835037, 1, 0, 1835038, 0, 0, 1835039, 0, 0, 1835040, 0, 0, 1835041, 0, 0, 1835042, 0, 0, 1835043, 0, 0, 1835044, 0, 0, 1835045, 0, 0, 1835046, 0, 0, 1835047, 1, 0, 1835048, 0, 0, 1835049, 0, 0, 1835050, 0, 0, 1835051, 1, 0, 1835052, 0, 0, 1835053, 0, 0, 1835054, 0, 0, 1835055, 0, 0, 1835056, 0, 0, 1835057, 0, 0, 1835058, 0, 0, 1835059, 0, 0, 1835060, 0, 0, 1835061, 0, 0, 1835063, 1, 0, 1966061, 0, 0, 1966062, 0, 0, 1966063, 0, 0, 1966064, 0, 0, 1966065, 0, 0, 1966066, 0, 0, 1966067, 0, 0, 1966068, 0, 0, 1966069, 0, 0, 1966070, 0, 0, 1966071, 0, 0, 1966072, 0, 0, 1966073, 0, 0, 1966074, 0, 0, 1966075, 0, 0, 1966076, 0, 0, 1966077, 1, 0, 1966078, 0, 0, 1966079, 0, 0, 1900544, 0, 0, 1900545, 0, 0, 1900546, 0, 0, 1900547, 0, 0, 1900548, 0, 0, 1900549, 0, 0, 1900550, 0, 0, 1900551, 0, 0, 1900552, 1, 0, 1900553, 0, 0, 1900554, 0, 0, 1900555, 0, 0, 1900556, 0, 0, 1900557, 0, 0, 1900558, 0, 0, 1900559, 0, 0, 1900560, 0, 0, 1900561, 0, 0, 1900562, 0, 0, 1900563, 0, 0, 1900564, 0, 0, 1900565, 0, 0, 1900566, 0, 0, 1900567, 1, 0, 1900568, 0, 0, 1900569, 0, 0, 1900570, 0, 0, 1900571, 0, 0, 1900572, 0, 0, 1900573, 1, 0, 1900574, 0, 0, 1900575, 0, 0, 1900576, 0, 0, 1900577, 0, 0, 1900578, 0, 0, 1900579, 0, 0, 1900580, 0, 0, 1900581, 0, 0, 1900582, 0, 0, 1900583, 1, 0, 1900584, 0, 0, 1900585, 0, 0, 1900586, 0, 0, 1900587, 1, 0, 1900588, 0, 0, 1900589, 0, 0, 1900590, 0, 0, 1900591, 0, 0, 1900592, 0, 0, 1900593, 0, 0, 1900594, 0, 0, 1900595, 0, 0, 1900596, 0, 0, 1900598, 1, 0, 2031598, 0, 0, 2031599, 0, 0, 2031600, 0, 0, 2031601, 0, 0, 2031602, 0, 0, 2031603, 0, 0, 2031604, 0, 0, 2031605, 0, 0, 2031606, 0, 0, 2031607, 0, 0, 2031608, 0, 0, 2031609, 0, 0, 2031610, 0, 0, 2031611, 0, 0, 2031612, 0, 0, 2031613, 0, 0, 2031614, 0, 0, 2031615, 0, 0, 1966080, 0, 0, 1966081, 0, 0, 1966082, 0, 0, 1966083, 0, 0, 1966084, 0, 0, 1966085, 0, 0, 1966086, 0, 0, 1966087, 0, 0, 1966088, 1, 0, 1966089, 0, 0, 1966090, 0, 0, 1966091, 0, 0, 1966092, 0, 0, 1966093, 0, 0, 1966094, 0, 0, 1966095, 0, 0, 1966096, 0, 0, 1966097, 0, 0, 1966098, 0, 0, 1966099, 0, 0, 1966100, 0, 0, 1966101, 0, 0, 1966102, 0, 0, 1966103, 1, 0, 1966104, 0, 0, 1966105, 0, 0, 1966106, 0, 0, 1966107, 0, 0, 1966108, 1, 0, 1966109, 0, 0, 1966110, 0, 0, 1966111, 0, 0, 1966112, 0, 0, 1966113, 0, 0, 1966114, 0, 0, 1966115, 0, 0, 1966116, 0, 0, 1966117, 0, 0, 1966118, 0, 0, 1966119, 1, 0, 1966120, 0, 0, 1966121, 0, 0, 1966122, 1, 0, 1966123, 0, 0, 1966124, 0, 0, 1966125, 0, 0, 1966126, 0, 0, 1966127, 0, 0, 1966128, 0, 0, 1966129, 0, 0, 1966130, 0, 0, 1966131, 0, 0, 1966133, 1, 0, 2097136, 0, 0, 2097137, 0, 0, 2097138, 0, 0, 2097139, 0, 0, 2097140, 0, 0, 2097141, 0, 0, 2097142, 0, 0, 2097143, 0, 0, 2097144, 0, 0, 2097145, 0, 0, 2097146, 0, 0, 2097147, 0, 0, 2097148, 0, 0, 2097149, 0, 0, 2097150, 0, 0, 2097151, 0, 0, 2031616, 0, 0, 2031617, 0, 0, 2031618, 0, 0, 2031619, 0, 0, 2031620, 0, 0, 2031621, 0, 0, 2031622, 0, 0, 2031623, 1, 0, 2031624, 0, 0, 2031625, 0, 0, 2031626, 0, 0, 2031627, 0, 0, 2031628, 0, 0, 2031629, 0, 0, 2031630, 0, 0, 2031631, 0, 0, 2031632, 0, 0, 2031633, 0, 0, 2031634, 0, 0, 2031635, 0, 0, 2031636, 0, 0, 2031637, 0, 0, 2031638, 0, 0, 2031639, 1, 0, 2031640, 0, 0, 2031641, 0, 0, 2031642, 0, 0, 2031643, 0, 0, 2031644, 1, 0, 2031645, 0, 0, 2031646, 0, 0, 2031647, 0, 0, 2031648, 0, 0, 2031649, 0, 0, 2031650, 0, 0, 2031651, 0, 0, 2031652, 0, 0, 2031653, 0, 0, 2031654, 1, 0, 2031655, 0, 0, 2031656, 0, 0, 2031657, 0, 0, 2031658, 1, 0, 2031659, 0, 0, 2031660, 0, 0, 2031661, 0, 0, 2031662, 0, 0, 2031663, 0, 0, 2031664, 0, 0, 2031665, 0, 0, 2031666, 0, 0, 2031668, 1, 0, 2162674, 0, 0, 2162675, 0, 0, 2162676, 0, 0, 2162677, 0, 0, 2162678, 0, 0, 2162679, 0, 0, 2162680, 0, 0, 2162681, 0, 0, 2162682, 0, 0, 2162683, 0, 0, 2162684, 0, 0, 2162685, 0, 0, 2162686, 0, 0, 2162687, 0, 0, 2097152, 0, 0, 2097153, 0, 0, 2097154, 0, 0, 2097155, 0, 0, 2097156, 0, 0, 2097157, 0, 0, 2097158, 0, 0, 2097159, 1, 0, 2097160, 0, 0, 2097161, 0, 0, 2097162, 0, 0, 2097163, 0, 0, 2097164, 0, 0, 2097165, 0, 0, 2097166, 0, 0, 2097167, 0, 0, 2097168, 0, 0, 2097169, 0, 0, 2097170, 0, 0, 2097171, 0, 0, 2097172, 0, 0, 2097173, 0, 0, 2097174, 0, 0, 2097175, 1, 0, 2097176, 0, 0, 2097177, 0, 0, 2097178, 0, 0, 2097179, 1, 0, 2097180, 0, 0, 2097181, 0, 0, 2097182, 0, 0, 2097183, 0, 0, 2097184, 0, 0, 2097185, 0, 0, 2097186, 0, 0, 2097187, 0, 0, 2097188, 0, 0, 2097189, 0, 0, 2097190, 1, 0, 2097191, 0, 0, 2097192, 0, 0, 2097193, 1, 0, 2097194, 0, 0, 2097195, 0, 0, 2097196, 0, 0, 2097197, 0, 0, 2097198, 0, 0, 2097199, 0, 0, 2097200, 0, 0, 2097204, 1, 0, 2228211, 0, 0, 2228212, 0, 0, 2228213, 0, 0, 2228214, 0, 0, 2228215, 0, 0, 2228216, 0, 0, 2228217, 0, 0, 2228218, 0, 0, 2228219, 0, 0, 2228220, 0, 0, 2228221, 0, 0, 2228222, 0, 0, 2228223, 0, 0, 2162688, 0, 0, 2162689, 0, 0, 2162690, 0, 0, 2162691, 0, 0, 2162692, 0, 0, 2162693, 0, 0, 2162694, 1, 0, 2162695, 0, 0, 2162696, 0, 0, 2162697, 0, 0, 2162698, 0, 0, 2162699, 0, 0, 2162700, 0, 0, 2162701, 0, 0, 2162702, 0, 0, 2162703, 0, 0, 2162704, 0, 0, 2162705, 0, 0, 2162706, 0, 0, 2162707, 0, 0, 2162708, 0, 0, 2162709, 0, 0, 2162710, 0, 0, 2162711, 1, 0, 2162712, 0, 0, 2162713, 0, 0, 2162714, 0, 0, 2162715, 1, 0, 2162716, 0, 0, 2162717, 0, 0, 2162718, 0, 0, 2162719, 0, 0, 2162720, 0, 0, 2162721, 0, 0, 2162722, 0, 0, 2162723, 0, 0, 2162724, 0, 0, 2162725, 1, 0, 2162726, 0, 0, 2162727, 0, 0, 2162728, 1, 0, 2162729, 0, 0, 2162730, 0, 0, 2162731, 0, 0, 2162732, 0, 0, 2162733, 0, 0, 2162734, 0, 0, 2162735, 0, 0, 2162739, 1, 0, 2293749, 0, 0, 2293750, 0, 0, 2293751, 0, 0, 2293752, 0, 0, 2293753, 0, 0, 2293754, 0, 0, 2293755, 0, 0, 2293756, 0, 0, 2293757, 0, 0, 2293758, 0, 0, 2293759, 0, 0, 2228224, 0, 0, 2228225, 0, 0, 2228226, 0, 0, 2228227, 0, 0, 2228228, 0, 0, 2228229, 0, 0, 2228230, 0, 0, 2228231, 1, 0, 2228232, 0, 0, 2228233, 0, 0, 2228234, 0, 0, 2228235, 0, 0, 2228236, 0, 0, 2228237, 0, 0, 2228238, 0, 0, 2228239, 0, 0, 2228240, 0, 0, 2228241, 0, 0, 2228242, 0, 0, 2228243, 0, 0, 2228244, 0, 0, 2228245, 0, 0, 2228246, 0, 0, 2228247, 1, 0, 2228248, 0, 0, 2228249, 0, 0, 2228250, 0, 0, 2228251, 1, 0, 2228252, 0, 0, 2228253, 0, 0, 2228254, 0, 0, 2228255, 0, 0, 2228256, 0, 0, 2228257, 0, 0, 2228258, 0, 0, 2228259, 0, 0, 2228260, 0, 0, 2228261, 1, 0, 2228262, 0, 0, 2228263, 0, 0, 2228264, 1, 0, 2228265, 0, 0, 2228266, 0, 0, 2228267, 0, 0, 2228268, 0, 0, 2228269, 0, 0, 2228270, 0, 0, 2228274, 1, 0, 2359287, 0, 0, 2359288, 0, 0, 2359289, 0, 0, 2359290, 0, 0, 2359291, 0, 0, 2359292, 0, 0, 2359293, 0, 0, 2359294, 0, 0, 2359295, 0, 0, 2293760, 0, 0, 2293761, 0, 0, 2293762, 0, 0, 2293763, 0, 0, 2293764, 0, 0, 2293765, 0, 0, 2293766, 0, 0, 2293767, 1, 0, 2293768, 0, 0, 2293769, 0, 0, 2293770, 0, 0, 2293771, 0, 0, 2293772, 0, 0, 2293773, 0, 0, 2293774, 0, 0, 2293775, 0, 0, 2293776, 0, 0, 2293777, 0, 0, 2293778, 0, 0, 2293779, 1, 0, 2293780, 1, 0, 2293781, 0, 0, 2293782, 0, 0, 2293783, 0, 0, 2293784, 1, 0, 2293785, 0, 0, 2293786, 1, 0, 2293787, 0, 0, 2293788, 0, 0, 2293789, 0, 0, 2293790, 0, 0, 2293791, 0, 0, 2293792, 0, 0, 2293793, 0, 0, 2293794, 0, 0, 2293795, 0, 0, 2293796, 1, 0, 2293797, 0, 0, 2293798, 0, 0, 2293799, 1, 0, 2293800, 0, 0, 2293801, 0, 0, 2293802, 0, 0, 2293803, 0, 0, 2293804, 0, 0, 2293805, 0, 0, 2293809, 1, 0, 2424825, 0, 0, 2424826, 0, 0, 2424827, 0, 0, 2424828, 0, 0, 2424829, 0, 0, 2424830, 0, 0, 2424831, 0, 0, 2359296, 0, 0, 2359297, 0, 0, 2359298, 0, 0, 2359299, 0, 0, 2359300, 0, 0, 2359301, 0, 0, 2359302, 0, 0, 2359303, 0, 0, 2359304, 1, 0, 2359305, 0, 0, 2359306, 0, 0, 2359307, 0, 0, 2359308, 0, 0, 2359309, 0, 0, 2359310, 0, 0, 2359311, 0, 0, 2359312, 0, 0, 2359313, 0, 0, 2359314, 0, 0, 2359315, 0, 0, 2359316, 0, 0, 2359317, 1, 0, 2359318, 1, 0, 2359319, 0, 0, 2359320, 1, 0, 2359321, 0, 0, 2359322, 1, 0, 2359323, 0, 0, 2359324, 0, 0, 2359325, 0, 0, 2359326, 0, 0, 2359327, 0, 0, 2359328, 0, 0, 2359329, 0, 0, 2359330, 0, 0, 2359331, 1, 0, 2359332, 0, 0, 2359333, 1, 0, 2359334, 1, 0, 2359335, 0, 0, 2359336, 0, 0, 2359337, 0, 0, 2359338, 0, 0, 2359339, 0, 0, 2359340, 0, 0, 2359343, 1, 0, 2359344, 1, 0, 2490363, 0, 0, 2490364, 0, 0, 2490365, 0, 0, 2490366, 0, 0, 2490367, 0, 0, 2424832, 0, 0, 2424833, 0, 0, 2424834, 0, 0, 2424835, 0, 0, 2424836, 0, 0, 2424837, 0, 0, 2424838, 0, 0, 2424839, 0, 0, 2424840, 0, 0, 2424841, 1, 0, 2424842, 0, 0, 2424843, 0, 0, 2424844, 0, 0, 2424845, 0, 0, 2424846, 0, 0, 2424847, 0, 0, 2424848, 0, 0, 2424849, 0, 0, 2424850, 0, 0, 2424851, 0, 0, 2424852, 0, 0, 2424853, 0, 0, 2424854, 0, 0, 2424855, 1, 0, 2424856, 1, 0, 2424857, 1, 0, 2424858, 0, 0, 2424859, 0, 0, 2424860, 0, 0, 2424861, 0, 0, 2424862, 0, 0, 2424863, 0, 0, 2424864, 0, 0, 2424865, 0, 0, 2424866, 0, 0, 2424867, 1, 0, 2424868, 1, 0, 2424869, 0, 0, 2424870, 0, 0, 2424871, 0, 0, 2424872, 0, 0, 2424873, 0, 0, 2424874, 0, 0, 2424878, 1, 0, 2555901, 0, 0, 2555902, 0, 0, 2555903, 0, 0, 2490368, 0, 0, 2490369, 0, 0, 2490370, 0, 0, 2490371, 0, 0, 2490372, 0, 0, 2490373, 0, 0, 2490374, 0, 0, 2490375, 0, 0, 2490376, 0, 0, 2490377, 1, 0, 2490378, 0, 0, 2490379, 0, 0, 2490380, 0, 0, 2490381, 0, 0, 2490382, 0, 0, 2490383, 0, 0, 2490384, 0, 0, 2490385, 0, 0, 2490386, 0, 0, 2490387, 0, 0, 2490388, 0, 0, 2490389, 0, 0, 2490390, 0, 0, 2490391, 0, 0, 2490392, 0, 0, 2490393, 1, 0, 2490394, 1, 0, 2490395, 1, 0, 2490396, 0, 0, 2490397, 0, 0, 2490398, 0, 0, 2490399, 0, 0, 2490400, 1, 0, 2490401, 1, 0, 2490402, 1, 0, 2490403, 0, 0, 2490404, 0, 0, 2490405, 0, 0, 2490406, 0, 0, 2490407, 0, 0, 2490408, 0, 0, 2490409, 0, 0, 2490413, 1, 0, 2621439, 0, 0, 2555904, 0, 0, 2555905, 0, 0, 2555906, 0, 0, 2555907, 0, 0, 2555908, 0, 0, 2555909, 0, 0, 2555910, 0, 0, 2555911, 0, 0, 2555912, 0, 0, 2555913, 0, 0, 2555914, 1, 0, 2555915, 0, 0, 2555916, 0, 0, 2555917, 0, 0, 2555918, 0, 0, 2555919, 0, 0, 2555920, 0, 0, 2555921, 0, 0, 2555922, 0, 0, 2555923, 0, 0, 2555924, 0, 0, 2555925, 0, 0, 2555926, 0, 0, 2555927, 0, 0, 2555928, 0, 0, 2555929, 1, 0, 2555930, 1, 0, 2555931, 1, 0, 2555932, 1, 0, 2555933, 1, 0, 2555934, 1, 0, 2555935, 1, 0, 2555936, 1, 0, 2555937, 1, 0, 2555938, 0, 0, 2555939, 0, 0, 2555940, 0, 0, 2555941, 0, 0, 2555942, 0, 0, 2555943, 0, 0, 2555947, 1, 0, 2555948, 1, 0, 2621441, 0, 0, 2621442, 0, 0, 2621443, 0, 0, 2621444, 0, 0, 2621445, 0, 0, 2621446, 0, 0, 2621447, 0, 0, 2621448, 0, 0, 2621449, 0, 0, 2621450, 0, 0, 2621451, 1, 0, 2621452, 0, 0, 2621453, 0, 0, 2621454, 0, 0, 2621455, 0, 0, 2621456, 0, 0, 2621457, 0, 0, 2621458, 0, 0, 2621459, 0, 0, 2621460, 1, 0, 2621461, 0, 0, 2621462, 0, 0, 2621463, 0, 0, 2621464, 0, 0, 2621465, 1, 0, 2621466, 0, 0, 2621467, 0, 0, 2621468, 0, 0, 2621469, 0, 0, 2621470, 1, 0, 2621471, 1, 0, 2621472, 0, 0, 2621473, 0, 0, 2621474, 0, 0, 2621475, 0, 0, 2621476, 0, 0, 2621477, 0, 0, 2621482, 1, 0, 2686979, 0, 0, 2686980, 0, 0, 2686981, 0, 0, 2686982, 0, 0, 2686983, 0, 0, 2686984, 0, 0, 2686985, 0, 0, 2686986, 0, 0, 2686987, 0, 0, 2686988, 1, 0, 2686989, 0, 0, 2686990, 0, 0, 2686991, 0, 0, 2686992, 0, 0, 2686993, 0, 0, 2686994, 0, 0, 2686995, 0, 0, 2686996, 1, 0, 2686997, 0, 0, 2686998, 0, 0, 2686999, 0, 0, 2687000, 0, 0, 2687001, 1, 0, 2687002, 0, 0, 2687003, 0, 0, 2687004, 0, 0, 2687005, 0, 0, 2687006, 0, 0, 2687007, 0, 0, 2687008, 0, 0, 2687009, 0, 0, 2687010, 0, 0, 2687011, 0, 0, 2687012, 0, 0, 2687017, 1, 0, 2752516, 0, 0, 2752517, 0, 0, 2752518, 0, 0, 2752519, 0, 0, 2752520, 0, 0, 2752521, 0, 0, 2752522, 0, 0, 2752523, 0, 0, 2752524, 0, 0, 2752525, 1, 0, 2752526, 0, 0, 2752527, 0, 0, 2752528, 0, 0, 2752529, 0, 0, 2752530, 0, 0, 2752531, 0, 0, 2752532, 1, 0, 2752533, 0, 0, 2752534, 0, 0, 2752535, 0, 0, 2752536, 0, 0, 2752537, 0, 0, 2752538, 1, 0, 2752539, 0, 0, 2752540, 0, 0, 2752541, 0, 0, 2752542, 0, 0, 2752543, 0, 0, 2752544, 0, 0, 2752545, 0, 0, 2752546, 0, 0, 2752551, 1, 0, 2752552, 1, 0, 2818054, 0, 0, 2818055, 0, 0, 2818056, 0, 0, 2818057, 0, 0, 2818058, 0, 0, 2818059, 0, 0, 2818060, 0, 0, 2818061, 0, 0, 2818062, 1, 0, 2818063, 0, 0, 2818064, 0, 0, 2818065, 0, 0, 2818066, 0, 0, 2818067, 0, 0, 2818068, 1, 0, 2818069, 0, 0, 2818070, 0, 0, 2818071, 0, 0, 2818072, 0, 0, 2818073, 0, 0, 2818074, 1, 0, 2818075, 0, 0, 2818076, 0, 0, 2818077, 0, 0, 2818078, 0, 0, 2818079, 0, 0, 2818085, 1, 0, 2818086, 1, 0, 2883593, 0, 0, 2883594, 0, 0, 2883595, 0, 0, 2883596, 0, 0, 2883597, 0, 0, 2883598, 0, 0, 2883599, 1, 0, 2883600, 0, 0, 2883601, 0, 0, 2883602, 0, 0, 2883603, 0, 0, 2883604, 1, 0, 2883605, 0, 0, 2883606, 0, 0, 2883607, 0, 0, 2883608, 0, 0, 2883609, 0, 0, 2883610, 1, 0, 2883611, 0, 0, 2883618, 1, 0, 2883619, 1, 0, 2883620, 1, 0, 2949135, 1, 0, 2949140, 1, 0, 2949146, 1, 0, 2949147, 1, 0, 2949150, 1, 0, 2949151, 1, 0, 2949152, 1, 0, 2949153, 1, 0, 3014672, 1, 0, 3014673, 1, 0, 3014676, 1, 0, 3014684, 1, 0, 3014685, 1, 0, 3080210, 1, 0, 3080211, 1, 0 ) diff --git a/game/modules/planets/new_rtileset.tres b/game/modules/planets/new_rtileset.tres new file mode 100644 index 0000000..8a96e91 --- /dev/null +++ b/game/modules/planets/new_rtileset.tres @@ -0,0 +1,78 @@ +[gd_resource type="RTileSet" load_steps=9 format=2] + +[ext_resource path="res://modules/planets/tiles/dirt.png" type="Texture" id=1] +[ext_resource path="res://modules/planets/tiles/grass.png" type="Texture" id=2] +[ext_resource path="res://modules/planets/sheared/dirt_shear.png" type="Texture" id=3] + +[sub_resource type="NavigationPolygon" id=5] +vertices = PoolVector2Array( 32.9336, 0, 64, 16.783, 33.4719, 32, 0, 16.6484 ) +polygons = [ PoolIntArray( 0, 1, 2, 3 ) ] + +[sub_resource type="NavigationPolygon" id=4] +vertices = PoolVector2Array( 33.0681, 0, 64, 16.783, 33.3373, 32, 0, 16.9176 ) +polygons = [ PoolIntArray( 0, 1, 2, 3 ) ] + +[sub_resource type="OccluderPolygon2D" id=3] +polygon = PoolVector2Array( 0, 0, 32, 16.9714, 32, 96, 0, 79.6356 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 0, 0, 32, 16.6484, 32, 96, 0, 79.151 ) + +[sub_resource type="FastnoiseNoiseParams" id=1] +frequency = 0.02 +cellular_jitter = 0.6 + +[resource] +noise = SubResource( 1 ) +0/name = "dirt.png 0" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 64, 32 ) +0/tile_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/navigation = SubResource( 5 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape_one_way = false +0/shape_one_way_margin = 0.0 +0/shapes = [ ] +0/z_index = 0 +1/name = "grass.png 1" +1/texture = ExtResource( 2 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 0, 0, 64, 32 ) +1/tile_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/navigation = SubResource( 4 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape_one_way = false +1/shape_one_way_margin = 0.0 +1/shapes = [ ] +1/z_index = 0 +2/name = "dirt_shear.png 2" +2/texture = ExtResource( 3 ) +2/tex_offset = Vector2( 0, 63 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 0, 0, 32, 96 ) +2/tile_mode = 0 +2/occluder_offset = Vector2( 0, 63 ) +2/occluder = SubResource( 3 ) +2/navigation_offset = Vector2( 0, 63 ) +2/shape_offset = Vector2( 0, 63 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 63 ) +2/shape = SubResource( 2 ) +2/shape_one_way = false +2/shape_one_way_margin = 1.0 +2/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 63 ) +} ] +2/z_index = 1 diff --git a/game/modules/planets/sheared/dirt_shear.png b/game/modules/planets/sheared/dirt_shear.png new file mode 100644 index 0000000..2768641 Binary files /dev/null and b/game/modules/planets/sheared/dirt_shear.png differ diff --git a/game/modules/planets/sheared/dirt_shear.png.import b/game/modules/planets/sheared/dirt_shear.png.import new file mode 100644 index 0000000..03fab92 --- /dev/null +++ b/game/modules/planets/sheared/dirt_shear.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/dirt_shear.png-fd9fb49597b5112c1269175ad6d266c8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/planets/sheared/dirt_shear.png" +dest_files=[ "res://.import/dirt_shear.png-fd9fb49597b5112c1269175ad6d266c8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/planets/sheared/new_resource.tres b/game/modules/planets/sheared/new_resource.tres new file mode 100644 index 0000000..62842dd --- /dev/null +++ b/game/modules/planets/sheared/new_resource.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=3 format=2] + +[ext_resource path="res://addons/tile_generator/shear_tile.gd" type="Script" id=1] +[ext_resource path="res://modules/planets/textures/stone_1_albedo.png" type="Texture" id=2] + +[resource] +script = ExtResource( 1 ) +input = ExtResource( 2 ) +output_image_name = "dirt_shear" +shear_amount = 0.19 +image_count = 1 +image_size_x = 32 +image_size_y = 96 +alpha_crop = true +generate = false diff --git a/game/modules/planets/textures/dirt.tres b/game/modules/planets/textures/dirt.tres new file mode 100644 index 0000000..bad9d49 --- /dev/null +++ b/game/modules/planets/textures/dirt.tres @@ -0,0 +1,471 @@ +[gd_resource type="Resource" load_steps=61 format=2] + +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_material.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_node_universal_property.gd" type="Script" id=2] +[ext_resource path="res://addons/mat_maker_gd/nodes/noise/noise.gd" type="Script" id=3] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/colorize.gd" type="Script" id=4] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/emboss.gd" type="Script" id=5] +[ext_resource path="res://addons/mat_maker_gd/nodes/noise/fbm_noise.gd" type="Script" id=6] +[ext_resource path="res://addons/mat_maker_gd/nodes/other/output_image.gd" type="Script" id=7] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/blend.gd" type="Script" id=8] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/make_tileable.gd" type="Script" id=9] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/fill_channel.gd" type="Script" id=10] + +[sub_resource type="Resource" id=1] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=2] +script = ExtResource( 3 ) +graph_position = Vector2( -480, -80 ) +image = SubResource( 1 ) +grid_size = 512 +density = 0.0 + +[sub_resource type="Resource" id=3] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=39] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 1 ) + +[sub_resource type="Resource" id=4] +script = ExtResource( 4 ) +graph_position = Vector2( -260, -80 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0, 0, 0, 0, 0.677966, 0.188235, 0.141176, 0.101961, 1, 1, 0.282353, 0.235294, 0.0901961, 1 ) +image = SubResource( 3 ) +input = SubResource( 39 ) + +[sub_resource type="Resource" id=5] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=6] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 3 ) + +[sub_resource type="Resource" id=7] +script = ExtResource( 5 ) +graph_position = Vector2( -40, -80 ) +image = SubResource( 5 ) +input = SubResource( 6 ) +angle = 47.9 +amount = 7.3 +width = 1.0 + +[sub_resource type="Resource" id=8] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=40] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 5 ) + +[sub_resource type="Resource" id=9] +script = ExtResource( 4 ) +graph_position = Vector2( 180, -80 ) +interpolation_type = 1 +points = PoolRealArray( 0.584746, 0, 0, 0, 0, 0.79661, 0.286275, 0.192157, 0.054902, 1, 1, 0.396078, 0.439216, 0.443137, 1 ) +image = SubResource( 8 ) +input = SubResource( 40 ) + +[sub_resource type="Resource" id=10] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=11] +script = ExtResource( 6 ) +graph_position = Vector2( -460, 340 ) +image = SubResource( 10 ) +type = 0 +scale = Vector2( 40, 40 ) +folds = 0 +iterations = 4 +persistence = 1.0 + +[sub_resource type="Resource" id=12] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=41] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 10 ) + +[sub_resource type="Resource" id=13] +script = ExtResource( 4 ) +graph_position = Vector2( -260, 360 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0.447059, 0.345098, 0.215686, 1, 0.245763, 0.529412, 0.423529, 0.301961, 1, 0.38983, 0.219608, 0.2, 0.14902, 1, 0.584746, 0.298039, 0.25098, 0.164706, 1, 0.745763, 0.447059, 0.333333, 0.223529, 1, 1, 0.662745, 0.478431, 0.207843, 1 ) +image = SubResource( 12 ) +input = SubResource( 41 ) + +[sub_resource type="Resource" id=14] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=15] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 8 ) + +[sub_resource type="Resource" id=16] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 12 ) + +[sub_resource type="Resource" id=17] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 0.76 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=18] +script = ExtResource( 8 ) +graph_position = Vector2( -20, 360 ) +image = SubResource( 14 ) +input1 = SubResource( 15 ) +input2 = SubResource( 16 ) +blend_type = 6 +opacity = SubResource( 17 ) + +[sub_resource type="Resource" id=19] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=20] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 14 ) + +[sub_resource type="Resource" id=23] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=24] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 23 ) + +[sub_resource type="Resource" id=25] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 0.6 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=26] +script = ExtResource( 8 ) +graph_position = Vector2( 240, 520 ) +image = SubResource( 19 ) +input1 = SubResource( 20 ) +input2 = SubResource( 24 ) +blend_type = 0 +opacity = SubResource( 25 ) + +[sub_resource type="Resource" id=27] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=28] +script = ExtResource( 6 ) +graph_position = Vector2( 0, 1280 ) +image = SubResource( 27 ) +type = 0 +scale = Vector2( 15, 25 ) +folds = 0 +iterations = 3 +persistence = 0.5 + +[sub_resource type="Resource" id=29] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=30] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) + +[sub_resource type="Resource" id=31] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 27 ) + +[sub_resource type="Resource" id=32] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 0.5 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=33] +script = ExtResource( 8 ) +graph_position = Vector2( 240, 1340 ) +image = SubResource( 29 ) +input1 = SubResource( 30 ) +input2 = SubResource( 31 ) +blend_type = 0 +opacity = SubResource( 32 ) + +[sub_resource type="Resource" id=21] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=34] +script = ExtResource( 6 ) +graph_position = Vector2( -460, 900 ) +image = SubResource( 21 ) +type = 1 +scale = Vector2( 100, 100 ) +folds = 0 +iterations = 10 +persistence = 0.2 + +[sub_resource type="Resource" id=22] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=42] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 21 ) + +[sub_resource type="Resource" id=35] +script = ExtResource( 4 ) +graph_position = Vector2( -240, 940 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0, 0, 0, 0, 0.822034, 0, 0, 0, 0, 1, 1, 1, 1, 1 ) +image = SubResource( 22 ) +input = SubResource( 42 ) + +[sub_resource type="Resource" id=43] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 22 ) + +[sub_resource type="Resource" id=36] +script = ExtResource( 4 ) +graph_position = Vector2( 0, 940 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0, 0, 0, 0, 0.59322, 0, 0, 0, 0, 0.635593, 0.0823529, 0.360784, 0.109804, 1, 0.745763, 0.458824, 0.682353, 0.0901961, 1, 0.872881, 0.227451, 0.462745, 0.25098, 1, 1, 0.494118, 0.839216, 0.6, 1 ) +image = SubResource( 23 ) +input = SubResource( 43 ) + +[sub_resource type="Resource" id=45] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=53] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 45 ) + +[sub_resource type="Resource" id=38] +script = ExtResource( 7 ) +graph_position = Vector2( 980, 540 ) +image = SubResource( 53 ) +postfix = "_albedo" + +[sub_resource type="Resource" id=49] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=46] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 49 ) + +[sub_resource type="Resource" id=47] +script = ExtResource( 9 ) +graph_position = Vector2( 760, 540 ) +image = SubResource( 45 ) +input = SubResource( 46 ) +width = 0.1 + +[sub_resource type="Resource" id=50] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 19 ) + +[sub_resource type="Resource" id=51] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=52] +script = ExtResource( 10 ) +graph_position = Vector2( 520, 540 ) +image = SubResource( 49 ) +input = SubResource( 50 ) +value = SubResource( 51 ) +channel = 3 + +[resource] +script = ExtResource( 1 ) +image_size = Vector2( 64, 64 ) +nodes = [ SubResource( 2 ), SubResource( 4 ), SubResource( 7 ), SubResource( 9 ), SubResource( 11 ), SubResource( 13 ), SubResource( 18 ), SubResource( 26 ), SubResource( 28 ), SubResource( 33 ), SubResource( 34 ), SubResource( 35 ), SubResource( 36 ), SubResource( 38 ), SubResource( 47 ), SubResource( 52 ) ] diff --git a/game/modules/planets/textures/dirt_albedo.png b/game/modules/planets/textures/dirt_albedo.png new file mode 100644 index 0000000..f5f0e94 Binary files /dev/null and b/game/modules/planets/textures/dirt_albedo.png differ diff --git a/game/modules/planets/textures/dirt_albedo.png.import b/game/modules/planets/textures/dirt_albedo.png.import new file mode 100644 index 0000000..71cd7e6 --- /dev/null +++ b/game/modules/planets/textures/dirt_albedo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/dirt_albedo.png-b12f2598fac748786b25d7fed2e8ceea.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/planets/textures/dirt_albedo.png" +dest_files=[ "res://.import/dirt_albedo.png-b12f2598fac748786b25d7fed2e8ceea.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/planets/textures/grass.tres b/game/modules/planets/textures/grass.tres new file mode 100644 index 0000000..bbd0871 --- /dev/null +++ b/game/modules/planets/textures/grass.tres @@ -0,0 +1,288 @@ +[gd_resource type="Resource" load_steps=40 format=2] + +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_material.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/colorize.gd" type="Script" id=2] +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_node_universal_property.gd" type="Script" id=3] +[ext_resource path="res://addons/mat_maker_gd/nodes/noise/voronoi.gd" type="Script" id=4] +[ext_resource path="res://addons/mat_maker_gd/nodes/noise/fbm_noise.gd" type="Script" id=5] +[ext_resource path="res://addons/mat_maker_gd/nodes/noise/noise.gd" type="Script" id=6] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/blend.gd" type="Script" id=7] +[ext_resource path="res://addons/mat_maker_gd/nodes/other/output_image.gd" type="Script" id=8] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/make_tileable.gd" type="Script" id=9] + +[sub_resource type="Resource" id=1] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=2] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=3] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=4] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=5] +script = ExtResource( 4 ) +graph_position = Vector2( -500, -20 ) +out_nodes = SubResource( 3 ) +out_borders = SubResource( 1 ) +out_random_color = SubResource( 4 ) +out_fill = SubResource( 2 ) +scale = Vector2( 4, 4 ) +stretch = Vector2( 1, 1 ) +intensity = 1.0 +randomness = 0.79 + +[sub_resource type="Resource" id=6] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=7] +script = ExtResource( 6 ) +graph_position = Vector2( -260, 300 ) +image = SubResource( 6 ) +grid_size = 256 +density = 0.0 + +[sub_resource type="Resource" id=8] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=14] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=9] +script = ExtResource( 3 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 14 ) + +[sub_resource type="Resource" id=10] +script = ExtResource( 2 ) +graph_position = Vector2( 220, 40 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0, 0, 0, 0, 0.754237, 0.447059, 0.4, 0.2, 1, 1, 0.811765, 0.886275, 0.0980392, 1 ) +image = SubResource( 8 ) +input = SubResource( 9 ) + +[sub_resource type="Resource" id=11] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=19] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=12] +script = ExtResource( 3 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 19 ) + +[sub_resource type="Resource" id=13] +script = ExtResource( 2 ) +graph_position = Vector2( 220, 640 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0.227451, 0.286275, 0.215686, 1, 0.313559, 0.0901961, 0.113725, 0.0941176, 1, 0.669492, 0.14902, 0.223529, 0.14902, 1, 1, 0.376471, 0.521569, 0.329412, 1 ) +image = SubResource( 11 ) +input = SubResource( 12 ) + +[sub_resource type="Resource" id=15] +script = ExtResource( 3 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 3 ) + +[sub_resource type="Resource" id=16] +script = ExtResource( 3 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 6 ) + +[sub_resource type="Resource" id=17] +script = ExtResource( 3 ) +default_type = 1 +default_int = 0 +default_float = 0.22 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=18] +script = ExtResource( 7 ) +graph_position = Vector2( -20, 20 ) +image = SubResource( 14 ) +input1 = SubResource( 15 ) +input2 = SubResource( 16 ) +blend_type = 11 +opacity = SubResource( 17 ) + +[sub_resource type="Resource" id=20] +script = ExtResource( 5 ) +graph_position = Vector2( -20, 640 ) +image = SubResource( 19 ) +type = 0 +scale = Vector2( 30, 30 ) +folds = 0 +iterations = 6 +persistence = 0.8 + +[sub_resource type="Resource" id=21] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=22] +script = ExtResource( 3 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 8 ) + +[sub_resource type="Resource" id=23] +script = ExtResource( 3 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 11 ) + +[sub_resource type="Resource" id=24] +script = ExtResource( 3 ) +default_type = 1 +default_int = 0 +default_float = 0.74 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=25] +script = ExtResource( 7 ) +graph_position = Vector2( 440, 280 ) +image = SubResource( 21 ) +input1 = SubResource( 22 ) +input2 = SubResource( 23 ) +blend_type = 4 +opacity = SubResource( 24 ) + +[sub_resource type="Resource" id=31] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=27] +script = ExtResource( 8 ) +graph_position = Vector2( 900, 340 ) +image = SubResource( 31 ) +postfix = "_albedo" + +[sub_resource type="Resource" id=28] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=29] +script = ExtResource( 3 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 21 ) + +[sub_resource type="Resource" id=30] +script = ExtResource( 9 ) +graph_position = Vector2( 680, 340 ) +image = SubResource( 28 ) +input = SubResource( 29 ) +width = 0.1 + +[resource] +script = ExtResource( 1 ) +image_size = Vector2( 64, 64 ) +nodes = [ SubResource( 5 ), SubResource( 7 ), SubResource( 10 ), SubResource( 13 ), SubResource( 18 ), SubResource( 20 ), SubResource( 25 ), SubResource( 27 ), SubResource( 30 ) ] diff --git a/game/modules/planets/textures/grass_albedo.png b/game/modules/planets/textures/grass_albedo.png new file mode 100644 index 0000000..f5fa7c0 Binary files /dev/null and b/game/modules/planets/textures/grass_albedo.png differ diff --git a/game/modules/planets/textures/grass_albedo.png.import b/game/modules/planets/textures/grass_albedo.png.import new file mode 100644 index 0000000..5d3d67a --- /dev/null +++ b/game/modules/planets/textures/grass_albedo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/grass_albedo.png-0370b00eba0f4d6a0653d2cbbd6b27b8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/planets/textures/grass_albedo.png" +dest_files=[ "res://.import/grass_albedo.png-0370b00eba0f4d6a0653d2cbbd6b27b8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/planets/textures/grass_mossy.tres b/game/modules/planets/textures/grass_mossy.tres new file mode 100644 index 0000000..ff95b56 --- /dev/null +++ b/game/modules/planets/textures/grass_mossy.tres @@ -0,0 +1,288 @@ +[gd_resource type="Resource" load_steps=40 format=2] + +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_material.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/colorize.gd" type="Script" id=2] +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_node_universal_property.gd" type="Script" id=3] +[ext_resource path="res://addons/mat_maker_gd/nodes/noise/voronoi.gd" type="Script" id=4] +[ext_resource path="res://addons/mat_maker_gd/nodes/noise/fbm_noise.gd" type="Script" id=5] +[ext_resource path="res://addons/mat_maker_gd/nodes/noise/noise.gd" type="Script" id=6] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/blend.gd" type="Script" id=7] +[ext_resource path="res://addons/mat_maker_gd/nodes/other/output_image.gd" type="Script" id=8] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/make_tileable.gd" type="Script" id=9] + +[sub_resource type="Resource" id=1] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=2] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=3] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=4] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=5] +script = ExtResource( 4 ) +graph_position = Vector2( -500, -20 ) +out_nodes = SubResource( 3 ) +out_borders = SubResource( 1 ) +out_random_color = SubResource( 4 ) +out_fill = SubResource( 2 ) +scale = Vector2( 4, 4 ) +stretch = Vector2( 1, 1 ) +intensity = 1.0 +randomness = 0.79 + +[sub_resource type="Resource" id=6] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=7] +script = ExtResource( 6 ) +graph_position = Vector2( -260, 300 ) +image = SubResource( 6 ) +grid_size = 256 +density = 0.0 + +[sub_resource type="Resource" id=8] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=14] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=9] +script = ExtResource( 3 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 14 ) + +[sub_resource type="Resource" id=10] +script = ExtResource( 2 ) +graph_position = Vector2( 220, 40 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0, 0, 0, 0, 0.754237, 0.447059, 0.4, 0.2, 1, 1, 0.811765, 0.886275, 0.0980392, 1 ) +image = SubResource( 8 ) +input = SubResource( 9 ) + +[sub_resource type="Resource" id=11] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=28] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=12] +script = ExtResource( 3 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 28 ) + +[sub_resource type="Resource" id=13] +script = ExtResource( 2 ) +graph_position = Vector2( 220, 640 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0.227451, 0.286275, 0.215686, 1, 0.313559, 0.0901961, 0.113725, 0.0941176, 1, 0.669492, 0.14902, 0.223529, 0.14902, 1, 1, 0.376471, 0.521569, 0.329412, 1 ) +image = SubResource( 11 ) +input = SubResource( 12 ) + +[sub_resource type="Resource" id=15] +script = ExtResource( 3 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 3 ) + +[sub_resource type="Resource" id=16] +script = ExtResource( 3 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 6 ) + +[sub_resource type="Resource" id=17] +script = ExtResource( 3 ) +default_type = 1 +default_int = 0 +default_float = 0.22 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=18] +script = ExtResource( 7 ) +graph_position = Vector2( -20, 20 ) +image = SubResource( 14 ) +input1 = SubResource( 15 ) +input2 = SubResource( 16 ) +blend_type = 11 +opacity = SubResource( 17 ) + +[sub_resource type="Resource" id=19] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=20] +script = ExtResource( 5 ) +graph_position = Vector2( -220, 640 ) +image = SubResource( 19 ) +type = 0 +scale = Vector2( 30, 30 ) +folds = 0 +iterations = 6 +persistence = 0.8 + +[sub_resource type="Resource" id=21] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=22] +script = ExtResource( 3 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 8 ) + +[sub_resource type="Resource" id=23] +script = ExtResource( 3 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 11 ) + +[sub_resource type="Resource" id=24] +script = ExtResource( 3 ) +default_type = 1 +default_int = 0 +default_float = 0.74 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=25] +script = ExtResource( 7 ) +graph_position = Vector2( 440, 280 ) +image = SubResource( 21 ) +input1 = SubResource( 22 ) +input2 = SubResource( 23 ) +blend_type = 4 +opacity = SubResource( 24 ) + +[sub_resource type="Resource" id=31] +script = ExtResource( 3 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=27] +script = ExtResource( 8 ) +graph_position = Vector2( 660, 340 ) +image = SubResource( 31 ) +postfix = "_albedo" + +[sub_resource type="Resource" id=29] +script = ExtResource( 3 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 19 ) + +[sub_resource type="Resource" id=30] +script = ExtResource( 9 ) +graph_position = Vector2( -20, 640 ) +image = SubResource( 28 ) +input = SubResource( 29 ) +width = 0.01 + +[resource] +script = ExtResource( 1 ) +image_size = Vector2( 256, 256 ) +nodes = [ SubResource( 5 ), SubResource( 7 ), SubResource( 10 ), SubResource( 13 ), SubResource( 18 ), SubResource( 20 ), SubResource( 25 ), SubResource( 27 ), SubResource( 30 ) ] diff --git a/game/modules/planets/textures/grass_mossy_albedo.png b/game/modules/planets/textures/grass_mossy_albedo.png new file mode 100644 index 0000000..9949d88 Binary files /dev/null and b/game/modules/planets/textures/grass_mossy_albedo.png differ diff --git a/game/modules/planets/textures/grass_mossy_albedo.png.import b/game/modules/planets/textures/grass_mossy_albedo.png.import new file mode 100644 index 0000000..39b20c5 --- /dev/null +++ b/game/modules/planets/textures/grass_mossy_albedo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/grass_mossy_albedo.png-89be3f7f64f99f8dc346761a8d10564a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/planets/textures/grass_mossy_albedo.png" +dest_files=[ "res://.import/grass_mossy_albedo.png-89be3f7f64f99f8dc346761a8d10564a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/planets/textures/stone_1.tres b/game/modules/planets/textures/stone_1.tres new file mode 100644 index 0000000..90b38a9 --- /dev/null +++ b/game/modules/planets/textures/stone_1.tres @@ -0,0 +1,198 @@ +[gd_resource type="Resource" load_steps=28 format=2] + +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_material.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_node_universal_property.gd" type="Script" id=2] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/blend.gd" type="Script" id=3] +[ext_resource path="res://addons/mat_maker_gd/nodes/other/output_image.gd" type="Script" id=4] +[ext_resource path="res://addons/mat_maker_gd/nodes/noise/fbm_noise.gd" type="Script" id=5] +[ext_resource path="res://addons/mat_maker_gd/nodes/noise/voronoi.gd" type="Script" id=6] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/colorize.gd" type="Script" id=7] + +[sub_resource type="Resource" id=1] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=2] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=3] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=4] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=5] +script = ExtResource( 6 ) +graph_position = Vector2( 120, 0 ) +out_nodes = SubResource( 3 ) +out_borders = SubResource( 1 ) +out_random_color = SubResource( 4 ) +out_fill = SubResource( 2 ) +scale = Vector2( 14, 14 ) +stretch = Vector2( 1, 1 ) +intensity = 1.0 +randomness = 0.95 + +[sub_resource type="Resource" id=6] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=7] +script = ExtResource( 5 ) +graph_position = Vector2( 360, 320 ) +image = SubResource( 6 ) +type = 0 +scale = Vector2( 20, 20 ) +folds = 0 +iterations = 9 +persistence = 0.9 + +[sub_resource type="Resource" id=8] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=9] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 1 ) + +[sub_resource type="Resource" id=10] +script = ExtResource( 7 ) +graph_position = Vector2( 360, 20 ) +interpolation_type = 1 +points = PoolRealArray( 0.00635593, 0, 0, 0, 1, 0.53178, 1, 1, 1, 1, 1, 1, 1, 1, 1 ) +image = SubResource( 8 ) +input = SubResource( 9 ) + +[sub_resource type="Resource" id=11] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=12] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 8 ) + +[sub_resource type="Resource" id=13] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 6 ) + +[sub_resource type="Resource" id=14] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 0.63 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=15] +script = ExtResource( 3 ) +graph_position = Vector2( 620, 100 ) +image = SubResource( 11 ) +input1 = SubResource( 12 ) +input2 = SubResource( 13 ) +blend_type = 2 +opacity = SubResource( 14 ) + +[sub_resource type="Resource" id=16] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=17] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 11 ) + +[sub_resource type="Resource" id=18] +script = ExtResource( 7 ) +graph_position = Vector2( 860, 140 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0, 0, 0, 1, 0.0911017, 0, 0, 0, 1, 0.472458, 0.129412, 0.133333, 0.137255, 1, 0.735169, 0.121569, 0.12549, 0.12549, 1, 1, 0.156863, 0.152941, 0.152941, 1 ) +image = SubResource( 16 ) +input = SubResource( 17 ) + +[sub_resource type="Resource" id=19] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 16 ) + +[sub_resource type="Resource" id=20] +script = ExtResource( 4 ) +graph_position = Vector2( 1120, 100 ) +image = SubResource( 19 ) +postfix = "_albedo" + +[resource] +script = ExtResource( 1 ) +image_size = Vector2( 256, 256 ) +nodes = [ SubResource( 5 ), SubResource( 7 ), SubResource( 10 ), SubResource( 15 ), SubResource( 18 ), SubResource( 20 ) ] diff --git a/game/modules/planets/textures/stone_1_albedo.png b/game/modules/planets/textures/stone_1_albedo.png new file mode 100644 index 0000000..3bc5cb7 Binary files /dev/null and b/game/modules/planets/textures/stone_1_albedo.png differ diff --git a/game/modules/planets/textures/stone_1_albedo.png.import b/game/modules/planets/textures/stone_1_albedo.png.import new file mode 100644 index 0000000..4db30b7 --- /dev/null +++ b/game/modules/planets/textures/stone_1_albedo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/stone_1_albedo.png-8d9d1359c7386fbe18c4eb3d578278b2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/planets/textures/stone_1_albedo.png" +dest_files=[ "res://.import/stone_1_albedo.png-8d9d1359c7386fbe18c4eb3d578278b2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/planets/textures/stone_dungeon_1.tres b/game/modules/planets/textures/stone_dungeon_1.tres new file mode 100644 index 0000000..1cfd719 --- /dev/null +++ b/game/modules/planets/textures/stone_dungeon_1.tres @@ -0,0 +1,264 @@ +[gd_resource type="Resource" load_steps=35 format=2] + +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_material.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_node_universal_property.gd" type="Script" id=2] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/blend.gd" type="Script" id=3] +[ext_resource path="res://addons/mat_maker_gd/nodes/other/output_image.gd" type="Script" id=4] +[ext_resource path="res://addons/mat_maker_gd/nodes/noise/fbm_noise.gd" type="Script" id=5] +[ext_resource path="res://addons/mat_maker_gd/nodes/noise/voronoi.gd" type="Script" id=6] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/colorize.gd" type="Script" id=7] + +[sub_resource type="Resource" id=1] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=2] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=3] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=4] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=5] +script = ExtResource( 6 ) +graph_position = Vector2( 0, 0 ) +out_nodes = SubResource( 3 ) +out_borders = SubResource( 1 ) +out_random_color = SubResource( 4 ) +out_fill = SubResource( 2 ) +scale = Vector2( 12, 12 ) +stretch = Vector2( 1, 1 ) +intensity = 1.0 +randomness = 0.95 + +[sub_resource type="Resource" id=6] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=7] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 1 ) + +[sub_resource type="Resource" id=8] +script = ExtResource( 7 ) +graph_position = Vector2( 280, 20 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0, 0, 0, 1, 0.0423729, 1, 1, 1, 1, 1, 1, 1, 1, 1 ) +image = SubResource( 6 ) +input = SubResource( 7 ) + +[sub_resource type="Resource" id=9] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=10] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 6 ) + +[sub_resource type="Resource" id=14] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=11] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 14 ) + +[sub_resource type="Resource" id=12] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 0.5 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=13] +script = ExtResource( 3 ) +graph_position = Vector2( 540, 120 ) +image = SubResource( 9 ) +input1 = SubResource( 10 ) +input2 = SubResource( 11 ) +blend_type = 6 +opacity = SubResource( 12 ) + +[sub_resource type="Resource" id=15] +script = ExtResource( 5 ) +graph_position = Vector2( 280, 340 ) +image = SubResource( 14 ) +type = 0 +scale = Vector2( 10, 9 ) +folds = 0 +iterations = 3 +persistence = 0.5 + +[sub_resource type="Resource" id=16] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=17] +script = ExtResource( 5 ) +graph_position = Vector2( 560, 520 ) +image = SubResource( 16 ) +type = 0 +scale = Vector2( 32, 32 ) +folds = 0 +iterations = 9 +persistence = 0.95 + +[sub_resource type="Resource" id=18] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=23] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=19] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 23 ) + +[sub_resource type="Resource" id=20] +script = ExtResource( 7 ) +graph_position = Vector2( 1060, 340 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0.0823529, 0.0823529, 0.0823529, 1, 0.237288, 0.0823529, 0.0823529, 0.0823529, 1, 0.5, 0.196078, 0.266667, 0.290196, 1, 0.762712, 0.32549, 0.388235, 0.392157, 1, 1, 0.168627, 0.243137, 0.243137, 1 ) +image = SubResource( 18 ) +input = SubResource( 19 ) + +[sub_resource type="Resource" id=21] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 18 ) + +[sub_resource type="Resource" id=22] +script = ExtResource( 4 ) +graph_position = Vector2( 1300, 340 ) +image = SubResource( 21 ) +postfix = "_albedo" + +[sub_resource type="Resource" id=24] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 9 ) + +[sub_resource type="Resource" id=25] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 16 ) + +[sub_resource type="Resource" id=26] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 0.98 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=27] +script = ExtResource( 3 ) +graph_position = Vector2( 820, 340 ) +image = SubResource( 23 ) +input1 = SubResource( 24 ) +input2 = SubResource( 25 ) +blend_type = 2 +opacity = SubResource( 26 ) + +[resource] +script = ExtResource( 1 ) +image_size = Vector2( 128, 128 ) +nodes = [ SubResource( 5 ), SubResource( 8 ), SubResource( 13 ), SubResource( 15 ), SubResource( 17 ), SubResource( 20 ), SubResource( 22 ), SubResource( 27 ) ] diff --git a/game/modules/planets/textures/stone_dungeon_1_albedo.png b/game/modules/planets/textures/stone_dungeon_1_albedo.png new file mode 100644 index 0000000..95fe79f Binary files /dev/null and b/game/modules/planets/textures/stone_dungeon_1_albedo.png differ diff --git a/game/modules/planets/textures/stone_dungeon_1_albedo.png.import b/game/modules/planets/textures/stone_dungeon_1_albedo.png.import new file mode 100644 index 0000000..1d204e8 --- /dev/null +++ b/game/modules/planets/textures/stone_dungeon_1_albedo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/stone_dungeon_1_albedo.png-a589b6e6212398a160eb6e1a4ab49807.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/planets/textures/stone_dungeon_1_albedo.png" +dest_files=[ "res://.import/stone_dungeon_1_albedo.png-a589b6e6212398a160eb6e1a4ab49807.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/planets/textures/test.png.import b/game/modules/planets/textures/test.png.import new file mode 100644 index 0000000..c58ee37 --- /dev/null +++ b/game/modules/planets/textures/test.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/test.png-e87bdfc7eb0364f7afee143bf66dc9dd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://data/voxel_textures/test.png" +dest_files=[ "res://.import/test.png-e87bdfc7eb0364f7afee143bf66dc9dd.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/planets/textures/test_brick.tres b/game/modules/planets/textures/test_brick.tres new file mode 100644 index 0000000..3ee0bf0 --- /dev/null +++ b/game/modules/planets/textures/test_brick.tres @@ -0,0 +1,326 @@ +[gd_resource type="Resource" load_steps=42 format=2] + +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_material.gd" type="Script" id=1] +[ext_resource path="res://addons/mat_maker_gd/nodes/mm_node_universal_property.gd" type="Script" id=2] +[ext_resource path="res://addons/mat_maker_gd/nodes/pattern/bricks.gd" type="Script" id=3] +[ext_resource path="res://addons/mat_maker_gd/nodes/noise/fbm_noise.gd" type="Script" id=4] +[ext_resource path="res://addons/mat_maker_gd/nodes/other/output_image.gd" type="Script" id=5] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/blend.gd" type="Script" id=6] +[ext_resource path="res://addons/mat_maker_gd/nodes/pattern/scratches.gd" type="Script" id=7] +[ext_resource path="res://addons/mat_maker_gd/nodes/filter/colorize.gd" type="Script" id=8] + +[sub_resource type="Resource" id=1] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=2] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 0.03 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=3] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=4] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=5] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=6] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=7] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=8] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=9] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=10] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=11] +script = ExtResource( 3 ) +graph_position = Vector2( 0, 0 ) +out_bricks_pattern = SubResource( 4 ) +out_random_color = SubResource( 9 ) +out_position_x = SubResource( 7 ) +out_position_y = SubResource( 8 ) +out_brick_uv = SubResource( 3 ) +out_corner_uv = SubResource( 5 ) +out_direction = SubResource( 6 ) +type = 0 +repeat = 1 +col_row = Vector2( 3, 7 ) +offset = 0.5 +mortar = SubResource( 2 ) +bevel = SubResource( 1 ) +roundness = SubResource( 10 ) +corner = 0.3 + +[sub_resource type="Resource" id=12] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=13] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 4 ) + +[sub_resource type="Resource" id=14] +script = ExtResource( 8 ) +graph_position = Vector2( 240, 200 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0.168627, 0.109804, 0.109804, 1, 1, 0.780392, 0.298039, 0.247059, 1 ) +image = SubResource( 12 ) +input = SubResource( 13 ) + +[sub_resource type="Resource" id=15] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=22] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=16] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 22 ) + +[sub_resource type="Resource" id=17] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 12 ) + +[sub_resource type="Resource" id=18] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 0.52 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=19] +script = ExtResource( 6 ) +graph_position = Vector2( 500, 20 ) +image = SubResource( 15 ) +input1 = SubResource( 16 ) +input2 = SubResource( 17 ) +blend_type = 0 +opacity = SubResource( 18 ) + +[sub_resource type="Resource" id=20] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=21] +script = ExtResource( 7 ) +graph_position = Vector2( 260, -340 ) +image = SubResource( 20 ) +size = Vector2( 0.23, 0.3 ) +layers = 2 +waviness = 0.05 +angle = 171 +randomness = 0.35 + +[sub_resource type="Resource" id=23] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 1.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 20 ) + +[sub_resource type="Resource" id=24] +script = ExtResource( 8 ) +graph_position = Vector2( 500, -300 ) +interpolation_type = 1 +points = PoolRealArray( 0, 0, 0, 0, 0, 0.40678, 0, 0, 0, 1, 1, 0, 0, 0, 1 ) +image = SubResource( 22 ) +input = SubResource( 23 ) + +[sub_resource type="Resource" id=25] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=26] +script = ExtResource( 4 ) +graph_position = Vector2( 760, -320 ) +image = SubResource( 25 ) +type = 0 +scale = Vector2( 20, 20 ) +folds = 0 +iterations = 7 +persistence = 0.9 + +[sub_resource type="Resource" id=27] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=28] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 25 ) + +[sub_resource type="Resource" id=29] +script = ExtResource( 2 ) +default_type = 4 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 1, 1, 1, 1 ) +input_property = SubResource( 15 ) + +[sub_resource type="Resource" id=30] +script = ExtResource( 2 ) +default_type = 1 +default_int = 0 +default_float = 0.61 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=31] +script = ExtResource( 6 ) +graph_position = Vector2( 960, 20 ) +image = SubResource( 27 ) +input1 = SubResource( 28 ) +input2 = SubResource( 29 ) +blend_type = 11 +opacity = SubResource( 30 ) + +[sub_resource type="Resource" id=34] +script = ExtResource( 2 ) +default_type = 5 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 27 ) + +[sub_resource type="Resource" id=33] +script = ExtResource( 5 ) +graph_position = Vector2( 1200, 60 ) +image = SubResource( 34 ) +postfix = "_albedo" + +[resource] +script = ExtResource( 1 ) +image_size = Vector2( 256, 256 ) +nodes = [ SubResource( 11 ), SubResource( 14 ), SubResource( 19 ), SubResource( 21 ), SubResource( 24 ), SubResource( 26 ), SubResource( 31 ), SubResource( 33 ) ] diff --git a/game/modules/planets/textures/test_brick_albedo.png b/game/modules/planets/textures/test_brick_albedo.png new file mode 100644 index 0000000..1242411 Binary files /dev/null and b/game/modules/planets/textures/test_brick_albedo.png differ diff --git a/game/modules/planets/textures/test_brick_albedo.png.import b/game/modules/planets/textures/test_brick_albedo.png.import new file mode 100644 index 0000000..5249cff --- /dev/null +++ b/game/modules/planets/textures/test_brick_albedo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/test_brick_albedo.png-95796f7bec59b800f32e9a35b47ac019.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/planets/textures/test_brick_albedo.png" +dest_files=[ "res://.import/test_brick_albedo.png-95796f7bec59b800f32e9a35b47ac019.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/planets/tiles/dirt.png b/game/modules/planets/tiles/dirt.png new file mode 100644 index 0000000..4424049 Binary files /dev/null and b/game/modules/planets/tiles/dirt.png differ diff --git a/game/modules/planets/tiles/dirt.png.import b/game/modules/planets/tiles/dirt.png.import new file mode 100644 index 0000000..d8c616e --- /dev/null +++ b/game/modules/planets/tiles/dirt.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/dirt.png-de9637bedc5efbe61cae1a851309ca54.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/planets/tiles/dirt.png" +dest_files=[ "res://.import/dirt.png-de9637bedc5efbe61cae1a851309ca54.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/planets/tiles/dirt.tres b/game/modules/planets/tiles/dirt.tres new file mode 100644 index 0000000..7e24a38 --- /dev/null +++ b/game/modules/planets/tiles/dirt.tres @@ -0,0 +1,14 @@ +[gd_resource type="Resource" load_steps=3 format=2] + +[ext_resource path="res://addons/tile_generator/smple_tile.gd" type="Script" id=1] +[ext_resource path="res://modules/planets/textures/dirt_albedo.png" type="Texture" id=2] + +[resource] +script = ExtResource( 1 ) +input = ExtResource( 2 ) +output_image_name = "dirt" +image_count = 1 +image_size_x = 64 +image_size_y = 32 +alpha_crop = true +generate = false diff --git a/game/modules/planets/tiles/grass.png b/game/modules/planets/tiles/grass.png new file mode 100644 index 0000000..d9144d6 Binary files /dev/null and b/game/modules/planets/tiles/grass.png differ diff --git a/game/modules/planets/tiles/grass.png.import b/game/modules/planets/tiles/grass.png.import new file mode 100644 index 0000000..f4b65b8 --- /dev/null +++ b/game/modules/planets/tiles/grass.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/grass.png-e07ce30421471802ecdd4f4979baede3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/planets/tiles/grass.png" +dest_files=[ "res://.import/grass.png-e07ce30421471802ecdd4f4979baede3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/planets/tiles/grass.tres b/game/modules/planets/tiles/grass.tres new file mode 100644 index 0000000..ea09d18 --- /dev/null +++ b/game/modules/planets/tiles/grass.tres @@ -0,0 +1,14 @@ +[gd_resource type="Resource" load_steps=3 format=2] + +[ext_resource path="res://addons/tile_generator/smple_tile.gd" type="Script" id=1] +[ext_resource path="res://modules/planets/textures/grass_albedo.png" type="Texture" id=2] + +[resource] +script = ExtResource( 1 ) +input = ExtResource( 2 ) +output_image_name = "grass" +image_count = 1 +image_size_x = 64 +image_size_y = 32 +alpha_crop = true +generate = false diff --git a/game/modules/species/Human/Body_2d_old.tscn b/game/modules/species/Human/Body_2d_old.tscn new file mode 100644 index 0000000..b993ab7 --- /dev/null +++ b/game/modules/species/Human/Body_2d_old.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://player/Body.gd" type="Script" id=1] +[ext_resource path="res://characters/SheetCharacter.tscn" type="PackedScene" id=2] + +[sub_resource type="CircleShape2D" id=1] +radius = 8.0 + +[node name="Body" type="KinematicBody2D"] +script = ExtResource( 1 ) +model_path = NodePath("") +character_skeleton_path = NodePath("SheetCharacter") + +[node name="SheetCharacter" parent="." instance=ExtResource( 2 )] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) diff --git a/game/modules/species/Human/Female/character_models/Standard.material b/game/modules/species/Human/Female/character_models/Standard.material new file mode 100644 index 0000000..fd3ab1b Binary files /dev/null and b/game/modules/species/Human/Female/character_models/Standard.material differ diff --git a/game/modules/species/Human/Female/character_models/Standard_003.material b/game/modules/species/Human/Female/character_models/Standard_003.material new file mode 100644 index 0000000..5419aca Binary files /dev/null and b/game/modules/species/Human/Female/character_models/Standard_003.material differ diff --git a/game/modules/species/Human/Female/character_models/huf_calf_left.blend b/game/modules/species/Human/Female/character_models/huf_calf_left.blend new file mode 100644 index 0000000..0a25c3e Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_calf_left.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_calf_left.gltf b/game/modules/species/Human/Female/character_models/huf_calf_left.gltf new file mode 100644 index 0000000..e849cf8 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_calf_left.gltf @@ -0,0 +1,108 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.1.46", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "foot (5)" + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard", + "pbrMetallicRoughness" : {} + } + ], + "meshes" : [ + { + "name" : "Geometry_n24904", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 108, + "max" : [ + 4.858734130859375, + 35.44666290283203, + 6.770305633544922 + ], + "min" : [ + -5.804326057434082, + -1.5257532596588135, + -6.960601806640625 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 108, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 108, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 108, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 1296, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 1296, + "byteOffset" : 1296 + }, + { + "buffer" : 0, + "byteLength" : 864, + "byteOffset" : 2592 + }, + { + "buffer" : 0, + "byteLength" : 216, + "byteOffset" : 3456 + } + ], + "buffers" : [ + { + "byteLength" : 3672, + "uri" : "data:application/octet-stream;base64,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" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_calf_left.gltf.import b/game/modules/species/Human/Female/character_models/huf_calf_left.gltf.import new file mode 100644 index 0000000..136b692 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_calf_left.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_calf_left.gltf-8e616bf74161c9cc3335bb03a6585c30.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_calf_left.gltf" +dest_files=[ "res://.import/huf_calf_left.gltf-8e616bf74161c9cc3335bb03a6585c30.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_models/huf_finger.blend b/game/modules/species/Human/Female/character_models/huf_finger.blend new file mode 100644 index 0000000..71e1604 Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_finger.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_finger.gltf b/game/modules/species/Human/Female/character_models/huf_finger.gltf new file mode 100644 index 0000000..7d47270 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_finger.gltf @@ -0,0 +1,114 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.1.46", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "GameObject", + "rotation" : [ + 0.7071068286895752, + 0, + 0, + 0.7071067094802856 + ] + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard", + "pbrMetallicRoughness" : {} + } + ], + "meshes" : [ + { + "name" : "Geometry_n21306", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 48, + "max" : [ + 0.7305172681808472, + 3.327922821044922, + 0.7225608825683594 + ], + "min" : [ + -0.7191543579101562, + -0.40049242973327637, + -0.7271109819412231 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 48, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 48, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 48, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 576, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 576, + "byteOffset" : 576 + }, + { + "buffer" : 0, + "byteLength" : 384, + "byteOffset" : 1152 + }, + { + "buffer" : 0, + "byteLength" : 96, + "byteOffset" : 1536 + } + ], + "buffers" : [ + { + "byteLength" : 1632, + "uri" : "data:application/octet-stream;base64,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" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_finger.gltf.import b/game/modules/species/Human/Female/character_models/huf_finger.gltf.import new file mode 100644 index 0000000..5fe7420 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_finger.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_finger.gltf-fc6a4109f05e60059f0a11b7ba33b0ea.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_finger.gltf" +dest_files=[ "res://.import/huf_finger.gltf-fc6a4109f05e60059f0a11b7ba33b0ea.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_models/huf_fingers.blend b/game/modules/species/Human/Female/character_models/huf_fingers.blend new file mode 100644 index 0000000..599aeeb Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_fingers.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_fingers.gltf b/game/modules/species/Human/Female/character_models/huf_fingers.gltf new file mode 100644 index 0000000..bd5e775 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_fingers.gltf @@ -0,0 +1,108 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.1.46", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "GameObject" + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard", + "pbrMetallicRoughness" : {} + } + ], + "meshes" : [ + { + "name" : "Geometry_n21306", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 48, + "max" : [ + 2.7132694721221924, + 3.8391621112823486, + 0.9127662181854248 + ], + "min" : [ + -2.5460031032562256, + -0.6145360469818115, + -0.758929967880249 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 48, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 48, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 48, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 576, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 576, + "byteOffset" : 576 + }, + { + "buffer" : 0, + "byteLength" : 384, + "byteOffset" : 1152 + }, + { + "buffer" : 0, + "byteLength" : 96, + "byteOffset" : 1536 + } + ], + "buffers" : [ + { + "byteLength" : 1632, + "uri" : "data:application/octet-stream;base64,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" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_fingers.gltf.import b/game/modules/species/Human/Female/character_models/huf_fingers.gltf.import new file mode 100644 index 0000000..530d6eb --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_fingers.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_fingers.gltf-db10298fea679155f38e09be0e9528ba.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_fingers.gltf" +dest_files=[ "res://.import/huf_fingers.gltf-db10298fea679155f38e09be0e9528ba.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_models/huf_foot_left.blend b/game/modules/species/Human/Female/character_models/huf_foot_left.blend new file mode 100644 index 0000000..d63a28a Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_foot_left.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_foot_left.gltf b/game/modules/species/Human/Female/character_models/huf_foot_left.gltf new file mode 100644 index 0000000..dffbfe5 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_foot_left.gltf @@ -0,0 +1,117 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.6.16", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "foot" + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + } + ], + "meshes" : [ + { + "name" : "Geometry_n22640", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 76, + "max" : [ + 4.783885955810547, + 17.775814056396484, + 5.863179683685303 + ], + "min" : [ + -5.216113090515137, + -3.838895797729492, + -5.799539089202881 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 76, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 76, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 84, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 912, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 912, + "byteOffset" : 912 + }, + { + "buffer" : 0, + "byteLength" : 608, + "byteOffset" : 1824 + }, + { + "buffer" : 0, + "byteLength" : 168, + "byteOffset" : 2432 + } + ], + "buffers" : [ + { + "byteLength" : 2600, + "uri" : "data:application/octet-stream;base64,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" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_foot_left.gltf.import b/game/modules/species/Human/Female/character_models/huf_foot_left.gltf.import new file mode 100644 index 0000000..cc66033 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_foot_left.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_foot_left.gltf-f05ae177d93fd866b85bdc979f084a3e.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_foot_left.gltf" +dest_files=[ "res://.import/huf_foot_left.gltf-f05ae177d93fd866b85bdc979f084a3e.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_models/huf_forearm.blend b/game/modules/species/Human/Female/character_models/huf_forearm.blend new file mode 100644 index 0000000..168cb9b Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_forearm.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_forearm.gltf b/game/modules/species/Human/Female/character_models/huf_forearm.gltf new file mode 100644 index 0000000..7cbe442 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_forearm.gltf @@ -0,0 +1,108 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.1.46", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "foot (4)" + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard", + "pbrMetallicRoughness" : {} + } + ], + "meshes" : [ + { + "name" : "Geometry_n24446", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 48, + "max" : [ + 2.8101348876953125, + 23.775440216064453, + 2.621267318725586 + ], + "min" : [ + -2.8125078678131104, + -0.276827871799469, + -2.3595199584960938 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 48, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 48, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 48, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 576, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 576, + "byteOffset" : 576 + }, + { + "buffer" : 0, + "byteLength" : 384, + "byteOffset" : 1152 + }, + { + "buffer" : 0, + "byteLength" : 96, + "byteOffset" : 1536 + } + ], + "buffers" : [ + { + "byteLength" : 1632, + "uri" : "data:application/octet-stream;base64,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" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_forearm.gltf.import b/game/modules/species/Human/Female/character_models/huf_forearm.gltf.import new file mode 100644 index 0000000..08fc5b2 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_forearm.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_forearm.gltf-8b78258ea9daca7cc382c76da07171af.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_forearm.gltf" +dest_files=[ "res://.import/huf_forearm.gltf-8b78258ea9daca7cc382c76da07171af.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_models/huf_hand.blend b/game/modules/species/Human/Female/character_models/huf_hand.blend new file mode 100644 index 0000000..c535cca Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_hand.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_hand.gltf b/game/modules/species/Human/Female/character_models/huf_hand.gltf new file mode 100644 index 0000000..57e0388 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_hand.gltf @@ -0,0 +1,108 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.1.46", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "foot (2)" + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard", + "pbrMetallicRoughness" : {} + } + ], + "meshes" : [ + { + "name" : "Geometry_n23530", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 78, + "max" : [ + 2.7971031665802, + 10.301515579223633, + 2.1696043014526367 + ], + "min" : [ + -3.8606295585632324, + -0.16154445707798004, + -2.290703773498535 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 78, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 78, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 78, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 936, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 936, + "byteOffset" : 936 + }, + { + "buffer" : 0, + "byteLength" : 624, + "byteOffset" : 1872 + }, + { + "buffer" : 0, + "byteLength" : 156, + "byteOffset" : 2496 + } + ], + "buffers" : [ + { + "byteLength" : 2652, + "uri" : "data:application/octet-stream;base64,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" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_hand.gltf.import b/game/modules/species/Human/Female/character_models/huf_hand.gltf.import new file mode 100644 index 0000000..e8b7384 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_hand.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_hand.gltf-fcf6ee970e736831a55e77cbf1e6bfcd.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_hand.gltf" +dest_files=[ "res://.import/huf_hand.gltf-fcf6ee970e736831a55e77cbf1e6bfcd.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_models/huf_handl.blend b/game/modules/species/Human/Female/character_models/huf_handl.blend new file mode 100644 index 0000000..6c4bfc1 Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_handl.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_handl.gltf b/game/modules/species/Human/Female/character_models/huf_handl.gltf new file mode 100644 index 0000000..e5d8211 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_handl.gltf @@ -0,0 +1,108 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.1.46", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "foot (2)" + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard", + "pbrMetallicRoughness" : {} + } + ], + "meshes" : [ + { + "name" : "Geometry_n23530", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 78, + "max" : [ + 3.0411596298217773, + 10.295692443847656, + 3.0913543701171875 + ], + "min" : [ + -5.122376918792725, + -0.21543261408805847, + -2.180406093597412 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 78, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 78, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 78, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 936, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 936, + "byteOffset" : 936 + }, + { + "buffer" : 0, + "byteLength" : 624, + "byteOffset" : 1872 + }, + { + "buffer" : 0, + "byteLength" : 156, + "byteOffset" : 2496 + } + ], + "buffers" : [ + { + "byteLength" : 2652, + "uri" : "data:application/octet-stream;base64,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" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_handl.gltf.import b/game/modules/species/Human/Female/character_models/huf_handl.gltf.import new file mode 100644 index 0000000..a04643f --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_handl.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_handl.gltf-9e3cf6d88e445ef9c1ccd02373d98266.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_handl.gltf" +dest_files=[ "res://.import/huf_handl.gltf-9e3cf6d88e445ef9c1ccd02373d98266.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_models/huf_head.blend b/game/modules/species/Human/Female/character_models/huf_head.blend new file mode 100644 index 0000000..44017d4 Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_head.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_head.gltf b/game/modules/species/Human/Female/character_models/huf_head.gltf new file mode 100644 index 0000000..e0f7d44 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_head.gltf @@ -0,0 +1,143 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.6.16", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "foot (3)", + "translation" : [ + 0.05758150666952133, + -0.0946778655052185, + 0.0776815116405487 + ] + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard", + "pbrMetallicRoughness" : { + "baseColorTexture" : { + "index" : 0 + }, + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + } + ], + "meshes" : [ + { + "name" : "Geometry_n24000", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "textures" : [ + { + "sampler" : 0, + "source" : 0 + } + ], + "images" : [ + { + "bufferView" : 4, + "mimeType" : "image/png", + "name" : "head" + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 168, + "max" : [ + 8.073607444763184, + 16.973590850830078, + 10.289666175842285 + ], + "min" : [ + -7.971891403198242, + -2.6944527626037598, + -8.521437644958496 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 168, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 168, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 168, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 2016, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 2016, + "byteOffset" : 2016 + }, + { + "buffer" : 0, + "byteLength" : 1344, + "byteOffset" : 4032 + }, + { + "buffer" : 0, + "byteLength" : 336, + "byteOffset" : 5376 + }, + { + "buffer" : 0, + "byteLength" : 1167, + "byteOffset" : 5712 + } + ], + "samplers" : [ + { + "magFilter" : 9729, + "minFilter" : 9987 + } + ], + "buffers" : [ + { + "byteLength" : 6880, + "uri" : "data:application/octet-stream;base64,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" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_head.gltf.import b/game/modules/species/Human/Female/character_models/huf_head.gltf.import new file mode 100644 index 0000000..29c982a --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_head.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_head.gltf-f0b5ec17eb5bf5da6946f16df53024b2.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_head.gltf" +dest_files=[ "res://.import/huf_head.gltf-f0b5ec17eb5bf5da6946f16df53024b2.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_models/huf_neck.blend b/game/modules/species/Human/Female/character_models/huf_neck.blend new file mode 100644 index 0000000..d6a3173 Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_neck.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_neck.gltf b/game/modules/species/Human/Female/character_models/huf_neck.gltf new file mode 100644 index 0000000..66bb3da --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_neck.gltf @@ -0,0 +1,114 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.1.46", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "foot (7)", + "rotation" : [ + 0.7071068286895752, + 0, + 0, + 0.7071067094802856 + ] + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard", + "pbrMetallicRoughness" : {} + } + ], + "meshes" : [ + { + "name" : "Geometry_n26070", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 36, + "max" : [ + 3.967331647872925, + 3.434182643890381, + 1.63594651222229 + ], + "min" : [ + -3.6998696327209473, + -3.879464626312256, + -4.443350791931152 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 36, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 36, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 36, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 432, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 432, + "byteOffset" : 432 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 864 + }, + { + "buffer" : 0, + "byteLength" : 72, + "byteOffset" : 1152 + } + ], + "buffers" : [ + { + "byteLength" : 1224, + "uri" : "data:application/octet-stream;base64,7ulKQEaNNMDsL47A4kc1wEaNNMDuL47A4Uc1wDIeWUA1u1PAqspswKbJW0CyZtE/wuh9QCZJeMDtHeY+w+h9QKTJW0CsZtE/qspswKbJW0CyZtE/qspswCBJeMAHHuY+wuh9QCZJeMDtHeY+4kc1wEaNNMDuL47Awuh9QCZJeMDtHeY+qspswCBJeMAHHuY+4kc1wEaNNMDuL47A7ulKQEaNNMDsL47Awuh9QCZJeMDtHeY+4Uc1wDIeWUA1u1PA4kc1wEaNNMDuL47AqspswKbJW0CyZtE/qspswKbJW0CyZtE/8OlKQDAeWUAxu1PA4Uc1wDIeWUA1u1PAw+h9QKTJW0CsZtE/8OlKQDAeWUAxu1PAqspswKbJW0CyZtE/w+h9QKTJW0CsZtE/7ulKQEaNNMDsL47A8OlKQDAeWUAxu1PAwuh9QCZJeMDtHeY+7ulKQEaNNMDsL47Aw+h9QKTJW0CsZtE/qspswCBJeMAHHuY+qspswKbJW0CyZtE/4kc1wEaNNMDuL47A8OlKQDAeWUAxu1PA7ulKQEaNNMDsL47A4Uc1wDIeWUA1u1PAsc0nNOMCOD4w1Xu/sc0nNOMCOD4w1Xu/sc0nNOMCOD4w1Xu/WkG0MwD7I74/snw/WkG0MwD7I74/snw/WkG0MwD7I74/snw/1RCWMwH7I74+snw/1RCWMwH7I74+snw/1RCWMwH7I74+snw/S79atKA2er+OfVi+S79atKA2er+OfVi+S79atKA2er+OfVi+CkEQM6A2er+hfVi+CkEQM6A2er+hfVi+CkEQM6A2er+hfVi+EAN8vwRqAT3GHDG+EAN8vwRqAT3GHDG+EAN8vwRqAT3GHDG+0nOtM6r9fz8ROgq80nOtM6r9fz8ROgq80nOtM6r9fz8ROgq8WoaEM6r9fz8uOgq8WoaEM6r9fz8uOgq8WoaEM6r9fz8uOgq8RJ98P1lZ7jxwGSO+RJ98P1lZ7jxwGSO+RJ98P1lZ7jxwGSO+E898P118zjxdGR++E898P118zjxdGR++E898P118zjxdGR++UTt8v6ZB4DyMyiy+UTt8v6ZB4DyMyiy+UTt8v6ZB4DyMyiy+igo9NOQCOD4w1Xu/igo9NOQCOD4w1Xu/igo9NOQCOD4w1Xu/i+i1OC60/T7K0rU4zr8/P1GdiD7Ovz8/L4XzPkMgST8b3Ek/0nnsPjOF8z7Oeew+L4XzPkMgST8a3Ek/RCBJPxvcST/Seew+Uvp/P9G/Pz8b3Ek/0nnsPhrcST9EIEk/Uvp/P9G/Pz9S+n8/NrT9PhvcST/Seew+q8MCP5akfj9QCUc/Ufp/Py+F8z5DIEk/L4XzPkMgST9UnYg+MLT9PlGdiD7Ovz8/M4XzPs557D5UnYg+MLT9Pi+F8z5DIEk/M4XzPs557D5SCUc/sAt+PrPDAj/ksoE+G9xJP9J57D5SCUc/sAt+PjOF8z7Oeew+GtxJP0QgST8vhfM+QyBJP1AJRz9R+n8/VJ2IPjC0/T6L6LU4LrT9PlGdiD7Ovz8/AAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMA" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_neck.gltf.import b/game/modules/species/Human/Female/character_models/huf_neck.gltf.import new file mode 100644 index 0000000..dbefd37 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_neck.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_neck.gltf-d56952b61ff8a42dece5b949ad0f9a7f.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_neck.gltf" +dest_files=[ "res://.import/huf_neck.gltf-d56952b61ff8a42dece5b949ad0f9a7f.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_models/huf_pelvis.blend b/game/modules/species/Human/Female/character_models/huf_pelvis.blend new file mode 100644 index 0000000..63d04eb Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_pelvis.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_pelvis.gltf b/game/modules/species/Human/Female/character_models/huf_pelvis.gltf new file mode 100644 index 0000000..2ac9317 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_pelvis.gltf @@ -0,0 +1,122 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.6.16", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "foot (11)", + "translation" : [ + -0.17446666955947876, + -0.8258218169212341, + 0 + ] + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + } + ], + "meshes" : [ + { + "name" : "Geometry_n28192", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 150, + "max" : [ + 14.052423477172852, + 10.832979202270508, + 9.804288864135742 + ], + "min" : [ + -14.057668685913086, + -4.299746513366699, + -9.223094940185547 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 150, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 150, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 150, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 1800, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 1800, + "byteOffset" : 1800 + }, + { + "buffer" : 0, + "byteLength" : 1200, + "byteOffset" : 3600 + }, + { + "buffer" : 0, + "byteLength" : 300, + "byteOffset" : 4800 + } + ], + "buffers" : [ + { + "byteLength" : 5100, + "uri" : "data:application/octet-stream;base64,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" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_pelvis.gltf.import b/game/modules/species/Human/Female/character_models/huf_pelvis.gltf.import new file mode 100644 index 0000000..391d2f1 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_pelvis.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_pelvis.gltf-baa4b0d9142b08da9d67512c62b46f55.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_pelvis.gltf" +dest_files=[ "res://.import/huf_pelvis.gltf-baa4b0d9142b08da9d67512c62b46f55.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_models/huf_spine.blend b/game/modules/species/Human/Female/character_models/huf_spine.blend new file mode 100644 index 0000000..fb8c231 Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_spine.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_spine.gltf b/game/modules/species/Human/Female/character_models/huf_spine.gltf new file mode 100644 index 0000000..0c7db0c --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_spine.gltf @@ -0,0 +1,123 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.6.16", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "foot (1)", + "rotation" : [ + 0.7071068286895752, + 0, + 0, + 0.7071067094802856 + ] + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + } + ], + "meshes" : [ + { + "name" : "Geometry_n23090", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 74, + "max" : [ + 6, + 13, + 2.117968961101724e-06 + ], + "min" : [ + -9, + -13.000001907348633, + -13.000001907348633 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 74, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 84, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 888 + }, + { + "buffer" : 0, + "byteLength" : 592, + "byteOffset" : 1776 + }, + { + "buffer" : 0, + "byteLength" : 168, + "byteOffset" : 2368 + } + ], + "buffers" : [ + { + "byteLength" : 2536, + "uri" : "data:application/octet-stream;base64,AACAQP7/T0ECAFDBAACAQP7/T0ECAFDBAACAQP7/T0ECAFDBAACAQP7/T0ECAFDBAACAQP7/T0ECAFDBAADgwAAAUEFuIg62AADgwAAAUEFuIg62AADgwAAAUEFuIg62AADgwAAAUEFuIg62AADgwAAAUEFuIg62AADgwAAAUEFuIg62AADgwP7/T0ECAFDBAADgwP7/T0ECAFDBAADgwP7/T0ECAFDBAADgwP7/T0ECAFDBAADgwP7/T0ECAFDBAAAQwQAAMMEIifA1AAAQwQAAMMEIifA1AAAQwQAAMMEIifA1AAAQwQAAMMEIifA1AAAQwQAAMMEIifA1AAAQwQIAMMH+/0/BAAAQwQIAMMH+/0/BAAAQwQIAMMH+/0/BAAAQwf7/L0ECAFDBAAAQwf7/L0ECAFDBAAAQwf7/L0ECAFDBAAAQwf7/L0ECAFDBAAAQwf7/L0ECAFDBAAAQwQAAMEEIifC1AAAQwQAAMEEIifC1AAAQwQAAMEEIifC1AAAQwQAAMEEIifC1AADAQAIAMMH+/0/BAADAQAIAMMH+/0/BAADAQAIAMMH+/0/BAADAQAIAMMH+/0/BAADAQP7/L0ECAFDBAADAQP7/L0ECAFDBAADAQP7/L0ECAFDBAADAQP7/L0ECAFDBAADAQP7/L0ECAFDBAACAQAAAUMFuIg42AACAQAAAUMFuIg42AACAQAAAUMFuIg42AACAQAAAUMFuIg42AACAQAAAUMFuIg42AACAQAAAUMFuIg42AACAQAAAUEFuIg62AACAQAAAUEFuIg62AACAQAAAUEFuIg62AACAQAAAUEFuIg62AACAQAAAUEFuIg62AADAQAAAMMEIifA1AADAQAAAMMEIifA1AADAQAAAMMEIifA1AADAQAAAMEEIifC1AADAQAAAMEEIifC1AADAQAAAMEEIifC1AADAQAAAMEEIifC1AADgwAAAUMFuIg42AADgwAAAUMFuIg42AADgwAAAUMFuIg42AADgwAAAUMFuIg42AADgwAIAUMH+/0/BAADgwAIAUMH+/0/BAADgwAIAUMH+/0/BAADgwAIAUMH+/0/BAADgwAIAUMH+/0/BAACAQAIAUMH+/0/BAACAQAIAUMH+/0/BAACAQAIAUMH+/0/BAACAQAIAUMH+/0/BAACAQAIAUMH+/0/B2YkdtNmJHbQAAIC/AAAAAJgl5bMAAIC/AAAAAAAAgD/aiR20AAAAAAAAgD/YiR208gQ1P/IENT8Dy96z9QQ1v/IENT8Cy96zxk5sqU3vLjQAAIA/AAAAAEzvLjQAAIA/AAAAAAAAgD/aiR20AAAAAAAAgD/YiR206aKLKUzvLjQAAIA/9QQ1v/IENT8Cy96z8gQ1v/IENT8Dy96zAAAAAJgl5bMAAIC/AAAAAAAAgD/aiR202YkdNNmJHbQAAIC/AACAvwAAAAAAAACAAACAvwAAAACYJWUy8gQ1v/IENb8Dy94zxk5sqU3vLjQAAIA/6aKLKUzvLjQAAIA/AACAvwAAAAAAAACA8gQ1v/IENb8Dy94zjC46tIwuOrQAAIC/AACAvwAAAAAAAACAAACAvwAAAACYJWUy8gQ1v/IENT8Dy96zjC46tIwuOrQAAIC/2YkdNNmJHbQAAIC/AACAvwAAAACYJWUy9QQ1v/IENT8Cy96z8gQ1v/IENT8Dy96z6aKLKUzvLjQAAIA/jC46NIwuOrQAAIC/8QQ1P/UENb8Gy94z8gQ1P/IENb8Dy94zAACAPwAAAAAAAACA2YkdtNmJHbQAAIC/jC46NIwuOrQAAIC/8gQ1P/IENT8Dy96z9QQ1P/IENT8Cy96zAACAPwAAAAAAAACAxk5sqU3vLjQAAIA/AAAAAAAAgL/YiR00AAAAAEzvLjQAAIA/6aKLKUzvLjQAAIA/8QQ1P/UENb8Gy94z8gQ1P/IENb8Dy94zxk5sqU3vLjQAAIA/AAAAAEzvLjQAAIA/AAAAAAAAgD/YiR208gQ1P/IENT8Dy96z9QQ1P/IENT8Cy96z6aKLKUzvLjQAAIA/8QQ1P/UENb8Gy94zAACAPwAAAAAAAACAxk5sqU3vLjQAAIA/6aKLKUzvLjQAAIA/9QQ1P/IENT8Cy96zAACAPwAAAAAAAACA8gQ1v/IENb8Dy94zxk5sqU3vLjQAAIA/AAAAAAAAgL/YiR00AAAAAEzvLjQAAIA/8gQ1v/IENb8Dy94zjC46tIwuOrQAAIC/AAAAAAAAgL/YiR00AAAAAJgl5bMAAIC/2YkdNNmJHbQAAIC/2YkdtNmJHbQAAIC/AAAAAAAAgL/YiR00AAAAAJgl5bMAAIC/jC46NIwuOrQAAIC/8gQ1P/IENb8Dy94zeuJFObNqdj964kU5s2p2PzomeD+y5gM/OiZ4P7LmAz/eGXg+JPZRPpwy+D6y5gM/OaIFP3D/Az85ogU/cP8DPyIsOj8U654+Iiw6PxTrnj45ogU/cP8DP2UTOj+y5gM/ZRM6P7LmAz964kU5ivlBPzomeD8U654+euJFOYr5QT+ZMvg+EIZYPZky+D4Qhlg9mTL4PhCGWD2cMvg+smp2P5wy+D6yanY/ZRM6PxCGWD1lEzo/EIZYPUDv5D6acDg/ZRM6P2DV7D5lEzo/YNXsPmUTOj9g1ew+yFQZPZxwOD/IVBk9nHA4P5wy+D5i1ew+nDL4PmLV7D6cMvg+YtXsPpky+D5eiA0/Ru/kPqLzfz/cGXg+29sqP9wZeD7b2yo/3Bl4PtvbKj+vVBk9oPN/P69UGT2g838/3hl4Phbzgz7eGXg+FvODPt4ZeD4W84M+ZhM6P6Dzfz/QfHg+3lc4P2YTOj+g838/ZhM6P6Dzfz8z7EU53lc4PzPsRTneVzg/YxM6P27/Az9jEzo/bv8DPyIsOj+y5gM/2ONFOST2UT7Y40U5JPZRPlScQz+yanY/I+tFOdzbKj8j60U53NsqP1ScQz9eiA0/VJxDP16IDT964kU5GPODPnriRTkY84M+mjL4PgDgRTk/ogU/ovN/P7gg5T7dVzg/P6IFP6Lzfz9lEzo/AOBFOSEB+D6M+UE/uCDlPoq79D4hAfg+jPlBPyEB+D6M+UE/IQH4PrRqdj/RfHg+irv0PiEB+D60anY/IQH4PrRqdj/eGXg+3lc4PwMACQAyAAIADgAIABAAGAAVABEAHQAZACMALwBJACQAOwA3ACkAOwAkAAsAHgAFABQACgAgABMAPQAGADEABwA/ACwAMQA/ADgAMAAqADkALQA1AEIAKwA+AEYAKwBCACgANAA6ADwAFgBAACYAIQBIACUARQAAAA0AAQBHAEcAQwANAA8ARAAcAEEAFwAbACIANgAuAAwAGgAfACcABAAzADwAEgAWAA==" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_spine.gltf.import b/game/modules/species/Human/Female/character_models/huf_spine.gltf.import new file mode 100644 index 0000000..ff1024d --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_spine.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_spine.gltf-1872146be20593ed8d52842436b52a43.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_spine.gltf" +dest_files=[ "res://.import/huf_spine.gltf-1872146be20593ed8d52842436b52a43.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_models/huf_spine1.blend b/game/modules/species/Human/Female/character_models/huf_spine1.blend new file mode 100644 index 0000000..e43bbe5 Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_spine1.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_spine1.gltf b/game/modules/species/Human/Female/character_models/huf_spine1.gltf new file mode 100644 index 0000000..30b1089 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_spine1.gltf @@ -0,0 +1,117 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.6.16", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "foot (9)" + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + } + ], + "meshes" : [ + { + "name" : "Geometry_n27042", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 96, + "max" : [ + 12.038736343383789, + 8.292667388916016, + 8.961930274963379 + ], + "min" : [ + -11.832942962646484, + -9.773453712463379, + -7.527775764465332 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 96, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 96, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 96, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 1152, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 1152, + "byteOffset" : 1152 + }, + { + "buffer" : 0, + "byteLength" : 768, + "byteOffset" : 2304 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 3072 + } + ], + "buffers" : [ + { + "byteLength" : 3264, + "uri" : "data:application/octet-stream;base64,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" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_spine1.gltf.import b/game/modules/species/Human/Female/character_models/huf_spine1.gltf.import new file mode 100644 index 0000000..b20fa27 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_spine1.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_spine1.gltf-84f91ea882551fffc99bde3501e66a5e.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_spine1.gltf" +dest_files=[ "res://.import/huf_spine1.gltf-84f91ea882551fffc99bde3501e66a5e.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_models/huf_spine2.blend b/game/modules/species/Human/Female/character_models/huf_spine2.blend new file mode 100644 index 0000000..40db502 Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_spine2.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_spine2.gltf b/game/modules/species/Human/Female/character_models/huf_spine2.gltf new file mode 100644 index 0000000..b3416ec --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_spine2.gltf @@ -0,0 +1,117 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.6.16", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "foot (10)" + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + } + ], + "meshes" : [ + { + "name" : "Geometry_n27542", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 204, + "max" : [ + 13.308907508850098, + 18.034509658813477, + 11.294549942016602 + ], + "min" : [ + -12.61461353302002, + -10.212435722351074, + -7.276956558227539 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 204, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 204, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 204, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 2448, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 2448, + "byteOffset" : 2448 + }, + { + "buffer" : 0, + "byteLength" : 1632, + "byteOffset" : 4896 + }, + { + "buffer" : 0, + "byteLength" : 408, + "byteOffset" : 6528 + } + ], + "buffers" : [ + { + "byteLength" : 6936, + "uri" : "data:application/octet-stream;base64,ki0IQa3/6MBWeodAki0IQa3/6MBWeodAki0IQa3/6MBWeodAki0IQa3/6MBWeodAki0IQa3/6MBWeodAu+OtQEFd3cAS7M3Au+OtQEFd3cAS7M3Au+OtQEFd3cAS7M3Au+OtQEFd3cAS7M3Au+OtQEFd3cAS7M3AEjVAQQttZEF//npAEjVAQQttZEF//npAEjVAQQttZEF//npAEjVAQQttZEF//npAEjVAQQttZEF//npAEjVAQQttZEF//npA/zZswK1GkEHcxsjA/zZswK1GkEHcxsjA/zZswK1GkEHcxsjA/zZswK1GkEHcxsjAOyQ1wRG4Z0E3wnlAOyQ1wRG4Z0E3wnlAOyQ1wRG4Z0E3wnlAOyQ1wRG4Z0E3wnlAOyQ1wRG4Z0E3wnlAOyQ1wRG4Z0E3wnlAjU0/wdW7eEGMus7AjU0/wdW7eEGMus7AjU0/wdW7eEGMus7AjU0/wdW7eEGMus7AjU0/wdW7eEGMus7AjU0/wdW7eEGMus7AkwGvQO0Z6cAcQgJBkwGvQO0Z6cAcQgJBkwGvQO0Z6cAcQgJBkwGvQO0Z6cAcQgJBhk0Hwfm44sAanIRAhk0Hwfm44sAanIRAhk0Hwfm44sAanIRAhk0Hwfm44sAanIRAhk0Hwfm44sAanIRAW3RKQbm+dEGMus7AW3RKQbm+dEGMus7AW3RKQbm+dEGMus7AW3RKQbm+dEGMus7AW3RKQbm+dEGMus7AW3RKQbm+dEGMus7AD5sFQVmS4MAzOD3AD5sFQVmS4MAzOD3AD5sFQVmS4MAzOD3AD5sFQVmS4MAzOD3AD5sFQVmS4MAzOD3AD5sFQVmS4MAzOD3ApEGwwIVq2cAS7M3ApEGwwIVq2cAS7M3ApEGwwIVq2cAS7M3ApEGwwIVq2cAS7M3AZ1HJwFnh5sDURwRBZ1HJwFnh5sDURwRBZ1HJwFnh5sDURwRBZ1HJwFnh5sDURwRBZ1HJwFnh5sDURwRB7957QKnGj0GMvMjA7957QKnGj0GMvMjA7957QKnGj0GMvMjA7957QKnGj0GMvMjA7957QKnGj0GMvMjAkZcEwRl028BbnkDAkZcEwRl028BbnkDAkZcEwRl028BbnkDAkZcEwRl028BbnkDAkZcEwRl028BbnkDAkZcEwRl028BbnkDANLknwWtAQkBFrL9ANLknwWtAQkBFrL9ANLknwWtAQkBFrL9ANLknwWtAQkBFrL9ANLknwWtAQkBFrL9ANLknwWtAQkBFrL9Ax5P+wHCjoz8jMzJBx5P+wHCjoz8jMzJBx5P+wHCjoz8jMzJBx5P+wHCjoz8jMzJBx5P+wHCjoz8jMzJB0DEEQRS0jT8hMzJB0DEEQRS0jT8hMzJB0DEEQRS0jT8hMzJB0DEEQRS0jT8hMzJB0DEEQRS0jT8hMzJBxkAtQeOkM0BFrL9AxkAtQeOkM0BFrL9AxkAtQeOkM0BFrL9AxkAtQeOkM0BFrL9AxkAtQeOkM0BFrL9AxkAtQeOkM0BFrL9A69wXQcXEJsCN+WXA69wXQcXEJsCN+WXA69wXQcXEJsCN+WXA69wXQcXEJsCN+WXA69wXQcXEJsCN+WXA69wXQcXEJsCN+WXA69wXQcXEJsCN+WXAj4GsQCkNHMCyhM/Aj4GsQCkNHMCyhM/Aj4GsQCkNHMCyhM/Aj4GsQCkNHMCyhM/Aj4GsQCkNHMCyhM/Aj4GsQCkNHMCyhM/AgFCbwJGoFMCyhM/AgFCbwJGoFMCyhM/AgFCbwJGoFMCyhM/AgFCbwJGoFMCyhM/AgFCbwJGoFMCyhM/AgFCbwJGoFMCyhM/AgFCbwJGoFMCyhM/AvdgRwT1XGcCN+WXAvdgRwT1XGcCN+WXAvdgRwT1XGcCN+WXAvdgRwT1XGcCN+WXAvdgRwT1XGcCN+WXAvdgRwT1XGcCN+WXAvdgRwT1XGcCN+WXAgH6DPSNmI8HMdAI/gH6DPSNmI8HMdAI/gH6DPSNmI8HMdAI/gH6DPSNmI8HMdAI/gH6DPSNmI8HMdAI/gH6DPSNmI8HMdAI/gH6DPSNmI8HMdAI/gH6DPSNmI8HMdAI/P/WoPmEyd0HU3OjAP/WoPmEyd0HU3OjAP/WoPmEyd0HU3OjAP/WoPmEyd0HU3OjAP/WoPmEyd0HU3OjAP/WoPmEyd0HU3OjAVYuMQC1BTEGwn8FAVYuMQC1BTEGwn8FAVYuMQC1BTEGwn8FAVYuMQC1BTEGwn8FAVYuMQC1BTEGwn8FAPbl2wBG+TUGwn8FAPbl2wBG+TUGwn8FAPbl2wBG+TUGwn8FAPbl2wBG+TUGwn8FAPbl2wBG+TUGwn8FAt0EGwSTpnUB6tjRBt0EGwSTpnUB6tjRBt0EGwSTpnUB6tjRBt0EGwSTpnUB6tjRBt0EGwSTpnUB6tjRBt0EGwSTpnUB6tjRBJ3YNQeQNmEB6tjRBJ3YNQeQNmEB6tjRBJ3YNQeQNmEB6tjRBJ3YNQeQNmEB6tjRBJ3YNQeQNmEB6tjRBJ3YNQeQNmEB6tjRBWTLrQALtk79gRwhBWTLrQALtk79gRwhBWTLrQALtk79gRwhBWTLrQALtk79gRwhBWTLrQALtk79gRwhBWTLrQALtk79gRwhBWTLrQALtk79gRwhBxXbzwKPCf79iRwhBxXbzwKPCf79iRwhBxXbzwKPCf79iRwhBxXbzwKPCf79iRwhBxXbzwKPCf79iRwhBxXbzwKPCf79iRwhBxXbzwKPCf79iRwhBdSYLQTVkR8BkSKVAdSYLQTVkR8BkSKVAdSYLQTVkR8BkSKVAdSYLQTVkR8BkSKVAdSYLQTVkR8BkSKVAn/UJwblvPcDQPqZAn/UJwblvPcDQPqZAn/UJwblvPcDQPqZAn/UJwblvPcDQPqZAn/UJwblvPcDQPqZAjw95QFvFjEEvzxtAjw95QFvFjEEvzxtAjw95QFvFjEEvzxtAjw95QFvFjEEvzxtAjw95QFvFjEEvzxtAjw95QFvFjEEvzxtAjw95QFvFjEEvzxtA79lswMmJjUE/2BtA79lswMmJjUE/2BtA79lswMmJjUE/2BtA79lswMmJjUE/2BtA79lswMmJjUE/2BtA79lswMmJjUE/2BtA79lswMmJjUE/2BtASfFUQT0mb0Eye+2/SfFUQT0mb0Eye+2/SfFUQT0mb0Eye+2/SfFUQT0mb0Eye+2/ddVJwQkfc0Hynce/ddVJwQkfc0Hynce/ddVJwQkfc0Hynce/ddVJwQkfc0Hynce/7a57PsFNc7/uJkM+iyawPoYhcL85Oiy9boxCP0YCir4uaRc/MYFjPzS7DL5p9t8+BLt/P9GwIL0Fv8K8BFYmvFd+Zr94ut6+EqwDuSx1Nrzv+3+/xKsDuSp1Nrzv+3+//1aEPl5Ob7+8e3m+jy1EP4fofTkueCS/jvTPPf9YGj+Ak0o/d8fdPavwFT9dok0/AZGvPsDUaz94NDw+3KNuP5YKAL2Ko7g+b6d0PwjpZ768n0A+r5l9P5F97L2Ec5W92OaTvovmdD8znxg9o0h8vaxwjT47iHW//59OO5pauz5YPm6/1xIGPD7Lfz8r3CA93Ol9v+jFtr32PLq9q+J0vxxfWr7PcEs+Kh5uv00InLp//7s+HaaxvgN7aj/Cf04+g/jRvR/PFj8mMU0/kEzKveAcGT+kmUs/U0N5v7JZNb7Y4hK++7ELv/n4XL5sSk+/2OaTvovmdD8znxg9AZOQvs50dT+oivs8RTCIvepBzbxRWn+/o0h8vaxwjT47iHW/T97Xulfpbr/X7Lc+fnwpPIf5g71GdH8/7a57PsFNc7/uJkM+boxCP0YCir4uaRc/PcZ/v8XmCr3Gqcq8e75sv9KQA752X7c+mKFev4U5T77kiuY+jpm3vnPGbr8ZGRy9E8uWvuOMcr/Nlf893LuGPT1U0byUXH+/CwmJPfHlkT6lyXS/fI+RPg1MdT8ITwQ9QoGWPhtydD90yy49BR8OP8qoZ74L5ky/Pf53PwRBSL6oaRy+/1aEPl5Ob7+8e3m+iyawPoYhcL85Oiy9MMcMP4+Lg77zcku/jy1EP4fofTkueCS/D9F3P95ydb4BSJc9BLt/P9GwIL0Fv8K8EO1Fv7l12T3pESC/vAGMvnuCbr+r53S+BFYmvFd+Zr94ut6+xKsDuSp1Nrzv+3+/mKFev4U5T77kiuY+E8uWvuOMcr/Nlf89T97Xulfpbr/X7Lc+gercue7lJL3dyn8/fnwpPIf5g71GdH8//59OO5pauz5YPm6/1xIGPD7Lfz8r3CA9YNFOPLW9fz/SxzA9CwmJPfHlkT6lyXS/QoGWPhtydD90yy49PcZ/v8XmCr3Gqcq8abd7vzgRNb7bazM9EO1Fv7l12T3pESC/bPkLv9WaVL4rpk+/jpm3vnPGbr8ZGRy9vAGMvnuCbr+r53S+3Ol9v+jFtr32PLq9vAZ0v5fCmb5VDww9Kh5uv00InLp//7s+QiZovxFPAL6jC84+uiVbv86+4b4UIoo+HWlWv1Yto760OOM+QiZovxFPAL6jC84+uiVbv86+4b4UIoo+Ab8CvD1WQb+hySc/aUbvucEDML10w38/5hDuuW0PML1tw38/Ab8CvD1WQb+hySc/WpUBvKtkQb8OuSc/5hDuuW0PML1tw38/GSBMP9rEEL91zlc+fEtnP+WOJL7Fbss+q1lHPz99tL7G2wQ/GSBMP9rEEL91zlc+fEtnP+WOJL7Fbss+3KNuP5YKAL2Ko7g+BKBvP6cYsb7CrYQ9r5l9P5F97L2Ec5W9MMcMP4+Lg77zcku/BR8OP8qoZ74L5ky/BKBvP6cYsb7CrYQ9b6d0PwjpZ768n0A+D9F3P95ydb4BSJc9Pf53PwRBSL6oaRy+r5l9P5F97L2Ec5W9LSoDuiLBNb1wv3+/EqwDuSx1Nrzv+3+/3LuGPT1U0byUXH+/MMcMP4+Lg77zcku/BR8OP8qoZ74L5ky/jy1EP4fofTkueCS/EO1Fv7l12T3pESC/bPkLv9WaVL4rpk+/+7ELv/n4XL5sSk+/RTCIvepBzbxRWn+/LSoDuiLBNb1wv3+/EqwDuSx1Nrzv+3+/xKsDuSp1Nrzv+3+/3Ol9v+jFtr32PLq9abd7vzgRNb7bazM9U0N5v7JZNb7Y4hK+q+J0vxxfWr7PcEs+vAZ0v5fCmb5VDww9bPkLv9WaVL4rpk+/+7ELv/n4XL5sSk+/jpm3vnPGbr8ZGRy9E8uWvuOMcr/Nlf89vAGMvnuCbr+r53S+BFYmvFd+Zr94ut6+T97Xulfpbr/X7Lc+7a57PsFNc7/uJkM+/1aEPl5Ob7+8e3m+iyawPoYhcL85Oiy9RTCIvepBzbxRWn+/o0h8vaxwjT47iHW/LSoDuiLBNb1wv3+//59OO5pauz5YPm6/3LuGPT1U0byUXH+/CwmJPfHlkT6lyXS//VO/O3u+DD9w1VU/LPzKO/6jDD+z5lU/35bdOxyIGT8L2Ew/jvTPPf9YGj+Ak0o/d8fdPavwFT9dok0/g/jRvR/PFj8mMU0/kEzKveAcGT+kmUs/LPzKO/6jDD+z5lU/35bdOxyIGT8L2Ew/wMz5OydNGT+tA00/Kh5uv00InLp//7s+QiZovxFPAL6jC84+g/jRvR/PFj8mMU0/aUbvucEDML10w38//VO/O3u+DD9w1VU/LPzKO/6jDD+z5lU/aUbvucEDML10w38/5hDuuW0PML1tw38//VO/O3u+DD9w1VU/d8fdPavwFT9dok0/fEtnP+WOJL7Fbss+3KNuP5YKAL2Ko7g+WpUBvKtkQb8OuSc/gercue7lJL3dyn8/fnwpPIf5g71GdH8/boxCP0YCir4uaRc/q1lHPz99tL7G2wQ/GSBMP9rEEL91zlc+MYFjPzS7DL5p9t8+e75sv9KQA752X7c+mKFev4U5T77kiuY+uiVbv86+4b4UIoo+HWlWv1Yto760OOM+Ab8CvD1WQb+hySc/WpUBvKtkQb8OuSc/gercue7lJL3dyn8/q1lHPz99tL7G2wQ/MYFjPzS7DL5p9t8+BKBvP6cYsb7CrYQ9D9F3P95ydb4BSJc9BLt/P9GwIL0Fv8K8PcZ/v8XmCr3Gqcq8abd7vzgRNb7bazM9vAZ0v5fCmb5VDww9e75sv9KQA752X7c+HWlWv1Yto760OOM+35bdOxyIGT8L2Ew/wMz5OydNGT+tA00/YNFOPLW9fz/SxzA9jvTPPf9YGj+Ak0o/fI+RPg1MdT8ITwQ9QoGWPhtydD90yy49AZGvPsDUaz94NDw+HaaxvgN7aj/Cf04+2OaTvovmdD8znxg9AZOQvs50dT+oivs8kEzKveAcGT+kmUs/wMz5OydNGT+tA00/1xIGPD7Lfz8r3CA9YNFOPLW9fz/SxzA9fI+RPg1MdT8ITwQ9AZGvPsDUaz94NDw+b6d0PwjpZ768n0A+Pf53PwRBSL6oaRy+U0N5v7JZNb7Y4hK+q+J0vxxfWr7PcEs+HaaxvgN7aj/Cf04+AZOQvs50dT+oivs8+aorP50+ID/5qis/nT4gP2/2HD98GS0/b/YcP3wZLT+91io+AEASOa+2Az9y3BQ/nOpKPvb6wj6c6ko+9vrCPq+2Az9y3BQ/nOpKPvb6wj7/4Ys+41AgP//hiz7jUCA/KZcqPhx0nz7/4Ys+41AgPymXKj4cdJ8+KZcqPhx0nz5RPiQ9BpoMP1E+JD0Gmgw/UT4kPQaaDD9RPiQ9BpoMPz6qKj5ZCi8/PqoqPlkKLz8z64o+3fZ/Pz6qKj5ZCi8/M+uKPt32fz8z64o+3fZ/P0s4kjzWICo/K14DP50+ID9LOJI81iAqP0s4kjzWICo/K14DP50+ID9LOJI81iAqP/hJOj8evBQ/VpwZP7aVPj/4STo/HrwUP1acGT+2lT4/M6cnPt32fz9v9hw/qop4P2/2HD+qing/ydoqP+6cwj7J2io/7pzCPixeAz+i9pI+9z6pPPjypz73Pqk8+PKnPvc+qTz48qc+LF4DP6L2kj73Pqk8+PKnPuTAED+x0h8/5MAQP7HSHz+d4Ec+oh2jPp3gRz6iHaM+7FGFPYB9zTvsUYU9gH3NO0ZCST7/xgg/cnADPzaO2T5ycAM/No7ZPkZCST7/xgg/SzwaP8UWaD/4STo/hBDTPvhJOj+EENM+SzwaP8UWaD9LPBo/xRZoP//iJz1wLOY+/+InPXAs5j7/4ic9cCzmPv/iJz1wLOY+/+InPXAs5j54YXc9AWB+P3hhdz0BYH4/AylHPlZlGD8DKUc+VmUYP5UfED8cVsQ+lR8QPxxWxD7p30Y+XqRZP+nfRj5epFk/I63pPlLYfj8jrek+Uth+PyOt6T5S2H4/I63pPlLYfj8vUO4+3VNpPy9Q7j7dU2k/L1DuPt1TaT8vUO4+3VNpPy9Q7j7dU2k/Ks3vPpzzOD8qze8+nPM4PyrN7z6c8zg/Ks3vPpzzOD8qze8+nPM4P5tu7D4SfCQ/m27sPhJ8JD+bbuw+EnwkP5tu7D4SfCQ/699GPrhkFz7r30Y+uGQXPr7xgz7YHJ8+vvGDPtgcnz48umo9AFmRPTy6aj0AWZE9PLpqPQBZkT08umo9AFmRPTy6aj0AWZE9PpSFPjIuwz4+lIU+Mi7DPj6UhT4yLsM+PpSFPjIuwz4+lIU+Mi7DPj6UhT4yLsM+HVmFPuQxBz8dWYU+5DEHPx1ZhT7kMQc/HVmFPuQxBz8dWYU+5DEHPx1ZhT7kMQc/HVmFPuQxBz8APlw9IYZtPwA+XD0hhm0/AD5cPSGGbT8APlw9IYZtPwA+XD0hhm0/yM6DPnTbGT/IzoM+dNsZP3j9HT/4FQE/eP0dP/gVAT94/R0/+BUBP3j9HT/4FQE/eP0dP/gVAT94/R0/+BUBP3j9HT/4FQE/eP0dP/gVAT/1/wI/BNzpPg4vEjnMBv4+9f8CPwTc6T4OLxI5zAb+PvX/Aj8E3Ok+Di8SOcwG/j5B3pQ+nkBBP0HelD6eQEE/Qd6UPp5AQT9B3pQ+nkBBP0HelD6eQEE/7SKWPmccYD/tIpY+ZxxgP+0ilj5nHGA/7SKWPmccYD/tIpY+ZxxgP3CS1z4z2mo/cJLXPjPaaj9wktc+M9pqP3CS1z4z2mo/cJLXPjPaaj9wktc+M9pqP7RU2T6Sdzc/tFTZPpJ3Nz+0VNk+knc3P7RU2T6Sdzc/tFTZPpJ3Nz+0VNk+knc3P7/sAj++rDc/v+wCP76sNz+/7AI/vqw3P7/sAj++rDc/v+wCP76sNz+/7AI/vqw3P7/sAj++rDc/k9MDP7W6bD+T0wM/tbpsP5PTAz+1umw/k9MDP7W6bD+T0wM/tbpsP5PTAz+1umw/k9MDP7W6bD/Tzw0/pDssP9PPDT+kOyw/uNM5PuANcT240zk+4A1xPbjTOT7gDXE98v04PpjNcD/y/Tg+mM1wP/L9OD6YzXA/c0YOP/07eD9zRg4//Tt4PwMpRz6TpEE/AylHPpOkQT8j0SM+qsLiPgMpRz6TpEE/I9EjPqrC4j4j0SM+qsLiPiPRIz6qwuI+7B0lPrh5Dj/sHSU+uHkOP+wdJT64eQ4/rvNKPu6eYT+u80o+7p5hP+wdJT64eQ4/7B0lPrh5Dj93/a09lKShPnf9rT2UpKE+d/2tPZSkoT53/a09lKShPmYhsz0Ysy0/ZiGzPRizLT9mIbM9GLMtP2Yhsz0Ysy0/kQC3AMEADwBeAGUAHQDLAL8AYABqAC0ARwB6ACcAewA6ACgAbwAeAIIAbgB5ABsAvQDKABcAcwBJABQAcACEAGYAWQCiAKwAoAA9ACEArQCkAAMArgBhAF0AOwB+ACAAcgAHADgApQC0ACUATgC1AKgAaQBfADEARgB4AG0ASgB3ALMAbAA1AEUAZwAGAHEAaACGACkAsQBDACQAlgCaAIgATABPAJMAoQAjAAIApgAmADkAUgCYAJUAjQAYAJQAawAyAAkAqgCeAFUAsAAEADQARACyAHQAMwBjAK8AjACbAAsAowBaAFcApwBQAE0AiwAKALkAkACKALYAgwAfABEAhQASAD4AhwBBACoAdgAVAMkAuwAsAEIAGQCOAMAAGgB1AMgAvgAQABwAQADDALgAwgA/ABMAxQC8AAwAKwC6AMQALgDHAGQAxgAOAGIAXAANAJ0AVABRAKkAVgCZAFMAjwCXAIkAnwCrADwASAA2AHwABQB9ADcALwCAAAgAAAAiAH8AMAABAIEASwCSABYAWwCcAFgA" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_spine2.gltf.import b/game/modules/species/Human/Female/character_models/huf_spine2.gltf.import new file mode 100644 index 0000000..ae674e1 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_spine2.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_spine2.gltf-c26b5ef93a0effb389f435f55f147f23.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_spine2.gltf" +dest_files=[ "res://.import/huf_spine2.gltf-c26b5ef93a0effb389f435f55f147f23.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_models/huf_thigh_left.blend b/game/modules/species/Human/Female/character_models/huf_thigh_left.blend new file mode 100644 index 0000000..2a2a775 Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_thigh_left.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_thigh_left.gltf b/game/modules/species/Human/Female/character_models/huf_thigh_left.gltf new file mode 100644 index 0000000..91f794e --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_thigh_left.gltf @@ -0,0 +1,117 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.6.16", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "foot (13)" + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard.003", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + } + ], + "meshes" : [ + { + "name" : "Geometry_n29944.001", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 72, + "max" : [ + 7.31453275680542, + 35.08806228637695, + 9.008809089660645 + ], + "min" : [ + -9.128246307373047, + -0.06873077154159546, + -8.741337776184082 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 72, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 72, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 72, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 864, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 864, + "byteOffset" : 864 + }, + { + "buffer" : 0, + "byteLength" : 576, + "byteOffset" : 1728 + }, + { + "buffer" : 0, + "byteLength" : 144, + "byteOffset" : 2304 + } + ], + "buffers" : [ + { + "byteLength" : 2448, + "uri" : "data:application/octet-stream;base64,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" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_thigh_left.gltf.import b/game/modules/species/Human/Female/character_models/huf_thigh_left.gltf.import new file mode 100644 index 0000000..0981a71 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_thigh_left.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_thigh_left.gltf-f967ea8aff882be703adaf054058d4f8.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_thigh_left.gltf" +dest_files=[ "res://.import/huf_thigh_left.gltf-f967ea8aff882be703adaf054058d4f8.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_models/huf_thigh_right.blend b/game/modules/species/Human/Female/character_models/huf_thigh_right.blend new file mode 100644 index 0000000..71bf8a7 Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_thigh_right.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_thigh_right.gltf b/game/modules/species/Human/Female/character_models/huf_thigh_right.gltf new file mode 100644 index 0000000..5601bba --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_thigh_right.gltf @@ -0,0 +1,117 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.6.16", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "foot (13)" + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard.003", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + } + ], + "meshes" : [ + { + "name" : "Geometry_n29944.001", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 72, + "max" : [ + 8.889254570007324, + 35.02566909790039, + 8.346426963806152 + ], + "min" : [ + -8.41723918914795, + -0.15153884887695312, + -7.957369804382324 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 72, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 72, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 72, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 864, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 864, + "byteOffset" : 864 + }, + { + "buffer" : 0, + "byteLength" : 576, + "byteOffset" : 1728 + }, + { + "buffer" : 0, + "byteLength" : 144, + "byteOffset" : 2304 + } + ], + "buffers" : [ + { + "byteLength" : 2448, + "uri" : "data:application/octet-stream;base64,VqVrQOYs7D/Gov7AVqVrQOYs7D/Gov7AVqVrQOYs7D/Gov7AVqVrQOYs7D/Gov7AVqVrQOYs7D/Gov7Adss7wIT8AUL6p77Adss7wIT8AUL6p77Adss7wIT8AUL6p77Adss7wIT8AUL6p77Adss7wIT8AUL6p77AhJh0vwAtG75sAMW+hJh0vwAtG75sAMW+hJh0vwAtG75sAMW+hJh0vwAtG75sAMW+hJh0vwAtG75sAMW+hJh0vwAtG75sAMW+vB0OQFXtA0J+wZlAvB0OQFXtA0J+wZlAvB0OQFXtA0J+wZlAvB0OQFXtA0J+wZlAvB0OQFXtA0J+wZlAGI8MQJW5AkL6p77AGI8MQJW5AkL6p77AGI8MQJW5AkL6p77AGI8MQJW5AkL6p77AGI8MQJW5AkL6p77A3amSQHrqsz/3igVB3amSQHrqsz/3igVB3amSQHrqsz/3igVB3amSQHrqsz/3igVB3amSQHrqsz/3igVB/GCvwJfnB0CORPjA/GCvwJfnB0CORPjA/GCvwJfnB0CORPjA/GCvwJfnB0CORPjA/GCvwJfnB0CORPjA1HE8v0kaDEIkAcW+1HE8v0kaDEIkAcW+1HE8v0kaDEIkAcW+1HE8v0kaDEIkAcW+1HE8v0kaDEIkAcW+1HE8v0kaDEIkAcW+A60Gwdl5dUAwIrs9A60Gwdl5dUAwIrs9A60Gwdl5dUAwIrs9A60Gwdl5dUAwIrs9A60Gwdl5dUAwIrs9YzoOQeTrbj9A0do8YzoOQeTrbj9A0do8YzoOQeTrbj9A0do8YzoOQeTrbj9A0do8YzoOQeTrbj9A0do8zCq4wKXnB0DbWwJBzCq4wKXnB0DbWwJBzCq4wKXnB0DbWwJBzCq4wKXnB0DbWwJBzCq4wKXnB0DbWwJB7WOVQI26A0KQPIy97WOVQI26A0KQPIy97WOVQI26A0KQPIy97WOVQI26A0KQPIy97WOVQI26A0KQPIy9ViVIwIP8AUJ+wZlAViVIwIP8AUJ+wZlAViVIwIP8AUJ+wZlAViVIwIP8AUJ+wZlAViVIwIP8AUJ+wZlAfwXDwIP8AULSdjq/fwXDwIP8AULSdjq/fwXDwIP8AULSdjq/fwXDwIP8AULSdjq/fwXDwIP8AULSdjq/pgcQvV35db+fvIy+2KihvL+Lgj3wbX+/rifsPYTDeb8UHD++DZhWP2Ex3z0Zxgi/rjRrPyZEjj03+sa+Trdsv8Rhyz1FNLy+Ssdav5YxXz27MwS/bHvNvkEcYj+NVXi+eN4GvYE6aj9x7s2+SvkLu1sYcz1TjH+/HvfxvgN4Yb8jC/68uNfwvo7eYb9oyoY8ogWTvasaeb+XVWA+pgcQvV35db+fvIy+G6TVPckJfb8gfuE9rifsPYTDeb8UHD++0COpveoKaT+hp88+iZAkvDC94j3KaX4/zhOyPqlBbD+3Ryk+anxiP/s67z1xDOc+t0ZjPzqK8j1ztOM+eN4GvYE6aj9x7s2+2KihvL+Lgj3wbX+/SvkLu1sYcz1TjH+/s326PqJOaT8MVES+rjRrPyZEjj03+sa+ogWTvasaeb+XVWA+Adw7vLwF4j1Va34/iZAkvDC94j3KaX4/G6TVPckJfb8gfuE9anxiP/s67z1xDOc+Trdsv8Rhyz1FNLy+uNfwvo7eYb9oyoY8pgcQvV35db+fvIy+2KihvL+Lgj3wbX+/SvkLu1sYcz1TjH+/JNvavvreXz/ht2o+bHvNvkEcYj+NVXi+0COpveoKaT+hp88+eN4GvYE6aj9x7s2+zhOyPqlBbD+3Ryk+s326PqJOaT8MVES+oMFwv2Rdrz0tbag+Trdsv8Rhyz1FNLy+Ssdav5YxXz27MwS/HvfxvgN4Yb8jC/68uNfwvo7eYb9oyoY8G6TVPckJfb8gfuE9rifsPYTDeb8UHD++DZhWP2Ex3z0Zxgi/anxiP/s67z1xDOc+t0ZjPzqK8j1ztOM+oMFwv2Rdrz0tbag+yMZfv/1EAj7Q/u8+HvfxvgN4Yb8jC/68ogWTvasaeb+XVWA+Adw7vLwF4j1Va34/zhOyPqlBbD+3Ryk+s326PqJOaT8MVES+DZhWP2Ex3z0Zxgi/t0ZjPzqK8j1ztOM+rjRrPyZEjj03+sa+yMZfv/1EAj7Q/u8+JNvavvreXz/ht2o+0COpveoKaT+hp88+Adw7vLwF4j1Va34/iZAkvDC94j3KaX4/oMFwv2Rdrz0tbag+yMZfv/1EAj7Q/u8+Ssdav5YxXz27MwS/JNvavvreXz/ht2o+bHvNvkEcYj+NVXi+37Y/PhAcMj/ftj8+EBwyP9+2Pz4QHDI/37Y/PhAcMj/ftj8+EBwyPxCLQj/qnTo/EItCP+qdOj8Qi0I/6p06PxCLQj/qnTo/EItCP+qdOj8yjh0+AKDDOLGVCD6X9n8/v9kzPcBSWj6rm4I9AJZOP/fFwzgIiN0+qTLgPNl9Jj9RZ0A/pPLWPlFnQD+k8tY+UWdAP6Ty1j5RZ0A/pPLWPlFnQD+k8tY+yrU/PxbKIj/KtT8/FsoiP8q1Pz8WyiI/yrU/PxbKIj/KtT8/FsoiP3HZMT6+2bQ+cdkxPr7ZtD5x2TE+vtm0PnHZMT6+2bQ+cdkxPr7ZtD6vZV8+8zlcP69lXz7zOVw/r2VfPvM5XD+vZV8+8zlcP69lXz7zOVw/vihfP9Jblj6+KF8/pNxEP+oVXD/WhcI+kIhdP8ajLD/9plg/jpH4PoIdWD/6BA8/KOebPhDPED2lgJM+4vl/P6WAkz7i+X8/KOebPhDPED2lgJM+4vl/P8ZTID4EDAY/xlMgPgQMBj/GUyA+BAwGP8ZTID4EDAY/xlMgPgQMBj8SqmM+SG0uPhKqYz5IbS4+EqpjPkhtLj4SqmM+SG0uPhKqYz5IbS4+OO8+PxzsBD847z4/HOwEPzjvPj8c7AQ/OO8+PxzsBD847z4/HOwEP6DiQj9k/6Q+oOJCP2T/pD6g4kI/ZP+kPqDiQj9k/6Q+oOJCP2T/pD5yZ0w/mPVaPnJnTD+Y9Vo+wJRJP4pLVj9yZ0w/mPVaPsCUST+KS1Y/HQAOAC8ANwAMABoANgAtAAoAIAALAC4AOQAoABIAEAAmAEAADQAhAAAAMAAPAAIAQgAcABEAIgAWAAEAFAAzADwAMQADADsAPQAEABkANABDACoAKQA6ABgAFQAIACcAFwAjAAkAHgAyABMARwAlAAcARgA/ACQAOAAbAEEARQAGACwARAA1AD4AHwArAAUA" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_thigh_right.gltf.import b/game/modules/species/Human/Female/character_models/huf_thigh_right.gltf.import new file mode 100644 index 0000000..2c8c218 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_thigh_right.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_thigh_right.gltf-9b46efec2793396d125292492f104d4a.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_thigh_right.gltf" +dest_files=[ "res://.import/huf_thigh_right.gltf-9b46efec2793396d125292492f104d4a.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_models/huf_upperarm.blend b/game/modules/species/Human/Female/character_models/huf_upperarm.blend new file mode 100644 index 0000000..3eccd1d Binary files /dev/null and b/game/modules/species/Human/Female/character_models/huf_upperarm.blend differ diff --git a/game/modules/species/Human/Female/character_models/huf_upperarm.gltf b/game/modules/species/Human/Female/character_models/huf_upperarm.gltf new file mode 100644 index 0000000..b9cec8c --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_upperarm.gltf @@ -0,0 +1,108 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.1.46", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "foot (6)" + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Standard", + "pbrMetallicRoughness" : {} + } + ], + "meshes" : [ + { + "name" : "Geometry_n25626", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 48, + "max" : [ + 3.444366931915283, + 24.6923828125, + 4.541225433349609 + ], + "min" : [ + -4.698050022125244, + -2.318854808807373, + -3.81927490234375 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 48, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 48, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 48, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 576, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 576, + "byteOffset" : 576 + }, + { + "buffer" : 0, + "byteLength" : 384, + "byteOffset" : 1152 + }, + { + "buffer" : 0, + "byteLength" : 96, + "byteOffset" : 1536 + } + ], + "buffers" : [ + { + "byteLength" : 1632, + "uri" : "data:application/octet-stream;base64,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" + } + ] +} diff --git a/game/modules/species/Human/Female/character_models/huf_upperarm.gltf.import b/game/modules/species/Human/Female/character_models/huf_upperarm.gltf.import new file mode 100644 index 0000000..e7d6516 --- /dev/null +++ b/game/modules/species/Human/Female/character_models/huf_upperarm.gltf.import @@ -0,0 +1,19 @@ +[remap] + +importer="gltf_mdr" +type="MeshDataResource" +path="res://.import/huf_upperarm.gltf-49cf57be440edffb44c0bea754dd6de2.res" + +[deps] + +source_file="res://modules/species/Human/Female/character_models/huf_upperarm.gltf" +dest_files=[ "res://.import/huf_upperarm.gltf-49cf57be440edffb44c0bea754dd6de2.res" ] + +[params] + +import_type=0 +optimization_type=2 +collider_type=0 +offset=Vector3( 0, 0, 0 ) +rotation=Vector3( 0, 0, 0 ) +scale=Vector3( 0.011, 0.011, 0.011 ) diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/Attributions.xml b/game/modules/species/Human/Female/character_textures/100_seamless/Attributions.xml new file mode 100644 index 0000000..d703ad8 --- /dev/null +++ b/game/modules/species/Human/Female/character_textures/100_seamless/Attributions.xml @@ -0,0 +1,37 @@ + + +Test Character Textures + + + +MIT + + + + +100 Seamless Textures +https://opengameart.org/content/100-seamless-textures + +The original assets have been modified! + +Public domain seamless textures, 750x750px each. + +Source: http://pdtextures.blogspot.com/ + +Metadata notes: + +This work is hereby released into the Public Domain. To view a copy of the public domain dedication, +visit http://creativecommons.org/licenses/publicdomain/ or send a letter to Creative Commons, +559 Nathan Abbott Way, Stanford, California 94305, USA. + +Author: +Mitch Featherston +(Submitted by Clint Bellanger) + + +CC0 + +species/Human/Female/character_textures/100_seamless/* + + + \ No newline at end of file diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf.png b/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf.png new file mode 100644 index 0000000..323307d Binary files /dev/null and b/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf.png differ diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf.png.import b/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf.png.import new file mode 100644 index 0000000..05832c9 --- /dev/null +++ b/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf.png.import @@ -0,0 +1,15 @@ +[remap] + +importer="packer_image_resource" +type="PackerImageResource" +path="res://.import/armor_green_scarf.png-9c64e94f4403166c5a5941434e7155b9.restex" + +[deps] + +source_file="res://modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf.png" +dest_files=[ "res://.import/armor_green_scarf.png-9c64e94f4403166c5a5941434e7155b9.restex" ] + +[params] + +hdr_as_srgb=false +scale=1.0 diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf_v3.png b/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf_v3.png new file mode 100644 index 0000000..2671525 Binary files /dev/null and b/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf_v3.png differ diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf_v3.png.import b/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf_v3.png.import new file mode 100644 index 0000000..4d21d5a --- /dev/null +++ b/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf_v3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/armor_green_scarf_v3.png-65b0d0907d90f6f53dbb261fce8ce5c1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf_v3.png" +dest_files=[ "res://.import/armor_green_scarf_v3.png-65b0d0907d90f6f53dbb261fce8ce5c1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarfv2.png b/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarfv2.png new file mode 100644 index 0000000..3d52502 Binary files /dev/null and b/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarfv2.png differ diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarfv2.png.import b/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarfv2.png.import new file mode 100644 index 0000000..6f72909 --- /dev/null +++ b/game/modules/species/Human/Female/character_textures/100_seamless/armor_green_scarfv2.png.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/armor_green_scarfv2.png-391fe47fc577fed88f97ca577970ad86.s3tc.stex" +path.etc2="res://.import/armor_green_scarfv2.png-391fe47fc577fed88f97ca577970ad86.etc2.stex" +path.etc="res://.import/armor_green_scarfv2.png-391fe47fc577fed88f97ca577970ad86.etc.stex" +metadata={ +"imported_formats": [ "s3tc", "etc2", "etc" ], +"vram_texture": true +} + +[deps] + +source_file="res://modules/species/Human/Female/character_textures/100_seamless/armor_green_scarfv2.png" +dest_files=[ "res://.import/armor_green_scarfv2.png-391fe47fc577fed88f97ca577970ad86.s3tc.stex", "res://.import/armor_green_scarfv2.png-391fe47fc577fed88f97ca577970ad86.etc2.stex", "res://.import/armor_green_scarfv2.png-391fe47fc577fed88f97ca577970ad86.etc.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=true +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf.png b/game/modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf.png new file mode 100644 index 0000000..84fce47 Binary files /dev/null and b/game/modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf.png differ diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf.png.import b/game/modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf.png.import new file mode 100644 index 0000000..4d0826d --- /dev/null +++ b/game/modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf.png.import @@ -0,0 +1,15 @@ +[remap] + +importer="packer_image_resource" +type="PackerImageResource" +path="res://.import/armor_red_scarf.png-aaf7bf088845a9daaaad5116fa47f8e2.restex" + +[deps] + +source_file="res://modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf.png" +dest_files=[ "res://.import/armor_red_scarf.png-aaf7bf088845a9daaaad5116fa47f8e2.restex" ] + +[params] + +hdr_as_srgb=false +scale=1.0 diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf_v3.png b/game/modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf_v3.png new file mode 100644 index 0000000..694de44 Binary files /dev/null and b/game/modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf_v3.png differ diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf_v3.png.import b/game/modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf_v3.png.import new file mode 100644 index 0000000..8082b6e --- /dev/null +++ b/game/modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf_v3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/armor_red_scarf_v3.png-1f57b3183d41229e7d09af23d80d4344.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf_v3.png" +dest_files=[ "res://.import/armor_red_scarf_v3.png-1f57b3183d41229e7d09af23d80d4344.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple.png b/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple.png new file mode 100644 index 0000000..44b6bb0 Binary files /dev/null and b/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple.png differ diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple.png.import b/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple.png.import new file mode 100644 index 0000000..686b901 --- /dev/null +++ b/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple.png.import @@ -0,0 +1,15 @@ +[remap] + +importer="packer_image_resource" +type="PackerImageResource" +path="res://.import/armor_simple.png-a87d4105c5d6b0e71538bd5a01d65e0a.restex" + +[deps] + +source_file="res://modules/species/Human/Female/character_textures/100_seamless/armor_simple.png" +dest_files=[ "res://.import/armor_simple.png-a87d4105c5d6b0e71538bd5a01d65e0a.restex" ] + +[params] + +hdr_as_srgb=false +scale=1.0 diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple_v2.png b/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple_v2.png new file mode 100644 index 0000000..c012a48 Binary files /dev/null and b/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple_v2.png differ diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple_v2.png.import b/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple_v2.png.import new file mode 100644 index 0000000..b322635 --- /dev/null +++ b/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple_v2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/armor_simple_v2.png-3e761c8ca8ffccf43f95ba1d6d486f3e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/species/Human/Female/character_textures/100_seamless/armor_simple_v2.png" +dest_files=[ "res://.import/armor_simple_v2.png-3e761c8ca8ffccf43f95ba1d6d486f3e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png b/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png new file mode 100644 index 0000000..092b242 Binary files /dev/null and b/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png differ diff --git a/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png.import b/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png.import new file mode 100644 index 0000000..fbd1b45 --- /dev/null +++ b/game/modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/armor_simple_v3.png-997063e3c5f1c29a7927bfbef439bdac.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png" +dest_files=[ "res://.import/armor_simple_v3.png-997063e3c5f1c29a7927bfbef439bdac.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/species/Human/Female/character_textures/head.png b/game/modules/species/Human/Female/character_textures/head.png new file mode 100644 index 0000000..9ae6293 Binary files /dev/null and b/game/modules/species/Human/Female/character_textures/head.png differ diff --git a/game/modules/species/Human/Female/character_textures/head.png.import b/game/modules/species/Human/Female/character_textures/head.png.import new file mode 100644 index 0000000..4704228 --- /dev/null +++ b/game/modules/species/Human/Female/character_textures/head.png.import @@ -0,0 +1,15 @@ +[remap] + +importer="packer_image_resource" +type="PackerImageResource" +path="res://.import/head.png-6603bf299022bb836aa6480e5be1810f.restex" + +[deps] + +source_file="res://modules/species/Human/Female/character_textures/head.png" +dest_files=[ "res://.import/head.png-6603bf299022bb836aa6480e5be1810f.restex" ] + +[params] + +hdr_as_srgb=false +scale=1.0 diff --git a/game/modules/species/Human/Female/character_textures/head_v3.png b/game/modules/species/Human/Female/character_textures/head_v3.png new file mode 100644 index 0000000..fd603ae Binary files /dev/null and b/game/modules/species/Human/Female/character_textures/head_v3.png differ diff --git a/game/modules/species/Human/Female/character_textures/head_v3.png.import b/game/modules/species/Human/Female/character_textures/head_v3.png.import new file mode 100644 index 0000000..cb80144 --- /dev/null +++ b/game/modules/species/Human/Female/character_textures/head_v3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_v3.png-47988113bb36fbe076a9b159f1e4f39f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/species/Human/Female/character_textures/head_v3.png" +dest_files=[ "res://.import/head_v3.png-47988113bb36fbe076a9b159f1e4f39f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/species/Human/Female/character_textures/skin.png b/game/modules/species/Human/Female/character_textures/skin.png new file mode 100644 index 0000000..5a3e37c Binary files /dev/null and b/game/modules/species/Human/Female/character_textures/skin.png differ diff --git a/game/modules/species/Human/Female/character_textures/skin.png.import b/game/modules/species/Human/Female/character_textures/skin.png.import new file mode 100644 index 0000000..637fd87 --- /dev/null +++ b/game/modules/species/Human/Female/character_textures/skin.png.import @@ -0,0 +1,15 @@ +[remap] + +importer="packer_image_resource" +type="PackerImageResource" +path="res://.import/skin.png-3c676869540ab62d18b83fe2afa84a20.restex" + +[deps] + +source_file="res://modules/species/Human/Female/character_textures/skin.png" +dest_files=[ "res://.import/skin.png-3c676869540ab62d18b83fe2afa84a20.restex" ] + +[params] + +hdr_as_srgb=false +scale=1.0 diff --git a/game/modules/species/Human/Female/character_textures/skin_v3.png b/game/modules/species/Human/Female/character_textures/skin_v3.png new file mode 100644 index 0000000..85d4397 Binary files /dev/null and b/game/modules/species/Human/Female/character_textures/skin_v3.png differ diff --git a/game/modules/species/Human/Female/character_textures/skin_v3.png.import b/game/modules/species/Human/Female/character_textures/skin_v3.png.import new file mode 100644 index 0000000..197e760 --- /dev/null +++ b/game/modules/species/Human/Female/character_textures/skin_v3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/skin_v3.png-903579bb8157003ac1ae4cca5e36e648.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/species/Human/Female/character_textures/skin_v3.png" +dest_files=[ "res://.import/skin_v3.png-903579bb8157003ac1ae4cca5e36e648.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/species/Human/Female/head.tres b/game/modules/species/Human/Female/head.tres new file mode 100644 index 0000000..fadd799 --- /dev/null +++ b/game/modules/species/Human/Female/head.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_models/huf_head.gltf" type="MeshDataResource" id=1] +[ext_resource path="res://modules/species/Human/Female/character_textures/head_v3.png" type="Texture" id=2] + +[resource] +entity_type = 1 +bone = 6 +group = 1 +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 2 ) diff --git a/game/modules/species/Human/Female/left_calf.tres b/game/modules/species/Human/Female/left_calf.tres new file mode 100644 index 0000000..0866720 --- /dev/null +++ b/game/modules/species/Human/Female/left_calf.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_models/huf_calf_left.gltf" type="MeshDataResource" id=1] +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png" type="Texture" id=2] + +[resource] +entity_type = 1 +bone = 24 +group = 1 +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 2 ) diff --git a/game/modules/species/Human/Female/left_fingers_base.tres b/game/modules/species/Human/Female/left_fingers_base.tres new file mode 100644 index 0000000..482e832 --- /dev/null +++ b/game/modules/species/Human/Female/left_fingers_base.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_models/huf_fingers.gltf" type="MeshDataResource" id=1] +[ext_resource path="res://modules/species/Human/Female/character_textures/skin_v3.png" type="Texture" id=2] + +[resource] +entity_type = 1 +bone = 11 +group = 1 +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 2 ) diff --git a/game/modules/species/Human/Female/left_fingers_end.tres b/game/modules/species/Human/Female/left_fingers_end.tres new file mode 100644 index 0000000..4ed241c --- /dev/null +++ b/game/modules/species/Human/Female/left_fingers_end.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_models/huf_fingers.gltf" type="MeshDataResource" id=1] +[ext_resource path="res://modules/species/Human/Female/character_textures/skin_v3.png" type="Texture" id=2] + +[resource] +entity_type = 1 +bone = 14 +group = 1 +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 2 ) diff --git a/game/modules/species/Human/Female/left_foot.tres b/game/modules/species/Human/Female/left_foot.tres new file mode 100644 index 0000000..086f97b --- /dev/null +++ b/game/modules/species/Human/Female/left_foot.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_models/huf_foot_left.gltf" type="MeshDataResource" id=1] +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png" type="Texture" id=2] + +[resource] +entity_type = 1 +bone = 25 +group = 1 +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 2 ) diff --git a/game/modules/species/Human/Female/left_forearm.tres b/game/modules/species/Human/Female/left_forearm.tres new file mode 100644 index 0000000..cfccd85 --- /dev/null +++ b/game/modules/species/Human/Female/left_forearm.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_models/huf_forearm.gltf" type="MeshDataResource" id=1] +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png" type="Texture" id=2] + +[resource] +entity_type = 1 +bone = 9 +group = 1 +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 2 ) diff --git a/game/modules/species/Human/Female/left_hand.tres b/game/modules/species/Human/Female/left_hand.tres new file mode 100644 index 0000000..1519531 --- /dev/null +++ b/game/modules/species/Human/Female/left_hand.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf_v3.png" type="Texture" id=1] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_handl.gltf" type="MeshDataResource" id=2] + +[resource] +entity_type = 1 +bone = 10 +group = 1 +entry_0/mesh = ExtResource( 2 ) +entry_0/texture = ExtResource( 1 ) diff --git a/game/modules/species/Human/Female/left_thigh.tres b/game/modules/species/Human/Female/left_thigh.tres new file mode 100644 index 0000000..899728e --- /dev/null +++ b/game/modules/species/Human/Female/left_thigh.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_models/huf_thigh_left.gltf" type="MeshDataResource" id=1] +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png" type="Texture" id=2] + +[resource] +entity_type = 1 +bone = 23 +group = 1 +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 2 ) diff --git a/game/modules/species/Human/Female/left_thumb_end.tres b/game/modules/species/Human/Female/left_thumb_end.tres new file mode 100644 index 0000000..1c1d948 --- /dev/null +++ b/game/modules/species/Human/Female/left_thumb_end.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_textures/skin_v3.png" type="Texture" id=1] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_finger.gltf" type="MeshDataResource" id=2] + +[resource] +entity_type = 1 +bone = 12 +group = 1 +entry_0/mesh = ExtResource( 2 ) +entry_0/texture = ExtResource( 1 ) diff --git a/game/modules/species/Human/Female/left_thunm_base.tres b/game/modules/species/Human/Female/left_thunm_base.tres new file mode 100644 index 0000000..eb3c062 --- /dev/null +++ b/game/modules/species/Human/Female/left_thunm_base.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_textures/skin_v3.png" type="Texture" id=1] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_finger.gltf" type="MeshDataResource" id=2] + +[resource] +entity_type = 1 +bone = 11 +group = 1 +entry_0/mesh = ExtResource( 2 ) +entry_0/texture = ExtResource( 1 ) diff --git a/game/modules/species/Human/Female/left_upper_arm.tres b/game/modules/species/Human/Female/left_upper_arm.tres new file mode 100644 index 0000000..d385990 --- /dev/null +++ b/game/modules/species/Human/Female/left_upper_arm.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_models/huf_upperarm.gltf" type="MeshDataResource" id=1] +[ext_resource path="res://modules/species/Human/Female/character_textures/skin_v3.png" type="Texture" id=2] + +[resource] +entity_type = 1 +bone = 8 +group = 1 +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 2 ) diff --git a/game/modules/species/Human/Female/neck.tres b/game/modules/species/Human/Female/neck.tres new file mode 100644 index 0000000..cd23c07 --- /dev/null +++ b/game/modules/species/Human/Female/neck.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf_v3.png" type="Texture" id=1] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_neck.gltf" type="MeshDataResource" id=2] + +[resource] +entity_type = 1 +bone = 5 +group = 1 +entry_0/mesh = ExtResource( 2 ) +entry_0/texture = ExtResource( 1 ) diff --git a/game/modules/species/Human/Female/pelvis.tres b/game/modules/species/Human/Female/pelvis.tres new file mode 100644 index 0000000..71997b0 --- /dev/null +++ b/game/modules/species/Human/Female/pelvis.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png" type="Texture" id=1] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_pelvis.gltf" type="MeshDataResource" id=2] + +[resource] +entity_type = 1 +bone = 1 +group = 1 +entry_0/mesh = ExtResource( 2 ) +entry_0/texture = ExtResource( 1 ) diff --git a/game/modules/species/Human/Female/right_calf.tres b/game/modules/species/Human/Female/right_calf.tres new file mode 100644 index 0000000..1ff15a9 --- /dev/null +++ b/game/modules/species/Human/Female/right_calf.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png" type="Texture" id=1] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_calf_left.gltf" type="MeshDataResource" id=2] + +[resource] +entity_type = 1 +bone = 27 +group = 1 +entry_0/mesh = ExtResource( 2 ) +entry_0/texture = ExtResource( 1 ) diff --git a/game/modules/species/Human/Female/right_fingers_base.tres b/game/modules/species/Human/Female/right_fingers_base.tres new file mode 100644 index 0000000..85f396c --- /dev/null +++ b/game/modules/species/Human/Female/right_fingers_base.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_models/huf_fingers.gltf" type="MeshDataResource" id=1] +[ext_resource path="res://modules/species/Human/Female/character_textures/skin_v3.png" type="Texture" id=2] + +[resource] +entity_type = 1 +bone = 13 +group = 1 +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 2 ) diff --git a/game/modules/species/Human/Female/right_fingers_end.tres b/game/modules/species/Human/Female/right_fingers_end.tres new file mode 100644 index 0000000..f9cefb5 --- /dev/null +++ b/game/modules/species/Human/Female/right_fingers_end.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_models/huf_fingers.gltf" type="MeshDataResource" id=1] +[ext_resource path="res://modules/species/Human/Female/character_textures/skin_v3.png" type="Texture" id=2] + +[resource] +entity_type = 1 +bone = 22 +group = 1 +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 2 ) diff --git a/game/modules/species/Human/Female/right_foot.tres b/game/modules/species/Human/Female/right_foot.tres new file mode 100644 index 0000000..b07b7f4 --- /dev/null +++ b/game/modules/species/Human/Female/right_foot.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png" type="Texture" id=1] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_foot_left.gltf" type="MeshDataResource" id=2] + +[resource] +entity_type = 1 +bone = 28 +group = 1 +entry_0/mesh = ExtResource( 2 ) +entry_0/texture = ExtResource( 1 ) diff --git a/game/modules/species/Human/Female/right_forearm.tres b/game/modules/species/Human/Female/right_forearm.tres new file mode 100644 index 0000000..7f84602 --- /dev/null +++ b/game/modules/species/Human/Female/right_forearm.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_models/huf_forearm.gltf" type="MeshDataResource" id=1] +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png" type="Texture" id=2] + +[resource] +entity_type = 1 +bone = 17 +group = 1 +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 2 ) diff --git a/game/modules/species/Human/Female/right_hand.tres b/game/modules/species/Human/Female/right_hand.tres new file mode 100644 index 0000000..0bd0f73 --- /dev/null +++ b/game/modules/species/Human/Female/right_hand.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf_v3.png" type="Texture" id=1] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_hand.gltf" type="MeshDataResource" id=2] + +[resource] +entity_type = 1 +bone = 18 +group = 1 +entry_0/mesh = ExtResource( 2 ) +entry_0/texture = ExtResource( 1 ) diff --git a/game/modules/species/Human/Female/right_thigh.tres b/game/modules/species/Human/Female/right_thigh.tres new file mode 100644 index 0000000..0e26de8 --- /dev/null +++ b/game/modules/species/Human/Female/right_thigh.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_models/huf_thigh_right.gltf" type="MeshDataResource" id=1] +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_simple_v3.png" type="Texture" id=2] + +[resource] +entity_type = 1 +bone = 26 +group = 1 +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 2 ) diff --git a/game/modules/species/Human/Female/right_thumb_base.tres b/game/modules/species/Human/Female/right_thumb_base.tres new file mode 100644 index 0000000..898199f --- /dev/null +++ b/game/modules/species/Human/Female/right_thumb_base.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_textures/skin_v3.png" type="Texture" id=1] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_finger.gltf" type="MeshDataResource" id=2] + +[resource] +entity_type = 1 +bone = 19 +group = 1 +entry_0/mesh = ExtResource( 2 ) +entry_0/texture = ExtResource( 1 ) diff --git a/game/modules/species/Human/Female/right_thumb_end.tres b/game/modules/species/Human/Female/right_thumb_end.tres new file mode 100644 index 0000000..267d898 --- /dev/null +++ b/game/modules/species/Human/Female/right_thumb_end.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_textures/skin_v3.png" type="Texture" id=1] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_finger.gltf" type="MeshDataResource" id=2] + +[resource] +entity_type = 1 +bone = 20 +group = 1 +entry_0/mesh = ExtResource( 2 ) +entry_0/texture = ExtResource( 1 ) diff --git a/game/modules/species/Human/Female/right_upper_arm.tres b/game/modules/species/Human/Female/right_upper_arm.tres new file mode 100644 index 0000000..8364a92 --- /dev/null +++ b/game/modules/species/Human/Female/right_upper_arm.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_models/huf_upperarm.gltf" type="MeshDataResource" id=1] +[ext_resource path="res://modules/species/Human/Female/character_textures/skin_v3.png" type="Texture" id=2] + +[resource] +entity_type = 1 +bone = 16 +group = 1 +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 2 ) diff --git a/game/modules/species/Human/Female/spine_1.tres b/game/modules/species/Human/Female/spine_1.tres new file mode 100644 index 0000000..fa7badb --- /dev/null +++ b/game/modules/species/Human/Female/spine_1.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf_v3.png" type="Texture" id=1] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_spine1.gltf" type="MeshDataResource" id=2] + +[resource] +entity_type = 1 +bone = 3 +group = 1 +entry_0/mesh = ExtResource( 2 ) +entry_0/texture = ExtResource( 1 ) diff --git a/game/modules/species/Human/Female/spine_2.tres b/game/modules/species/Human/Female/spine_2.tres new file mode 100644 index 0000000..adb30e6 --- /dev/null +++ b/game/modules/species/Human/Female/spine_2.tres @@ -0,0 +1,11 @@ +[gd_resource type="ModelVisualEntry" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf_v3.png" type="Texture" id=1] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_spine2.gltf" type="MeshDataResource" id=2] + +[resource] +entity_type = 1 +bone = 4 +group = 1 +entry_0/mesh = ExtResource( 2 ) +entry_0/texture = ExtResource( 1 ) diff --git a/game/modules/species/Human/models/HumanFemale.tres b/game/modules/species/Human/models/HumanFemale.tres new file mode 100644 index 0000000..45935fe --- /dev/null +++ b/game/modules/species/Human/models/HumanFemale.tres @@ -0,0 +1,9 @@ +[gd_resource type="SpeciesModelData" load_steps=2 format=2] + +[ext_resource path="res://modules/species/Human/models/HumanFemale.tscn" type="PackedScene" id=1] + +[resource] +resource_name = "Human Female" +id = 1 +text_name = "Human Female" +body = ExtResource( 1 ) diff --git a/game/modules/species/Human/models/HumanFemale.tscn b/game/modules/species/Human/models/HumanFemale.tscn new file mode 100644 index 0000000..80f7c4e --- /dev/null +++ b/game/modules/species/Human/models/HumanFemale.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://player/3DBody.gd" type="Script" id=1] +[ext_resource path="res://modules/species/Human/models/armature_huf.tscn" type="PackedScene" id=2] + +[sub_resource type="CapsuleShape" id=1] +radius = 0.266582 +height = 0.927641 + +[node name="HumanFemale" type="KinematicBody"] +collision_layer = 2147483650 +collision_mask = 3 +script = ExtResource( 1 ) +max_visible_distance = 70.0 +character_skeleton_path = NodePath("Rotation_Helper/Model/character2") + +[node name="Body_CollisionShape" type="CollisionShape" parent="."] +transform = Transform( 1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0.73, 0 ) +shape = SubResource( 1 ) + +[node name="Contact" type="RayCast" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.209, 0 ) +enabled = true +cast_to = Vector3( 0, -0.4, 0 ) + +[node name="Rotation_Helper" type="Spatial" parent="."] +transform = Transform( -1, 0, -3.25841e-07, 0, 1, 0, 3.25841e-07, 0, -1, 0, 0, 0 ) + +[node name="Model" type="Spatial" parent="Rotation_Helper"] + +[node name="character2" parent="Rotation_Helper/Model" instance=ExtResource( 2 )] diff --git a/game/modules/species/Human/models/Material_003.material b/game/modules/species/Human/models/Material_003.material new file mode 100644 index 0000000..6f8a628 Binary files /dev/null and b/game/modules/species/Human/models/Material_003.material differ diff --git a/game/modules/species/Human/models/animations.tres b/game/modules/species/Human/models/animations.tres new file mode 100644 index 0000000..9a01942 --- /dev/null +++ b/game/modules/species/Human/models/animations.tres @@ -0,0 +1,208 @@ +[gd_resource type="Animation" format=2] + +[resource] +resource_name = "animations" +length = 2.43333 +tracks/0/type = "transform" +tracks/0/path = NodePath("Armature/Skeleton:left_foot") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = true +tracks/0/enabled = true +tracks/0/keys = PoolRealArray( 0, 1, 0, 0, 0, -8.27181e-25, 9.31323e-10, 9.31323e-09, 1, 1, 1, 1, 0.0333333, 1, 0, 0, 0, 0.00343017, -0.0009075, -0.000203508, 0.999994, 1, 1, 1, 0.0666667, 1, 0, 0, 0, 0.0137639, -0.00364488, -0.000829325, 0.999898, 1, 1, 1, 0.1, 1, 0, 0, 0, 0.0305917, -0.00811064, -0.00187834, 0.999497, 1, 1, 1, 0.133333, 1, -2.98023e-08, 0, 0, 0.052627, -0.0139733, -0.00330634, 0.998511, 1, 1, 1, 0.166667, 1, -1.49012e-08, 0, 0, 0.0775839, -0.0206374, -0.0050122, 0.99676, 1, 1, 1, 0.2, 1, -1.30385e-08, 1.49012e-08, 0, 0.102487, -0.0273235, -0.00684768, 0.994335, 1, 1, 1, 0.233333, 1, -3.72529e-09, -2.98023e-08, 0, 0.124383, -0.0332547, -0.00865239, 0.991639, 1, 1, 1, 0.266667, 1, -3.35276e-08, -2.23517e-08, 0, 0.141047, -0.0378414, -0.0102933, 0.989226, 1, 1, 1, 0.3, 1, 9.31323e-09, -6.70552e-08, -2.98023e-08, 0.151251, -0.0407562, -0.0116855, 0.987586, 1, 1, 1, 0.333333, 1, 3.72529e-09, 2.98023e-08, 0, 0.154628, -0.0418966, -0.0127897, 0.987001, 1, 1, 1, 0.366667, 1, -2.98023e-08, 0, 0, 0.15438, -0.0420987, -0.0137037, 0.987019, 1, 1, 1, 0.4, 1, -3.72529e-09, -2.98023e-08, 0, 0.153713, -0.0422026, -0.0145396, 0.987107, 1, 1, 1, 0.433333, 1, 1.49012e-08, 0, 0, 0.152704, -0.0422286, -0.0153033, 0.987251, 1, 1, 1, 0.466667, 1, -1.86265e-08, -2.98023e-08, 0, 0.15142, -0.042195, -0.0159985, 0.987439, 1, 1, 1, 0.5, 1, -3.72529e-09, -2.98023e-08, 0, 0.149926, -0.0421199, -0.0166263, 0.98766, 1, 1, 1, 0.533333, 1, 2.98023e-08, 0, 0, 0.14829, -0.0420228, -0.0171856, 0.987901, 1, 1, 1, 0.566667, 1, 1.11759e-08, -2.98023e-08, 0, 0.146592, -0.0419281, -0.0176714, 0.98815, 1, 1, 1, 0.6, 1, 2.98023e-08, 0, 0, 0.144944, -0.0418708, -0.018073, 0.988388, 1, 1, 1, 0.633333, 1, 1.86265e-08, 2.98023e-08, 0, 0.143539, -0.041912, -0.0183674, 0.988586, 1, 1, 1, 0.666667, 1, -1.49012e-08, 0, 0, 0.142824, -0.0421959, -0.0184955, 0.988675, 1, 1, 1, 0.7, 1, 3.72529e-09, 2.98023e-08, 0, 0.143077, -0.0587755, 0.0139271, 0.987867, 1, 1, 1, 0.733333, 1, 2.98023e-08, 0, 0, 0.150904, -0.0408101, 0.0352745, 0.987076, 1, 1, 1, 0.766667, 1, 0, 0, 0, 0.163206, -0.00241101, 0.054735, 0.98507, 1, 1, 1, 0.8, 1, 1.49012e-08, -1.49012e-08, 0, 0.176707, 0.0438684, 0.072158, 0.980634, 1, 1, 1, 0.833333, 1, -9.31323e-09, 7.45058e-09, -2.98023e-08, 0.189751, 0.0914757, 0.0872972, 0.973656, 1, 1, 1, 0.866667, 1, -2.98023e-08, 0, 5.96046e-08, 0.201367, 0.13612, 0.0999394, 0.96485, 1, 1, 1, 0.9, 1, 9.31323e-09, -7.45058e-09, 1.19209e-07, 0.210972, 0.174705, 0.109944, 0.955448, 1, 1, 1, 0.933333, 1, 1.11759e-08, 0, 0, 0.218202, 0.204844, 0.117227, 0.946935, 1, 1, 1, 0.966667, 1, 9.31323e-09, 1.49012e-08, 0, 0.222784, 0.224494, 0.121713, 0.940827, 1, 1, 1, 1, 1, 9.31323e-09, -7.45058e-09, 5.96046e-08, 0.224406, 0.231571, 0.123262, 0.938522, 1, 1, 1, 1.03333, 1, 3.72529e-09, 0, 0, 0.220889, 0.22721, 0.120027, 0.940839, 1, 1, 1, 1.06667, 1, -3.72529e-09, 0, -5.96046e-08, 0.211006, 0.215085, 0.111003, 0.947045, 1, 1, 1, 1.1, 1, 7.45058e-09, -7.45058e-09, 5.96046e-08, 0.195529, 0.196363, 0.0970251, 0.955927, 1, 1, 1, 1.13333, 1, 3.72529e-09, -7.45058e-09, 5.96046e-08, 0.175074, 0.172048, 0.0788044, 0.966198, 1, 1, 1, 1.16667, 1, 0, 0, -5.96046e-08, 0.150256, 0.143182, 0.0570673, 0.976558, 1, 1, 1, 1.2, 1, 0, 0, 0, 0.12181, 0.111023, 0.0326687, 0.985783, 1, 1, 1, 1.23333, 1, 1.86265e-09, 0, -2.98023e-08, 0.0907129, 0.0772373, 0.00670401, 0.992855, 1, 1, 1, 1.26667, 1, 0, 0, 0, 0.0583223, 0.0441863, -0.0193318, 0.997132, 1, 1, 1, 1.3, 1, 0, 0, 0, 0.0267049, 0.0156817, -0.0431374, 0.998589, 1, 1, 1, 1.33333, 1, 7.45058e-09, 0, 0, -6.42597e-07, -1.35898e-07, -0.059918, 0.998203, 1, 1, 1, 1.36667, 1, 0, -7.45058e-09, 0, -0.0212136, -0.000454444, -0.0637177, 0.997742, 1, 1, 1, 1.4, 1, -1.49012e-08, -7.45058e-09, 0, -0.0104488, 0.00225355, -0.0724983, 0.997311, 1, 1, 1, 1.43333, 1, -5.58794e-09, 1.49012e-08, 0, 0.0108745, 0.00788696, -0.0810883, 0.996616, 1, 1, 1, 1.46667, 1, -3.72529e-09, -2.98023e-08, 0, 0.036648, 0.0151064, -0.0903308, 0.995123, 1, 1, 1, 1.5, 1, 0, 0, 0, 0.0645162, 0.0234685, -0.100678, 0.992548, 1, 1, 1, 1.53333, 1, 5.58794e-09, 0, 0, 0.0930232, 0.0327875, -0.11258, 0.988735, 1, 1, 1, 1.56667, 1, -7.45058e-09, -2.98023e-08, 0, 0.120913, 0.0430117, -0.126649, 0.983611, 1, 1, 1, 1.6, 1, -2.04891e-08, -5.96046e-08, 2.98023e-08, 0.14672, 0.0542184, -0.143898, 0.977153, 1, 1, 1, 1.63333, 1, 2.23517e-08, 0, 0, 0.16807, 0.0667147, -0.166376, 0.96934, 1, 1, 1, 1.66667, 1, -5.58794e-09, -5.96046e-08, -5.96046e-08, 0.178851, 0.0815545, -0.19994, 0.959888, 1, 1, 1, 1.7, 1, -5.58794e-09, -5.96046e-08, 2.98023e-08, -0.0200914, 0.118122, -0.275997, 0.953661, 1, 1, 1, 1.73333, 1, -5.58794e-09, 0, 2.98023e-08, 0.210636, -0.201293, -0.264237, 0.919398, 1, 1, 1, 1.76667, 1, 3.72529e-09, 0, 0, -0.134982, -0.0112252, -0.191691, 0.972064, 1, 1, 1, 1.8, 1, -3.72529e-09, -2.98023e-08, 0, -0.134982, -0.0112251, -0.191691, 0.972064, 1, 1, 1, 1.83333, 1, -5.58794e-09, 0, -2.98023e-08, -0.134982, -0.0112252, -0.191691, 0.972064, 1, 1, 1, 1.86667, 1, 0, 0, 0, -0.134982, -0.0112251, -0.191691, 0.972064, 1, 1, 1, 1.9, 1, 1.30385e-08, 2.98023e-08, 5.96046e-08, -0.134982, -0.0112252, -0.191691, 0.972064, 1, 1, 1, 1.93333, 1, 1.86265e-09, 0, 0, -0.134982, -0.0112252, -0.191691, 0.972064, 1, 1, 1, 1.96667, 1, 0, 0, 0, -0.134982, -0.0112252, -0.191691, 0.972064, 1, 1, 1, 2, 1, -1.11759e-08, -2.98023e-08, -2.98023e-08, -0.134982, -0.0112252, -0.191691, 0.972064, 1, 1, 1, 2.03333, 1, -1.49012e-08, 0, 0, 0.178851, 0.0815545, -0.19994, 0.959888, 1, 1, 1, 2.06667, 1, 0, 0, 0, -0.0335036, 0.141182, -0.185004, 0.971966, 1, 1, 1, 2.1, 1, 1.86265e-09, 0, -2.98023e-08, 0.210636, -0.201293, -0.264237, 0.919398, 1, 1, 1, 2.13333, 1, 1.86265e-09, 7.45058e-09, 2.98023e-08, 0.189322, -0.193141, -0.261645, 0.926497, 1, 1, 1, 2.16667, 1, -1.49012e-08, -1.49012e-08, -2.98023e-08, 0.139893, -0.175274, -0.253805, 0.9409, 1, 1, 1, 2.2, 1, 1.67638e-08, 1.49012e-08, 0, 0.0746955, -0.154281, -0.240719, 0.955339, 1, 1, 1, 2.23333, 1, -1.49012e-08, -7.45058e-09, -2.98023e-08, 0.0028236, -0.134744, -0.224467, 0.965117, 1, 1, 1, 2.26667, 1, 7.45058e-09, 7.45058e-09, 0, -0.0646335, -0.111374, -0.209176, 0.969363, 1, 1, 1, 2.3, 1, 9.31323e-09, 1.49012e-08, 0, -0.11488, -0.0684401, -0.197079, 0.971225, 1, 1, 1, 2.33333, 1, -3.72529e-09, 0, 0, -0.134982, -0.0112252, -0.191691, 0.972064, 1, 1, 1, 2.36667, 1, -2.04891e-08, -5.21541e-08, -1.19209e-07, 0.178851, 0.0815544, -0.19994, 0.959888, 1, 1, 1, 2.4, 1, 0, 0, 0, 0.0207542, 0.10502, 0.0943506, 0.989767, 1, 1, 1, 2.43333, 1, 0, -2.23517e-08, -2.98023e-08, 0.210636, -0.201293, -0.264237, 0.919398, 1, 1, 1 ) +tracks/1/type = "transform" +tracks/1/path = NodePath("Armature/Skeleton:left_calf") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = true +tracks/1/enabled = true +tracks/1/keys = PoolRealArray( 0, 1, 0, 2.98023e-08, 0, -9.31323e-10, -1.39698e-09, 3.82715e-09, 1, 1, 1, 1, 0.0333333, 1, 1.49012e-08, 0, 0, 0.00613105, -0.00425805, 0.00152914, 0.999971, 1, 1, 1, 0.0666667, 1, 4.65661e-10, -2.98023e-08, 9.31323e-10, 0.0246773, -0.0171896, 0.00615474, 0.999529, 1, 1, 1, 0.1, 1, -1.49012e-08, 2.98023e-08, 0, 0.0550744, -0.0385045, 0.0137361, 0.997645, 1, 1, 1, 0.133333, 1, -1.49012e-08, 0, 0, 0.0950929, -0.0667857, 0.0237171, 0.992942, 1, 1, 1, 0.166667, 1, 3.0268e-08, -2.98023e-08, 1.49012e-08, 0.140426, -0.0991815, 0.0350237, 0.984488, 1, 1, 1, 0.2, 1, 0, -5.96046e-08, 1.49012e-08, 0.185311, -0.131799, 0.0462187, 0.972704, 1, 1, 0.999999, 0.233333, 1, 0, 0, -2.98023e-08, 0.224183, -0.160821, 0.0559138, 0.959558, 1, 1, 0.999999, 0.266667, 1, 3.0268e-08, -2.98023e-08, 0, 0.253196, -0.183565, 0.0631501, 0.947738, 0.999999, 1, 0.999998, 0.3, 1, 2.98023e-08, 2.98023e-08, 5.96046e-08, 0.270605, -0.198773, 0.0674923, 0.939525, 0.999999, 1, 0.999998, 0.333333, 1, 4.65661e-10, 5.96046e-08, -2.98023e-08, 0.276175, -0.206227, 0.0688815, 0.936191, 0.999999, 1, 0.999998, 0.366667, 1, 3.0268e-08, -2.98023e-08, 0, 0.275653, -0.209576, 0.0683675, 0.935638, 0.999999, 1, 0.999998, 0.4, 1, 6.00703e-08, 2.98023e-08, -9.31323e-10, 0.274598, -0.212377, 0.0670478, 0.935412, 0.999999, 1, 0.999998, 0.433333, 1, 3.0268e-08, 0, 0, 0.273111, -0.214702, 0.0650712, 0.935457, 0.999999, 1, 0.999998, 0.466667, 1, 4.65661e-10, 0, 0, 0.271277, -0.216603, 0.0625684, 0.935723, 0.999999, 1, 0.999998, 0.5, 1, -2.98023e-08, 0, 2.98023e-08, 0.26918, -0.218125, 0.0596632, 0.936165, 0.999999, 1, 0.999998, 0.533333, 1, -2.98023e-08, 0, 0, 0.266908, -0.219302, 0.0564861, 0.936737, 0.999999, 1, 0.999998, 0.566667, 1, 0, 2.98023e-08, -2.98023e-08, 0.264568, -0.220161, 0.0531936, 0.937392, 0.999999, 1, 0.999999, 0.6, 1, 4.65661e-10, 0, 0, 0.262313, -0.22073, 0.0500052, 0.938067, 0.999999, 1, 0.999999, 0.633333, 1, 3.0268e-08, 0, 0, 0.260404, -0.221034, 0.0472984, 0.938667, 0.999999, 1, 0.999999, 0.666667, 1, -2.98023e-08, 2.98023e-08, 0, 0.259459, -0.221116, 0.0459543, 0.938977, 0.999999, 1, 0.999998, 0.7, 1, 3.0268e-08, 0, 0, 0.349311, -0.18365, 0.0690428, 0.916235, 0.999999, 1, 0.999997, 0.733333, 1, -2.93367e-08, -2.98023e-08, 0, 0.339459, -0.155258, 0.0686629, 0.925175, 0.999999, 1, 0.999997, 0.766667, 1, -2.98023e-08, -2.98023e-08, 7.45058e-09, 0.316119, -0.126872, 0.0672728, 0.937788, 1, 1, 0.999997, 0.8, 1, 7.45058e-09, 0, 0, 0.286968, -0.099837, 0.0652359, 0.950487, 1, 1, 0.999997, 0.833333, 1, 9.31323e-10, 0, 0, 0.255998, -0.0750301, 0.0627514, 0.961716, 1, 1, 0.999998, 0.866667, 1, 4.65661e-10, 0, -1.49012e-08, 0.225878, -0.0531489, 0.0599676, 0.970854, 1, 1, 0.999998, 0.9, 1, -5.58794e-09, 0, 1.49012e-08, 0.198641, -0.0347889, 0.0570075, 0.977794, 1, 1, 0.999999, 0.933333, 1, 1.86265e-09, 2.98023e-08, 0, 0.175978, -0.0204904, 0.053976, 0.9827, 1, 1, 0.999999, 0.966667, 1, -3.72529e-09, 0, 7.45058e-09, 0.159421, -0.0107914, 0.0509607, 0.985835, 1, 1, 0.999999, 1, 1, 0, 0, 0, 0.1505, -0.00629748, 0.0480323, 0.987422, 1, 1, 0.999999, 1.03333, 1, 4.65661e-10, -5.96046e-08, 0, 0.146334, -0.00491329, 0.0450816, 0.988195, 1, 1, 0.999999, 1.06667, 1, -1.39698e-09, 0, 0, 0.142881, -0.00399582, 0.0419782, 0.988841, 1, 1, 0.999999, 1.1, 1, -6.0536e-09, -2.98023e-08, 0, 0.140049, -0.0034445, 0.0387456, 0.98938, 1, 1, 0.999999, 1.13333, 1, 3.25963e-09, 0, 1.58325e-08, 0.137767, -0.00316793, 0.0354032, 0.989827, 1, 1, 0.999999, 1.16667, 1, -5.58794e-09, 0, 0, 0.135975, -0.00307537, 0.031968, 0.990192, 1, 1, 0.999999, 1.2, 1, 9.31323e-10, 0, 1.49012e-08, 0.134625, -0.00306693, 0.0284567, 0.990483, 1, 1, 1, 1.23333, 1, 6.0536e-09, 0, 0, 0.133674, -0.00301792, 0.024887, 0.990708, 1, 1, 0.999999, 1.26667, 1, 0, 0, 0, 0.133082, -0.00274738, 0.0212815, 0.990873, 1, 1, 0.999999, 1.3, 1, 7.45058e-09, 0, 0, 0.132803, -0.00193737, 0.017676, 0.990983, 1, 1, 1, 1.33333, 1, 0, 5.96046e-08, 0, 0.132753, 0.000161663, 0.0141515, 0.991048, 1, 1, 1, 1.36667, 1, 7.91624e-09, -2.98023e-08, 0, 0.14446, 0.0134386, 0.0106908, 0.989362, 1, 1, 0.999999, 1.4, 1, 7.45058e-09, 2.98023e-08, -7.45058e-09, 0.154219, 0.0131711, 0.0110193, 0.987888, 1, 1, 0.999999, 1.43333, 1, 7.45058e-09, 0, 0, 0.159831, 0.0126303, 0.0125729, 0.986984, 1, 1, 0.999999, 1.46667, 1, 7.91624e-09, -2.98023e-08, 0, 0.165206, 0.0119793, 0.0158276, 0.986059, 1, 1, 0.999999, 1.5, 1, 4.19095e-09, -2.98023e-08, 0, 0.172117, 0.0112787, 0.021213, 0.984784, 1, 1, 0.999999, 1.53333, 1, -9.31323e-09, -2.98023e-08, 0, 0.181993, 0.0105642, 0.0293025, 0.982806, 1, 1, 0.999999, 1.56667, 1, -1.39698e-09, -2.98023e-08, 0, 0.196499, 0.00986433, 0.0409722, 0.979598, 1, 1, 0.999999, 1.6, 1, 1.49012e-08, 2.98023e-08, 0, 0.218127, 0.00921204, 0.0577151, 0.974169, 1, 1, 0.999999, 1.63333, 1, 0, 0, 0, 0.25157, 0.00866008, 0.0825118, 0.964277, 1, 1, 0.999998, 1.66667, 1, 2.28174e-08, -5.96046e-08, 0, 0.309434, 0.00834027, 0.12358, 0.94282, 0.999999, 1, 0.999997, 1.7, 1, 3.0268e-08, 5.96046e-08, 0, 0.858047, 0.020748, 0.432142, 0.276728, 0.999996, 1, 1, 1.73333, 1, 3.0268e-08, -8.9407e-08, -5.86733e-08, 0.656065, 0.000542643, 0.230602, 0.71861, 0.999998, 1.00001, 0.999993, 1.76667, 1, -3.25963e-09, -2.98023e-08, 1.49012e-08, 0.238884, 0.0102898, 0.0826155, 0.967473, 1, 1, 0.999998, 1.8, 1, 4.65661e-10, -2.98023e-08, 0, 0.236259, 0.00736421, 0.0826897, 0.968137, 1, 1, 0.999998, 1.83333, 1, -5.58794e-09, 0, 1.49012e-08, 0.234602, 0.0008448, 0.0829009, 0.96855, 1, 1, 0.999998, 1.86667, 1, 9.31323e-10, 0, 0, 0.233524, -0.00732553, 0.0833539, 0.968744, 1, 1, 0.999998, 1.9, 1, 6.0536e-09, -5.96046e-08, 0, 0.232831, -0.015984, 0.0841542, 0.968737, 1, 1, 0.999998, 1.93333, 1, 4.19095e-09, 2.98023e-08, -1.49012e-08, 0.232408, -0.024149, 0.0854453, 0.968557, 1, 1, 0.999998, 1.96667, 1, -1.21072e-08, -2.98023e-08, 0, 0.232175, -0.0306598, 0.0874622, 0.968248, 1, 1, 0.999998, 2, 1, 3.25963e-09, 0, 0, 0.232061, -0.0335776, 0.0906711, 0.967884, 1, 1, 0.999998, 2.03333, 1, 4.65661e-10, 8.9407e-08, 0, 0.305029, 0.0774751, 0.109436, 0.942857, 0.999999, 1, 0.999998, 2.06667, 1, -1.49012e-08, 2.98023e-08, 5.86733e-08, 0.901453, -0.0146291, 0.325171, 0.285365, 0.999998, 1, 1, 2.1, 1, -2.93367e-08, 2.98023e-08, -5.96046e-08, 0.636888, -0.0033775, 0.278434, 0.718914, 0.999997, 1.00001, 0.999994, 2.13333, 1, 4.65661e-10, -2.98023e-08, 0, 0.512223, 0.0215485, 0.240588, 0.824185, 0.999997, 1.00001, 0.999994, 2.16667, 1, 3.0268e-08, 2.98023e-08, 0, 0.419148, 0.0532471, 0.198108, 0.88444, 0.999998, 1.00001, 0.999996, 2.2, 1, 4.65661e-10, 0, -5.96046e-08, 0.350505, 0.0868249, 0.156421, 0.919315, 0.999998, 1, 0.999997, 2.23333, 1, 4.65661e-10, -2.98023e-08, -5.96046e-08, 0.301038, 0.119422, 0.118177, 0.938695, 0.999999, 1, 0.999998, 2.26667, 1, 0, 0, 0, 0.267278, 0.148568, 0.0854995, 0.948251, 0.999999, 1, 0.999999, 2.3, 1, 7.91624e-09, -2.98023e-08, 0, 0.247231, 0.17107, 0.0612373, 0.951768, 0.999999, 1, 0.999999, 2.33333, 1, -3.72529e-09, 2.98023e-08, 1.49012e-08, 0.240357, 0.181008, 0.0508785, 0.9523, 0.999999, 1, 0.999999, 2.36667, 1, 1.86265e-09, 5.96046e-08, 0, 0.279531, 0.158266, 0.121141, 0.939223, 0.999998, 1, 0.999999, 2.4, 1, 4.65661e-10, -2.98023e-08, 0, 0.955536, -0.0771406, -0.0142352, 0.28425, 1, 1, 0.999998, 2.43333, 1, 0, 5.96046e-08, 0, 0.671528, 0.0670482, 0.174793, 0.71694, 0.999998, 1.00001, 0.999993 ) +tracks/2/type = "transform" +tracks/2/path = NodePath("Armature/Skeleton:left_thigh") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = true +tracks/2/enabled = true +tracks/2/keys = PoolRealArray( 0, 1, 7.45058e-09, 6.14673e-08, 4.65661e-10, -4.65661e-10, 6.66784e-18, -7.15954e-09, 1, 1, 1, 1, 0.0333333, 1, -7.45058e-09, 5.96046e-08, -1.39698e-09, -0.00653474, 0.00176811, -0.00419047, 0.999968, 1, 1, 1, 0.0666667, 1, 0, 6.0536e-08, 4.65661e-10, -0.0263081, 0.0071206, -0.0169627, 0.999485, 1, 1, 1, 0.1, 1, 0, 6.0536e-08, -1.39698e-09, -0.0587178, 0.015897, -0.0376847, 0.997436, 0.999999, 1, 1, 0.133333, 1, 0, 0, 0, -0.101381, 0.0274429, -0.0650277, 0.992341, 0.999999, 1, 1, 0.166667, 1, 7.45058e-09, 6.14673e-08, 4.65661e-10, -0.149679, 0.0405117, -0.0959935, 0.98323, 0.999997, 1, 1, 0.2, 1, 7.45058e-09, 5.96046e-08, -2.79397e-09, -0.197446, 0.0534364, -0.126622, 0.970632, 0.999995, 1, 1, 0.233333, 1, -7.45058e-09, 0, -1.39698e-09, -0.238773, 0.0646181, -0.153123, 0.956747, 0.999994, 1, 1, 0.266667, 1, 1.49012e-08, 0, -4.65661e-10, -0.26963, 0.0729671, -0.17291, 0.944499, 0.999992, 1, 1, 0.3, 1, 7.45058e-09, -1.19209e-07, -1.86265e-09, -0.288227, 0.077999, -0.184836, 0.93631, 0.999991, 1, 1.00001, 0.333333, 1, -1.49012e-08, -5.96046e-08, 9.31323e-10, -0.294337, 0.0796518, -0.188754, 0.933485, 0.99999, 1, 1.00001, 0.366667, 1, -1.49012e-08, -5.96046e-08, 9.31323e-10, -0.294117, 0.079155, -0.188353, 0.933677, 0.99999, 1, 1.00001, 0.4, 1, -1.49012e-08, -5.96046e-08, 9.31323e-10, -0.293511, 0.0777833, -0.187249, 0.934205, 0.99999, 1, 1.00001, 0.433333, 1, -1.49012e-08, -5.96046e-08, 9.31323e-10, -0.292588, 0.0756933, -0.18557, 0.935001, 0.999991, 1, 1.00001, 0.466667, 1, -1.49012e-08, -5.96046e-08, 9.31323e-10, -0.291408, 0.0730213, -0.183429, 0.936004, 0.999991, 1, 1.00001, 0.5, 1, -1.49012e-08, -5.96046e-08, 9.31323e-10, -0.29003, 0.0698967, -0.180933, 0.937155, 0.999991, 1, 1.00001, 0.533333, 1, -1.49012e-08, -5.96046e-08, 9.31323e-10, -0.288515, 0.066454, -0.178196, 0.938397, 0.999992, 1, 1, 0.566667, 1, -1.49012e-08, -5.96046e-08, 9.31323e-10, -0.286937, 0.0628523, -0.175353, 0.939664, 0.999992, 1, 1, 0.6, 1, -1.49012e-08, -5.96046e-08, 9.31323e-10, -0.285402, 0.0593117, -0.172596, 0.940871, 0.999992, 1, 1, 0.633333, 1, -1.49012e-08, -5.96046e-08, 9.31323e-10, -0.284096, 0.0562078, -0.170254, 0.941883, 0.999992, 1, 1, 0.666667, 1, -1.49012e-08, -5.96046e-08, 9.31323e-10, -0.28345, 0.0544103, -0.169092, 0.942393, 0.999992, 1, 1, 0.7, 1, -7.45058e-09, -5.96046e-08, 0, -0.340345, 0.0542179, -0.213165, 0.914214, 0.999989, 1.00001, 1.00001, 0.733333, 1, 0, -5.96046e-08, 0, -0.3264, 0.0540302, -0.201697, 0.92188, 0.99999, 1, 1, 0.766667, 1, 0, 0, 0, -0.296354, 0.0540259, -0.177219, 0.936936, 0.999992, 1, 1, 0.8, 1, 7.45058e-09, 0, -1.49012e-08, -0.25923, 0.0538617, -0.147359, 0.952987, 0.999994, 1, 1, 0.833333, 1, 0, 0, 1.49012e-08, -0.219858, 0.0533835, -0.116171, 0.967118, 0.999996, 1, 1, 0.866667, 1, 0, 0, 1.53668e-08, -0.181653, 0.0525311, -0.0864693, 0.978144, 0.999998, 1, 1, 0.9, 1, 0, 0, 4.65661e-10, -0.147311, 0.051296, -0.0604378, 0.985909, 0.999998, 1, 1, 0.933333, 1, 0, 7.45058e-09, 0, -0.119077, 0.0496932, -0.0398693, 0.990839, 0.999999, 1, 1, 0.966667, 1, 0, 1.86265e-09, 0, -0.0989293, 0.0477374, -0.0263492, 0.9936, 1, 1, 1, 1, 1, 7.45058e-09, 9.31323e-10, -7.45058e-09, -0.0888079, 0.0454235, -0.0214596, 0.994781, 1, 1, 1, 1.03333, 1, 0, 1.86265e-09, 4.65661e-10, -0.0847733, 0.042194, -0.0215889, 0.995272, 1, 1, 1, 1.06667, 1, 7.45058e-09, 9.31323e-10, 1.49012e-08, -0.081432, 0.0377031, -0.021945, 0.995724, 1, 1, 1, 1.1, 1, 0, 0, -1.49012e-08, -0.0786937, 0.0322035, -0.0224858, 0.996125, 1, 1, 1, 1.13333, 1, 7.45058e-09, -1.30385e-08, 2.98023e-08, -0.0764868, 0.0259229, -0.0231743, 0.996464, 1, 1, 1, 1.16667, 1, 7.45058e-09, -2.98023e-08, 2.98023e-08, -0.0747524, 0.0190839, -0.0239751, 0.996731, 1, 1, 1, 1.2, 1, 0, 3.1665e-08, 2.98023e-08, -0.073442, 0.011928, -0.0248511, 0.996918, 1, 1, 1, 1.23333, 1, 0, 0, 0, -0.0725135, 0.00475268, -0.0257583, 0.997023, 1, 1, 1, 1.26667, 1, -7.45058e-09, -5.96046e-08, 0, -0.0719302, -0.0020169, -0.0266356, 0.997052, 1, 1, 1, 1.3, 1, -1.49012e-08, -5.96046e-08, 0, -0.0716435, -0.00764096, -0.0273785, 0.997025, 1, 1, 1, 1.33333, 1, -2.23517e-08, -5.86733e-08, 0, -0.0715791, -0.0103855, -0.0277448, 0.996995, 1, 1, 1, 1.36667, 1, -7.45058e-09, 0, 4.65661e-10, -0.0758457, -0.00493236, -0.00448998, 0.997097, 1, 1, 1, 1.4, 1, 0, 6.0536e-08, -1.39698e-09, -0.0611624, 0.0107985, 0.010832, 0.998011, 1, 1, 1, 1.43333, 1, 0, 0, -3.72529e-09, -0.0321322, 0.0304038, 0.0244673, 0.998722, 0.999999, 1, 1, 1.46667, 1, 0, -5.96046e-08, 4.19095e-09, 0.00285745, 0.0514876, 0.0372113, 0.997976, 0.999999, 1, 1, 1.5, 1, 7.45058e-09, -5.86733e-08, 0, 0.0404757, 0.0726559, 0.0488309, 0.995338, 0.999998, 1, 1, 1.53333, 1, 0, 6.0536e-08, 4.65661e-10, 0.0787157, 0.0934044, 0.0595554, 0.990723, 0.999997, 1, 1, 1.56667, 1, -7.45058e-09, -5.96046e-08, 0, 0.115902, 0.113044, 0.0692325, 0.984375, 0.999995, 1, 1, 1.6, 1, 0, 0, 0, 0.15024, 0.130838, 0.0776706, 0.976871, 0.999994, 1, 1.00001, 1.63333, 1, -1.49012e-08, -1.18278e-07, 0, 0.178998, 0.145609, 0.084481, 0.96934, 0.999993, 1, 1.00001, 1.66667, 1, 0, -5.96046e-08, -1.49012e-08, 0.195066, 0.154179, 0.0884729, 0.964547, 0.999992, 1, 1.00001, 1.7, 1, 7.45058e-09, 6.14673e-08, 4.65661e-10, -0.591291, 0.113751, -0.0566138, 0.796386, 0.999996, 0.999996, 1.00001, 1.73333, 1, 0, -5.96046e-08, -1.49012e-08, -0.665555, 0.101236, -0.0839052, 0.734675, 0.999996, 0.999996, 1.00001, 1.76667, 1, 0, -5.96046e-08, 0, -0.0160745, 0.104336, 0.0318206, 0.993903, 0.999997, 1, 1, 1.8, 1, 0, -5.96046e-08, 0, -0.0159291, 0.109981, 0.0319485, 0.993292, 0.999997, 1, 1, 1.83333, 1, 0, -5.96046e-08, 0, -0.015867, 0.116961, 0.0319821, 0.992495, 0.999996, 1, 1, 1.86667, 1, 0, -5.96046e-08, 0, -0.0158448, 0.124357, 0.0319757, 0.991596, 0.999996, 1, 1, 1.9, 1, 0, -5.96046e-08, 0, -0.0158373, 0.131582, 0.0319634, 0.990663, 0.999995, 1, 1, 1.93333, 1, 0, -5.96046e-08, 0, -0.0158242, 0.138097, 0.0319755, 0.989776, 0.999995, 1, 1.00001, 1.96667, 1, 0, -5.96046e-08, 0, -0.0157825, 0.143207, 0.0320501, 0.989048, 0.999995, 1, 1.00001, 2, 1, 0, -5.96046e-08, 0, -0.0156742, 0.145665, 0.0322533, 0.988684, 0.999994, 1, 1.00001, 2.03333, 1, 0, -5.96046e-08, -1.49012e-08, 0.201716, 0.105141, 0.0764393, 0.97078, 0.999996, 1, 1, 2.06667, 1, 7.45058e-09, 6.14673e-08, 4.65661e-10, -0.587635, 0.112615, -0.0467181, 0.799888, 0.999996, 0.999996, 1.00001, 2.1, 1, 0, -5.96046e-08, -1.49012e-08, -0.658973, 0.123171, -0.107705, 0.734155, 0.999994, 0.999996, 1.00001, 2.13333, 1, 0, 1.20141e-07, 0, -0.637528, 0.114784, -0.101717, 0.755008, 0.999994, 0.999996, 1.00001, 2.16667, 1, 0, 0, 1.49012e-08, -0.58413, 0.0957796, -0.0874159, 0.801234, 0.999996, 0.999996, 1.00001, 2.2, 1, 0, 6.0536e-08, 4.65661e-10, -0.505792, 0.0712525, -0.0675819, 0.857047, 0.999998, 0.999997, 1.00001, 2.23333, 1, 7.45058e-09, 9.31323e-10, 1.49012e-08, -0.405954, 0.0446277, -0.0438844, 0.911748, 0.999999, 0.999998, 1, 2.26667, 1, -7.45058e-09, 5.96046e-08, -1.49012e-08, -0.287959, 0.0193055, -0.0178822, 0.957281, 1, 0.999999, 1, 2.3, 1, 7.45058e-09, 0, -1.49012e-08, -0.154797, -0.000725755, 0.0088677, 0.987906, 1, 0.999999, 1, 2.33333, 1, 0, -5.96046e-08, 0, -0.00609114, -0.00958474, 0.0350093, 0.999322, 1, 1, 1, 2.36667, 1, 0, -5.96046e-08, -1.49012e-08, 0.218446, 0.0773216, 0.0654579, 0.970576, 0.999997, 1, 1, 2.4, 1, 7.45058e-09, 6.14673e-08, 4.65661e-10, -0.591551, 0.0503691, -0.00860306, 0.804646, 0.999999, 0.999996, 1, 2.43333, 1, 0, -5.96046e-08, -1.49012e-08, -0.671006, 0.0331387, -0.0207483, 0.74042, 1, 0.999996, 1 ) +tracks/3/type = "transform" +tracks/3/path = NodePath("Armature/Skeleton:right_foot") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = true +tracks/3/enabled = true +tracks/3/keys = PoolRealArray( 0, 1, 1.86265e-09, 0, 0, -1.73472e-17, -9.31323e-10, 3.72529e-09, 1, 1, 1, 1, 0.0333333, 1, 1.49012e-08, 0, 0, -0.00216096, 0.000221934, -0.00197022, 0.999996, 1, 1, 1, 0.0666667, 1, -1.49012e-08, 0, 0, -0.00871023, 0.000926311, -0.00797018, 0.99993, 1, 1, 1, 0.1, 1, 1.49012e-08, 0, 0, -0.0194667, 0.00215705, -0.0178918, 0.999648, 1, 1, 1, 0.133333, 1, -1.49012e-08, 7.45058e-09, 0, -0.0337234, 0.00392151, -0.0311633, 0.998938, 1, 1, 1, 0.166667, 1, -1.30385e-08, 2.23517e-08, 0, -0.0501585, 0.00616968, -0.0466576, 0.997632, 1, 1, 1, 0.2, 1, 0, 7.45058e-09, 0, -0.0669992, 0.00879041, -0.0628229, 0.995734, 1, 1, 1, 0.233333, 1, 6.14673e-08, 7.45058e-09, 0, -0.0824358, 0.0116347, -0.0780431, 0.993468, 1, 1, 1, 0.266667, 1, 0, -2.23517e-08, 0, -0.0950527, 0.014555, -0.0910256, 0.991195, 1, 1, 1, 0.3, 1, 0, 0, 0, -0.104025, 0.0174357, -0.10099, 0.989281, 1, 1, 1, 0.333333, 1, -2.98023e-08, -7.45058e-09, 2.98023e-08, -0.109055, 0.0202023, -0.107624, 0.987986, 1, 1, 1, 0.366667, 1, -2.98023e-08, 7.45058e-09, 0, -0.11185, 0.0231389, -0.112153, 0.987105, 1, 1, 1, 0.4, 1, 3.1665e-08, 1.49012e-08, 0, -0.114168, 0.0264878, -0.115909, 0.986321, 1, 1, 1, 0.433333, 1, 2.98023e-08, -1.49012e-08, 0, -0.116072, 0.0301499, -0.118992, 0.985626, 1, 1, 1, 0.466667, 1, 0, -2.23517e-08, 2.98023e-08, -0.117609, 0.0340326, -0.12148, 0.985014, 1, 1, 1, 0.5, 1, 0, -7.45058e-09, 0, -0.118818, 0.038042, -0.123437, 0.984479, 1, 1, 1, 0.533333, 1, 2.98023e-08, 1.49012e-08, 2.98023e-08, -0.119733, 0.0420719, -0.124917, 0.984017, 1, 1, 1, 0.566667, 1, 1.86265e-09, -7.45058e-09, 0, -0.120381, 0.0459864, -0.125963, 0.98363, 1, 1, 1, 0.6, 1, 0, 7.45058e-09, 0, -0.120788, 0.0495842, -0.12662, 0.98332, 1, 1, 1, 0.633333, 1, 2.98023e-08, 7.45058e-09, 0, -0.120986, 0.0525079, -0.126937, 0.983103, 1, 1, 1, 0.666667, 1, -2.98023e-08, 0, 0, -0.121027, 0.0539092, -0.127002, 0.983014, 1, 1, 1, 0.7, 1, 0, -7.45058e-09, 0, -0.121027, 0.0539092, -0.127002, 0.983014, 1, 1, 1, 0.733333, 1, 0, 2.23517e-08, 2.98023e-08, -0.0955347, 0.0458308, -0.110068, 0.98826, 1, 1, 1, 0.766667, 1, 0, 0, 0, -0.0405909, 0.0283651, -0.0734091, 0.996072, 1, 1, 1, 0.8, 1, 0, -1.49012e-08, -5.96046e-08, 0.0268376, 0.00683137, -0.0281218, 0.999221, 1, 1, 1, 0.833333, 1, 0, 0, 0, 0.0968009, -0.0156275, 0.0192142, 0.994996, 1, 1, 1, 0.866667, 1, 0, -5.96046e-08, 0, 0.162067, -0.0366868, 0.0636965, 0.984038, 1, 1, 1, 0.9, 1, 0, -2.98023e-08, 0, 0.217525, -0.0546669, 0.10175, 0.969196, 1, 1, 1, 0.933333, 1, 0, 0, 0, 0.259867, -0.0684501, 0.13097, 0.95427, 1, 1, 1, 0.966667, 1, 0, 2.98023e-08, 0, 0.286887, -0.0772717, 0.149695, 0.943036, 1, 1, 1, 1, 1, 0, -2.23517e-08, -5.96046e-08, 0.296488, -0.0804118, 0.156365, 0.938711, 1, 1, 1, 1.03333, 1, 1.86265e-09, 0, 2.98023e-08, 0.291874, -0.0790508, 0.153295, 0.940777, 1, 1, 1, 1.06667, 1, 0, 0, 0, 0.278922, -0.0752503, 0.144791, 0.946348, 1, 1, 1, 1.1, 1, 0, 0, 0, 0.258687, -0.0693521, 0.131734, 0.95442, 1, 1, 1, 1.13333, 1, 3.1665e-08, 0, 2.98023e-08, 0.232013, -0.0616397, 0.114888, 0.963935, 1, 1, 1, 1.16667, 1, 1.86265e-09, 7.45058e-09, -2.98023e-08, 0.199702, -0.052392, 0.0950306, 0.973829, 1, 1, 1, 1.2, 1, 0, -7.45058e-09, 2.98023e-08, 0.162661, -0.041928, 0.0730658, 0.983079, 1, 1, 1, 1.23333, 1, 0, -2.23517e-08, 0, 0.122035, -0.0306554, 0.0501624, 0.990783, 1, 1, 1, 1.26667, 1, 0, 7.45058e-09, 0, 0.0793845, -0.0191414, 0.0279792, 0.996267, 1, 1, 1, 1.3, 1, 0, 7.45058e-09, 0, 0.0370977, -0.008286, 0.00924339, 0.999235, 1, 1, 1, 1.33333, 1, -5.58794e-09, 0, 0, -8.32667e-17, -5.58794e-09, 3.72529e-09, 1, 1, 1, 1, 1.36667, 1, 0, -7.45058e-09, 0, -0.0324907, 0.00317484, 0.00643727, 0.999446, 1, 1, 1, 1.4, 1, 1.86265e-09, 0, 0, -0.0212439, 0.00312343, 0.0180181, 0.999607, 1, 1, 1, 1.43333, 1, 1.86265e-09, 0, 0, 0.00106117, 0.00284685, 0.0308842, 0.999518, 1, 1, 1, 1.46667, 1, -7.45058e-09, 0, 0, 0.0280049, 0.00225344, 0.0444742, 0.998615, 1, 1, 1, 1.5, 1, -1.86265e-09, -7.45058e-09, -2.98023e-08, 0.0570923, 0.00126299, 0.0585764, 0.996648, 1, 1, 1, 1.53333, 1, 0, 0, 0, 0.0867731, -0.00022776, 0.073083, 0.993544, 1, 1, 1, 1.56667, 1, 0, -1.49012e-08, 0, 0.115713, -0.00237372, 0.0879507, 0.989378, 1, 1, 1, 1.6, 1, -5.58794e-09, 1.49012e-08, 0, 0.14237, -0.00544073, 0.103215, 0.984402, 1, 1, 1, 1.63333, 1, -1.86265e-09, -1.49012e-08, 0, 0.164272, -0.0099747, 0.119067, 0.979152, 1, 1, 1, 1.66667, 1, 1.86265e-09, -1.49012e-08, 2.98023e-08, 0.175061, -0.0175614, 0.136202, 0.974933, 1, 1, 1, 1.7, 1, 5.58794e-09, 2.23517e-08, -2.98023e-08, -0.0929174, -0.0629028, 0.159407, 0.980816, 1, 1, 1, 1.73333, 1, -7.45058e-09, 0, 5.96046e-08, 0.249522, 0.0419385, 0.194067, 0.947796, 1, 1, 1, 1.76667, 1, 1.49012e-08, -2.98023e-08, 0, 0.324867, 0.110128, 0.21751, 0.913796, 1, 1, 1, 1.8, 1, 1.49012e-08, -2.98023e-08, 0, 0.324867, 0.110128, 0.21751, 0.913796, 1, 1, 1, 1.83333, 1, 2.42144e-08, 0, 2.98023e-08, 0.324867, 0.110128, 0.21751, 0.913796, 1, 1, 1, 1.86667, 1, 7.45058e-09, -2.98023e-08, 0, 0.324867, 0.110128, 0.21751, 0.913796, 1, 1, 1, 1.9, 1, 1.49012e-08, 2.98023e-08, 0, 0.324867, 0.110128, 0.21751, 0.913796, 1, 1, 1, 1.93333, 1, -5.58794e-09, 2.98023e-08, 2.98023e-08, 0.324867, 0.110128, 0.21751, 0.913796, 1, 1, 1, 1.96667, 1, 9.31323e-09, 2.98023e-08, 2.98023e-08, 0.324867, 0.110128, 0.21751, 0.913796, 1, 1, 1, 2, 1, 7.45058e-09, 0, 0, 0.324867, 0.110128, 0.21751, 0.913796, 1, 1, 1, 2.03333, 1, 9.31323e-09, -2.98023e-08, 2.98023e-08, 0.19517, -0.0119899, 0.135253, 0.971325, 1, 1, 1, 2.06667, 1, -5.58794e-09, -1.49012e-08, 0, -0.0929173, -0.0629029, 0.159407, 0.980816, 1, 1, 1, 2.1, 1, 7.45058e-09, 0, 0, 0.249522, 0.0419384, 0.194067, 0.947796, 1, 1, 1, 2.13333, 1, 0, 0, 0, 0.292819, 0.0724615, 0.201887, 0.931798, 1, 1, 1, 2.16667, 1, -7.45058e-09, 0, -5.96046e-08, 0.319841, 0.091629, 0.206637, 0.920112, 1, 1, 1, 2.2, 1, 4.09782e-08, -5.96046e-08, 0, 0.327256, 0.101608, 0.21077, 0.915508, 1, 1, 1, 2.23333, 1, 0, -2.23517e-08, -5.96046e-08, 0.325962, 0.106317, 0.214194, 0.91464, 1, 1, 1, 2.26667, 1, 0, 5.21541e-08, 0, 0.325235, 0.108872, 0.216263, 0.914111, 1, 1, 1, 2.3, 1, 1.49012e-08, 0, 0, 0.324923, 0.10994, 0.217265, 0.913857, 1, 1, 1, 2.33333, 1, 0, -5.96046e-08, -2.98023e-08, 0.324867, 0.110128, 0.21751, 0.913796, 1, 1, 1, 2.36667, 1, 9.31323e-09, -2.98023e-08, -2.98023e-08, 0.19517, -0.0119899, 0.135253, 0.971325, 1, 1, 1, 2.4, 1, 1.30385e-08, 0, -2.98023e-08, -0.0929173, -0.0629029, 0.159407, 0.980816, 1, 1, 1, 2.43333, 1, 3.72529e-09, -5.96046e-08, 0, 0.249522, 0.0419384, 0.194067, 0.947796, 1, 1, 1 ) +tracks/4/type = "transform" +tracks/4/path = NodePath("Armature/Skeleton:right_calf") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = true +tracks/4/enabled = true +tracks/4/keys = PoolRealArray( 0, 1, 7.45058e-09, 0, 0, -3.72529e-09, 0, 8.73115e-10, 1, 1, 1, 1, 0.0333333, 1, 0, 0, 0, 0.00910079, 0.00164253, 0.00191749, 0.999955, 1, 1, 1, 0.0666667, 1, 1.49012e-08, 0, 9.31323e-10, 0.0367305, 0.00662345, 0.00782749, 0.999273, 1, 1, 1, 0.1, 1, 0, 0, 0, 0.0822657, 0.0148187, 0.017776, 0.996342, 1, 1, 1, 0.133333, 1, 1.44355e-08, 5.96046e-08, 0, 0.142532, 0.0256404, 0.0313247, 0.988962, 1, 1, 0.999999, 0.166667, 1, -1.53668e-08, 2.98023e-08, -1.49012e-08, 0.210985, 0.0378917, 0.0473372, 0.975607, 1, 1, 0.999998, 0.2, 1, 1.44355e-08, -5.96046e-08, 0, 0.278705, 0.0499507, 0.0641167, 0.956931, 1, 1, 0.999997, 0.233333, 1, 1.49012e-08, 0, 1.49012e-08, 0.337233, 0.0602861, 0.0799526, 0.936081, 1, 1, 0.999996, 0.266667, 1, -1.49012e-08, 2.98023e-08, -2.98023e-08, 0.381102, 0.067913, 0.0936661, 0.917265, 0.999999, 1.00001, 0.999995, 0.3, 1, -2.98023e-08, 0, 9.31323e-10, 0.408221, 0.0724587, 0.104747, 0.903954, 0.999999, 1.00001, 0.999995, 0.333333, 1, 1.49012e-08, 0, -2.98023e-08, 0.418653, 0.0739386, 0.113141, 0.898032, 0.999999, 1.00001, 0.999994, 0.366667, 1, -1.49012e-08, 0, 0, 0.420612, 0.0738219, 0.119145, 0.896348, 0.999999, 1.00001, 0.999994, 0.4, 1, -1.53668e-08, -5.96046e-08, 0, 0.421901, 0.0734916, 0.12328, 0.89521, 0.999999, 1.00001, 0.999994, 0.433333, 1, 1.49012e-08, 0, 0, 0.422671, 0.0729594, 0.125942, 0.894519, 0.999999, 1.00001, 0.999994, 0.466667, 1, 1.49012e-08, -2.98023e-08, 0, 0.423059, 0.0722286, 0.127488, 0.894176, 0.999999, 1.00001, 0.999994, 0.5, 1, 0, 0, 0, 0.423196, 0.0712945, 0.12827, 0.894075, 0.999999, 1.00001, 0.999994, 0.533333, 1, 1.44355e-08, 2.98023e-08, 0, 0.423222, 0.0701424, 0.128673, 0.894095, 0.999999, 1.00001, 0.999994, 0.566667, 1, 1.49012e-08, 0, 0, 0.423316, 0.0687433, 0.129175, 0.894087, 0.999999, 1.00001, 0.999994, 0.6, 1, -4.65661e-10, 2.98023e-08, 0, 0.423734, 0.0670424, 0.130466, 0.893831, 0.999999, 1.00001, 0.999994, 0.633333, 1, 1.49012e-08, -2.98023e-08, 0, 0.424924, 0.0649292, 0.133753, 0.892936, 0.999999, 1.00001, 0.999994, 0.666667, 1, -4.65661e-10, 2.98023e-08, 0, 0.427926, 0.0621255, 0.141872, 0.890445, 0.999999, 1.00001, 0.999994, 0.7, 1, -1.49012e-08, 0, 0, 0.455768, 0.0566024, 0.164387, 0.872954, 0.999999, 1.00001, 0.999994, 0.733333, 1, 0, 0, -2.98023e-08, 0.458199, 0.054801, 0.143238, 0.875519, 0.999999, 1.00001, 0.999994, 0.766667, 1, -4.65661e-10, 2.98023e-08, -2.98023e-08, 0.461293, 0.0543415, 0.0979611, 0.880147, 1, 1.00001, 0.999993, 0.8, 1, 0, 0, 9.31323e-10, 0.463438, 0.05431, 0.0430476, 0.883415, 1, 1.00001, 0.999993, 0.833333, 1, -3.0268e-08, 2.98023e-08, -1.11759e-08, 0.464042, 0.0542851, -0.0137787, 0.884041, 1, 1.00001, 0.999993, 0.866667, 1, -2.98023e-08, 0, 4.65661e-09, 0.46317, 0.0540544, -0.0672954, 0.882056, 1, 1.00001, 0.999993, 0.9, 1, -1.49012e-08, 0, 1.11759e-08, 0.461298, 0.0535141, -0.113657, 0.878307, 1, 1.00001, 0.999993, 0.933333, 1, -2.98023e-08, 0, 9.31323e-10, 0.459113, 0.0526143, -0.149902, 0.874057, 0.999999, 1.00001, 0.999993, 0.966667, 1, -1.53668e-08, -5.96046e-08, 7.45058e-09, 0.457354, 0.0513199, -0.173537, 0.870677, 0.999999, 1.00001, 0.999993, 1, 1, -1.53668e-08, 5.96046e-08, -9.31323e-09, 0.456681, 0.0495779, -0.182057, 0.86939, 0.999999, 1.00001, 0.999993, 1.03333, 1, 1.44355e-08, 0, 3.35276e-08, 0.44968, 0.0468923, -0.180487, 0.873506, 0.999999, 1.00001, 0.999993, 1.06667, 1, -4.47035e-08, 0, 0, 0.430046, 0.0429352, -0.175912, 0.884462, 0.999999, 1.00001, 0.999994, 1.1, 1, 1.49012e-08, -2.98023e-08, 0, 0.399463, 0.0378279, -0.168441, 0.900348, 0.999999, 1.00001, 0.999994, 1.13333, 1, -3.0268e-08, 2.98023e-08, -7.45058e-09, 0.359354, 0.0316736, -0.158081, 0.919169, 0.999999, 1.00001, 0.999995, 1.16667, 1, 2.93367e-08, 0, -1.49012e-08, 0.31131, 0.0245966, -0.144834, 0.938884, 0.999999, 1, 0.999996, 1.2, 1, 0, 0, 0, 0.25746, 0.0167728, -0.128774, 0.957523, 0.999999, 1, 0.999997, 1.23333, 1, -4.65661e-10, 0, 0, 0.200821, 0.00845017, -0.110097, 0.973385, 1, 1, 0.999999, 1.26667, 1, -1.49012e-08, -2.98023e-08, 3.72529e-09, 0.145776, -3.66699e-05, -0.0891175, 0.985296, 1, 1, 0.999999, 1.3, 1, 1.49012e-08, 0, 0, 0.0993338, -0.00822361, -0.0662004, 0.992816, 1, 1, 1, 1.33333, 1, 1.49012e-08, -2.98023e-08, 0, 0.0765039, -0.0152721, -0.0415624, 0.996086, 1, 1, 1, 1.36667, 1, 1.49012e-08, -2.98023e-08, 0, 0.135013, -0.0205545, -0.00442197, 0.990621, 1, 1, 0.999999, 1.4, 1, -4.65661e-10, 2.98023e-08, 0, 0.205065, -0.0208231, -0.0194343, 0.978334, 1, 1, 0.999998, 1.43333, 1, 1.49012e-08, 0, 0, 0.284119, -0.0210696, -0.0497725, 0.957264, 1, 1, 0.999997, 1.46667, 1, -4.65661e-10, 2.98023e-08, 2.98023e-08, 0.365616, -0.0210768, -0.0870065, 0.926451, 1, 1.00001, 0.999995, 1.5, 1, 0, 0, 5.96046e-08, 0.445085, -0.0207348, -0.127174, 0.886169, 0.999999, 1.00001, 0.999993, 1.53333, 1, 0, 0, 6.0536e-08, 0.518643, -0.0199769, -0.167291, 0.838227, 0.999999, 1.00001, 0.999992, 1.56667, 1, 0, 2.98023e-08, -1.19209e-07, 0.583091, -0.0187596, -0.204827, 0.785938, 0.999999, 1.00001, 0.999991, 1.6, 1, 0, 2.98023e-08, 5.96046e-08, 0.635953, -0.0170283, -0.237544, 0.734062, 0.999998, 1.00001, 0.999991, 1.63333, 1, -4.65661e-10, 0, 0, 0.674724, -0.014632, -0.262933, 0.689492, 0.999998, 1.00001, 0.999991, 1.66667, 1, -4.65661e-10, 0, 0, 0.69258, -0.0109734, -0.275166, 0.666705, 0.999998, 1.00001, 0.999991, 1.7, 1, 0, 0, 0, 0.439368, 0.00485784, -0.177131, 0.880657, 0.999999, 1.00001, 0.999994, 1.73333, 1, -4.65661e-10, 2.98023e-08, 0, 0.225212, 0.0196587, -0.091395, 0.969814, 1, 1, 0.999998, 1.76667, 1, 0, 2.98023e-08, 6.0536e-08, 0.877557, -0.0248872, -0.356894, 0.319221, 0.999999, 1, 0.999997, 1.8, 1, 0, 0, 5.96046e-08, 0.880143, -0.0235998, -0.353911, 0.315498, 0.999999, 1, 0.999997, 1.83333, 1, -4.65661e-10, 2.98023e-08, 0, 0.882394, -0.0208272, -0.350327, 0.313398, 0.999999, 1, 0.999997, 1.86667, 1, 0, 0, 0, 0.884584, -0.0171221, -0.345933, 0.312328, 0.999999, 1, 0.999998, 1.9, 1, -4.65661e-10, 2.98023e-08, 0, 0.886886, -0.012745, -0.340471, 0.312009, 0.999999, 1, 0.999998, 1.93333, 1, 0, 2.98023e-08, 9.31323e-10, 0.889465, -0.0078376, -0.33356, 0.312294, 0.999999, 1, 0.999997, 1.96667, 1, -3.0268e-08, 0, 3.07336e-08, 0.892536, -0.00248134, -0.324554, 0.313111, 0.999999, 1, 0.999997, 2, 1, 0, 0, 0, 0.896478, 0.00327769, -0.31215, 0.31445, 0.999999, 1, 0.999997, 2.03333, 1, 0, -2.98023e-08, 0, 0.676539, 0.0111245, -0.285509, 0.678717, 0.999998, 1.00001, 0.999991, 2.06667, 1, 0, 0, 1.49012e-08, 0.444613, 0.0146552, -0.159265, 0.881328, 0.999999, 1.00001, 0.999993, 2.1, 1, -1.53668e-08, 5.96046e-08, 0, 0.236197, -0.00147502, -0.0838204, 0.968082, 1, 1, 0.999998, 2.13333, 1, 1.44355e-08, -2.98023e-08, -5.96046e-08, 0.285937, -0.0106216, -0.10894, 0.951976, 1, 1, 0.999997, 2.16667, 1, 1.49012e-08, -2.98023e-08, -2.98023e-08, 0.402395, -0.0185838, -0.168249, 0.899681, 0.999999, 1.00001, 0.999995, 2.2, 1, 5.58794e-09, -2.98023e-08, 0, 0.549846, -0.0254111, -0.244538, 0.798264, 0.999998, 1.00001, 0.999992, 2.23333, 1, -7.45058e-09, -2.98023e-08, 3.72529e-09, 0.688415, -0.0301809, -0.31799, 0.651195, 0.999998, 1.00001, 0.999992, 2.26667, 1, -4.65661e-10, 0, -1.49012e-08, 0.786512, -0.0324388, -0.371859, 0.492004, 0.999998, 1.00001, 0.999995, 2.3, 1, 0, 0, 0, 0.839072, -0.0328789, -0.402141, 0.364911, 0.999998, 1.00001, 0.999997, 2.33333, 1, -3.0268e-08, 2.98023e-08, 9.31323e-10, 0.855931, -0.0327426, -0.412323, 0.310321, 0.999999, 1, 0.999998, 2.36667, 1, -4.65661e-10, -2.98023e-08, 0, 0.694711, -0.0217007, -0.257021, 0.671451, 0.999998, 1.00001, 0.999991, 2.4, 1, 7.45058e-09, 0, 1.49012e-08, 0.463024, -0.12871, -0.138111, 0.866007, 0.999999, 1.00001, 0.999994, 2.43333, 1, 0, 2.98023e-08, 5.96046e-08, 0.209611, -0.0374605, -0.0168066, 0.976923, 1, 1, 0.999998 ) +tracks/5/type = "transform" +tracks/5/path = NodePath("Armature/Skeleton:right_thigh") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = true +tracks/5/enabled = true +tracks/5/keys = PoolRealArray( 0, 1, -7.45058e-09, 9.31323e-10, -9.31323e-10, 4.65661e-10, -3.72529e-09, 5.326e-09, 1, 1, 1, 1, 0.0333333, 1, 7.45058e-09, 0, 0, -0.00384368, 0.00336001, 0.00289316, 0.999983, 1, 1, 1, 0.0666667, 1, -7.45058e-09, 6.0536e-08, 2.32831e-10, -0.0154829, 0.0135485, 0.0116258, 0.999721, 1, 1, 1, 0.1, 1, 7.45058e-09, 0, 9.31323e-10, -0.0345783, 0.0302932, 0.0259588, 0.998605, 1, 1, 1, 0.133333, 1, 7.45058e-09, 0, 9.31323e-10, -0.0598117, 0.0524817, 0.0446576, 0.995828, 0.999999, 1, 1, 0.166667, 1, 0, -5.96046e-08, 1.86265e-09, -0.0886593, 0.0779446, 0.065859, 0.990821, 0.999998, 1, 1, 0.2, 1, 0, -5.96046e-08, 0, -0.117737, 0.103754, 0.0869452, 0.983775, 0.999997, 1, 1, 0.233333, 1, 0, 0, 0, -0.143689, 0.126992, 0.105357, 0.97577, 0.999995, 1, 1, 0.266667, 1, 0, 0, 0, -0.164051, 0.145498, 0.119241, 0.968349, 0.999994, 1, 1, 0.3, 1, -2.23517e-08, 5.96046e-08, -1.62981e-09, -0.177548, 0.158148, 0.127666, 0.962895, 0.999992, 1, 1, 0.333333, 1, -7.45058e-09, 9.31323e-10, 0, -0.183856, 0.16464, 0.130421, 0.960251, 0.999992, 1, 1, 0.366667, 1, -7.45058e-09, 9.31323e-10, 0, -0.186162, 0.167523, 0.130384, 0.959312, 0.999992, 1, 1, 0.4, 1, -7.45058e-09, 9.31323e-10, 0, -0.18769, 0.169432, 0.130323, 0.958687, 0.999992, 1, 1, 0.433333, 1, -7.45058e-09, 9.31323e-10, 0, -0.188609, 0.170581, 0.130199, 0.95832, 0.999992, 1, 1, 0.466667, 1, -7.45058e-09, 9.31323e-10, 0, -0.189074, 0.171161, 0.12997, 0.958156, 0.999992, 1.00001, 1, 0.5, 1, -7.45058e-09, 9.31323e-10, 0, -0.189237, 0.171362, 0.129586, 0.95814, 0.999992, 1, 1, 0.533333, 1, -7.45058e-09, 9.31323e-10, 0, -0.189267, 0.171393, 0.128979, 0.95821, 0.999992, 1.00001, 1, 0.566667, 1, -7.45058e-09, 9.31323e-10, 0, -0.189371, 0.171516, 0.128052, 0.958292, 0.999992, 1, 1, 0.6, 1, -7.45058e-09, 9.31323e-10, 0, -0.189855, 0.172109, 0.126648, 0.958276, 0.999992, 1, 1, 0.633333, 1, -7.45058e-09, 9.31323e-10, 0, -0.191253, 0.17384, 0.124475, 0.957971, 0.999992, 1, 1, 0.666667, 1, -7.45058e-09, 9.31323e-10, 0, -0.194821, 0.178275, 0.120824, 0.956904, 0.999992, 1, 1, 0.7, 1, -7.45058e-09, 6.0536e-08, 3.95812e-09, -0.240742, 0.193381, 0.111686, 0.94455, 0.999991, 1.00001, 1, 0.733333, 1, 0, -5.96046e-08, -7.45058e-09, -0.261682, 0.193367, 0.112779, 0.938836, 0.999991, 1.00001, 1, 0.766667, 1, -7.45058e-09, 6.0536e-08, 1.5134e-08, -0.275415, 0.193155, 0.115025, 0.934669, 0.999991, 1.00001, 1, 0.8, 1, 0, 0, -1.49012e-08, -0.284953, 0.192733, 0.117704, 0.931559, 0.999991, 1.00001, 1, 0.833333, 1, 0, -1.49012e-08, 2.32831e-10, -0.291693, 0.192084, 0.120459, 0.929252, 0.999991, 1.00001, 1, 0.866667, 1, 0, 0, 0, -0.296426, 0.191183, 0.123066, 0.927597, 0.999991, 1.00001, 1, 0.9, 1, -1.49012e-08, -5.58794e-09, -1.46683e-08, -0.299651, 0.190004, 0.125358, 0.926495, 0.999991, 1.00001, 1, 0.933333, 1, 0, 0, -1.49012e-08, -0.301712, 0.188513, 0.12719, 0.925881, 0.999991, 1.00001, 1, 0.966667, 1, -7.45058e-09, 9.31323e-10, 1.49012e-08, -0.302864, 0.186671, 0.128423, 0.925708, 0.999991, 1.00001, 1, 1, 1, 0, 0, -7.45058e-09, -0.303304, 0.184428, 0.12891, 0.925945, 0.999991, 1.00001, 1, 1.03333, 1, 7.45058e-09, 1.86265e-09, 7.45058e-09, -0.298492, 0.179421, 0.12692, 0.928764, 0.999991, 1.00001, 1, 1.06667, 1, 0, 1.86265e-09, 1.49012e-08, -0.284863, 0.169823, 0.12124, 0.935582, 0.999992, 1.00001, 1, 1.1, 1, -1.49012e-08, 0, 2.32831e-10, -0.26377, 0.156239, 0.112367, 0.945192, 0.999993, 1, 1, 1.13333, 1, -1.49012e-08, 9.31323e-10, 3.00352e-08, -0.236387, 0.139182, 0.100713, 0.956351, 0.999995, 1, 1, 1.16667, 1, 0, 2.98023e-08, 0, -0.203941, 0.119182, 0.0867005, 0.967826, 0.999996, 1, 1, 1.2, 1, -7.45058e-09, -2.98023e-08, -2.95695e-08, -0.167904, 0.0968831, 0.0708287, 0.978471, 0.999998, 1, 1, 1.23333, 1, 0, 0, 0, -0.130215, 0.0731314, 0.0537481, 0.987323, 0.999998, 1, 1, 1.26667, 1, -1.49012e-08, 0, 1.5134e-08, -0.0936413, 0.0491128, 0.0363654, 0.993729, 0.999999, 1, 1, 1.3, 1, -2.23517e-08, 5.96046e-08, 7.68341e-09, -0.0627156, 0.0266923, 0.020107, 0.997472, 1, 1, 1, 1.33333, 1, 1.49012e-08, -5.86733e-08, 0, -0.0474481, 0.00980067, 0.0079771, 0.998794, 1, 1, 1, 1.36667, 1, -1.49012e-08, 0, -6.98492e-10, -0.0729724, 0.00473046, 0.00430401, 0.997314, 1, 1, 1, 1.4, 1, -7.45058e-09, 9.31323e-10, 1.86265e-09, -0.135232, 3.34919e-05, 0.0107262, 0.990756, 1, 1, 1, 1.43333, 1, -1.49012e-08, 1.86265e-09, -3.49246e-09, -0.213907, -0.00315538, 0.0236926, 0.976562, 1, 1, 1, 1.46667, 1, 0, 0, -3.72529e-09, -0.299089, -0.006388, 0.039598, 0.953382, 1, 1, 1, 1.5, 1, -7.45058e-09, 9.31323e-10, 7.45058e-09, -0.385167, -0.0103484, 0.0567819, 0.92104, 0.999999, 1, 0.999999, 1.53333, 1, 0, -1.19209e-07, 2.32831e-10, -0.467437, -0.015567, 0.0739973, 0.880787, 0.999999, 1, 0.999999, 1.56667, 1, -7.45058e-09, 6.0536e-08, -1.5134e-08, -0.541779, -0.0226452, 0.0901667, 0.835364, 0.999998, 1, 0.999999, 1.6, 1, -7.45058e-09, -1.19209e-07, 0, -0.604573, -0.0325198, 0.104305, 0.789021, 0.999998, 1, 0.999999, 1.63333, 1, -1.49012e-08, 6.14673e-08, 1.5134e-08, -0.651729, -0.0471381, 0.115271, 0.748158, 0.999997, 1, 1, 1.66667, 1, -7.45058e-09, 9.31323e-10, 1.49012e-08, -0.673067, -0.0724403, 0.12041, 0.726109, 0.999996, 1, 1, 1.7, 1, 0, 0, 0, -0.267141, -0.136789, 0.0289, 0.953462, 0.999996, 1, 1, 1.73333, 1, -7.45058e-09, 9.31323e-10, 1.49012e-08, 0.241342, -0.189515, -0.0770041, 0.948635, 0.999992, 1, 1.00001, 1.76667, 1, 0, -1.18278e-07, 3.00352e-08, -0.525111, -0.0760559, 0.0788581, 0.843952, 0.999998, 1, 1, 1.8, 1, 0, -1.18278e-07, 3.00352e-08, -0.525721, -0.0770976, 0.0836302, 0.843018, 0.999998, 1, 1, 1.83333, 1, 0, -1.18278e-07, 3.00352e-08, -0.525869, -0.0793906, 0.0854188, 0.842533, 0.999997, 1, 1, 1.86667, 1, 0, -1.18278e-07, 3.00352e-08, -0.525801, -0.0823496, 0.0858359, 0.842249, 0.999997, 1, 1, 1.9, 1, 0, -1.18278e-07, 3.00352e-08, -0.525659, -0.0856459, 0.0858444, 0.842009, 0.999997, 1, 1, 1.93333, 1, 0, -1.18278e-07, 3.00352e-08, -0.525561, -0.0890302, 0.0862563, 0.841677, 0.999997, 1, 1, 1.96667, 1, 0, -1.18278e-07, 3.00352e-08, -0.525647, -0.0922407, 0.0880334, 0.841093, 0.999997, 1, 1, 2, 1, 0, -1.18278e-07, 3.00352e-08, -0.526144, -0.094875, 0.0927888, 0.839977, 0.999997, 1, 1, 2.03333, 1, -7.45058e-09, 9.31323e-10, 1.49012e-08, -0.678961, -0.0963126, 0.13804, 0.714619, 0.999995, 1, 1, 2.06667, 1, 0, 0, 0, -0.267284, -0.145148, 0.0194896, 0.952424, 0.999996, 1, 1, 2.1, 1, -7.45058e-09, 9.31323e-10, 1.49012e-08, 0.238904, -0.175619, -0.0794544, 0.951719, 0.999993, 1, 1.00001, 2.13333, 1, 0, -1.19209e-07, -1.46683e-08, 0.206217, -0.174107, -0.0708344, 0.960283, 0.999994, 1, 1.00001, 2.16667, 1, 0, 0, 0, 0.126541, -0.169306, -0.0501961, 0.976116, 0.999995, 1, 1.00001, 2.2, 1, -1.49012e-08, 1.86265e-09, -1.46683e-08, 0.0149658, -0.160797, -0.021948, 0.98663, 0.999995, 1, 1, 2.23333, 1, 0, 0, 0, -0.117629, -0.148089, 0.0105245, 0.981897, 0.999996, 1, 1, 2.26667, 1, -7.45058e-09, 9.31323e-10, 1.49012e-08, -0.259412, -0.131518, 0.0436895, 0.955772, 0.999996, 1, 1, 2.3, 1, -1.49012e-08, -5.86733e-08, 1.5134e-08, -0.398448, -0.112218, 0.073506, 0.907327, 0.999996, 1, 1, 2.33333, 1, 0, -1.18278e-07, 3.00352e-08, -0.52622, -0.0919269, 0.0958574, 0.839913, 0.999997, 1, 1, 2.36667, 1, -7.45058e-09, 9.31323e-10, 1.49012e-08, -0.681304, -0.0675542, 0.108898, 0.720696, 0.999997, 1, 1, 2.4, 1, 0, 0, 0, -0.264446, -0.0411514, -0.00862406, 0.963484, 1, 1, 0.999999, 2.43333, 1, -7.45058e-09, 9.31323e-10, 1.49012e-08, 0.273409, -0.0300402, -0.0413702, 0.960538, 1, 1, 1 ) +tracks/6/type = "transform" +tracks/6/path = NodePath("Armature/Skeleton:right_thumb_head") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = true +tracks/6/enabled = true +tracks/6/keys = PoolRealArray( 0, 1, -5.96046e-08, -5.7742e-08, 0, 1.86264e-09, -3.25963e-09, 9.13496e-09, 1, 1, 1, 1, 0.0333333, 1, 0, 0, 0, 3.28314e-09, 8.83887e-09, -0.00265826, 0.999996, 1, 1, 1, 0.0666667, 1, -3.1665e-08, -5.96046e-08, -1.19209e-07, 6.98933e-09, 3.93893e-10, -0.0102713, 0.999947, 1, 1, 1, 0.1, 1, -2.98023e-08, -3.72529e-08, 1.19213e-07, 1.47005e-08, 1.2262e-08, -0.0213365, 0.999772, 1, 1, 1, 0.133333, 1, -2.98023e-08, 0, 0, 1.51279e-08, -1.44793e-08, -0.0331531, 0.99945, 1, 1, 1, 0.166667, 1, -1.86265e-09, 0, -5.96046e-08, -1.55115e-08, -3.06761e-09, -0.0425791, 0.999093, 1, 1, 1, 0.2, 1, 0, 2.98023e-08, 3.63798e-12, 7.08863e-09, -7.79575e-09, -0.0474535, 0.998874, 1, 1, 1, 0.233333, 1, 5.7742e-08, -2.98023e-08, -5.9601e-08, -5.63787e-09, -5.79117e-09, -0.047718, 0.998861, 1, 1, 1, 0.266667, 1, 0, 2.98023e-08, 1.49012e-08, -4.01112e-10, -3.71094e-09, -0.0452368, 0.998976, 1, 1, 1, 0.3, 1, 1.17347e-07, 7.45058e-09, -3.72529e-08, 1.41552e-09, 4.05844e-10, -0.0425177, 0.999096, 1, 1, 1, 0.333333, 1, 1.17347e-07, 1.11759e-08, 7.45422e-09, -2.32631e-10, 9.64139e-12, -0.0414094, 0.999142, 1, 1, 1, 0.366667, 1, 0, -7.45058e-09, 3.63798e-12, 5.43631e-10, -3.75102e-09, -0.0414094, 0.999142, 1, 1, 1, 0.4, 1, 0, 0, 0, -2.03583e-09, 1.48256e-09, -0.0414095, 0.999142, 1, 1, 1, 0.433333, 1, 0, 0, 0, 5.66027e-09, 1.62965e-09, -0.0414094, 0.999142, 1, 1, 1, 0.466667, 1, -1.21072e-07, 5.58794e-09, -1.49048e-08, 1.26006e-08, 4.09889e-10, -0.0414094, 0.999142, 1, 1, 1, 0.5, 1, 0, -1.67638e-08, 1.49048e-08, 1.45979e-08, -2.00319e-09, -0.0414094, 0.999142, 1, 1, 1, 0.533333, 1, -1.21072e-07, -1.11759e-08, 1.49012e-08, -6.92108e-09, 1.68503e-09, -0.0414095, 0.999142, 1, 1, 1, 0.566667, 1, -1.86265e-09, -1.30385e-08, 7.44694e-09, 3.29045e-10, 2.31667e-09, -0.0414095, 0.999142, 1, 1, 1, 0.6, 1, -1.86265e-09, -2.98023e-08, 0, 1.0255e-08, 4.10408e-11, -0.0414094, 0.999142, 1, 1, 1, 0.633333, 1, 0, 0, 0, -4.36214e-09, 1.57897e-09, -0.0414095, 0.999142, 1, 1, 1, 0.666667, 1, 0, 0, -1.49012e-08, -5.02023e-09, -3.05436e-09, -0.0414094, 0.999142, 1, 1, 1, 0.7, 1, 0, 0, 0, -3.6064e-09, 2.94583e-09, -0.0414094, 0.999142, 1, 1, 1, 0.733333, 1, -1.21072e-07, 3.1665e-08, 0, 1.01463e-08, 2.81304e-09, -0.0442877, 0.999019, 1, 1, 1, 0.766667, 1, -6.14673e-08, 2.98023e-08, -3.63798e-12, 6.97934e-09, 1.92468e-08, -0.0476862, 0.998862, 1, 1, 1, 0.8, 1, 0, 5.96046e-08, 1.49012e-08, -2.25814e-08, 6.0173e-10, -0.0472389, 0.998884, 1, 1, 1, 0.833333, 1, -1.86265e-09, -2.98023e-08, 1.49012e-08, -8.19511e-09, 1.57245e-08, -0.0419517, 0.99912, 1, 1, 1, 0.866667, 1, -9.31323e-09, 2.98023e-08, -1.48975e-08, -2.47966e-10, -4.57781e-10, -0.0327716, 0.999463, 1, 1, 1, 0.9, 1, -1.86265e-09, -1.30385e-08, -3.63798e-12, -5.06758e-10, 8.86061e-09, -0.0216523, 0.999766, 1, 1, 1, 0.933333, 1, -3.1665e-08, 9.31323e-09, -3.63798e-12, -9.38121e-10, -2.18771e-08, -0.0109508, 0.99994, 1, 1, 1, 0.966667, 1, 0, 0, -3.63798e-12, -2.08825e-10, 7.91691e-09, -0.00303231, 0.999995, 1, 1, 1, 1, 1, 5.58794e-09, 0, 0, 3.72529e-09, 8.3819e-09, 9.20045e-09, 1, 1, 1, 1, 1.03333, 1, 1.49012e-08, 3.72529e-09, 3.63798e-12, -1.16415e-09, 8.3819e-09, 9.19317e-09, 1, 1, 1, 1, 1.06667, 1, 1.49012e-08, 0, 0, -3.72529e-09, 7.91624e-09, 9.20045e-09, 1, 1, 1, 1, 1.1, 1, 1.30385e-08, 3.72529e-09, -2.98023e-08, -6.75209e-09, 9.31322e-10, 9.16043e-09, 1, 1, 1, 1, 1.13333, 1, 1.49012e-08, 0, 0, 5.58794e-09, 8.3819e-09, -5.68616e-09, 1, 1, 1, 1, 1.16667, 1, 0, 0, 2.98023e-08, -5.82077e-09, 9.31322e-10, 9.16043e-09, 1, 1, 1, 1, 1.2, 1, -1.86265e-09, 5.96046e-08, 0, 9.31322e-10, 9.31322e-10, 9.16043e-09, 1, 1, 1, 1, 1.23333, 1, 0, 2.98023e-08, 2.98023e-08, -2.32831e-09, -9.23367e-17, 3.89555e-08, 1, 1, 1, 1, 1.26667, 1, 5.58794e-09, 5.96046e-08, 3.63798e-12, -1.86264e-09, 9.31323e-10, 9.15315e-09, 1, 1, 1, 1, 1.3, 1, -1.86265e-09, 5.96046e-08, 0, -2.32831e-10, -3.25963e-09, 9.12769e-09, 1, 1, 1, 1, 1.33333, 1, -1.86265e-09, 5.96046e-08, 0, -9.31322e-10, 3.25963e-09, 9.17498e-09, 1, 1, 1, 1, 1.36667, 1, 7.45058e-09, 0, 0, -2.09548e-09, 9.31322e-10, 9.16043e-09, 1, 1, 1, 1, 1.4, 1, -3.72529e-09, -1.86265e-09, 3.63798e-12, -1.40565e-09, -9.18194e-10, -0.00936814, 0.999956, 1, 1, 1, 1.43333, 1, 5.58794e-09, -1.86265e-09, 2.9806e-08, -1.73349e-10, 1.02537e-08, -0.028515, 0.999593, 1, 1, 1, 1.46667, 1, 1.30385e-08, -1.19209e-07, -5.9601e-08, 3.49911e-09, 4.47945e-09, -0.0523888, 0.998627, 1, 1, 1, 1.5, 1, 2.98023e-08, 6.14673e-08, 3.63798e-12, 7.23595e-09, 8.768e-09, -0.079151, 0.996863, 1, 1, 1, 1.53333, 1, -6.14673e-08, 5.96046e-08, 5.96046e-08, -7.36579e-09, -1.60622e-08, -0.108003, 0.994151, 1, 1, 1, 1.56667, 1, -5.96046e-08, -5.7742e-08, 0, 6.68425e-09, -1.26926e-08, -0.138853, 0.990313, 1, 1, 1, 1.6, 1, -1.86265e-09, -5.96046e-08, 0, 3.31428e-09, 2.72892e-09, -0.172466, 0.985016, 1, 1, 1, 1.63333, 1, -6.14673e-08, -1.19209e-07, 0, 5.22884e-09, -4.46436e-09, -0.211151, 0.977453, 1, 1, 1, 1.66667, 1, -1.86265e-09, 5.96046e-08, -1.49012e-08, -1.21829e-10, -4.49442e-10, -0.261625, 0.96517, 1, 1, 1, 1.7, 1, 1.17347e-07, 1.49012e-08, -1.49012e-08, -3.49509e-08, -7.02772e-09, -0.394825, 0.918756, 1, 1, 1, 1.73333, 1, 2.36556e-07, 1.86265e-08, 3.63798e-12, -2.15189e-08, -2.85133e-09, -0.261625, 0.96517, 1, 1, 1, 1.76667, 1, 0, 0, 3.72529e-08, 1.48954e-08, 4.69801e-09, -0.157465, 0.987525, 1, 1, 1, 1.8, 1, 5.96046e-08, 5.96046e-08, -1.67638e-08, -7.76406e-09, 4.53882e-09, -0.157465, 0.987525, 1, 1, 1, 1.83333, 1, -1.86265e-09, 5.96046e-08, 0, 6.91141e-09, 7.85728e-09, -0.157465, 0.987525, 1, 1, 1, 1.86667, 1, 0, 0, -1.49012e-08, -7.45712e-09, 1.53354e-08, -0.157465, 0.987525, 1, 1, 1, 1.9, 1, 0, 0, 1.49012e-08, 5.27835e-09, 5.72975e-10, -0.157465, 0.987525, 1, 1, 1, 1.93333, 1, -6.14673e-08, -1.19209e-07, -2.98023e-08, -2.30597e-08, -8.58318e-09, -0.157465, 0.987525, 1, 1, 1, 1.96667, 1, -6.14673e-08, 5.96046e-08, -2.98023e-08, 7.45085e-09, -3.54579e-09, -0.157465, 0.987525, 1, 1, 1, 2, 1, 1.19209e-07, -5.96046e-08, 1.49048e-08, 3.97979e-11, -5.66487e-09, -0.157465, 0.987525, 1, 1, 1, 2.03333, 1, -5.96046e-08, 0, 0, 2.88601e-09, 8.86701e-09, -0.261625, 0.96517, 1, 1, 1, 2.06667, 1, 5.58794e-08, -1.30385e-08, -5.96083e-08, -1.40862e-08, -2.33433e-08, -0.394825, 0.918756, 1, 1, 1, 2.1, 1, -1.86265e-09, -3.53903e-08, 3.63798e-12, 9.27037e-09, 3.81909e-10, -0.261625, 0.96517, 1, 1, 1, 2.13333, 1, -1.86265e-09, -1.30385e-08, -3.63798e-12, 3.77591e-09, -2.29307e-09, -0.222143, 0.975014, 1, 1, 1, 2.16667, 1, -1.86265e-09, 2.98023e-08, -2.97987e-08, -1.04999e-08, -5.02759e-09, -0.195669, 0.98067, 1, 1, 1, 2.2, 1, 5.7742e-08, 0, -1.48975e-08, 5.11893e-09, 4.75244e-09, -0.178052, 0.984021, 1, 1, 1, 2.23333, 1, -5.96046e-08, -5.7742e-08, 4.47035e-08, -3.67072e-09, 3.13202e-08, -0.166932, 0.985968, 1, 1, 1, 2.26667, 1, 0, 0, -3.53903e-08, 7.39657e-09, 7.75991e-09, -0.160681, 0.987006, 1, 1, 1, 2.3, 1, -6.14673e-08, 1.21072e-07, 1.49012e-08, -5.14785e-10, -1.50083e-08, -0.157977, 0.987443, 1, 1, 1, 2.33333, 1, -5.96046e-08, 0, 2.98023e-08, -5.39447e-10, 1.14031e-08, -0.157465, 0.987525, 1, 1, 1, 2.36667, 1, 0, 1.30385e-08, 3.63798e-12, -8.77439e-10, 1.2782e-08, -0.261625, 0.96517, 1, 1, 1, 2.4, 1, 1.17347e-07, -6.14673e-08, -5.9601e-08, -9.32381e-09, 7.12352e-10, -0.394825, 0.918756, 1, 1, 1, 2.43333, 1, -1.86265e-09, -2.98023e-08, -5.9601e-08, -7.9006e-09, 1.17909e-08, -0.261625, 0.96517, 1, 1, 1 ) +tracks/7/type = "transform" +tracks/7/path = NodePath("Armature/Skeleton:right_thumb_base") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = true +tracks/7/enabled = true +tracks/7/keys = PoolRealArray( 0, 1, -1.35042e-08, 1.19209e-07, 2.40514e-07, 3.72529e-09, -2.98023e-08, -1.30385e-08, 1, 1, 1, 1, 0.0333333, 1, 2.32831e-09, 1.19209e-07, 2.56114e-09, -2.409e-08, -0.00193231, 6.79401e-08, 0.999998, 1, 1, 1, 0.0666667, 1, 2.00234e-08, 0, 2.79397e-09, -1.81292e-07, -0.00774954, 1.98835e-07, 0.99997, 1, 1, 1, 0.1, 1, -3.84171e-08, 5.96046e-08, -6.98492e-09, -3.52362e-07, -0.0172125, 2.11896e-07, 0.999852, 1, 1, 1, 0.133333, 1, -5.9139e-08, 1.49012e-08, -8.61473e-09, -5.63612e-07, -0.0295939, 4.69211e-07, 0.999562, 1, 1, 1, 0.166667, 1, -1.30385e-08, -2.23517e-08, 5.75092e-08, -8.80433e-07, -0.0436194, 7.04997e-07, 0.999048, 1, 1, 1, 0.2, 1, 1.19675e-07, 3.72529e-08, 2.11876e-08, -1.05385e-06, -0.0576364, 8.25855e-07, 0.998338, 1, 1, 1, 0.233333, 1, 1.10362e-07, 2.98023e-08, 8.05594e-08, -1.34255e-06, -0.0699959, 9.77583e-07, 0.997547, 1, 1, 1, 0.266667, 1, -6.51926e-09, 5.96046e-08, 4.37722e-08, -1.49532e-06, -0.079433, 1.18883e-06, 0.99684, 1, 1, 1, 0.3, 1, -1.83005e-07, 2.98023e-08, 4.65661e-09, -1.60569e-06, -0.0852306, 1.23389e-06, 0.996361, 1, 1, 1, 0.333333, 1, 6.42613e-08, 1.19209e-07, -2.00234e-08, -1.65347e-06, -0.0871557, 1.23429e-06, 0.996195, 1, 1, 1, 0.366667, 1, -6.44941e-08, -6.70552e-08, 3.42261e-08, -1.60993e-06, -0.0871558, 1.23623e-06, 0.996195, 1, 1, 1, 0.4, 1, -5.58794e-08, 0, -9.77889e-09, -1.67454e-06, -0.0871558, 1.29181e-06, 0.996195, 1, 1, 1, 0.433333, 1, 2.32831e-09, 1.19209e-07, 2.56114e-09, -1.65278e-06, -0.0871557, 1.28016e-06, 0.996195, 1, 1, 1, 0.466667, 1, -4.6799e-08, 0, -6.82194e-08, -1.60773e-06, -0.0871558, 1.29578e-06, 0.996195, 1, 1, 1, 0.5, 1, 0, 0, 0, -1.6225e-06, -0.0871558, 1.34077e-06, 0.996195, 1, 1, 1, 0.533333, 1, -1.14087e-07, 1.19209e-07, -5.00586e-08, -1.65984e-06, -0.0871557, 1.23467e-06, 0.996195, 1, 1, 1, 0.566667, 1, -4.98258e-08, -2.98023e-08, -3.95812e-08, -1.66203e-06, -0.0871557, 1.29431e-06, 0.996195, 1, 1, 1, 0.6, 1, -2.79397e-09, 5.96046e-08, 2.32831e-08, -1.65536e-06, -0.0871557, 1.22057e-06, 0.996195, 1, 1, 1, 0.633333, 1, 2.42144e-07, -5.96046e-08, 2.70084e-08, -1.74247e-06, -0.0871557, 1.33214e-06, 0.996195, 1, 1, 1, 0.666667, 1, -2.34926e-07, 2.98023e-08, -4.91273e-08, -1.66521e-06, -0.0871557, 1.33797e-06, 0.996195, 1, 1, 1, 0.7, 1, -5.96046e-08, -6.70552e-08, 2.07219e-08, -1.63812e-06, -0.0871558, 1.2347e-06, 0.996195, 1, 1, 1, 0.733333, 1, 1.84402e-07, -2.98023e-08, 1.16415e-09, -1.66492e-06, -0.0871558, 1.29265e-06, 0.996195, 1, 1, 1, 0.766667, 1, 2.79397e-09, -4.47035e-08, -4.65661e-10, -1.64477e-06, -0.0871557, 1.29628e-06, 0.996195, 1, 1, 1, 0.8, 1, -2.56114e-09, 7.45058e-09, 3.0268e-08, -1.63677e-06, -0.0871558, 1.29465e-06, 0.996195, 1, 1, 1, 0.833333, 1, 4.65661e-10, 8.9407e-08, 1.58325e-08, -1.69402e-06, -0.0871557, 1.28917e-06, 0.996195, 1, 1, 1, 0.866667, 1, 0, 0, 0, -1.64905e-06, -0.0871557, 1.26412e-06, 0.996195, 1, 1, 1, 0.9, 1, -1.53668e-08, 2.98023e-08, -3.49246e-09, -1.65868e-06, -0.0871557, 1.29367e-06, 0.996195, 1, 1, 1, 0.933333, 1, 8.84756e-09, -2.98023e-08, 3.37604e-08, -1.67454e-06, -0.0871558, 1.29181e-06, 0.996195, 1, 1, 1, 0.966667, 1, -8.84756e-09, -2.98023e-08, -6.98492e-10, -1.64999e-06, -0.0871558, 1.32247e-06, 0.996195, 1, 1, 1, 1, 1, -6.51926e-09, -7.45058e-09, 2.91038e-08, -1.64686e-06, -0.0871557, 1.31153e-06, 0.996195, 1, 1, 1, 1.03333, 1, -1.72295e-08, -1.49012e-08, 5.68107e-08, -1.65729e-06, -0.0871557, 1.29519e-06, 0.996195, 1, 1, 1, 1.06667, 1, 4.09782e-08, 0, 3.86499e-08, -1.66074e-06, -0.0871557, 1.26404e-06, 0.996195, 1, 1, 1, 1.1, 1, 1.18744e-08, -1.49012e-08, 9.31323e-10, -1.67454e-06, -0.0871558, 1.29181e-06, 0.996195, 1, 1, 1, 1.13333, 1, 2.79397e-09, -4.47035e-08, 2.32831e-10, -1.63926e-06, -0.0871557, 1.26498e-06, 0.996195, 1, 1, 1, 1.16667, 1, 1.90921e-08, -7.45058e-09, 6.47269e-08, -1.6607e-06, -0.0871557, 1.29396e-06, 0.996195, 1, 1, 1, 1.2, 1, -2.32831e-10, 2.23517e-08, 6.07688e-08, -1.64456e-06, -0.0871557, 1.29397e-06, 0.996195, 1, 1, 1, 1.23333, 1, -5.82077e-09, -8.9407e-08, 0, -1.65397e-06, -0.0871557, 1.26416e-06, 0.996195, 1, 1, 1, 1.26667, 1, 2.32831e-09, 1.19209e-07, 2.56114e-09, -1.65651e-06, -0.0871557, 1.34013e-06, 0.996195, 1, 1, 1, 1.3, 1, -2.8871e-08, -5.96046e-08, -6.0536e-09, -1.65323e-06, -0.0871558, 1.33855e-06, 0.996195, 1, 1, 1, 1.33333, 1, -2.84053e-08, -2.30968e-07, -3.72529e-09, -1.65746e-06, -0.0871557, 1.33911e-06, 0.996195, 1, 1, 1, 1.36667, 1, -5.58794e-08, 1.19209e-07, -2.65427e-08, -1.66691e-06, -0.0871558, 1.29248e-06, 0.996195, 1, 1, 1, 1.4, 1, -5.58794e-08, 0, -9.77889e-09, -0.0120582, -0.0821522, -0.00119342, 0.996546, 1, 1, 1, 1.43333, 1, -2.56114e-08, 1.19209e-07, -3.72529e-09, -0.0363691, -0.0714771, -0.00400093, 0.996771, 1, 1, 1, 1.46667, 1, 9.26666e-08, 1.2666e-07, 7.82311e-08, -0.0664491, -0.0573723, -0.00807145, 0.996106, 1, 1, 1, 1.5, 1, -3.35276e-08, 0, 1.14553e-07, -0.0998811, -0.0404963, -0.0133926, 0.994085, 1, 1, 1, 1.53333, 1, -1.81608e-08, 0, -1.23866e-07, -0.135233, -0.0210451, -0.0200965, 0.990386, 1, 1, 1, 1.56667, 1, 1.76951e-08, 1.78814e-07, -1.18744e-07, -0.171345, 0.00105448, -0.0284635, 0.984799, 1, 1, 1, 1.6, 1, 0, 0, 0, -0.207756, 0.00946089, -0.0428652, 0.977195, 1, 1, 1, 1.63333, 1, 0, 0, 0, -0.243179, 0.0167892, -0.0636705, 0.967744, 1, 1, 1, 1.66667, 1, -5.58794e-08, 0, -9.77889e-09, -0.274655, 0.0289145, -0.0944313, 0.956458, 1, 1, 1, 1.7, 1, -2.33296e-07, 5.21541e-08, -4.19095e-08, -0.295847, 0.068543, -0.191565, 0.933316, 1, 1, 1, 1.73333, 1, 1.82772e-07, -1.19209e-07, 2.79397e-09, -0.274655, 0.0289145, -0.0944313, 0.956458, 1, 1, 1, 1.76667, 1, 2.32831e-10, 1.49012e-08, 1.16415e-09, -0.303913, 0.0446921, -0.128009, 0.943002, 1, 1, 1, 1.8, 1, -6.0536e-09, -5.21541e-08, 6.10016e-08, -0.303913, 0.044692, -0.128009, 0.943002, 1, 1, 1, 1.83333, 1, -2.18861e-08, -7.45058e-09, 1.16648e-07, -0.303913, 0.044692, -0.128009, 0.943002, 1, 1, 1, 1.86667, 1, -1.15251e-07, 0, -2.04891e-08, -0.303913, 0.0446921, -0.128009, 0.943002, 1, 1, 1, 1.9, 1, -1.30385e-08, -7.45058e-08, 8.77772e-08, -0.303913, 0.044692, -0.128009, 0.943002, 1, 1, 1, 1.93333, 1, -6.51926e-09, -7.45058e-09, 2.91038e-08, -0.303913, 0.0446921, -0.128009, 0.943002, 1, 1, 1, 1.96667, 1, -1.07102e-07, -4.47035e-08, -7.86968e-08, -0.303913, 0.044692, -0.128009, 0.943002, 1, 1, 1, 2, 1, -5.21541e-08, 5.21541e-08, -3.93484e-08, -0.303913, 0.0446921, -0.128009, 0.943002, 1, 1, 1, 2.03333, 1, 4.65661e-10, 2.98023e-08, -6.98492e-10, -0.274655, 0.0289145, -0.0944313, 0.956458, 1, 1, 1, 2.06667, 1, -4.05125e-08, 0, 5.23869e-08, -0.295848, 0.0685431, -0.191565, 0.933316, 1, 1, 1, 2.1, 1, 6.96164e-08, 5.96046e-08, -4.81959e-08, -0.274655, 0.0289145, -0.0944313, 0.956458, 1, 1, 1, 2.13333, 1, -2.09548e-09, -1.19209e-07, -6.98492e-10, -0.275885, 0.0294809, -0.0957402, 0.955956, 1, 1, 1, 2.16667, 1, -5.58794e-08, 0, -9.77889e-09, -0.280171, 0.031606, -0.100635, 0.954137, 1, 1, 1, 2.2, 1, 6.0536e-08, 5.96046e-08, 1.04774e-08, -0.285805, 0.0345151, -0.107114, 0.951657, 1, 1, 1, 2.23333, 1, -1.08499e-07, 1.49012e-08, -5.05242e-08, -0.291814, 0.037752, -0.114041, 0.948901, 1, 1, 1, 2.26667, 1, 1.23167e-07, 2.23517e-08, 2.21189e-08, -0.297452, 0.0409146, -0.120547, 0.946212, 1, 1, 1, 2.3, 1, 1.30385e-08, 1.49012e-08, -5.84405e-08, -0.301916, 0.0435065, -0.125701, 0.944009, 1, 1, 1, 2.33333, 1, 4.65661e-09, 5.96046e-08, 1.86265e-09, -0.303913, 0.0446921, -0.128009, 0.943002, 1, 1, 1, 2.36667, 1, -1.95578e-08, -8.19564e-08, 1.17347e-07, -0.274655, 0.0289145, -0.0944312, 0.956458, 1, 1, 1, 2.4, 1, 9.22009e-08, 5.96046e-08, 1.67638e-08, -0.295847, 0.0685431, -0.191565, 0.933316, 1, 1, 1, 2.43333, 1, 9.0804e-09, 0, -5.86733e-08, -0.274655, 0.0289145, -0.0944314, 0.956458, 1, 1, 1 ) +tracks/8/type = "transform" +tracks/8/path = NodePath("Armature/Skeleton:right_fingers_head") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = true +tracks/8/enabled = true +tracks/8/keys = PoolRealArray( 0, 1, -3.72529e-09, -1.19209e-07, 0, -1.86265e-09, 1.86265e-09, -5.82077e-10, 1, 1, 1, 1, 0.0333333, 1, 0, 3.72529e-09, 1.19209e-07, -0.00401811, 1.86117e-09, 3.71279e-10, 0.999992, 1, 1, 1, 0.0666667, 1, 0, -2.98023e-08, 0, -0.0161266, 8.9647e-10, 2.16842e-09, 0.99987, 1, 1, 1, 0.1, 1, -1.49012e-08, -8.9407e-08, 5.82077e-11, -0.0358537, 2.86417e-09, -1.9067e-09, 0.999357, 1, 1, 1, 0.133333, 1, 0, 5.96046e-08, 0, -0.0616965, 6.06839e-09, -7.59998e-09, 0.998095, 1, 1, 1, 0.166667, 1, 0, -8.9407e-08, -5.95464e-08, -0.0909687, 1.17057e-08, 1.5185e-08, 0.995854, 1, 1, 1, 0.2, 1, -5.96046e-08, 0, -2.98023e-08, -0.120166, -2.85591e-09, 3.43244e-10, 0.992754, 1, 1, 1, 0.233333, 1, 0, -2.98023e-08, 1.49012e-08, -0.145819, -5.69584e-09, 3.22484e-10, 0.989311, 1, 1, 1, 0.266667, 1, 5.96337e-08, -5.96046e-08, 2.23517e-08, -0.165324, -6.0726e-10, 1.48892e-08, 0.986239, 1, 1, 1, 0.3, 1, 0, 3.72529e-09, 7.45058e-09, -0.177263, -6.12195e-09, -2.78827e-09, 0.984164, 1, 1, 1, 0.333333, 1, 1.1918e-07, 3.72529e-09, 0, -0.181219, -1.08555e-08, 2.37955e-09, 0.983443, 1, 1, 1, 0.366667, 1, 2.91038e-11, 1.86265e-08, 0, -0.181219, 9.31197e-09, 8.57694e-10, 0.983443, 1, 1, 1, 0.4, 1, -1.1918e-07, -7.45058e-09, 1.49012e-08, -0.181219, -3.8693e-09, 4.41164e-10, 0.983443, 1, 1, 1, 0.433333, 1, 1.19209e-07, 0, 2.98023e-08, -0.181219, 3.33925e-09, 2.43534e-09, 0.983443, 1, 1, 1, 0.466667, 1, 1.19209e-07, -1.49012e-08, -4.47617e-08, -0.181219, 6.0209e-10, 1.87178e-09, 0.983443, 1, 1, 1, 0.5, 1, 1.19209e-07, -2.23517e-08, -2.98023e-08, -0.181219, 3.6768e-09, 6.03537e-10, 0.983443, 1, 1, 1, 0.533333, 1, 2.91038e-11, 0, 1.49012e-08, -0.181219, 5.84351e-09, -8.7641e-10, 0.983443, 1, 1, 1, 0.566667, 1, 1.1918e-07, 7.45058e-09, -1.4843e-08, -0.181219, 3.4893e-10, 3.24563e-09, 0.983443, 1, 1, 1, 0.6, 1, 0, 0, -7.45058e-09, -0.181219, 7.01257e-09, -2.08149e-09, 0.983443, 1, 1, 1, 0.633333, 1, 1.19209e-07, -1.49012e-08, -2.22935e-08, -0.181219, 5.5086e-09, 9.41084e-10, 0.983443, 1, 1, 1, 0.666667, 1, 0, 1.49012e-08, -9.31323e-09, -0.181219, -4.87223e-09, 7.44653e-10, 0.983443, 1, 1, 1, 0.7, 1, -5.96046e-08, 0, -2.98023e-08, -0.181219, 4.72732e-09, -1.53759e-08, 0.983443, 1, 1, 1, 0.733333, 1, -5.96046e-08, -2.98023e-08, -1.49012e-08, -0.169977, 6.15736e-09, 8.13536e-09, 0.985448, 1, 1, 1, 0.766667, 1, 0, -2.98023e-08, 7.45058e-09, -0.146288, 1.75913e-09, 7.20334e-09, 0.989242, 1, 1, 1, 0.8, 1, -2.98023e-08, 0, -2.6077e-08, -0.117837, 4.73278e-09, 7.53692e-09, 0.993033, 1, 1, 1, 0.833333, 1, 7.45058e-09, -2.98023e-08, -7.45058e-09, -0.0884886, 6.53618e-09, 9.85505e-11, 0.996077, 1, 1, 1, 0.866667, 1, 0, 2.98023e-08, 0, -0.0607379, -7.4766e-09, 2.01095e-10, 0.998154, 1, 1, 1, 0.9, 1, -2.91038e-11, -1.49012e-08, -1.49012e-08, -0.0364658, -5.88032e-09, 7.9108e-09, 0.999335, 1, 1, 1, 0.933333, 1, 1.48721e-08, 3.72529e-09, 2.98023e-08, -0.0172571, 1.95328e-09, -5.23487e-09, 0.999851, 1, 1, 1, 0.966667, 1, -1.49303e-08, 3.72529e-09, 0, -0.00459153, 1.0242e-08, 5.70902e-10, 0.999989, 1, 1, 1, 1, 1, 0, -3.72529e-09, 0, -9.31323e-10, -5.58794e-09, -5.87897e-09, 1, 1, 1, 1, 1.03333, 1, 1.49012e-08, -7.45058e-09, 5.82077e-11, -0.00285221, 8.38975e-09, -2.74095e-09, 0.999996, 1, 1, 1, 1.06667, 1, 2.98023e-08, 7.45058e-09, -2.97441e-08, -0.0107139, -4.64902e-09, -7.33791e-10, 0.999943, 1, 1, 1, 1.1, 1, -1.49012e-08, 3.72529e-09, 2.97441e-08, -0.0226733, -4.65971e-09, 8.35453e-11, 0.999743, 1, 1, 1, 1.13333, 1, 0, -3.72529e-09, 0, -0.0379232, -3.73089e-09, 7.68467e-11, 0.999281, 1, 1, 1, 1.16667, 1, -2.98023e-08, 1.49012e-08, 0, -0.0556843, 7.34052e-09, -1.45441e-08, 0.998448, 1, 1, 1, 1.2, 1, 0, 0, 0, -0.0751253, 5.56286e-09, 3.77338e-08, 0.997174, 1, 1, 1, 1.23333, 1, 1.49303e-08, -2.98023e-08, 2.98023e-08, -0.0952513, -3.56025e-09, 7.87486e-09, 0.995453, 1, 1, 1, 1.26667, 1, 0, 5.96046e-08, 0, -0.114688, -5.84717e-10, -3.05581e-09, 0.993402, 1, 1, 1, 1.3, 1, -3.72529e-09, 5.96046e-08, -2.97441e-08, -0.131127, 1.97632e-09, -7.36744e-10, 0.991366, 1, 1, 1, 1.33333, 1, 2.91038e-11, 0, 1.49012e-08, -0.139265, 2.59464e-09, 8.30026e-09, 0.990255, 1, 1, 1, 1.36667, 1, -2.03727e-10, -5.96046e-08, 0, -0.139265, -1.0256e-09, 6.05215e-10, 0.990255, 1, 1, 1, 1.4, 1, 0, 0, 0, -0.172234, 8.67279e-10, 4.47094e-10, 0.985056, 1, 1, 1, 1.43333, 1, -7.45058e-09, 5.96046e-08, 5.82077e-11, -0.239334, -8.62463e-10, -3.92445e-10, 0.970937, 1, 1, 1, 1.46667, 1, 2.98314e-08, 0, 0, -0.322688, 1.3515e-08, 7.6401e-10, 0.946505, 1, 1, 1, 1.5, 1, 2.98023e-08, -5.96046e-08, -5.96046e-08, -0.413558, 5.99223e-09, 1.60834e-08, 0.910478, 1, 1, 1, 1.53333, 1, 5.96337e-08, 5.96046e-08, 5.96046e-08, -0.504463, -1.34307e-09, 2.6299e-08, 0.863434, 1, 1, 1, 1.56667, 1, 2.91038e-11, -5.96046e-08, 0, -0.588341, 9.76667e-09, -3.92548e-09, 0.808613, 1, 1, 1, 1.6, 1, 0, 5.96046e-08, 2.98023e-08, -0.658808, 1.21346e-08, 1.58297e-08, 0.752311, 1, 1, 1, 1.63333, 1, 2.91038e-11, 0, 2.98023e-08, -0.707107, 1.1504e-08, 1.66694e-09, 0.707107, 1, 1, 1, 1.66667, 1, -5.96046e-08, 5.96046e-08, 0, -0.707107, 1.69369e-08, 1.2039e-08, 0.707107, 1, 1, 1, 1.7, 1, -5.95755e-08, 0, 0, -0.571728, 1.03216e-08, 9.6226e-09, 0.820443, 1, 1, 1, 1.73333, 1, -1.1918e-07, 0, 2.97441e-08, -0.707107, -2.57244e-10, 4.20851e-09, 0.707107, 1, 1, 1, 1.76667, 1, -5.95755e-08, 0, 2.97441e-08, -0.511012, 2.73056e-08, 6.92194e-09, 0.859574, 1, 1, 1, 1.8, 1, 0, 0, 0, -0.511012, 9.15747e-09, 1.37563e-08, 0.859574, 1, 1, 1, 1.83333, 1, 5.96046e-08, -2.98023e-08, -2.97441e-08, -0.511012, 6.22072e-10, 7.76119e-10, 0.859574, 1, 1, 1, 1.86667, 1, 1.19209e-07, 0, -1.4843e-08, -0.511012, -2.46271e-08, 8.6201e-09, 0.859574, 1, 1, 1, 1.9, 1, 5.96046e-08, 2.98023e-08, 1.49012e-08, -0.511012, 2.04184e-09, 9.32296e-09, 0.859574, 1, 1, 1, 1.93333, 1, 5.96046e-08, 2.98023e-08, 4.47035e-08, -0.511012, 8.90059e-09, -4.03665e-09, 0.859574, 1, 1, 1, 1.96667, 1, 1.1918e-07, 2.98023e-08, 5.82077e-11, -0.511012, 2.69163e-09, 9.39921e-10, 0.859574, 1, 1, 1, 2, 1, 5.96046e-08, 0, 0, -0.511012, 1.7867e-08, 1.3686e-08, 0.859574, 1, 1, 1, 2.03333, 1, -5.95755e-08, 0, 0, -0.707107, -4.12619e-09, -1.14216e-09, 0.707107, 1, 1, 1, 2.06667, 1, 5.96046e-08, 1.49012e-08, 0, -0.571729, -2.98323e-09, -1.03796e-08, 0.820443, 1, 1, 1, 2.1, 1, -1.19209e-07, -1.49012e-08, -5.82077e-11, -0.707107, 4.1159e-10, 2.22259e-09, 0.707107, 1, 1, 1, 2.13333, 1, 0, 1.49012e-08, -2.98023e-08, -0.707107, 1.1185e-08, 6.68836e-10, 0.707107, 1, 1, 1, 2.16667, 1, 2.91038e-11, 0, 2.98023e-08, -0.707107, -4.07475e-09, -3.82779e-09, 0.707107, 1, 1, 1, 2.2, 1, 5.96046e-08, -2.98023e-08, -1.49012e-08, -0.681397, 7.80804e-10, 5.28094e-10, 0.731914, 1, 1, 1, 2.23333, 1, 0, -2.98023e-08, 2.98023e-08, -0.630447, -3.4675e-10, -8.43651e-09, 0.776232, 1, 1, 1, 2.26667, 1, 5.96046e-08, 5.96046e-08, 0, -0.5765, 1.43751e-09, -2.62696e-08, 0.817097, 1, 1, 1, 2.3, 1, 2.91038e-11, 0, 5.95464e-08, -0.531456, -1.02785e-08, 5.86852e-09, 0.847086, 1, 1, 1, 2.33333, 1, -5.95755e-08, 0, 2.97441e-08, -0.511012, 1.92942e-08, 2.22204e-08, 0.859574, 1, 1, 1, 2.36667, 1, 0, 0, -5.95464e-08, -0.707107, 1.70913e-08, -3.9204e-09, 0.707107, 1, 1, 1, 2.4, 1, -5.96046e-08, 2.98023e-08, -5.95464e-08, -0.571728, 3.28151e-08, 1.77842e-09, 0.820443, 1, 1, 1, 2.43333, 1, 0, 4.47035e-08, 0, -0.707107, 8.26267e-09, -1.67723e-09, 0.707107, 1, 1, 1 ) +tracks/9/type = "transform" +tracks/9/path = NodePath("Armature/Skeleton:right_fingers_base") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = true +tracks/9/enabled = true +tracks/9/keys = PoolRealArray( 0, 1, -1.62981e-09, 5.96046e-08, -9.31323e-10, -3.72529e-09, 0, 0, 1, 1, 1, 1, 0.0333333, 1, -2.79397e-09, 0, -9.31323e-10, -0.00454093, 7.44205e-09, 1.89646e-09, 0.99999, 1, 1, 1, 0.0666667, 1, -7.45058e-09, -6.70552e-08, -1.20141e-07, -0.0182305, -3.3957e-11, 1.86234e-09, 0.999834, 1, 1, 1, 0.1, 1, 7.45058e-09, 5.96046e-08, -9.31323e-10, -0.0405479, 7.55262e-11, -1.86111e-09, 0.999178, 1, 1, 1, 0.133333, 1, 0, -4.47035e-08, 9.31323e-10, -0.0698001, -3.55369e-09, -2.58265e-09, 0.997561, 1, 1, 1, 0.166667, 1, 2.32831e-10, -2.98023e-08, 5.96046e-08, -0.102937, 1.8911e-08, -1.78815e-09, 0.994688, 1, 1, 1, 0.2, 1, 0, -2.98023e-08, 0, -0.135969, 1.51611e-08, 2.65221e-08, 0.990713, 1, 1, 1, 0.233333, 1, -5.96046e-08, -3.72529e-08, 2.98023e-08, -0.164956, -3.9047e-09, 7.6334e-10, 0.986301, 1, 1, 1, 0.266667, 1, -1.19209e-07, 2.23517e-08, 1.49012e-08, -0.18696, 1.38549e-08, 6.90298e-09, 0.982367, 1, 1, 1, 0.3, 1, -5.96046e-08, 1.49012e-08, -9.31323e-10, -0.200411, 1.59054e-08, -3.40063e-09, 0.979712, 1, 1, 1, 0.333333, 1, 0, 0, 1.49012e-08, -0.204865, 2.97849e-09, 3.95368e-09, 0.97879, 1, 1, 1, 0.366667, 1, -1.18976e-07, 3.72529e-08, 0, -0.204865, 6.72017e-09, 4.26107e-09, 0.97879, 1, 1, 1, 0.4, 1, -1.19209e-07, 7.45058e-09, 2.98023e-08, -0.204865, 3.74168e-09, 3.07398e-10, 0.97879, 1, 1, 1, 0.433333, 1, -1.19209e-07, 7.45058e-09, -1.58325e-08, -0.204865, 7.10176e-09, 2.43794e-09, 0.97879, 1, 1, 1, 0.466667, 1, 0, 7.45058e-09, 1.49012e-08, -0.204865, -1.90796e-10, 9.1157e-10, 0.97879, 1, 1, 1, 0.5, 1, -1.19209e-07, 0, 1.49012e-08, -0.204865, 3.26469e-09, 2.58632e-09, 0.97879, 1, 1, 1, 0.533333, 1, 0, -1.49012e-08, 9.31323e-10, -0.204865, 3.74168e-09, 3.07398e-10, 0.97879, 1, 1, 1, 0.566667, 1, 0, 2.23517e-08, -9.31323e-10, -0.204865, 1.90796e-10, -9.1157e-10, 0.97879, 1, 1, 1, 0.6, 1, 0, 0, 0, -0.204865, 1.03664e-08, 5.02426e-09, 0.97879, 1, 1, 1, 0.633333, 1, 0, 1.49012e-08, 0, -0.204865, 6.91097e-09, 3.34951e-09, 0.97879, 1, 1, 1, 0.666667, 1, 1.19209e-07, 0, -7.45058e-09, -0.204865, 3.45548e-09, 1.67475e-09, 0.97879, 1, 1, 1, 0.7, 1, -1.19209e-07, 7.45058e-09, 0, -0.204865, -4.79105e-09, 4.70623e-09, 0.97879, 1, 1, 1, 0.733333, 1, 0, -2.98023e-08, 0, -0.192205, 3.83484e-09, -1.97939e-10, 0.981355, 1, 1, 1, 0.766667, 1, 5.96046e-08, 5.96046e-08, -1.58325e-08, -0.165485, -9.76823e-10, -1.66899e-08, 0.986212, 1, 1, 1, 0.8, 1, 0, 5.96046e-08, 2.98023e-08, -0.133336, 4.96717e-10, -3.69203e-09, 0.991071, 1, 1, 1, 0.833333, 1, 7.68341e-09, 0, -9.31323e-10, -0.10013, 5.59521e-10, -5.55985e-09, 0.994974, 1, 1, 1, 0.866667, 1, 3.00352e-08, -2.98023e-08, -1.49012e-08, -0.0687151, -4.35644e-09, 9.03523e-09, 0.997636, 1, 1, 1, 0.9, 1, 0, -1.49012e-08, 9.31323e-10, -0.0412406, -7.55947e-09, 2.48432e-09, 0.999149, 1, 1, 1, 0.933333, 1, 1.5134e-08, 0, 2.8871e-08, -0.019509, 2.23202e-08, 1.83278e-09, 0.99981, 1, 1, 1, 0.966667, 1, 0, -7.45058e-09, 5.86733e-08, -0.00518905, 3.71558e-09, 1.88195e-09, 0.999987, 1, 1, 1, 1, 1, 1.49012e-08, 0, -2.98023e-08, 3.72529e-09, -2.6077e-08, -3.72529e-09, 1, 1, 1, 1, 1.03333, 1, 2.32831e-10, 0, 0, -0.00110087, 0, 0, 0.999999, 1, 1, 1, 1.06667, 1, -1.46683e-08, -7.45058e-09, -9.31323e-10, -0.00413344, 3.71564e-09, 2.34369e-09, 0.999991, 1, 1, 1, 1.1, 1, 0, -1.49012e-08, 2.98023e-08, -0.00874266, -7.47065e-09, 2.26308e-09, 0.999962, 1, 1, 1, 1.13333, 1, -2.95695e-08, -7.45058e-09, 2.98023e-08, -0.0146154, 2.22132e-08, 9.63891e-09, 0.999893, 1, 1, 1, 1.16667, 1, -2.98023e-08, 2.98023e-08, -9.31323e-10, -0.0214529, -3.53463e-09, -8.92545e-09, 0.99977, 1, 1, 1, 1.2, 1, 2.32831e-10, 2.98023e-08, -9.31323e-10, -0.0289406, 6.73823e-11, -2.32733e-09, 0.999581, 1, 1, 1, 1.23333, 1, 2.32831e-10, 0, -2.98023e-08, -0.0367035, 3.41828e-11, -9.30695e-10, 0.999326, 1, 1, 1, 1.26667, 1, 7.68341e-09, 0, -9.31323e-10, -0.0442189, -3.92756e-09, 4.48733e-09, 0.999022, 1, 1, 1, 1.3, 1, 3.95812e-09, 5.96046e-08, 0, -0.0505952, 0, 0, 0.998719, 1, 1, 1, 1.33333, 1, -7.21775e-09, -5.96046e-08, 0, -0.05376, 3.6448e-09, 1.59524e-09, 0.998554, 1, 1, 1, 1.36667, 1, 4.65661e-10, 0, 0, -0.0537601, 0, 0, 0.998554, 1, 1, 1, 1.4, 1, -3.72529e-09, 0, 0, -0.0573894, -8.01721e-11, 1.39468e-09, 0.998352, 1, 1, 1, 1.43333, 1, -7.45058e-09, 0, 0, -0.0656906, 1.83537e-10, -2.78793e-09, 0.99784, 1, 1, 1, 1.46667, 1, 0, 0, -6.0536e-08, -0.0774203, -3.17334e-09, -7.25237e-09, 0.996999, 1, 1, 1, 1.5, 1, 3.00352e-08, -2.98023e-08, 5.96046e-08, -0.0924331, 5.04366e-09, -1.40294e-08, 0.995719, 1, 1, 1, 1.53333, 1, 5.98375e-08, 0, 5.96046e-08, -0.111049, -7.97332e-09, 4.26321e-09, 0.993815, 1, 1, 1, 1.56667, 1, 0, 2.98023e-08, -6.0536e-08, -0.134041, 5.19872e-09, 1.71498e-08, 0.990976, 1, 1, 1, 1.6, 1, 5.98375e-08, 0, 5.96046e-08, -0.162921, 3.82725e-09, -3.1195e-10, 0.986639, 1, 1, 1, 1.63333, 1, -5.96046e-08, -1.2666e-07, -6.0536e-08, -0.200907, 1.46909e-08, 2.53757e-09, 0.97961, 1, 1, 1, 1.66667, 1, 2.32831e-10, -1.19209e-07, 6.0536e-08, -0.257286, -1.12732e-08, 1.33826e-08, 0.966335, 1, 1, 1, 1.7, 1, 5.96046e-08, 0, 0, -0.395083, 7.50705e-09, 1.08321e-08, 0.918646, 1, 1, 1, 1.73333, 1, 0, 2.98023e-08, 1.49012e-08, -0.257286, 1.19808e-09, -4.49985e-09, 0.966335, 1, 1, 1, 1.76667, 1, -1.19209e-07, 2.98023e-08, -3.07336e-08, -0.665251, -2.76139e-09, -1.93002e-08, 0.746619, 1, 1, 1, 1.8, 1, -5.96046e-08, 2.23517e-08, -3.07336e-08, -0.665251, 9.55995e-10, -2.34722e-08, 0.746619, 1, 1, 1, 1.83333, 1, -1.18976e-07, 3.72529e-08, 0, -0.665251, 1.14619e-08, -1.28639e-08, 0.746619, 1, 1, 1, 1.86667, 1, 0, -4.47035e-08, 9.31323e-10, -0.665251, -1.54225e-09, -3.86894e-09, 0.746619, 1, 1, 1, 1.9, 1, 0, -2.98023e-08, 0, -0.665251, -1.73278e-08, 2.64772e-09, 0.746619, 1, 1, 1, 1.93333, 1, 0, -1.49012e-08, 9.31323e-10, -0.665251, 9.49332e-10, -1.78649e-08, 0.746619, 1, 1, 1, 1.96667, 1, 5.96046e-08, -1.49012e-08, -2.98023e-08, -0.665251, -1.02161e-08, 5.86587e-09, 0.746619, 1, 1, 1, 2, 1, 5.98375e-08, -2.98023e-08, 0, -0.665251, -1.76509e-08, 1.421e-08, 0.746619, 1, 1, 1, 2.03333, 1, 0, 2.98023e-08, -6.0536e-08, -0.257286, -2.76122e-09, -4.10836e-09, 0.966335, 1, 1, 1, 2.06667, 1, 0, -5.96046e-08, 0, -0.395082, -6.18184e-09, 4.94487e-09, 0.918646, 1, 1, 1, 2.1, 1, 0, 0, 0, -0.257286, 4.43854e-09, -2.19143e-09, 0.966335, 1, 1, 1, 2.13333, 1, 2.38651e-07, 5.96046e-08, 0, -0.281436, 1.31054e-09, -4.46839e-09, 0.95958, 1, 1, 1, 2.16667, 1, 0, 2.98023e-08, 2.98023e-08, -0.352208, -1.35445e-09, -6.97777e-09, 0.935922, 1, 1, 1, 2.2, 1, -2.32831e-10, -2.23517e-08, 2.98023e-08, -0.442927, 6.67987e-09, 3.30006e-09, 0.896558, 1, 1, 1, 2.23333, 1, 0, 2.98023e-08, 2.98023e-08, -0.53051, 1.08697e-08, -1.73682e-08, 0.847679, 1, 1, 1, 2.26667, 1, 2.32831e-10, 2.98023e-08, -2.98023e-08, -0.600304, -1.10789e-08, -1.00625e-08, 0.799772, 1, 1, 1, 2.3, 1, -5.93718e-08, -5.96046e-08, 0, -0.6468, 1.72579e-08, -3.07053e-09, 0.762659, 1, 1, 1, 2.33333, 1, 2.32831e-10, 2.98023e-08, -9.31323e-10, -0.665251, -1.17584e-08, 1.99693e-09, 0.746619, 1, 1, 1, 2.36667, 1, 1.19442e-07, -6.70552e-08, 5.86733e-08, -0.257286, 5.51681e-09, -6.2413e-09, 0.966335, 1, 1, 1, 2.4, 1, 2.32831e-10, -2.98023e-08, 5.96046e-08, -0.395083, 5.37265e-09, 6.36582e-09, 0.918646, 1, 1, 1, 2.43333, 1, 2.32831e-10, -2.98023e-08, 5.96046e-08, -0.257286, 1.19808e-09, -4.49985e-09, 0.966335, 1, 1, 1 ) +tracks/10/type = "transform" +tracks/10/path = NodePath("Armature/Skeleton:right_hand") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = true +tracks/10/enabled = true +tracks/10/keys = PoolRealArray( 0, 1, -2.32831e-10, 0, -1.22935e-07, -8.27181e-25, 7.45058e-09, -9.31323e-10, 1, 1, 1, 1, 0.0333333, 1, -7.68341e-09, 1.19209e-07, -1.19209e-07, -0.000848703, -2.32969e-06, 0.000313271, 1, 1, 1, 1, 0.0666667, 1, -7.68341e-09, 0, 0, -0.0035609, -2.11474e-05, 0.00125611, 0.999993, 1, 1, 1, 0.1, 1, 6.28643e-09, 2.98023e-08, 0, -0.0083405, -7.88924e-05, 0.0027892, 0.999961, 1, 1, 1, 0.133333, 1, 2.23517e-08, -2.98023e-08, 0, -0.0152644, -0.000203925, 0.00479453, 0.999872, 1, 1, 1, 0.166667, 1, 0, 2.98023e-08, 5.96046e-08, -0.024201, -0.000426065, 0.00706645, 0.999682, 1, 1, 1, 0.2, 1, 0, 2.98023e-08, 0, -0.0347835, -0.000769458, 0.00933838, 0.999351, 1, 1, 1, 0.233333, 1, 5.93718e-08, -4.47035e-08, -5.96046e-08, -0.0464787, -0.00124594, 0.0113438, 0.998854, 1, 1, 1, 0.266667, 1, 5.93718e-08, 4.47035e-08, 2.98023e-08, -0.0587227, -0.00185365, 0.0128766, 0.99819, 1, 1, 1, 0.3, 1, -5.98375e-08, -1.49012e-08, -1.49012e-08, -0.0710395, -0.00258012, 0.0138188, 0.997374, 1, 1, 1, 0.333333, 1, 1.18976e-07, 1.49012e-08, -6.33299e-08, -0.0830925, -0.0034081, 0.0141311, 0.996436, 1, 1, 1, 0.366667, 1, -1.19209e-07, -2.98023e-08, 0, -0.0957539, -0.00481974, 0.0139211, 0.995296, 1, 1, 1, 0.4, 1, -1.19442e-07, 0, 0, -0.109841, -0.00717317, 0.0133436, 0.993834, 1, 1, 1, 0.433333, 1, -1.19442e-07, 0, 0, -0.125073, -0.0102884, 0.0124648, 0.992016, 1, 1, 1, 0.466667, 1, 0, 0, 0, -0.141191, -0.0140044, 0.0113433, 0.989818, 1, 1, 1, 0.5, 1, 1.19209e-07, 1.49012e-08, -3.72529e-09, -0.157943, -0.018165, 0.0100352, 0.98723, 1, 1, 1, 0.533333, 1, 0, 0, 0, -0.175056, -0.0226023, 0.00860049, 0.984261, 1, 1, 1, 0.566667, 1, 0, 0, 0, -0.192202, -0.0271134, 0.00711122, 0.980955, 1, 1, 1, 0.6, 1, 0, 0, 0, -0.208922, -0.031413, 0.00566816, 0.977411, 1, 1, 1, 0.633333, 1, 0, 0, 0, -0.224445, -0.0350126, 0.00444314, 0.973847, 1, 1, 1, 0.666667, 1, -1.19209e-07, -1.49012e-08, -3.72529e-09, -0.236992, -0.0367779, 0.00383472, 0.970808, 1, 1, 1, 0.7, 1, 0, 0, 0, -0.241115, -0.0281187, 0.04774, 0.968914, 1, 1, 1, 0.733333, 1, -5.98375e-08, 2.98023e-08, 0, -0.229988, -0.0368015, 0.0402702, 0.971663, 1, 1, 1, 0.766667, 1, -5.96046e-08, -2.98023e-08, 2.6077e-08, -0.206314, -0.0550759, 0.0244832, 0.976628, 1, 1, 1, 0.8, 1, 0, 2.98023e-08, -2.6077e-08, -0.177536, -0.0769418, 0.00547613, 0.981087, 1, 1, 1, 0.833333, 1, -7.45058e-09, -5.96046e-08, 0, -0.147534, -0.0993378, -0.0141281, 0.983954, 1, 1, 1, 0.866667, 1, 7.21775e-09, 2.98023e-08, -2.98023e-08, -0.118953, -0.120296, -0.0326052, 0.985046, 1, 1, 1, 0.9, 1, 0, 0, 0, -0.093845, -0.138393, -0.0486709, 0.984719, 1, 1, 1, 0.933333, 1, -1.5134e-08, 1.49012e-08, -3.72529e-09, -0.0739354, -0.152506, -0.0612851, 0.983626, 1, 1, 1, 0.966667, 1, 7.45058e-09, 1.49012e-08, -3.72529e-09, -0.0607909, -0.161646, -0.0695195, 0.982518, 1, 1, 1, 1, 1, 0, 0, 0, -0.0559862, -0.164802, -0.072432, 0.982069, 1, 1, 1, 1.03333, 1, 7.21775e-09, 0, -3.35276e-08, -0.0570609, -0.161202, -0.0706035, 0.982738, 1, 1, 1, 1.06667, 1, 1.49012e-08, 0, 0, -0.0601448, -0.151641, -0.065723, 0.984413, 1, 1, 1, 1.1, 1, -1.49012e-08, 0, 2.6077e-08, -0.0648638, -0.137162, -0.0583262, 0.9867, 1, 1, 1, 1.13333, 1, -1.5134e-08, 0, 2.6077e-08, -0.0708851, -0.118671, -0.0488813, 0.989193, 1, 1, 1, 1.16667, 1, 1.46683e-08, 0, -2.98023e-08, -0.0778851, -0.0970578, -0.0378451, 0.991505, 1, 1, 1, 1.2, 1, 0, 2.98023e-08, 0, -0.0855185, -0.0732977, -0.0257195, 0.993304, 1, 1, 1, 1.23333, 1, -1.49012e-08, -2.98023e-08, -3.72529e-09, -0.0933783, -0.0485999, -0.0131234, 0.994357, 1, 1, 1, 1.26667, 1, -7.68341e-09, 0, 0, -0.100918, -0.0246699, -0.000927001, 0.994588, 1, 1, 1, 1.3, 1, 1.86265e-09, -5.96046e-08, 0, -0.107249, -0.0043864, 0.00940451, 0.994178, 1, 1, 1, 1.33333, 1, 3.49246e-09, 0, 0, -0.110367, 0.00566552, 0.0145224, 0.993769, 1, 1, 1, 1.36667, 1, 0, 0, 2.98023e-08, -0.110367, 0.00566552, 0.0145224, 0.993769, 1, 1, 1, 1.4, 1, -7.68341e-09, 0, 0, -0.106201, -0.0110135, 0.0146425, 0.994176, 1, 1, 1, 1.43333, 1, 0, -5.96046e-08, 0, -0.0974055, -0.0441953, 0.0150647, 0.994149, 1, 1, 1, 1.46667, 1, -1.5134e-08, 2.98023e-08, 0, -0.0859054, -0.0845578, 0.0158535, 0.992582, 1, 1, 1, 1.5, 1, 2.95695e-08, 0, 0, -0.0723249, -0.128448, 0.0170879, 0.988928, 1, 1, 1, 1.53333, 1, -3.00352e-08, -8.9407e-08, 0, -0.0569447, -0.173534, 0.0188842, 0.982999, 1, 1, 1, 1.56667, 1, -2.98023e-08, -2.98023e-08, 0, -0.0398721, -0.217796, 0.0214282, 0.974944, 1, 1, 1, 1.6, 1, 5.93718e-08, 0, -3.72529e-09, -0.0210247, -0.258976, 0.0250484, 0.96533, 1, 1, 1, 1.63333, 1, 2.98023e-08, -5.96046e-08, 0, -0.00125307, -0.259008, 0.0311582, 0.965372, 1, 1, 1, 1.66667, 1, -2.32831e-10, 5.96046e-08, -3.72529e-09, 0.0234479, -0.258101, 0.0394697, 0.965027, 1, 1, 1, 1.7, 1, 0, 0, 0, 0.0642633, 0.444217, 0.0687409, 0.890963, 1, 1, 1, 1.73333, 1, 0, 2.98023e-08, -2.6077e-08, -0.0898203, 0.0432844, 0.0664561, 0.992795, 1, 1, 1, 1.76667, 1, 0, 2.98023e-08, 0, -0.167774, 0.0562806, -0.103046, 0.978808, 1, 1, 1, 1.8, 1, 0, 0, 0, -0.167774, 0.0562806, -0.103046, 0.978808, 1, 1, 1, 1.83333, 1, 0, 0, 5.58794e-08, -0.167774, 0.0562806, -0.103046, 0.978808, 1, 1, 1, 1.86667, 1, 0, 2.98023e-08, 0, -0.167774, 0.0562806, -0.103046, 0.978808, 1, 1, 1, 1.9, 1, 0, 1.49012e-08, -6.33299e-08, -0.167774, 0.0562806, -0.103046, 0.978808, 1, 1, 1, 1.93333, 1, -1.78814e-07, -2.98023e-08, 0, -0.167774, 0.0562806, -0.103046, 0.978808, 1, 1, 1, 1.96667, 1, -5.96046e-08, 1.49012e-08, -3.72529e-09, -0.167774, 0.0562806, -0.103046, 0.978808, 1, 1, 1, 2, 1, 0, 2.98023e-08, 5.96046e-08, -0.167774, 0.0562806, -0.103046, 0.978808, 1, 1, 1, 2.03333, 1, 5.96046e-08, 0, -2.98023e-08, 0.0234479, -0.258101, 0.0394698, 0.965027, 1, 1, 1, 2.06667, 1, 0, -2.98023e-08, 1.49012e-08, -0.0698084, -0.283789, 0.210864, 0.932806, 1, 1, 1, 2.1, 1, 0, 0, 0, -0.0898203, 0.0432844, 0.0664561, 0.992795, 1, 1, 1, 2.13333, 1, -5.98375e-08, -1.49012e-08, -3.72529e-09, -0.121037, 0.0484523, -0.00175781, 0.991463, 1, 1, 1, 2.16667, 1, -4.65661e-10, 2.98023e-08, -6.33299e-08, -0.140312, 0.0515693, -0.0445626, 0.987759, 1, 1, 1, 2.2, 1, 1.19209e-07, 4.47035e-08, 6.33299e-08, -0.152483, 0.0535197, -0.0717518, 0.984244, 1, 1, 1, 2.23333, 1, 5.96046e-08, -4.47035e-08, 5.96046e-08, -0.16, 0.0547377, -0.0884236, 0.981624, 1, 1, 1, 2.26667, 1, -5.96046e-08, 0, 0, -0.164339, 0.0554786, -0.0976962, 0.979985, 1, 1, 1, 2.3, 1, 5.96046e-08, 0, 5.96046e-08, -0.166571, 0.0559282, -0.101832, 0.979161, 1, 1, 1, 2.33333, 1, 5.93718e-08, 4.47035e-08, -3.72529e-09, -0.167774, 0.0562806, -0.103046, 0.978808, 1, 1, 1, 2.36667, 1, -2.98023e-08, 1.49012e-08, -5.96046e-08, 0.0234478, -0.258101, 0.0394697, 0.965026, 1, 1, 1, 2.4, 1, -5.98375e-08, -1.49012e-08, -1.49012e-08, -0.0698083, -0.283789, 0.210864, 0.932806, 1, 1, 1, 2.43333, 1, 0, -1.49012e-08, 0, -0.0898204, 0.0432844, 0.0664561, 0.992795, 1, 1, 1 ) +tracks/11/type = "transform" +tracks/11/path = NodePath("Armature/Skeleton:right_forearm") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = true +tracks/11/enabled = true +tracks/11/keys = PoolRealArray( 0, 1, 7.45058e-09, 0, 0, 4.65661e-10, 1.86265e-09, -3.30328e-09, 1, 1, 1, 1, 0.0333333, 1, 2.23517e-08, -5.96046e-08, 0, -0.0124018, 0.00058106, 0.00699735, 0.999898, 1, 1, 1, 0.0666667, 1, -1.67638e-08, 5.96046e-08, 2.32831e-10, -0.0505125, 0.00241888, 0.028832, 0.998304, 1, 1, 1, 0.1, 1, -1.86265e-09, 0, 1.19209e-07, -0.114588, 0.00563311, 0.0663319, 0.99118, 1, 1, 1, 0.133333, 1, -1.49012e-08, -2.98023e-08, 2.32831e-10, -0.20105, 0.0102002, 0.118393, 0.972347, 1, 1, 1, 0.166667, 1, -1.86265e-09, -2.98023e-08, -1.19209e-07, -0.299892, 0.0157997, 0.180312, 0.936644, 1, 1, 1, 0.2, 1, 2.98023e-08, 0, 0, -0.396114, 0.0218219, 0.244216, 0.884859, 1, 1, 1, 0.233333, 1, 0, 5.96046e-08, 0, -0.476266, 0.0276448, 0.30257, 0.825141, 1, 1, 1, 0.266667, 1, 0, 2.98023e-08, 0, -0.533959, 0.0329297, 0.351516, 0.76827, 1, 1, 1, 0.3, 1, 2.79397e-08, 0, 5.93718e-08, -0.569316, 0.0376551, 0.390953, 0.722231, 1, 1, 1, 0.333333, 1, -6.14673e-08, 8.9407e-08, -5.96046e-08, -0.585204, 0.0419711, 0.422597, 0.690786, 1, 1, 1, 0.366667, 1, 5.7742e-08, 2.98023e-08, 0, -0.592279, 0.0458006, 0.447584, 0.668413, 1, 1, 1, 0.4, 1, -5.96046e-08, -8.9407e-08, 0, -0.59927, 0.0490941, 0.466823, 0.648492, 1, 1, 1, 0.433333, 1, 5.7742e-08, 5.96046e-08, -5.93718e-08, -0.606184, 0.0520547, 0.481706, 0.630706, 1, 1, 1, 0.466667, 1, -2.98023e-08, -2.98023e-08, 2.32831e-10, -0.612907, 0.0548671, 0.493384, 0.614741, 1, 1, 1, 0.5, 1, -2.98023e-08, 0, -2.32831e-10, -0.619196, 0.0577183, 0.502911, 0.600288, 1, 1, 1, 0.533333, 1, 2.79397e-08, 0, 5.93718e-08, -0.624653, 0.0608196, 0.51138, 0.587026, 1, 1, 1, 0.566667, 1, -2.98023e-08, 5.96046e-08, 0, -0.628642, 0.06444, 0.520095, 0.574593, 1, 1, 1, 0.6, 1, 2.98023e-08, -2.98023e-08, 0, -0.630092, 0.0689661, 0.530866, 0.562502, 1, 1, 1, 0.633333, 1, -1.86265e-09, -5.96046e-08, -1.19209e-07, -0.626995, 0.0750397, 0.546661, 0.549917, 1, 1, 1, 0.666667, 1, 0, 0, 0, -0.614601, 0.0840235, 0.573725, 0.534831, 1, 1, 1, 0.7, 1, -1.49012e-08, 0, 0, -0.466716, 0.1082, 0.670965, 0.565928, 1, 1, 1, 0.733333, 1, -9.31323e-09, 0, 0, -0.460151, 0.105808, 0.631613, 0.614924, 1, 1, 1, 0.766667, 1, 0, -2.98023e-08, 0, -0.473473, 0.100545, 0.544768, 0.684793, 1, 1, 1, 0.8, 1, 2.98023e-08, 0, 5.93718e-08, -0.489075, 0.0921208, 0.424449, 0.756414, 1, 1, 1, 0.833333, 1, -1.67638e-08, 0, 0, -0.497123, 0.0808768, 0.285054, 0.815519, 1, 1, 1, 0.866667, 1, -1.49012e-08, 0, 0, -0.49373, 0.0681926, 0.145885, 0.854575, 1, 1, 1, 0.9, 1, 0, 0, 0, -0.480489, 0.0559444, 0.0251179, 0.874854, 1, 1, 1, 0.933333, 1, -1.86265e-09, 2.98023e-08, -5.96046e-08, -0.461684, 0.0457015, -0.0657558, 0.883422, 1, 1, 1, 0.966667, 1, -9.31323e-09, 2.98023e-08, -2.98023e-08, -0.441275, 0.0384171, -0.121584, 0.888267, 1, 1, 1, 1, 1, -5.58794e-09, 0, 0, -0.421471, 0.0346284, -0.139579, 0.895366, 1, 1, 1, 1.03333, 1, 1.49012e-08, 0, -2.32831e-10, -0.399035, 0.0331327, -0.132841, 0.906657, 1, 1, 1, 1.06667, 1, -1.86265e-09, 0, 0, -0.370684, 0.0322857, -0.117945, 0.920674, 1, 1, 1, 1.1, 1, -1.86265e-09, 0, 0, -0.336852, 0.0319048, -0.0961129, 0.936096, 1, 1, 1, 1.13333, 1, 0, 0, -2.32831e-10, -0.297956, 0.0318425, -0.0683236, 0.951599, 1, 1, 1, 1.16667, 1, 2.98023e-08, -2.98023e-08, -2.32831e-10, -0.254646, 0.0319643, -0.0356117, 0.96585, 1, 1, 1, 1.2, 1, -4.65661e-08, 5.96046e-08, 5.96046e-08, -0.208056, 0.0321346, 0.000684282, 0.977589, 1, 1, 1, 1.23333, 1, -2.98023e-08, 5.96046e-08, 0, -0.160098, 0.0322038, 0.0386607, 0.985818, 1, 1, 1, 1.26667, 1, -1.67638e-08, 5.96046e-08, -5.98375e-08, -0.113933, 0.0319888, 0.075467, 0.990101, 1, 1, 1, 1.3, 1, -1.86265e-09, 0, -5.96046e-08, -0.0750973, 0.0312159, 0.106374, 0.990995, 1, 1, 1, 1.33333, 1, -1.86265e-09, -5.96046e-08, 2.98023e-08, -0.055871, 0.029279, 0.121061, 0.990639, 1, 1, 1, 1.36667, 1, 0, 5.96046e-08, 0, -0.0611071, 0.000259519, 8.22582e-06, 0.998131, 1, 1, 1, 1.4, 1, 7.45058e-09, 0, 0, -0.0365494, -0.0205772, 0.0423826, 0.998221, 1, 1, 1, 1.43333, 1, 0, 5.96046e-08, 0, 0.0161034, -0.0401024, 0.132374, 0.990257, 1, 1, 1, 1.46667, 1, -1.86265e-09, 5.96046e-08, 5.96046e-08, 0.0856045, -0.0600908, 0.249365, 0.962745, 1, 1, 1, 1.5, 1, 0, 5.96046e-08, 0, 0.164224, -0.0800188, 0.37912, 0.907136, 1, 1, 1, 1.53333, 1, 5.7742e-08, 0, -5.96046e-08, 0.242215, -0.0985351, 0.504746, 0.822712, 1, 1, 1, 1.56667, 1, -6.14673e-08, 2.98023e-08, 5.93718e-08, 0.309983, -0.114661, 0.610757, 0.719541, 1, 1, 1, 1.6, 1, 2.36556e-07, -5.96046e-08, -5.96046e-08, 0.361703, -0.128824, 0.688916, 0.614792, 1, 1, 1, 1.63333, 1, -1.21072e-07, 2.98023e-08, 5.96046e-08, 0.395672, -0.143423, 0.738255, 0.527118, 1, 1, 1, 1.66667, 1, -1.21072e-07, 0, 5.96046e-08, 0.409007, -0.165142, 0.756572, 0.482742, 1, 1, 1, 1.7, 1, 0, -5.96046e-08, 0, -0.103646, -0.210758, 0.718257, 0.654939, 1, 1, 1, 1.73333, 1, 0, 0, 0, -0.294755, 0.0456312, 0.615492, 0.729525, 1, 1, 1, 1.76667, 1, 5.7742e-08, 5.96046e-08, 5.96046e-08, -0.134123, 0.0747301, 0.724562, 0.67189, 1, 1, 1, 1.8, 1, 5.7742e-08, 5.96046e-08, 2.32831e-10, -0.0593648, 0.0770919, 0.753872, 0.649777, 1, 1, 1, 1.83333, 1, -1.86265e-09, 5.96046e-08, -5.96046e-08, -0.0108301, 0.0782815, 0.765256, 0.638856, 1, 1, 1, 1.86667, 1, 0, 1.19209e-07, 2.32831e-10, 0.0210995, 0.0789387, 0.769069, 0.633921, 1, 1, 1, 1.9, 1, 0, 0, 0, 0.0415743, 0.0793395, 0.770582, 0.631015, 1, 1, 1, 1.93333, 1, -1.86265e-09, 0, -5.96046e-08, 0.0537381, 0.0796354, 0.773588, 0.626364, 1, 1, 1, 1.96667, 1, -1.86265e-09, 0, 5.96046e-08, 0.0597688, 0.079932, 0.78208, 0.615134, 1, 1, 1, 2, 1, 0, 0, 0, 0.0615275, 0.0803052, 0.80209, 0.588572, 1, 1, 1, 2.03333, 1, 1.19209e-07, -2.98023e-08, 0, -0.220053, 0.0792811, 0.840672, 0.488428, 1, 1, 1, 2.06667, 1, 7.45058e-09, -1.19209e-07, 0, -0.459743, 0.093815, 0.646306, 0.601767, 1, 1, 1, 2.1, 1, 0, 0, 0, -0.196194, 0.0644135, 0.728097, 0.653631, 1, 1, 1, 2.13333, 1, 0, -5.96046e-08, 0, -0.137387, 0.0537765, 0.754962, 0.638956, 1, 1, 1, 2.16667, 1, 0, 0, 0, -0.101317, 0.0472298, 0.773573, 0.62377, 1, 1, 1, 2.2, 1, 0, -5.96046e-08, 0, -0.0788084, 0.0431863, 0.788733, 0.608132, 1, 1, 1, 2.23333, 1, -1.19209e-07, 1.19209e-07, 0, -0.0653286, 0.0408592, 0.802687, 0.591402, 1, 0.999999, 1, 2.26667, 1, -5.96046e-08, 0, 0, -0.05825, 0.0398016, 0.816874, 0.572486, 1, 1, 1, 2.3, 1, -1.86265e-09, 0, 5.96046e-08, -0.0558001, 0.0397357, 0.832645, 0.549554, 1, 1, 1, 2.33333, 1, 5.7742e-08, -2.98023e-08, -5.93718e-08, -0.0564026, 0.0404613, 0.851989, 0.518939, 1, 1, 1, 2.36667, 1, 0, 0, -2.32831e-10, 0.886974, -0.14719, -0.0111324, -0.437593, 1, 1, 1, 2.4, 1, 1.49012e-08, -5.96046e-08, -2.32831e-10, -0.312507, 0.0243273, 0.765988, 0.561257, 1, 1, 1, 2.43333, 1, -1.49012e-08, 0, 0, -0.160773, -0.0769643, 0.783368, 0.595452, 1, 1, 1 ) +tracks/12/type = "transform" +tracks/12/path = NodePath("Armature/Skeleton:right_upper_arm") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = true +tracks/12/enabled = true +tracks/12/keys = PoolRealArray( 0, 1, 0, -7.45058e-09, 4.65661e-10, 3.72529e-09, 1.86265e-09, 3.72529e-09, 1, 1, 1, 1, 0.0333333, 1, -7.45058e-09, -7.45058e-09, 4.65661e-10, -0.00894172, 0.00346712, 0.00223203, 0.999952, 1, 1, 1, 0.0666667, 1, 7.45058e-09, 0, 4.65661e-10, -0.0360942, 0.0139954, 0.00919987, 0.999208, 1, 1, 1, 0.1, 1, 7.91624e-09, -1.49012e-08, 4.65661e-10, -0.0808726, 0.0313581, 0.0211395, 0.996007, 1, 1, 1, 0.133333, 1, -7.45058e-09, 0, 0, -0.140142, 0.0543397, 0.0377671, 0.987918, 1, 1, 1, 0.166667, 1, -6.98492e-09, -1.49012e-08, 4.65661e-10, -0.20732, 0.0803876, 0.0579637, 0.97324, 1, 1, 1, 0.2, 1, 7.91624e-09, -7.45058e-09, 1.19675e-07, -0.27336, 0.105995, 0.0798613, 0.952713, 1, 1, 1, 0.233333, 1, 0, 0, 0, -0.329711, 0.127844, 0.101466, 0.929866, 1, 1, 1, 0.266667, 1, -1.49012e-08, 0, 0, -0.370943, 0.143832, 0.121348, 0.909389, 1, 1, 1, 0.3, 1, 4.65661e-10, 1.49012e-08, 1.19209e-07, -0.395097, 0.153197, 0.138851, 0.895069, 1, 1, 1, 0.333333, 1, 1.49012e-08, -1.49012e-08, -1.18744e-07, -0.402367, 0.156017, 0.153862, 0.888868, 1, 1, 1, 0.366667, 1, 4.65661e-10, -7.45058e-09, -1.18744e-07, -0.399186, 0.153713, 0.167417, 0.888253, 1, 1, 1, 0.4, 1, -6.98492e-09, 1.49012e-08, 4.65661e-10, -0.391941, 0.147736, 0.18059, 0.889912, 1, 1, 1, 0.433333, 1, -6.98492e-09, -1.49012e-08, 4.65661e-10, -0.381312, 0.138346, 0.193492, 0.893321, 1, 1, 1, 0.466667, 1, 7.45058e-09, -7.45058e-09, 4.65661e-10, -0.367866, 0.125677, 0.206196, 0.897977, 1, 1, 1, 0.5, 1, 7.91624e-09, 2.23517e-08, 9.31323e-10, -0.352145, 0.10976, 0.218756, 0.903378, 1, 1, 1, 0.533333, 1, -6.98492e-09, 1.49012e-08, 4.65661e-10, -0.33475, 0.0905285, 0.231216, 0.909003, 1, 1, 1, 0.566667, 1, 0, 0, 0, -0.316452, 0.0677954, 0.243631, 0.914279, 1, 1, 1, 0.6, 1, 7.91624e-09, -7.45058e-09, -1.18744e-07, -0.298407, 0.0411716, 0.256106, 0.918514, 1, 1, 1, 0.633333, 1, -1.11759e-08, 0, 0, -0.282661, 0.00983224, 0.268867, 0.920715, 1, 1, 1, 0.666667, 1, -3.72529e-09, 0, 0, -0.27398, -0.028364, 0.282547, 0.918857, 1, 1, 1, 0.7, 1, 7.45058e-09, 0, 4.65661e-10, -0.285641, -0.0968182, 0.302241, 0.90426, 1, 1, 1, 0.733333, 1, 4.65661e-10, -1.49012e-08, 4.65661e-10, -0.284963, -0.0892103, 0.320821, 0.898839, 1, 1, 1, 0.766667, 1, 7.45058e-09, -2.98023e-08, 4.65661e-10, -0.282332, -0.0728367, 0.339933, 0.894108, 1, 1, 1, 0.8, 1, 1.49012e-08, 2.98023e-08, 4.65661e-10, -0.27882, -0.0531909, 0.358071, 0.889503, 1, 1, 1, 0.833333, 1, 0, -7.45058e-09, 6.0536e-08, -0.275, -0.0330071, 0.37449, 0.884897, 1, 1, 1, 0.866667, 1, -1.44355e-08, -6.70552e-08, 6.00703e-08, -0.271279, -0.0139997, 0.38875, 0.880389, 1, 1, 1, 0.9, 1, -1.49012e-08, -7.45058e-09, 6.00703e-08, -0.267997, 0.00257866, 0.400553, 0.876201, 1, 1, 1, 0.933333, 1, -1.49012e-08, 2.98023e-08, 0, -0.265464, 0.0156887, 0.409652, 0.872621, 1, 1, 1, 0.966667, 1, 4.65661e-10, -1.49012e-08, 4.65661e-10, -0.263983, 0.0243548, 0.415791, 0.869964, 1, 1, 1, 1, 1, 7.45058e-09, 0, 4.65661e-10, -0.263862, 0.0275449, 0.418639, 0.868539, 1, 1, 1, 1.03333, 1, 7.91624e-09, 0, 2.98023e-08, -0.26951, 0.026915, 0.410395, 0.870756, 1, 1, 1, 1.06667, 1, 0, 0, 0, -0.284065, 0.0250149, 0.385229, 0.877656, 1, 1, 1, 1.1, 1, 0, 0, 0, -0.306053, 0.021982, 0.344885, 0.887075, 1, 1, 1, 1.13333, 1, -1.44355e-08, 7.45058e-09, 6.00703e-08, -0.333934, 0.0179328, 0.290807, 0.896436, 1, 1, 1, 1.16667, 1, 0, 0, 0, -0.365904, 0.0130241, 0.224962, 0.90296, 1, 1, 1, 1.2, 1, 0, -7.45058e-09, 4.65661e-10, -0.399862, 0.00750213, 0.150547, 0.904096, 1, 1, 1, 1.23333, 1, -4.47035e-08, 0, 0, -0.433605, 0.00173643, 0.0724678, 0.898183, 1, 1, 1, 1.26667, 1, -1.44355e-08, 7.45058e-09, 0, -0.465231, -0.00376018, -0.00234004, 0.885179, 1, 1, 1, 1.3, 1, 1.86265e-09, 2.23517e-08, 1.19675e-07, -0.493576, -0.00826201, -0.0639332, 0.86731, 1, 1, 1, 1.33333, 1, -7.45058e-09, -7.45058e-09, 4.65661e-10, -0.518247, -0.01038, -0.0931942, 0.850075, 1, 1, 1, 1.36667, 1, 4.65661e-10, 7.45058e-09, 1.19209e-07, -0.545974, 0.000177713, -0.0066096, 0.837776, 1, 1, 1, 1.4, 1, 0, 0, 1.19675e-07, -0.5343, -0.0252835, -0.0087618, 0.844871, 1, 1, 1, 1.43333, 1, -4.65661e-10, -7.45058e-09, 9.31323e-10, -0.509466, -0.0764225, -0.0130677, 0.856991, 1, 1, 1, 1.46667, 1, 0, 0, 0, -0.476509, -0.139032, -0.0183084, 0.867913, 1, 1, 1, 1.5, 1, 7.91624e-09, -1.49012e-08, 4.65661e-10, -0.437576, -0.206818, -0.0239429, 0.874746, 1, 1, 1, 1.53333, 1, 7.45058e-09, -7.45058e-09, -1.18744e-07, -0.394747, -0.275139, -0.0295784, 0.876127, 1, 1, 1, 1.56667, 1, -1.49012e-08, -7.45058e-09, -1.18744e-07, -0.35059, -0.339901, -0.034877, 0.871973, 1, 1, 1, 1.6, 1, 1.53668e-08, 1.49012e-08, 4.65661e-10, -0.308401, -0.397164, -0.0395241, 0.863474, 1, 1, 1, 1.63333, 1, -1.49012e-08, 0, 0, -0.272968, -0.442166, -0.0431483, 0.853297, 1, 1, 1, 1.66667, 1, -1.49012e-08, -2.98023e-08, 4.65661e-10, -0.255003, -0.463984, -0.044896, 0.847158, 1, 1, 1, 1.7, 1, -7.45058e-09, 0, 0, -0.646821, 0.0178613, 0.230843, 0.726646, 1, 1, 1, 1.73333, 1, -2.98023e-08, 2.98023e-08, 0, -0.538539, 0.0807906, 0.289715, 0.787092, 1, 1, 1, 1.76667, 1, 1.49012e-08, 0, 4.65661e-10, -0.376288, -0.255654, 0.242465, 0.856889, 1, 1, 1, 1.8, 1, 1.53668e-08, -1.49012e-08, 4.65661e-10, -0.383672, -0.253355, 0.210798, 0.862654, 1, 1, 1, 1.83333, 1, 7.45058e-09, 0, 4.65661e-10, -0.39586, -0.245358, 0.19308, 0.863605, 1, 1, 1, 1.86667, 1, 4.65661e-10, 0, -1.18744e-07, -0.41061, -0.235042, 0.176358, 0.863164, 1, 1, 1, 1.9, 1, -1.49012e-08, 7.45058e-09, 4.65661e-10, -0.426507, -0.224293, 0.151359, 0.863061, 1, 1, 1, 1.93333, 1, 4.65661e-10, 0, 0, -0.442165, -0.214488, 0.108367, 0.864142, 1, 1, 1, 1.96667, 1, 0, 0, 4.65661e-10, -0.454989, -0.206783, 0.0335024, 0.865508, 1, 1, 1, 2, 1, 4.65661e-10, 1.49012e-08, 1.19209e-07, -0.457698, -0.201958, -0.0977299, 0.860334, 1, 1, 1, 2.03333, 1, 4.47035e-08, 0, 0, -0.452701, -0.209345, -0.409853, 0.763713, 1, 1, 1, 2.06667, 1, -1.44355e-08, 7.45058e-09, 0, -0.49441, 0.240807, -0.219982, 0.805716, 1, 1, 1, 2.1, 1, 4.65661e-10, 7.45058e-09, 0, -0.495059, 0.190028, -0.16204, 0.832195, 1, 1, 1, 2.13333, 1, 0, 1.49012e-08, 1.19675e-07, -0.499703, 0.133237, -0.164061, 0.840017, 1, 1, 1, 2.16667, 1, 2.98023e-08, 0, 4.65661e-10, -0.502729, 0.0683624, -0.168001, 0.845202, 1, 1, 1, 2.2, 1, 4.65661e-10, 7.45058e-09, 0, -0.503195, 0.00184438, -0.175226, 0.84622, 1, 1, 1, 2.23333, 1, -1.44355e-08, 1.49012e-08, 4.65661e-10, -0.500893, -0.061346, -0.187288, 0.842773, 1, 1, 1, 2.26667, 1, -1.49012e-08, -7.45058e-09, 4.65661e-10, -0.496061, -0.116393, -0.206378, 0.835335, 1, 1, 1, 2.3, 1, -2.98023e-08, -7.45058e-09, 0, -0.489134, -0.15745, -0.236111, 0.824748, 1, 1, 1, 2.33333, 1, -1.49012e-08, 0, 1.19675e-07, -0.480236, -0.174541, -0.283629, 0.811458, 1, 1, 1, 2.36667, 1, 0, 0, 1.19675e-07, -0.096391, 0.270366, -0.684199, 0.670435, 1, 1, 1, 2.4, 1, 1.49012e-08, 0, 4.65661e-10, -0.573038, 0.102988, -0.285711, 0.761177, 1, 1, 1, 2.43333, 1, -1.44355e-08, 7.45058e-09, 1.19209e-07, -0.431687, 0.205608, -0.37807, 0.792738, 1, 1, 1 ) +tracks/13/type = "transform" +tracks/13/path = NodePath("Armature/Skeleton:right_clavicle") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = true +tracks/13/enabled = true +tracks/13/keys = PoolRealArray( 0, 1, 6.51926e-09, 0, 2.23517e-07, -1.11882e-07, 2.98023e-08, 3.20142e-09, 1, 1, 1, 1, 0.0333333, 1, -1.49012e-08, -2.23517e-08, -1.49012e-08, -1.10809e-07, 7.45058e-09, -5.98374e-08, 1, 1, 1, 1, 0.0666667, 1, -1.49012e-08, -2.98023e-08, 2.23517e-07, -1.09787e-07, 5.21541e-08, -5.40749e-08, 1, 1, 1, 1, 0.1, 1, -2.98023e-08, 0, -2.5332e-07, -1.14549e-07, 7.45059e-09, -5.96629e-08, 1, 1, 1, 1, 0.133333, 1, -1.49012e-08, 0, 0, -1.11861e-07, 2.98023e-08, 3.0268e-09, 1, 1, 1, 1, 0.166667, 1, 0, -1.49012e-08, -1.49012e-08, -1.09805e-07, 5.58794e-08, -5.40167e-08, 1, 1, 1, 1, 0.2, 1, -1.49012e-08, -1.49012e-08, 2.23517e-07, -1.06083e-07, 1.67797e-17, -4.65661e-10, 1, 1, 1, 1, 0.233333, 1, 0, 1.49012e-08, 0, -1.06062e-07, 1.25695e-17, -3.49246e-10, 1, 1, 1, 1, 0.266667, 1, -1.49012e-08, -2.23517e-08, -1.49012e-08, -1.07721e-07, 3.72529e-08, -5.58211e-08, 1, 1, 1, 1, 0.3, 1, -1.49012e-08, -3.72529e-09, -2.5332e-07, -1.14549e-07, 7.45059e-09, -5.96629e-08, 1, 1, 1, 1, 0.333333, 1, 1.49012e-08, 7.45058e-09, 0, -1.14549e-07, 7.45059e-09, -5.95464e-08, 1, 1, 1, 1, 0.366667, 1, 2.98023e-08, 0, 0, -1.09805e-07, 5.58794e-08, -5.41913e-08, 1, 1, 1, 1, 0.4, 1, 2.23517e-08, 7.45058e-09, 0, -1.09809e-07, 5.58794e-08, -5.41913e-08, 1, 1, 1, 1, 0.433333, 1, -2.98023e-08, 0, 0, -1.14578e-07, 1.11759e-08, -5.97793e-08, 1, 1, 1, 1, 0.466667, 1, -1.49012e-08, 0, 0, -1.14571e-07, 7.45059e-09, -5.97211e-08, 1, 1, 1, 1, 0.5, 1, -7.45058e-09, -1.49012e-08, -1.49012e-08, -1.06669e-07, 2.6077e-08, -5.7742e-08, 1, 1, 1, 1, 0.533333, 1, 1.49012e-08, -1.49012e-08, -1.49012e-08, -1.05632e-07, 1.27523e-14, -1.20432e-07, 1, 1, 1, 1, 0.566667, 1, -1.49012e-08, 0, 0, -1.14578e-07, 1.11759e-08, -5.97793e-08, 1, 1, 1, 1, 0.6, 1, -3.07336e-08, 2.98023e-08, 0, -1.14549e-07, 7.45059e-09, -5.95464e-08, 1, 1, 1, 1, 0.633333, 1, 0, -1.49012e-08, 2.23517e-07, -1.09369e-07, 7.82311e-08, -1.11642e-07, 1, 1, 1, 1, 0.666667, 1, -1.49012e-08, -1.49012e-08, 2.23517e-07, -1.09379e-07, 7.82311e-08, -1.11817e-07, 1, 1, 1, 1, 0.7, 1, -1.49012e-08, -2.23517e-08, -1.49012e-08, 0.0118144, 0.00613035, 0.0603184, 0.99809, 1, 1, 1, 0.733333, 1, -4.65661e-09, -3.72529e-09, 2.23517e-07, 0.0117734, 0.00574515, 0.0567685, 0.998301, 1, 1, 1, 0.766667, 1, -1.86265e-08, 1.49012e-08, 0, 0.0115498, 0.00493754, 0.0492781, 0.998706, 1, 1, 1, 0.8, 1, 0, 0, 0, 0.0110618, 0.00397323, 0.0402588, 0.99912, 1, 1, 1, 0.833333, 1, 3.0268e-08, 4.47035e-08, 2.98023e-08, 0.0102596, 0.00298284, 0.0308919, 0.999466, 1, 1, 1, 0.866667, 1, 8.84756e-08, 0, -7.45058e-08, 0.00910188, 0.00204829, 0.0219169, 0.999716, 1, 1, 1, 0.9, 1, 1.49012e-08, -2.98023e-08, -1.49012e-08, 0.00754725, 0.00123089, 0.0138816, 0.999874, 1, 1, 1, 0.933333, 1, 2.23517e-08, -3.72529e-08, -1.49012e-08, 0.00554983, 0.000583102, 0.00725194, 0.999958, 1, 1, 1, 0.966667, 1, 0, -7.45058e-09, -1.49012e-08, 0.00305574, 0.000155305, 0.00247115, 0.999992, 1, 1, 1, 1, 1, 0, 0, 0, -1.14571e-07, 1.11759e-08, -5.96046e-08, 1, 1, 1, 1, 1.03333, 1, 0, 0, 0, -0.0044666, 4.80884e-06, -0.00105159, 0.99999, 1, 1, 1, 1.06667, 1, -7.45058e-09, 0, 0, -0.0108542, 1.78854e-05, -0.00192362, 0.999939, 1, 1, 1, 1.1, 1, 0, -1.49012e-08, -1.49012e-08, -0.0187812, 3.78154e-05, -0.00263951, 0.99982, 1, 1, 1, 1.13333, 1, 0, 0, 1.04308e-07, -0.0279044, 6.31877e-05, -0.00321715, 0.999605, 1, 1, 1, 1.16667, 1, -6.00703e-08, -1.49012e-08, 2.98023e-08, -0.0378874, 9.27288e-05, -0.00367114, 0.999275, 1, 1, 1, 1.2, 1, 2.84053e-08, 0, 1.04308e-07, -0.0483667, 0.000125117, -0.00401363, 0.998822, 1, 1, 1, 1.23333, 1, 1.39698e-08, -7.45058e-09, 2.23517e-07, -0.0588973, 0.000158588, -0.00425501, 0.998255, 1, 1, 1, 1.26667, 1, -1.49012e-08, 0, 0, -0.0688468, 0.000191149, -0.00440567, 0.997618, 1, 1, 1, 1.3, 1, -8.3819e-09, 7.45058e-09, 0, -0.0771214, 0.000218686, -0.00447731, 0.997012, 1, 1, 1, 1.33333, 1, 1.49012e-08, -7.45058e-09, -1.49012e-08, -0.0811645, 0.000232298, -0.00449111, 0.996691, 1, 1, 1, 1.36667, 1, -1.58325e-08, 2.98023e-08, 0, -0.0420035, 6.03078e-06, -0.000414931, 0.999117, 1, 1, 1, 1.4, 1, -9.31323e-10, 2.98023e-08, 0, -0.0403969, -0.000647363, -0.0123543, 0.999107, 1, 1, 1, 1.43333, 1, -5.58794e-09, 7.45058e-09, 0, -0.0398228, -0.00146383, -0.035945, 0.998559, 1, 1, 1, 1.46667, 1, -1.86265e-09, -1.49012e-08, -1.49012e-08, -0.0396462, -0.00233896, -0.0643806, 0.997135, 1, 1, 1, 1.5, 1, -2.93367e-08, 1.49012e-08, -2.5332e-07, -0.0396274, -0.00322912, -0.0950291, 0.99468, 1, 1, 1, 1.53333, 1, -1.49012e-08, 0, 0, -0.0396268, -0.00410424, -0.126268, 0.991196, 1, 1, 1, 1.56667, 1, 4.42378e-08, 1.49012e-08, 0, -0.0395321, -0.00493578, -0.156716, 0.98684, 1, 1, 1, 1.6, 1, 0, -1.49012e-08, 2.23517e-07, -0.0391534, -0.00611818, -0.173986, 0.98395, 1, 1, 1, 1.63333, 1, 4.42378e-08, -2.23517e-08, -1.49012e-08, -0.0382404, -0.00762521, -0.174023, 0.983969, 1, 1, 1, 1.66667, 1, 1.49012e-08, 3.72529e-09, -1.3411e-07, -0.0364267, -0.00830686, -0.174019, 0.984033, 1, 1, 1, 1.7, 1, 3.67872e-08, 0, 0, 0.0856084, 0.00604212, -0.00765459, 0.996281, 1, 1, 1, 1.73333, 1, -9.31323e-10, 4.47035e-08, 0, 0.00169266, -0.0176983, 0.0856222, 0.996169, 1, 1, 1, 1.76667, 1, 1.49012e-08, 0, 0, -0.0157705, 0.015697, -0.164935, 0.986053, 1, 1, 1, 1.8, 1, 0, -7.45058e-09, -1.49012e-08, -0.0269145, 0.0178896, -0.164593, 0.985832, 1, 1, 1, 1.83333, 1, 0, 1.49012e-08, 0, -0.0364973, 0.0192687, -0.162841, 0.985789, 1, 1, 1, 1.86667, 1, 5.9139e-08, 1.49012e-08, 0, -0.0448168, 0.0201501, -0.158749, 0.986095, 1, 1, 1, 1.9, 1, 2.98023e-08, 1.49012e-08, 0, -0.0519279, 0.0206935, -0.151368, 0.986896, 1, 1, 1, 1.93333, 1, 1.39698e-08, 0, 2.23517e-07, -0.0577195, 0.0209966, -0.139395, 0.98833, 1, 1, 1, 1.96667, 1, 0, 0, 0, -0.0618666, 0.0211303, -0.120685, 0.990536, 1, 1, 1, 2, 1, -2.98023e-08, 0, 0, -0.063592, 0.0211594, -0.0909554, 0.993597, 1, 1, 1, 2.03333, 1, -5.96046e-08, -2.23517e-08, -1.49012e-08, -0.038261, 0.00313202, -0.00805665, 0.99923, 1, 1, 1, 2.06667, 1, 0, 2.6077e-08, -2.38419e-07, 0.0111833, 0.00495235, 0.141359, 0.989883, 1, 1, 1, 2.1, 1, -5.96046e-08, 0, 0, -0.00247945, -0.0175593, 0.17353, 0.984669, 1, 1, 1, 2.13333, 1, 0, 1.49012e-08, 0, -0.0070114, -0.0153788, 0.157652, 0.98735, 1, 1, 1, 2.16667, 1, 2.98023e-08, 1.49012e-08, 0, -0.00876381, -0.0104793, 0.120503, 0.992619, 1, 1, 1, 2.2, 1, 2.98023e-08, 0, 0, -0.00922261, -0.00426257, 0.0706398, 0.99745, 1, 1, 1, 2.23333, 1, -4.56348e-08, 2.98023e-08, 0, -0.00927362, 0.00238232, 0.0129982, 0.99987, 1, 1, 1, 2.26667, 1, -1.44355e-08, 4.09782e-08, -2.38419e-07, -0.00967951, 0.00864856, -0.0484157, 0.998743, 1, 1, 1, 2.3, 1, -2.98023e-08, -1.49012e-08, 2.23517e-07, -0.0113468, 0.0135838, -0.109495, 0.99383, 1, 1, 1, 2.33333, 1, 7.45058e-09, -2.98023e-08, 8.9407e-08, -0.0157706, 0.015697, -0.164935, 0.986053, 1, 1, 1, 2.36667, 1, 1.49012e-08, -3.72529e-09, -1.3411e-07, -0.0364267, -0.00830694, -0.174019, 0.984033, 1, 1, 1, 2.4, 1, -3.07336e-08, -6.33299e-08, 0, 0.0856084, 0.00604209, -0.00765471, 0.996281, 1, 1, 1, 2.43333, 1, -1.58325e-08, 0, 2.23517e-07, 0.00169278, -0.0176983, 0.0856222, 0.996169, 1, 1, 1 ) +tracks/14/type = "transform" +tracks/14/path = NodePath("Armature/Skeleton:left_fingers_end") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = true +tracks/14/enabled = true +tracks/14/keys = PoolRealArray( 0, 1, -8.73115e-10, 5.96046e-08, 0, -8.73115e-11, -2.91038e-11, -5.8634e-10, 1, 1, 1, 1, 0.0333333, 1, 9.31323e-09, 0, -3.63798e-12, -1.86194e-05, 9.60472e-10, -2.44991e-09, 1, 1, 1, 1, 0.0666667, 1, 0, 1.19209e-07, 1.19209e-07, -0.000165986, 3.0747e-11, -9.89967e-09, 1, 1, 1, 1, 0.1, 1, 0, 1.19209e-07, 1.19209e-07, -0.000619244, 1.49254e-08, 7.79034e-09, 1, 1, 1, 1, 0.133333, 1, -5.96046e-08, 0, 1.19206e-07, -0.00160062, 7.38437e-09, 5.00635e-09, 0.999999, 1, 1, 1, 0.166667, 1, 0, 0, 0, -0.00334399, 7.41612e-09, -7.088e-09, 0.999994, 1, 1, 1, 0.2, 1, -5.96046e-08, 0, 5.9601e-08, -0.00603896, -2.23311e-08, -3.49371e-09, 0.999982, 1, 1, 1, 0.233333, 1, 5.96046e-08, 5.96046e-08, -3.63798e-12, -0.00977918, -7.41724e-09, -3.4459e-09, 0.999952, 1, 1, 1, 0.266667, 1, 5.82077e-11, -1.19209e-07, 5.9601e-08, -0.0145492, -3.66976e-09, 2.15785e-09, 0.999894, 1, 1, 1, 0.3, 1, 0, -5.96046e-08, 0, -0.0202519, 6.30636e-11, 4.07213e-09, 0.999795, 1, 1, 1, 0.333333, 1, 0, -5.96046e-08, 0, -0.026751, 5.68069e-09, -2.30327e-09, 0.999642, 1, 1, 1, 0.366667, 1, 0, 0, 0, -0.0396661, 1.58453e-10, 4.0794e-09, 0.999213, 1, 1, 1, 0.4, 1, 1.19267e-07, 5.96046e-08, -5.96083e-08, -0.0632739, 2.04053e-09, 4.73025e-10, 0.997996, 1, 1, 1, 0.433333, 1, -1.19209e-07, 0, 5.9601e-08, -0.0956847, 2.92882e-09, -2.18134e-09, 0.995412, 1, 1, 1, 0.466667, 1, 0, -2.98023e-08, -5.96046e-08, -0.135138, 6.40365e-10, -4.26441e-09, 0.990827, 1, 1, 1, 0.5, 1, 5.82077e-11, -3.72529e-09, 5.96046e-08, -0.179779, 7.1788e-10, -4.25185e-09, 0.983707, 1, 1, 1, 0.533333, 1, -5.96046e-08, -1.49012e-08, 0, -0.227478, 7.51061e-10, -8.07688e-09, 0.973783, 1, 1, 1, 0.566667, 1, 0, 0, 0, -0.275652, -2.2827e-09, 6.75134e-10, 0.961258, 1, 1, 1, 0.6, 1, 5.82077e-11, -1.49012e-08, 2.98023e-08, -0.320926, -4.15408e-09, -4.97118e-09, 0.947104, 1, 1, 1, 0.633333, 1, -5.95464e-08, 2.98023e-08, -5.96083e-08, -0.358147, -1.86614e-09, -7.32443e-09, 0.933665, 1, 1, 1, 0.666667, 1, 1.19267e-07, -1.49012e-08, 0, -0.376162, -3.52695e-09, 3.96791e-09, 0.926554, 1, 1, 1, 0.7, 1, 5.82077e-11, -2.98023e-08, -2.98023e-08, -0.376162, -4.27282e-10, -1.81024e-09, 0.926554, 1, 1, 1, 0.733333, 1, 1.19326e-07, 1.49012e-08, -2.98023e-08, -0.35404, 7.03715e-10, -2.35216e-09, 0.93523, 1, 1, 1, 0.766667, 1, 5.82077e-11, 1.49012e-08, 2.92166e-08, -0.306467, 8.24388e-09, 2.02964e-09, 0.951881, 1, 1, 1, 0.8, 1, -2.97441e-08, 3.72529e-09, -1.49048e-08, -0.247926, -1.5112e-08, -4.457e-09, 0.968779, 1, 1, 1, 0.833333, 1, 2.98023e-08, -7.45058e-09, 0, -0.186428, -3.59634e-09, -6.96219e-09, 0.982469, 1, 1, 1, 0.866667, 1, -3.66708e-09, 1.49012e-08, -3.63798e-12, -0.127756, 5.30565e-11, -2.46216e-09, 0.991806, 1, 1, 1, 0.9, 1, -1.80444e-09, 1.49012e-08, -3.63798e-12, -0.0764209, 7.7008e-09, -3.74126e-09, 0.997076, 1, 1, 1, 0.933333, 1, 3.72529e-09, 7.45058e-09, 0, -0.0360079, 3.31586e-12, 3.14102e-09, 0.999352, 1, 1, 1, 0.966667, 1, 0, 7.45058e-09, -3.63798e-12, -0.00954627, -1.89231e-10, -1.51937e-09, 0.999954, 1, 1, 1, 1, 1, -3.66708e-09, 1.11759e-08, -2.9806e-08, 2.41562e-09, 5.82077e-11, -2.44907e-09, 1, 1, 1, 1, 1.03333, 1, -1.22236e-09, 0, -5.96046e-08, -0.00227314, 3.78271e-09, 3.49973e-10, 0.999997, 1, 1, 1, 1.06667, 1, 5.82077e-11, -3.72529e-09, 0, -0.00853721, 3.75929e-09, -5.57904e-10, 0.999964, 1, 1, 1, 1.1, 1, 0, 7.45058e-09, -3.63798e-12, -0.0180627, 2.87699e-11, -8.0376e-09, 0.999837, 1, 1, 1, 1.13333, 1, 1.49012e-08, 0, -2.98023e-08, -0.0302048, 4.57833e-09, -6.97473e-09, 0.999544, 1, 1, 1, 1.16667, 1, 0, -2.98023e-08, 0, -0.0443443, -9.14998e-10, 6.83104e-09, 0.999016, 1, 1, 1, 1.2, 1, 5.82077e-11, 0, -2.98023e-08, -0.0598243, -5.51245e-09, 2.24111e-08, 0.998209, 1, 1, 1, 1.23333, 1, -2.97441e-08, 0, -1.49012e-08, -0.0758599, 3.77427e-09, -1.43137e-08, 0.997119, 1, 1, 1, 1.26667, 1, 5.82077e-11, 5.96046e-08, -2.9806e-08, -0.0913625, 2.20304e-09, 1.6444e-08, 0.995818, 1, 1, 1, 1.3, 1, 1.49594e-08, 1.19209e-07, 2.97987e-08, -0.104492, 2.82422e-09, -4.04097e-09, 0.994526, 1, 1, 1, 1.33333, 1, 7.45058e-09, 0, 3.72529e-09, -0.110999, 4.0795e-10, 1.32923e-09, 0.993821, 1, 1, 1, 1.36667, 1, 5.82077e-11, 0, -3.72529e-09, -0.110999, -1.09626e-09, 1.16272e-09, 0.993821, 1, 1, 1, 1.4, 1, 5.82077e-11, 5.96046e-08, -1.49048e-08, -0.144317, 2.12971e-09, 5.36227e-09, 0.989532, 1, 1, 1, 1.43333, 1, 2.98605e-08, 5.96046e-08, 1.48975e-08, -0.212083, 1.32438e-10, 4.19274e-09, 0.977252, 1, 1, 1, 1.46667, 1, -5.94882e-08, -5.96046e-08, -1.49012e-08, -0.296236, -7.95497e-09, -3.23167e-08, 0.955115, 1, 1, 1, 1.5, 1, -5.95464e-08, 2.98023e-08, -3.63798e-12, -0.388089, -4.48041e-09, 1.56644e-08, 0.921622, 1, 1, 1, 1.53333, 1, 5.96046e-08, -2.98023e-08, 5.9601e-08, -0.480374, 5.63091e-09, -2.5185e-08, 0.877064, 1, 1, 1, 1.56667, 1, -5.95464e-08, 1.49012e-08, -3.63798e-12, -0.56632, 9.51011e-10, -9.09271e-09, 0.824185, 1, 1, 1, 1.6, 1, 0, -2.98023e-08, 0, -0.639878, -1.35751e-08, 6.57249e-11, 0.768477, 1, 1, 1, 1.63333, 1, -5.95464e-08, 3.72529e-09, -1.19209e-07, -0.695042, 1.6854e-08, 5.09376e-09, 0.718969, 1, 1, 1, 1.66667, 1, 0, 3.72529e-09, 0, -0.707107, -3.96548e-09, 1.10037e-08, 0.707107, 1, 1, 1, 1.7, 1, -1.19209e-07, -1.86265e-08, -3.63798e-12, -0.64814, 1.4734e-09, 1.02581e-08, 0.761521, 1, 1, 1, 1.73333, 1, 1.16415e-10, 1.49012e-08, -1.11795e-08, -0.707107, -4.62905e-09, 1.13053e-09, 0.707107, 1, 1, 1, 1.76667, 1, 0, -1.49012e-08, 0, -0.628072, 5.99876e-09, 4.91639e-10, 0.778155, 1, 1, 1, 1.8, 1, 2.98023e-08, 1.86265e-08, 5.9601e-08, -0.628072, -1.20796e-09, 1.98003e-08, 0.778155, 1, 1, 1, 1.83333, 1, 0, 7.45058e-09, -3.63798e-12, -0.628072, 2.48916e-09, 4.8399e-09, 0.778155, 1, 1, 1, 1.86667, 1, 2.98605e-08, 2.98023e-08, -3.63798e-12, -0.628072, 7.28636e-09, 3.32854e-10, 0.778155, 1, 1, 1, 1.9, 1, 0, 2.23517e-08, -1.19213e-07, -0.628072, -4.74002e-09, -6.96304e-09, 0.778155, 1, 1, 1, 1.93333, 1, 0, 2.23517e-08, 5.9601e-08, -0.628072, -3.47696e-09, 4.81754e-09, 0.778155, 1, 1, 1, 1.96667, 1, -1.19209e-07, -7.45058e-09, -3.63798e-12, -0.628072, -6.24802e-09, -1.77451e-08, 0.778155, 1, 1, 1, 2, 1, 5.82077e-11, -3.72529e-08, 5.96046e-08, -0.628072, -1.11365e-09, -4.04182e-09, 0.778155, 1, 1, 1, 2.03333, 1, -1.19209e-07, -5.96046e-08, -3.63798e-12, -0.707107, 3.93449e-09, -2.16465e-09, 0.707107, 1, 1, 1, 2.06667, 1, 5.82077e-11, -1.49012e-08, 2.98023e-08, -0.64814, 1.19128e-09, 2.68655e-09, 0.761521, 1, 1, 1, 2.1, 1, 0, 0, 0, -0.707107, -1.51708e-08, 1.13559e-09, 0.707107, 1, 1, 1, 2.13333, 1, 1.19326e-07, -1.49012e-08, 1.49012e-08, -0.707107, 6.1626e-10, -9.42429e-09, 0.707107, 1, 1, 1, 2.16667, 1, 5.96629e-08, -3.72529e-08, 2.97987e-08, -0.703178, -1.00172e-08, -1.59462e-08, 0.711014, 1, 1, 1, 2.2, 1, 5.96629e-08, -7.45058e-09, -2.9806e-08, -0.687735, 6.46044e-09, 7.86495e-09, 0.725962, 1, 1, 1, 2.23333, 1, 5.96046e-08, 0, 2.98023e-08, -0.669734, 6.9111e-09, 4.19758e-10, 0.742601, 1, 1, 1, 2.26667, 1, -5.95464e-08, -2.98023e-08, 0, -0.651233, -1.94379e-08, 9.55663e-09, 0.758878, 1, 1, 1, 2.3, 1, 5.96046e-08, 0, 2.98023e-08, -0.635448, -2.4337e-08, -2.19533e-08, 0.772144, 1, 1, 1, 2.33333, 1, 5.82077e-11, 2.98023e-08, -2.9806e-08, -0.628072, 4.02988e-08, 5.39948e-09, 0.778155, 1, 1, 1, 2.36667, 1, -5.96046e-08, 0, 1.19206e-07, -0.707107, 1.47879e-08, 3.40444e-09, 0.707107, 1, 1, 1, 2.4, 1, 5.82077e-11, 2.98023e-08, 2.97987e-08, -0.64814, -9.06446e-09, -9.69121e-09, 0.761521, 1, 1, 1, 2.43333, 1, 0, 0, 0, -0.707107, 2.91695e-09, -2.02861e-08, 0.707107, 1, 1, 1 ) +tracks/15/type = "transform" +tracks/15/path = NodePath("Armature/Skeleton:left_fingers_base") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = true +tracks/15/enabled = true +tracks/15/keys = PoolRealArray( 0, 1, 9.16771e-10, -5.21541e-08, 0, -4.44089e-16, -7.45058e-09, -5.4948e-08, 1, 1, 1, 1, 0.0333333, 1, 3.72529e-09, 7.45058e-09, -1.18278e-07, -0.0036157, 4.2493e-07, -6.73819e-08, 0.999994, 1, 1, 1, 0.0666667, 1, 1.49157e-08, 5.96046e-08, 0, -0.0145092, -6.75076e-08, 3.06887e-08, 0.999895, 1, 1, 1, 0.1, 1, -2.98023e-08, 7.45058e-09, -1.18278e-07, -0.0322513, 8.72579e-08, 6.80421e-08, 0.99948, 1, 1, 1, 0.133333, 1, -5.96046e-08, 5.96046e-08, -1.18278e-07, -0.0554877, 3.02213e-07, 6.7164e-08, 0.998459, 1, 1, 1, 0.166667, 1, -1.19209e-07, 0, 6.0536e-08, -0.0818088, 3.79919e-07, 1.98453e-07, 0.996648, 1, 1, 1, 0.2, 1, 0, 5.96046e-08, -5.96046e-08, -0.108074, -1.79442e-07, 2.7184e-07, 0.994143, 1, 1, 1, 0.233333, 1, 0, 5.96046e-08, 0, -0.13117, 1.9738e-07, 4.39469e-07, 0.99136, 1, 1, 1, 0.266667, 1, 1.19209e-07, 5.96046e-08, 0, -0.148747, 3.48298e-07, 1.88952e-07, 0.988875, 1, 1, 1, 0.3, 1, 2.38433e-07, 7.45058e-09, 3.07336e-08, -0.159514, 4.64568e-07, 1.60916e-07, 0.987196, 1, 1, 1, 0.333333, 1, -1.45519e-11, -5.21541e-08, 9.31323e-10, -0.163084, 2.7787e-07, 5.57557e-07, 0.986612, 1, 1, 1, 0.366667, 1, -1.45519e-11, 1.19209e-07, 0, -0.163084, 2.77264e-07, 3.32795e-07, 0.986612, 1, 1, 1, 0.4, 1, 0, 5.96046e-08, -2.98023e-08, -0.163084, 2.88289e-07, 4.48836e-07, 0.986612, 1, 1, 1, 0.433333, 1, 1.19209e-07, 2.98023e-08, 3.07336e-08, -0.163084, 2.85069e-07, 5.59691e-07, 0.986612, 1, 1, 1, 0.466667, 1, -1.19209e-07, 8.9407e-08, 0, -0.163084, 5.261e-07, 2.4366e-07, 0.986612, 1, 1, 1, 0.5, 1, -1.19224e-07, 2.98023e-08, 0, -0.163084, 2.84767e-07, 3.33091e-07, 0.986612, 1, 1, 1, 0.533333, 1, -5.96192e-08, 1.49012e-08, 9.31323e-10, -0.163084, 5.3421e-07, 2.40281e-07, 0.986612, 1, 1, 1, 0.566667, 1, -1.45519e-11, 2.23517e-08, 6.0536e-08, -0.163084, 2.88441e-07, 4.47918e-07, 0.986612, 1, 1, 1, 0.6, 1, 0, 0, 0, -0.163084, 5.27011e-07, 2.38147e-07, 0.986612, 1, 1, 1, 0.633333, 1, -1.45519e-11, 7.45058e-09, -5.96046e-08, -0.163084, 7.44134e-07, 2.49494e-07, 0.986612, 1, 1, 1, 0.666667, 1, 1.19224e-07, 7.45058e-09, 9.31323e-10, -0.163084, 7.43831e-07, 2.51332e-07, 0.986612, 1, 1, 1, 0.7, 1, 0, 7.45058e-09, 0, -0.163084, 5.08177e-07, 3.52085e-07, 0.986612, 1, 1, 1, 0.733333, 1, 5.95901e-08, -7.45058e-09, 0, -0.152943, 7.09897e-07, 3.33217e-07, 0.988235, 1, 1, 1, 0.766667, 1, 5.95901e-08, 0, 9.31323e-09, -0.131593, 4.88817e-07, 2.80972e-07, 0.991304, 1, 1, 1, 0.8, 1, 1.45519e-11, -7.45058e-09, -1.39698e-08, -0.105979, 1.9205e-07, 2.36822e-07, 0.994368, 1, 1, 1, 0.833333, 1, -1.49012e-08, 0, 9.31323e-10, -0.0795786, -2.21911e-08, 9.07227e-08, 0.996829, 1, 1, 1, 0.866667, 1, -1.11759e-08, 0, 9.31323e-10, -0.0546261, 3.35183e-07, 1.08754e-08, 0.998507, 1, 1, 1, 0.9, 1, -3.72529e-09, 0, -6.51926e-09, -0.0328018, 9.48503e-08, 6.27496e-08, 0.999462, 1, 1, 1, 0.933333, 1, 0, -7.45058e-09, 0, -0.0155262, 6.64687e-08, 3.82895e-08, 0.999879, 1, 1, 1, 0.966667, 1, 9.31323e-10, 7.45058e-09, 0, -0.00413164, 1.93964e-07, -5.97351e-08, 0.999991, 1, 1, 1, 1, 1, -1.8772e-09, 0, -2.98023e-08, 2.98023e-08, -7.45058e-09, -5.68107e-08, 1, 1, 1, 1, 1.03333, 1, -1.23691e-09, 0, -2.98023e-08, -0.00340827, -2.37982e-07, -1.28403e-07, 0.999994, 1, 1, 1, 1.06667, 1, 7.43603e-09, 0, -2.8871e-08, -0.0128054, 4.76428e-07, 3.49747e-08, 0.999918, 1, 1, 1, 1.1, 1, 2.98023e-08, -7.45058e-09, 0, -0.027107, -1.9372e-07, -2.45809e-09, 0.999633, 1, 1, 1, 1.13333, 1, 1.49157e-08, 1.49012e-08, 3.07336e-08, -0.0453507, 1.08096e-07, 8.32189e-08, 0.998971, 1, 1, 1, 1.16667, 1, 2.97878e-08, 0, -2.8871e-08, -0.0666022, 1.09383e-07, 2.63052e-07, 0.99778, 1, 1, 1, 1.2, 1, 0, 3.72529e-08, 2.98023e-08, -0.0898585, 5.01862e-08, 2.72903e-07, 0.995955, 1, 1, 1, 1.23333, 1, 2.98023e-08, 2.98023e-08, 0, -0.113916, 4.46728e-07, 1.59027e-07, 0.99349, 1, 1, 1, 1.26667, 1, -2.98023e-08, 0, 9.31323e-10, -0.137121, 3.52866e-07, 2.76376e-07, 0.990554, 1, 1, 1, 1.3, 1, -1.49157e-08, 0, -2.98023e-08, -0.156716, 6.17167e-07, 3.89309e-07, 0.987644, 1, 1, 1, 1.33333, 1, 0, 5.96046e-08, 0, -0.166404, 2.4601e-07, 2.43637e-07, 0.986058, 1, 1, 1, 1.36667, 1, 1.84809e-09, -5.21541e-08, 0, -0.166404, 2.64456e-07, 3.582e-07, 0.986058, 1, 1, 1, 1.4, 1, 7.43603e-09, 0, -2.98023e-08, -0.180384, 2.71586e-07, 4.1908e-07, 0.983596, 1, 1, 1, 1.43333, 1, 0, 5.96046e-08, 0, -0.208114, 1.57955e-07, 6.89654e-07, 0.978105, 1, 1, 1, 1.46667, 1, 0, 0, 0, -0.241736, 9.17485e-07, 2.31448e-07, 0.970342, 1, 1, 1, 1.5, 1, 5.96046e-08, 8.9407e-08, 9.31323e-10, -0.278215, 8.30072e-07, 4.01385e-07, 0.960519, 1, 1, 1, 1.53333, 1, -1.45519e-11, 5.21541e-08, 0, -0.315635, 6.61393e-07, 3.48581e-07, 0.948881, 1, 1, 1, 1.56667, 1, 0, 5.96046e-08, 0, -0.352308, 5.01401e-07, 6.13668e-07, 0.935884, 1, 1, 1, 1.6, 1, -5.96046e-08, 0, 9.31323e-10, -0.386264, 9.15743e-07, 3.40065e-07, 0.922388, 1, 1, 1, 1.63333, 1, 5.96046e-08, 1.19209e-07, 9.31323e-10, -0.41439, 8.77359e-07, 6.0824e-07, 0.910099, 1, 1, 1, 1.66667, 1, -5.96046e-08, 0, 9.31323e-10, -0.428831, 1.03871e-06, 4.35336e-07, 0.903385, 1, 1, 1, 1.7, 1, 1.45519e-11, -1.49012e-08, 3.07336e-08, -0.348317, 3.81353e-07, 4.92426e-07, 0.937377, 1, 1, 1, 1.73333, 1, 0, 1.49012e-08, 0, -0.372371, 8.94588e-07, 5.31532e-07, 0.928084, 1, 1, 1, 1.76667, 1, -5.96046e-08, -2.23517e-08, 0, -0.274623, 3.00971e-07, 8.45311e-07, 0.961552, 1, 1, 1, 1.8, 1, 1.19209e-07, 2.98023e-08, -5.96046e-08, -0.274623, 5.71898e-07, 6.29214e-07, 0.961552, 1, 1, 1, 1.83333, 1, 1.19209e-07, 5.96046e-08, -5.96046e-08, -0.274623, 3.41348e-07, 3.78373e-07, 0.961552, 1, 1, 1, 1.86667, 1, 2.98023e-08, 0, 0, -0.274623, 7.90349e-07, 1.6277e-07, 0.961552, 1, 1, 1, 1.9, 1, 0, 0, 6.0536e-08, -0.274623, 5.78295e-07, 6.33947e-07, 0.961552, 1, 1, 1, 1.93333, 1, -5.95901e-08, -5.21541e-08, -5.96046e-08, -0.274623, 8.18239e-07, 1.73641e-07, 0.961552, 1, 1, 1, 1.96667, 1, -5.96046e-08, 7.45058e-09, -5.86733e-08, -0.274623, 7.90861e-07, 1.60979e-07, 0.961552, 1, 1, 1, 2, 1, 0, 8.9407e-08, -5.86733e-08, -0.274623, 3.54653e-07, 3.86047e-07, 0.961552, 1, 1, 1, 2.03333, 1, -5.96046e-08, 0, 9.31323e-10, -0.428831, 1.01692e-06, 4.29116e-07, 0.903385, 1, 1, 1, 2.06667, 1, -1.19209e-07, 2.23517e-08, 3.07336e-08, -0.348317, 8.74068e-07, 5.35423e-07, 0.937377, 1, 1, 1, 2.1, 1, 0, -2.23517e-08, 0, -0.372371, 8.94589e-07, 5.31532e-07, 0.928084, 1, 1, 1, 2.13333, 1, 0, -7.45058e-09, 2.23517e-08, -0.368306, 7.29796e-07, 2.00958e-07, 0.929705, 1, 1, 1, 2.16667, 1, 5.96046e-08, 0, -6.51926e-09, -0.357863, 7.62618e-07, 6.33371e-07, 0.933774, 1, 1, 1, 2.2, 1, 0, 0, 0, -0.342206, 7.30606e-07, 3.01764e-07, 0.939625, 1, 1, 1, 2.23333, 1, -5.96046e-08, 0, 9.31323e-10, -0.322692, 5.00882e-07, 7.47367e-07, 0.946504, 1, 1, 1, 2.26667, 1, -5.96192e-08, 4.47035e-08, 5.96046e-08, -0.301723, 7.02937e-07, 3.96338e-07, 0.953396, 1, 1, 1, 2.3, 1, 1.19209e-07, -2.23517e-08, 0, -0.283334, 8.01754e-07, 4.41777e-07, 0.959021, 1, 1, 1, 2.33333, 1, 5.96046e-08, 7.45058e-09, -5.86733e-08, -0.274623, 7.97769e-07, 1.63921e-07, 0.961552, 1, 1, 1, 2.36667, 1, -5.96046e-08, 0, 9.31323e-10, -0.428831, 1.03198e-06, 4.32141e-07, 0.903385, 1, 1, 1, 2.4, 1, 0, 0, 6.0536e-08, -0.348317, 8.46781e-07, 5.23296e-07, 0.937377, 1, 1, 1, 2.43333, 1, 5.95901e-08, -2.23517e-08, 3.1665e-08, -0.372371, 9.07724e-07, 5.38809e-07, 0.928084, 1, 1, 1 ) +tracks/16/type = "transform" +tracks/16/path = NodePath("Armature/Skeleton:left_thumb_end") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = true +tracks/16/enabled = true +tracks/16/keys = PoolRealArray( 0, 1, -7.45058e-09, 0, 0, 1.16415e-10, 1.16415e-10, 4.67935e-10, 1, 1, 1, 1, 0.0333333, 1, -1.49012e-08, -6.14673e-08, 1.19209e-07, -3.14387e-18, 2.32831e-10, -1.4435e-08, 1, 1, 1, 1, 0.0666667, 1, 1.49012e-08, 5.96046e-08, 0, -1.16415e-10, 2.32831e-10, 4.6748e-10, 1, 1, 1, 1, 0.1, 1, 2.98023e-08, 5.7742e-08, 0, 2.09548e-09, 1.16415e-10, 4.67935e-10, 1, 1, 1, 1, 0.133333, 1, 5.7742e-08, -6.33299e-08, 1.19213e-07, -2.67755e-09, -7.21775e-09, -4.42092e-08, 1, 1, 1, 1, 0.166667, 1, -6.14673e-08, 5.7742e-08, 3.63798e-12, -1.97906e-09, 7.567e-09, 4.41105e-10, 1, 1, 1, 1, 0.2, 1, -6.14673e-08, -3.72529e-09, 1.19213e-07, 1.16415e-10, -1.46683e-08, 5.20231e-10, 1, 1, 1, 1, 0.233333, 1, 1.19209e-07, -6.14673e-08, 0, -1.74623e-09, -2.21189e-08, 5.46606e-10, 1, 1, 1, 1, 0.266667, 1, 1.17347e-07, 1.17347e-07, 3.63798e-12, 2.09548e-09, 3.84171e-09, 4.54747e-10, 1, 1, 1, 1, 0.3, 1, -1.19209e-07, -5.96046e-08, 0, -6.40284e-09, 2.32831e-10, 4.6748e-10, 1, 1, 1, 1, 0.333333, 1, -1.86265e-09, 5.7742e-08, 2.98023e-08, -1.42027e-08, -1.62981e-09, -1.44278e-08, 1, 1, 1, 1, 0.366667, 1, 1.17347e-07, -1.86265e-09, 0, -7.45058e-09, -1.74623e-09, 4.76575e-10, 1, 1, 1, 1, 0.4, 1, 1.19209e-07, -6.14673e-08, 0, 8.49832e-09, 2.32831e-10, 4.6748e-10, 1, 1, 1, 1, 0.433333, 1, 1.17347e-07, -1.86265e-09, 0, 1.86265e-08, 3.84171e-09, 4.54747e-10, 1, 1, 1, 1, 0.466667, 1, -1.19209e-07, -2.98023e-08, -3.63798e-12, -7.33417e-09, 2.21189e-09, -1.44419e-08, 1, 1, 1, 1, 0.5, 1, -1.21072e-07, 1.11759e-08, 5.96083e-08, 5.70435e-09, 3.49246e-10, -1.44355e-08, 1, 1, 1, 1, 0.533333, 1, -1.19209e-07, -1.67638e-08, 5.96083e-08, 4.07453e-09, 2.09548e-09, 4.60659e-10, 1, 1, 1, 1, 0.566667, 1, -1.86265e-09, 2.42144e-08, 0, -9.31322e-10, 2.32831e-10, -1.4435e-08, 1, 1, 1, 1, 0.6, 1, 5.96046e-08, -1.49012e-08, 0, 1.16415e-10, 2.21189e-09, -1.44419e-08, 1, 1, 1, 1, 0.633333, 1, -5.96046e-08, -3.72529e-09, 3.63798e-12, -1.62981e-09, -3.60887e-09, -4.42224e-08, 1, 1, 1, 1, 0.666667, 1, -5.96046e-08, 1.86265e-08, -3.63798e-12, -8.14907e-10, 1.50176e-08, 4.1473e-10, 1, 1, 1, 1, 0.7, 1, -6.14673e-08, 5.58794e-09, -5.9601e-08, 4.65661e-10, 2.32831e-10, 4.6748e-10, 1, 1, 1, 1, 0.733333, 1, 0, -5.58794e-09, 0, -4.42378e-09, -3.37604e-09, -1.44223e-08, 1, 1, 1, 1, 0.766667, 1, -6.14673e-08, 5.58794e-09, 2.42144e-08, 1.86264e-09, 7.68341e-09, -1.44605e-08, 1, 1, 1, 1, 0.8, 1, -6.14673e-08, -3.72529e-09, 3.63798e-12, -3.49246e-09, -7.33416e-09, -4.42092e-08, 1, 1, 1, 1, 0.833333, 1, 0, 0, 0, -1.47847e-08, 5.70435e-09, -4.42574e-08, 1, 1, 1, 1, 0.866667, 1, 7.45058e-09, -1.86265e-09, 3.72529e-09, -3.60888e-09, -7.33417e-09, 4.9431e-10, 1, 1, 1, 1, 0.9, 1, 5.58794e-09, -1.86265e-08, -7.44694e-09, -1.0943e-08, 3.00351e-08, -1.45401e-08, 1, 1, 1, 1, 0.933333, 1, -7.45058e-09, -1.30385e-08, 0, 1.16415e-10, 1.16415e-10, 4.67935e-10, 1, 1, 1, 1, 0.966667, 1, -7.45058e-09, 0, 0, -5.82076e-10, -1.16415e-09, 4.72482e-10, 1, 1, 1, 1, 1, 1, -1.49012e-08, 7.45058e-09, -2.98023e-08, 1.04774e-08, 5.58794e-09, 4.48381e-10, 1, 1, 1, 1, 1.03333, 1, -1.86265e-09, -9.31323e-09, 2.9806e-08, -3.49246e-10, 2.32831e-10, 4.6748e-10, 1, 1, 1, 1, 1.06667, 1, 5.58794e-09, -1.86265e-09, 2.98023e-08, 6.63567e-09, 2.32831e-10, 4.6748e-10, 1, 1, 1, 1, 1.1, 1, 7.45058e-09, -1.86265e-09, -2.98023e-08, 2.56114e-09, 1.97906e-09, 4.61114e-10, 1, 1, 1, 1, 1.13333, 1, 0, 0, 0, 1.16416e-10, 5.82077e-09, -4.4256e-08, 1, 1, 1, 1, 1.16667, 1, 4.47035e-08, 2.79397e-08, 5.96083e-08, -2.09548e-09, -3.14321e-09, -1.44232e-08, 1, 1, 1, 1, 1.2, 1, -2.98023e-08, 1.49012e-08, -2.9806e-08, -1.39698e-09, 5.82077e-10, -4.42374e-08, 1, 1, 1, 1, 1.23333, 1, 2.79397e-08, 2.98023e-08, -2.98023e-08, 2.44472e-09, 8.14907e-10, -1.44364e-08, 1, 1, 1, 1, 1.26667, 1, 1.49012e-08, 0, 0, 1.16415e-09, -4.6783e-17, -4.42351e-08, 1, 1, 1, 1, 1.3, 1, -9.31323e-09, 5.7742e-08, 3.63798e-12, 3.49246e-10, 1.04774e-09, 4.64297e-10, 1, 1, 1, 1, 1.33333, 1, 0, 0, -2.9806e-08, 3.49246e-10, -5.82077e-10, 4.72483e-10, 1, 1, 1, 1, 1.36667, 1, -5.58794e-09, -6.14673e-08, 0, -2.32831e-10, 5.82076e-10, -1.44364e-08, 1, 1, 1, 1, 1.4, 1, -1.86265e-09, -5.96046e-08, -2.98023e-08, 5.71844e-10, 8.2212e-10, 0.0125004, 0.999922, 1, 1, 1, 1.43333, 1, -2.98023e-08, -6.14673e-08, -2.98023e-08, -1.84328e-09, -5.3722e-10, 0.0386042, 0.999255, 1, 1, 1, 1.46667, 1, 5.7742e-08, -9.12696e-08, 2.9806e-08, 3.66608e-09, 7.38599e-09, 0.0723644, 0.997378, 1, 1, 1, 1.5, 1, 5.96046e-08, 8.9407e-08, 5.96046e-08, -3.66407e-09, -1.11888e-08, 0.111562, 0.993757, 1, 1, 1, 1.53333, 1, 1.17347e-07, 4.84288e-08, -5.96083e-08, -7.10292e-09, 1.5267e-08, 0.154638, 0.987971, 1, 1, 1, 1.56667, 1, 5.96046e-08, -1.49012e-08, 5.96046e-08, 1.19785e-08, 7.67344e-09, 0.200032, 0.979789, 1, 1, 1, 1.6, 1, -6.14673e-08, -3.1665e-08, 0, 7.90551e-09, 8.44484e-11, 0.245968, 0.969278, 1, 1, 1, 1.63333, 1, -1.21072e-07, 0, -3.63798e-12, -3.21875e-08, -7.78693e-09, 0.29028, 0.956942, 1, 1, 1, 1.66667, 1, 5.96046e-08, 2.98023e-08, -3.63798e-12, 1.08712e-08, -6.01678e-11, 0.329419, 0.944184, 1, 1, 1, 1.7, 1, 1.17347e-07, -1.86265e-09, 2.9806e-08, 1.03764e-08, 4.16552e-09, 0.343375, 0.939199, 1, 1, 1, 1.73333, 1, -1.19209e-07, -2.98023e-08, -3.63798e-12, -7.0343e-09, -7.49332e-10, 0.397701, 0.917515, 1, 1, 1, 1.76667, 1, 0, -1.67638e-08, 5.96046e-08, 1.50861e-11, -5.62187e-11, 0.259178, 0.96583, 1, 1, 1, 1.8, 1, -5.96046e-08, 1.49012e-08, 3.63798e-12, -5.52518e-09, -1.53441e-08, 0.259178, 0.96583, 1, 1, 1, 1.83333, 1, -1.86265e-09, -1.67638e-08, 7.27596e-12, 3.83037e-09, 1.53714e-08, 0.259178, 0.96583, 1, 1, 1, 1.86667, 1, -6.14673e-08, -3.1665e-08, 0, 5.57337e-09, -1.53792e-08, 0.259178, 0.96583, 1, 1, 1, 1.9, 1, 5.96046e-08, -1.49012e-08, 5.96046e-08, 5.10853e-09, -1.54436e-08, 0.259178, 0.96583, 1, 1, 1, 1.93333, 1, 0, 4.47035e-08, -5.96046e-08, -1.15248e-08, 2.31838e-08, 0.259178, 0.96583, 1, 1, 1, 1.96667, 1, -5.96046e-08, 1.49012e-08, 3.63798e-12, -3.82429e-09, -1.22232e-10, 0.259178, 0.96583, 1, 1, 1, 2, 1, -6.14673e-08, -3.72529e-09, 5.96083e-08, 2.94221e-09, 7.90104e-09, 0.259178, 0.96583, 1, 1, 1, 2.03333, 1, -1.21072e-07, 0, -5.96046e-08, -7.45574e-09, 7.94066e-09, 0.329419, 0.944184, 1, 1, 1, 2.06667, 1, -1.86265e-09, 2.04891e-08, 2.9806e-08, -1.90578e-08, 1.2121e-08, 0.343375, 0.939199, 1, 1, 1, 2.1, 1, -1.19209e-07, 2.79397e-08, 1.49048e-08, 1.65156e-08, -2.97585e-09, 0.397701, 0.917515, 1, 1, 1, 2.13333, 1, 0, 0, 2.04891e-08, -6.15859e-09, 1.99299e-09, 0.390915, 0.920427, 1, 1, 1, 2.16667, 1, -1.21072e-07, 1.11759e-08, 3.63798e-12, 4.86623e-10, 8.13191e-09, 0.373977, 0.927438, 1, 1, 1, 2.2, 1, -1.86265e-09, 2.04891e-08, 3.63798e-12, 8.01269e-09, 1.18271e-08, 0.349564, 0.936912, 1, 1, 1, 2.23333, 1, 5.7742e-08, 3.72529e-09, 5.96083e-08, -3.61598e-09, -2.10654e-10, 0.320784, 0.947152, 1, 1, 1, 2.26667, 1, 0, 1.67638e-08, -3.63798e-12, -3.65339e-09, -7.96336e-09, 0.292189, 0.956361, 1, 1, 1, 2.3, 1, 5.96046e-08, 2.98023e-08, 5.96046e-08, 2.44607e-09, -1.01747e-10, 0.269294, 0.963058, 1, 1, 1, 2.33333, 1, -6.14673e-08, -3.1665e-08, 2.98023e-08, 6.26754e-11, 7.85153e-09, 0.259178, 0.96583, 1, 1, 1, 2.36667, 1, 5.7742e-08, 1.86265e-09, 0, 1.23553e-08, 7.70136e-09, 0.329419, 0.944184, 1, 1, 1, 2.4, 1, -6.14673e-08, -3.72529e-09, 3.63798e-12, 6.93445e-09, -4.04967e-09, 0.343375, 0.939199, 1, 1, 1, 2.43333, 1, 0, 0, 0, 7.70586e-09, 5.63986e-09, 0.397701, 0.917515, 1, 1, 1 ) +tracks/17/type = "transform" +tracks/17/path = NodePath("Armature/Skeleton:left_thunb_base") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = true +tracks/17/enabled = true +tracks/17/keys = PoolRealArray( 0, 1, -3.07336e-08, 0, 2.32831e-10, -8.75443e-08, 3.57628e-07, -3.86499e-08, 1, 1, 1, 1, 0.0333333, 1, -1.86265e-09, -7.45058e-09, 2.37953e-07, -1.73226e-07, -3.72529e-08, -4.51692e-08, 1, 1, 1, 1, 0.0666667, 1, 4.37722e-08, -1.2666e-07, -2.32831e-10, -1.56462e-07, -1.49012e-08, 3.3062e-08, 1, 1, 1, 1, 0.1, 1, 6.10016e-08, -7.45058e-09, 1.19675e-07, 5.58793e-09, 7.45058e-09, -7.21775e-08, 1, 1, 1, 1, 0.133333, 1, 4.79631e-08, -1.86265e-07, -4.65661e-10, -8.56817e-08, 3.7998e-07, -3.72529e-08, 1, 1, 1, 1, 0.166667, 1, -6.1933e-08, 0, 5.96046e-08, -7.63685e-08, 3.65079e-07, -2.3283e-08, 1, 1, 1, 1, 0.2, 1, -3.25963e-09, 2.38419e-07, 1.18976e-07, -7.63685e-08, 3.94881e-07, -6.05357e-09, 1, 1, 1, 1, 0.233333, 1, 1.82539e-07, 2.38419e-07, -6.98492e-10, -1.75089e-07, 1.77636e-14, -1.02445e-07, 1, 1, 1, 1, 0.266667, 1, 4.79631e-07, 0, 2.95695e-08, -8.9407e-08, 3.50177e-07, -3.91155e-08, 1, 1, 1, 1, 0.3, 1, 2.42144e-07, -1.19209e-07, 2.93367e-08, -5.58795e-09, 3.65079e-07, 6.98492e-09, 1, 1, 1, 1, 0.333333, 1, 0, 0, 0, -8.56817e-08, 3.65078e-07, -9.31319e-09, 1, 1, 1, 1, 0.366667, 1, 5.86733e-08, 4.69387e-07, 2.91038e-08, -1.6205e-07, 3.35276e-07, 5.58799e-09, 1, 1, 1, 1, 0.4, 1, 6.14673e-08, 0, 5.96046e-08, -8.75443e-08, 3.57628e-07, -3.86499e-08, 1, 1, 1, 1, 0.433333, 1, 2.37953e-07, 1.19209e-07, 9.31323e-10, -2.5332e-07, -6.70552e-08, 1.44355e-08, 1, 1, 1, 1, 0.466667, 1, -6.14673e-08, -7.45058e-09, 0, -8.75443e-08, 3.50177e-07, -2.3283e-08, 1, 1, 1, 1, 0.5, 1, -1.80211e-07, -7.45058e-09, -1.18976e-07, -8.00938e-08, 3.65079e-07, -2.3283e-08, 1, 1, 1, 1, 0.533333, 1, 5.96046e-08, 0, 3.07336e-08, -8.3819e-08, 3.57628e-07, -2.468e-08, 1, 1, 1, 1, 0.566667, 1, 9.31323e-10, 2.23517e-08, -1.19209e-07, -8.75443e-08, 3.57628e-07, -3.86499e-08, 1, 1, 1, 1, 0.6, 1, 0, 0, 0, -1.65775e-07, -2.23517e-08, -1.35042e-08, 1, 1, 1, 1, 0.633333, 1, -6.14673e-08, -7.45058e-09, 0, -2.6077e-07, -6.70552e-08, -1.58325e-08, 1, 1, 1, 1, 0.666667, 1, -1.17347e-07, -8.9407e-08, -1.19675e-07, -8.75443e-08, 3.8743e-07, -5.12227e-08, 1, 1, 1, 1, 0.7, 1, 9.31323e-10, -5.96046e-08, -2.32831e-10, -1.73226e-07, -3.72529e-08, -4.42378e-08, 1, 1, 1, 1, 0.733333, 1, -4.65661e-10, 5.96046e-08, -4.65661e-10, 1.49012e-08, 2.23517e-08, 3.3062e-08, 1, 1, 1, 1, 0.766667, 1, -1.18744e-07, 0, 2.49129e-08, -2.38419e-07, -4.32134e-07, 6.93834e-08, 1, 1, 1, 1, 0.8, 1, -9.31323e-10, 1.49012e-08, 1.49012e-08, -7.63685e-08, 3.72529e-07, 2.28174e-08, 1, 1, 1, 1, 0.833333, 1, -1.18278e-07, 7.45058e-09, -1.46683e-08, -9.12697e-08, 3.65079e-07, -2.23517e-08, 1, 1, 1, 1, 0.866667, 1, -3.11993e-08, -2.23517e-08, -3.72529e-09, -2.03028e-07, 6.03497e-07, -4.09781e-08, 1, 1, 1, 1, 0.9, 1, -1.25729e-08, -2.23517e-08, -7.45058e-09, -7.63685e-08, 7.45059e-09, -1.02445e-07, 1, 1, 1, 1, 0.933333, 1, -1.72295e-08, 0, 3.07336e-08, -1.71363e-07, 3.42727e-07, -2.42143e-08, 1, 1, 1, 1, 0.966667, 1, -7.45058e-09, -1.49012e-08, 9.31323e-10, -8.56817e-08, 3.7998e-07, -3.72529e-08, 1, 1, 1, 1, 1, 1, 7.91624e-09, 0, 4.65661e-10, -1.63913e-07, -1.49012e-08, 1.86264e-09, 1, 1, 1, 1, 1.03333, 1, 2.28174e-08, 0, 5.93718e-08, -7.63685e-08, 3.65079e-07, 6.98495e-09, 1, 1, 1, 1, 1.06667, 1, 1.86265e-09, -1.49012e-08, 3.05008e-08, -1.56462e-07, -3.72529e-08, 1.49477e-07, 1, 1, 1, 1, 1.1, 1, -3.72529e-09, -7.45058e-09, 2.32831e-10, -1.56462e-07, -3.72529e-08, 3.11993e-08, 1, 1, 1, 1, 1.13333, 1, -6.98492e-09, -7.45058e-09, -5.98375e-08, -8.19564e-08, 3.57628e-07, 6.51929e-09, 1, 1, 1, 1, 1.16667, 1, -3.0268e-08, -5.96046e-08, 0, -8.56817e-08, 3.57628e-07, -3.86499e-08, 1, 1, 1, 1, 1.2, 1, -2.98023e-08, -5.96046e-08, -5.98375e-08, -8.56817e-08, 3.57628e-07, -8.84753e-09, 1, 1, 1, 1, 1.23333, 1, 0, 0, 0, -8.75443e-08, 3.57628e-07, -3.86499e-08, 1, 1, 1, 1, 1.26667, 1, 1.67638e-08, -1.19209e-07, -9.31323e-10, -1.71363e-07, -3.72529e-08, -4.56348e-08, 1, 1, 1, 1, 1.3, 1, 0, 0, 0, -8.56817e-08, 3.50177e-07, -2.65427e-08, 1, 1, 1, 1, 1.33333, 1, 6.1933e-08, -7.45058e-09, -4.65661e-10, -1.60187e-07, -5.21541e-08, 2.8871e-08, 1, 1, 1, 1, 1.36667, 1, 0, 0, 0, -8.38191e-08, 3.65079e-07, 9.77893e-09, 1, 0.999999, 1, 1, 1.4, 1, -3.44589e-08, -1.78814e-07, -2.8871e-08, -0.0046865, -0.000252501, 0.000492328, 0.999989, 1, 1, 1, 1.43333, 1, 1.20141e-07, -5.96046e-08, -1.16415e-09, -0.0151906, -0.00147727, 0.0014644, 0.999882, 1, 1, 1, 1.46667, 1, -9.31323e-10, 2.98023e-08, 1.18976e-07, -0.0297633, -0.00405317, 0.00263702, 0.999545, 1, 1, 1, 1.5, 1, 0, 0, 0, -0.0481133, -0.00832953, 0.00390723, 0.9988, 1, 1, 1, 1.53333, 1, 6.14673e-08, 2.98023e-08, 2.32831e-10, -0.0705242, -0.0147755, 0.00521311, 0.997387, 1, 1, 1, 1.56667, 1, 4.65661e-10, -5.96046e-08, 5.9139e-08, -0.0977861, -0.02411, 0.00650273, 0.994894, 1, 1, 1, 1.6, 1, -8.89413e-08, 5.96046e-08, 2.32831e-10, -0.131468, -0.0375626, 0.00771165, 0.990579, 1, 1, 1, 1.63333, 1, -2.84053e-08, -2.45869e-07, -4.65661e-10, -0.17488, -0.0576091, 0.00872731, 0.982864, 1, 1, 1, 1.66667, 1, 3.35276e-08, 0, 1.18744e-07, -0.237434, -0.0912165, 0.0092456, 0.967067, 1, 1, 1, 1.7, 1, 9.31323e-10, -5.96046e-08, -2.32831e-10, -0.368916, -0.188785, 0.00216906, 0.910086, 1, 1, 1, 1.73333, 1, 1.39698e-09, 2.23517e-08, 2.93367e-08, -0.237434, -0.0912168, 0.00924575, 0.967067, 1, 1, 1, 1.76667, 1, 0, 5.96046e-08, -5.96046e-08, -0.168812, -0.141313, -0.0140909, 0.975364, 1, 1, 1, 1.8, 1, 0, 0, 0, -0.168812, -0.141313, -0.0140911, 0.975364, 1, 1, 1, 1.83333, 1, 8.98726e-08, -1.19209e-07, -4.65661e-10, -0.168812, -0.141313, -0.014091, 0.975364, 1, 1, 1, 1.86667, 1, -1.21072e-08, 1.19209e-07, -5.98375e-08, -0.168812, -0.141313, -0.014091, 0.975364, 1, 1, 1, 1.9, 1, -1.17347e-07, -1.19209e-07, -1.18976e-07, -0.168812, -0.141313, -0.014091, 0.975364, 1, 1, 1, 1.93333, 1, 1.47149e-07, -7.45058e-09, -5.96046e-08, -0.168812, -0.141313, -0.0140911, 0.975364, 1, 1, 1, 1.96667, 1, 5.9139e-08, 1.78814e-07, 1.19442e-07, -0.168812, -0.141313, -0.0140909, 0.975364, 1, 1, 1, 2, 1, -5.72763e-08, -1.19209e-07, 1.19209e-07, -0.168812, -0.141313, -0.014091, 0.975364, 1, 1, 1, 2.03333, 1, 2.68687e-07, -2.38419e-07, 2.32831e-10, -0.237434, -0.0912171, 0.00924578, 0.967067, 1, 1, 1, 2.06667, 1, 0, 0, 0, -0.368916, -0.188785, 0.00216899, 0.910086, 1, 1, 1, 2.1, 1, 2.38419e-07, 5.96046e-08, 0, -0.237434, -0.0912166, 0.00924554, 0.967067, 1, 1, 1, 2.13333, 1, 0, 0, 0, -0.210022, -0.0941769, 0.0076172, 0.97312, 1, 1, 1, 2.16667, 1, 2.34228e-07, 0, 1.49012e-08, -0.192733, -0.101544, 0.00410541, 0.975974, 1, 1, 1, 2.2, 1, -1.17812e-07, 4.47035e-08, -3.0268e-08, -0.181631, -0.110923, -0.000246343, 0.977091, 1, 1, 1, 2.23333, 1, 1.18744e-07, 0, 1.19442e-07, -0.17474, -0.120914, -0.00482679, 0.97715, 1, 1, 1, 2.26667, 1, -6.10016e-08, -6.70552e-08, 6.98492e-10, -0.170867, -0.130361, -0.00912913, 0.97659, 1, 1, 1, 2.3, 1, 1.39698e-09, -6.70552e-08, -1.18744e-07, -0.169158, -0.137912, -0.0125536, 0.975812, 1, 1, 1, 2.33333, 1, 6.23986e-08, 7.45058e-09, -6.03031e-08, -0.168812, -0.141313, -0.0140909, 0.975364, 1, 1, 1, 2.36667, 1, 2.38884e-07, 1.11759e-07, -1.20141e-07, -0.237434, -0.091217, 0.00924574, 0.967067, 1, 1, 1, 2.4, 1, -1.15018e-07, -3.72529e-08, -6.98492e-10, -0.368916, -0.188785, 0.00216901, 0.910086, 1, 1, 1, 2.43333, 1, 2.3935e-07, -3.72529e-08, -2.32831e-10, -0.237434, -0.0912169, 0.00924569, 0.967067, 1, 1, 1 ) +tracks/18/type = "transform" +tracks/18/path = NodePath("Armature/Skeleton:left_hand") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = true +tracks/18/enabled = true +tracks/18/keys = PoolRealArray( 0, 1, -1.5134e-08, 0, 3.72529e-09, -1.49012e-08, -1.86264e-07, -1.67638e-08, 1, 1, 1, 1, 0.0333333, 1, 0, -5.96046e-08, 0, 1.91454e-05, -0.015216, 0.000391407, 0.999884, 1, 1, 1, 0.0666667, 1, 0, 5.96046e-08, 0, 0.000173547, -0.0620235, 0.00171637, 0.998073, 1, 1, 1, 0.1, 1, 0, -1.19209e-07, -3.72529e-09, 0.000661933, -0.14085, 0.00423606, 0.990022, 1, 1, 1, 0.133333, 1, 2.98023e-08, 5.96046e-08, 0, 0.00174555, -0.246992, 0.00816698, 0.968982, 1, 1, 1, 0.166667, 1, 1.46683e-08, 0, 3.72529e-09, 0.00367688, -0.367011, 0.0135037, 0.930111, 1, 1, 1, 0.2, 1, 1.46683e-08, 0, 1.19209e-07, 0.00658808, -0.481206, 0.0199375, 0.876356, 1, 1, 1, 0.233333, 1, -1.49012e-08, -5.96046e-08, 3.72529e-09, 0.0104594, -0.573101, 0.0270459, 0.818972, 1, 1, 1, 0.266667, 1, 0, 0, 0, 0.0152151, -0.636094, 0.0345737, 0.770686, 1, 1, 1, 0.3, 1, -1.5134e-08, 0, -1.15484e-07, 0.0208266, -0.671308, 0.0425121, 0.739665, 1, 1, 1, 0.333333, 1, -1.49012e-08, 5.96046e-08, 0, 0.027336, -0.682138, 0.050996, 0.728931, 1, 1, 1, 0.366667, 1, 1.49012e-08, 0, -1.19209e-07, 0.0381958, -0.673627, 0.0611688, 0.735544, 1, 1, 1, 0.4, 1, 0, 5.96046e-08, 0, 0.0562469, -0.649873, 0.0738293, 0.754355, 1, 1, 1, 0.433333, 1, -3.00352e-08, -5.96046e-08, -1.19209e-07, 0.0808466, -0.611165, 0.0886017, 0.782363, 1, 1, 1, 0.466667, 1, -7.45058e-09, -2.98023e-08, 1.19209e-07, 0.111337, -0.557151, 0.104963, 0.816192, 1, 1, 1, 0.5, 1, 2.14204e-08, 0, 1.19209e-07, 0.146739, -0.487788, 0.12213, 0.85183, 1, 1, 1, 0.533333, 1, 1.46683e-08, 1.49012e-08, 0, 0.185545, -0.404345, 0.13901, 0.884734, 1, 1, 1, 0.566667, 1, -2.98023e-08, 0, 3.72529e-09, 0.225753, -0.310275, 0.154283, 0.910473, 1, 1, 1, 0.6, 1, 5.96046e-08, 0, 6.33299e-08, 0.265228, -0.211657, 0.166587, 0.925799, 1, 1, 1, 0.633333, 1, 5.96046e-08, -1.49012e-08, -6.33299e-08, 0.302379, -0.117382, 0.174662, 0.929667, 1, 1, 1, 0.666667, 1, -5.93718e-08, 2.98023e-08, 3.72529e-09, 0.33709, -0.0418563, 0.176893, 0.923757, 1, 1, 1, 0.7, 1, 1.18976e-07, 0, 0, 0.381372, 0.00743931, 0.0742217, 0.921407, 1, 1, 1, 0.733333, 1, 5.96046e-08, 4.47035e-08, 3.72529e-09, 0.377953, -0.0229625, 0.0770244, 0.92233, 1, 1, 1, 0.766667, 1, -2.32831e-10, -2.98023e-08, -2.98023e-08, 0.366713, -0.0878778, 0.0823669, 0.922505, 1, 1, 1, 0.8, 1, 0, 2.98023e-08, 0, 0.349432, -0.166287, 0.0883101, 0.917849, 1, 0.999999, 1, 0.833333, 1, 0, 2.98023e-08, -1.49012e-08, 0.327602, -0.246342, 0.0938541, 0.907295, 1, 1, 1, 0.866667, 1, 7.45058e-09, 0, 3.72529e-09, 0.303092, -0.320052, 0.0984911, 0.892189, 1, 1, 1, 0.9, 1, -1.49012e-08, 0, 1.86265e-08, 0.27791, -0.382194, 0.102051, 0.875374, 1, 1, 1, 0.933333, 1, 2.98023e-08, 0, 1.86265e-08, 0.25387, -0.429615, 0.104572, 0.860259, 1, 1, 1, 0.966667, 1, -2.32831e-10, 1.49012e-08, 2.6077e-08, 0.23241, -0.460303, 0.106176, 0.850196, 1, 1, 1, 1, 1, -2.98023e-08, -1.49012e-08, 1.49012e-08, 0.214606, -0.472254, 0.106959, 0.848222, 1, 1, 1, 1.03333, 1, -3.00352e-08, 1.49012e-08, 1.49012e-08, 0.199056, -0.465293, 0.105488, 0.856009, 1, 1, 1, 1.06667, 1, -2.98023e-08, 0, 2.98023e-08, 0.183592, -0.442661, 0.100658, 0.871902, 1, 1, 1, 1.1, 1, 0, -1.49012e-08, -2.98023e-08, 0.167942, -0.406092, 0.0928308, 0.893458, 1, 1, 1, 1.13333, 1, 0, 0, 2.98023e-08, 0.15192, -0.357074, 0.0823163, 0.917956, 1, 1, 1, 1.16667, 1, -2.32831e-10, 0, 2.98023e-08, 0.135523, -0.297508, 0.0695122, 0.942492, 1, 1, 1, 1.2, 1, -5.98375e-08, 0, -2.98023e-08, 0.119002, -0.230256, 0.0550249, 0.964258, 1, 1, 1, 1.23333, 1, -5.98375e-08, 0, 3.72529e-09, 0.102931, -0.159538, 0.0397586, 0.981006, 1, 1, 1, 1.26667, 1, 0, -5.96046e-08, 0, 0.0882676, -0.091305, 0.0250003, 0.991588, 1, 1, 1, 1.3, 1, -2.32831e-10, 1.49012e-08, -2.6077e-08, 0.0765704, -0.0344063, 0.0126725, 0.99639, 1, 1, 1, 1.33333, 1, 0, -5.96046e-08, 0, 0.0710916, -0.00669528, 0.00666156, 0.997425, 1, 1, 1, 1.36667, 1, 0, 0, 0, 0.0710916, -0.00669567, 0.00666152, 0.997425, 1, 1, 1, 1.4, 1, -2.32831e-10, 1.49012e-08, -2.6077e-08, 0.0624119, -0.00460089, 0.00867088, 0.998002, 1, 1, 1, 1.43333, 1, 1.46683e-08, 0, 3.72529e-09, 0.0452727, -0.000350268, 0.0126334, 0.998895, 1, 1, 1, 1.46667, 1, -2.98023e-08, -2.98023e-08, 0, 0.0246154, 0.00494401, 0.0173997, 0.999533, 1, 1, 1, 1.5, 1, -5.96046e-08, 2.98023e-08, -6.33299e-08, 0.00232835, 0.0108885, 0.0225307, 0.999684, 1, 1, 1, 1.53333, 1, -5.96046e-08, -1.49012e-08, 3.72529e-09, -0.020441, 0.0172826, 0.0277602, 0.999256, 1, 1, 1, 1.56667, 1, -1.19209e-07, 1.49012e-08, -5.58794e-08, -0.042716, 0.0240046, 0.0328645, 0.998258, 1, 1, 1, 1.6, 1, -5.96046e-08, 2.98023e-08, -6.33299e-08, -0.0633544, 0.0309727, 0.0375843, 0.996802, 1, 1, 1, 1.63333, 1, 5.96046e-08, 5.96046e-08, 0, -0.0804808, 0.0381325, 0.0414958, 0.995162, 1, 1, 1, 1.66667, 1, 5.96046e-08, 0, -5.96046e-08, -0.0891865, 0.0454475, 0.0434898, 0.994027, 1, 1, 1, 1.7, 1, 5.93718e-08, 0, 3.72529e-09, 0.107683, 0.0543164, 0.0423995, 0.991795, 1, 1, 1, 1.73333, 1, 0, -5.96046e-08, 0, -0.0692909, 0.0375402, 0.212774, 0.973918, 1, 1, 1, 1.76667, 1, -2.32831e-10, -2.98023e-08, 0, -0.0401681, 0.0657758, 0.0133659, 0.996936, 1, 1, 1, 1.8, 1, -5.96046e-08, 2.98023e-08, -6.33299e-08, -0.0401681, 0.0657758, 0.0133659, 0.996936, 1, 1, 1, 1.83333, 1, 0, 0, 0, -0.040168, 0.0657758, 0.0133659, 0.996936, 1, 1, 1, 1.86667, 1, 0, 0, 0, -0.0401681, 0.0657757, 0.0133658, 0.996936, 1, 1, 1, 1.9, 1, -5.98375e-08, 0, 3.72529e-09, -0.040168, 0.065776, 0.0133659, 0.996936, 1, 1, 1, 1.93333, 1, 0, 0, -5.96046e-08, -0.0401681, 0.0657756, 0.0133658, 0.996936, 1, 1, 1, 1.96667, 1, -2.32831e-10, -2.98023e-08, 0, -0.0401681, 0.0657756, 0.0133659, 0.996936, 1, 1, 1, 2, 1, 5.96046e-08, 2.98023e-08, -6.33299e-08, -0.0401681, 0.0657758, 0.0133658, 0.996936, 1, 1, 1, 2.03333, 1, -1.19442e-07, 5.96046e-08, -2.98023e-08, -0.0891865, 0.0454473, 0.0434899, 0.994027, 1, 1, 1, 2.06667, 1, 0, 4.47035e-08, -2.98023e-08, 0.107683, 0.0543164, 0.0423995, 0.991795, 1, 1, 1, 2.1, 1, 5.93718e-08, 0, 3.72529e-09, -0.0692908, 0.0375402, 0.212774, 0.973918, 1, 1, 1, 2.13333, 1, -5.96046e-08, 5.96046e-08, -7.45058e-09, -0.0674336, 0.0394783, 0.199714, 0.976734, 1, 1, 1, 2.16667, 1, 0, 0, -7.45058e-09, -0.0632425, 0.0437774, 0.170427, 0.982364, 1, 1, 1, 2.2, 1, 5.98375e-08, -5.96046e-08, 2.98023e-08, -0.0578904, 0.0491248, 0.133385, 0.988152, 1, 1, 1, 2.23333, 1, -5.98375e-08, 0, 3.72529e-09, -0.052118, 0.0547215, 0.0938609, 0.992713, 1, 1, 1, 2.26667, 1, 5.93718e-08, 0, 3.72529e-09, -0.0466021, 0.0599107, 0.056489, 0.995514, 1, 1, 1, 2.3, 1, -5.93718e-08, -1.49012e-08, -6.33299e-08, -0.0421671, 0.0639747, 0.0267113, 0.996702, 1, 1, 1, 2.33333, 1, -5.96046e-08, 2.98023e-08, 2.98023e-08, -0.0401681, 0.0657756, 0.0133658, 0.996936, 1, 1, 1, 2.36667, 1, -5.98375e-08, 0, 5.96046e-08, -0.0891864, 0.0454473, 0.0434898, 0.994027, 1, 1, 1, 2.4, 1, -2.32831e-10, 0, 3.72529e-09, 0.107683, 0.0543163, 0.0423995, 0.991795, 1, 1, 1, 2.43333, 1, 0, -5.96046e-08, 0, -0.0692909, 0.0375402, 0.212774, 0.973918, 1, 1, 1 ) +tracks/19/type = "transform" +tracks/19/path = NodePath("Armature/Skeleton:left_forearm") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = true +tracks/19/enabled = true +tracks/19/keys = PoolRealArray( 0, 1, -3.72529e-09, 0, 0, 3.13741e-18, 4.65661e-10, 1.60071e-09, 1, 1, 1, 1, 0.0333333, 1, 0, 0, 0, -2.95694e-06, 2.62677e-07, -1.50092e-05, 1, 1, 1, 1, 0.0666667, 1, 0, -2.98023e-08, 0, -2.63766e-05, 2.34907e-06, -0.000133828, 1, 1, 1, 1, 0.1, 1, 0, 0, -1.19209e-07, -9.84039e-05, 8.75933e-06, -0.000499267, 1, 1, 1, 1, 0.133333, 1, 1.67638e-08, -2.98023e-08, 4.65661e-10, -0.000254352, 2.26404e-05, -0.00129047, 0.999999, 1, 1, 1, 0.166667, 1, 1.67638e-08, 0, 1.19675e-07, -0.000531398, 4.72991e-05, -0.00269609, 0.999996, 1, 1, 1, 0.2, 1, -7.45058e-09, 2.98023e-08, 0, -0.000959648, 8.54163e-05, -0.00486883, 0.999988, 1, 1, 1, 0.233333, 1, -3.72529e-09, 0, 0, -0.00155399, 0.000138319, -0.0078843, 0.999968, 1, 1, 1, 0.266667, 1, -1.49012e-08, 5.96046e-08, -1.19209e-07, -0.00231199, 0.000205781, -0.0117301, 0.999929, 1, 1, 1, 0.3, 1, 3.72529e-09, -2.98023e-08, 0, -0.00321822, 0.000286443, -0.0163279, 0.999861, 1, 1, 1, 0.333333, 1, 0, 2.98023e-08, 0, -0.00425108, 0.000378376, -0.0215682, 0.999758, 1, 1, 1, 0.366667, 1, 1.86265e-09, -2.98023e-08, 0, -0.00838274, 0.000907903, -0.0393262, 0.999191, 1, 1, 1, 0.4, 1, -3.72529e-09, 0, -1.19209e-07, -0.0182823, 0.00221464, -0.0791074, 0.996696, 1, 1, 1, 0.433333, 1, 7.45058e-09, 2.98023e-08, -4.65661e-10, -0.0336755, 0.00419185, -0.137924, 0.989861, 1, 1, 1, 0.466667, 1, -1.49012e-08, 2.98023e-08, 0, -0.0543511, 0.00673194, -0.212717, 0.975578, 1, 1, 1, 0.5, 1, -1.49012e-08, 0, 0, -0.0799339, 0.00969034, -0.299342, 0.950742, 1, 1, 1, 0.533333, 1, 0, 2.98023e-08, 0, -0.109768, 0.0128648, -0.392003, 0.913301, 1, 1, 1, 0.566667, 1, -1.49012e-08, -2.98023e-08, 4.65661e-10, -0.14304, 0.016, -0.483441, 0.863463, 1, 1, 1, 0.6, 1, 1.49012e-08, 5.96046e-08, 0, -0.179298, 0.0188147, -0.565768, 0.804615, 0.999999, 1, 1, 0.633333, 1, 0, 0, 0, -0.219589, 0.0210092, -0.63085, 0.743887, 0.999999, 1, 1, 0.666667, 1, 1.49012e-08, 0, 5.96046e-08, -0.269704, 0.0221063, -0.666233, 0.694914, 0.999999, 1, 1, 0.7, 1, -1.49012e-08, 0, 0, -0.359071, -0.0913726, -0.668386, 0.644964, 0.999999, 1, 1, 0.733333, 1, -2.98023e-08, 2.98023e-08, 0, -0.359293, -0.0778042, -0.649733, 0.665359, 0.999999, 1, 1, 0.766667, 1, -1.49012e-08, -8.9407e-08, 0, -0.358314, -0.0485482, -0.606641, 0.707983, 0.999999, 1, 1, 0.8, 1, 1.49012e-08, 2.98023e-08, 0, -0.354332, -0.0124767, -0.548242, 0.757446, 0.999999, 1, 1, 0.833333, 1, -6.14673e-08, -2.98023e-08, 4.65661e-10, -0.346565, 0.0252732, -0.480221, 0.805383, 1, 1, 1, 0.866667, 1, 0, 0, -4.65661e-10, -0.335181, 0.0608338, -0.408041, 0.847027, 0.999999, 1, 1, 0.9, 1, 2.98023e-08, 0, 2.98023e-08, -0.321061, 0.0912617, -0.337009, 0.88035, 1, 1, 1, 0.933333, 1, 0, 2.98023e-08, -4.65661e-10, -0.305443, 0.114481, -0.271734, 0.905406, 1, 1, 1, 0.966667, 1, -2.98023e-08, 0, 2.98023e-08, -0.289577, 0.129071, -0.215828, 0.923528, 1, 1, 1, 1, 1, -2.98023e-08, -2.98023e-08, 0, -0.274527, 0.133859, -0.172068, 0.936541, 1, 1, 1, 1.03333, 1, -2.98023e-08, -2.98023e-08, 0, -0.259127, 0.130666, -0.137919, 0.946973, 1, 1, 1, 1.06667, 1, -2.98023e-08, 2.98023e-08, -4.65661e-10, -0.241959, 0.122855, -0.108653, 0.956325, 1, 1, 1, 1.1, 1, 0, 0, 0, -0.223435, 0.111284, -0.0835893, 0.964731, 1, 1, 1, 1.13333, 1, 0, 0, 2.98023e-08, -0.203926, 0.0966784, -0.062224, 0.972212, 1, 1, 1, 1.16667, 1, -2.98023e-08, -2.98023e-08, -2.98023e-08, -0.183821, 0.0797212, -0.0441974, 0.978724, 1, 1, 1, 1.2, 1, 2.98023e-08, 5.96046e-08, 0, -0.163591, 0.0611423, -0.029268, 0.984197, 1, 1, 1, 1.23333, 1, -3.1665e-08, 0, -5.96046e-08, -0.143883, 0.0418384, -0.017302, 0.988559, 1, 1, 1, 1.26667, 1, 2.98023e-08, -5.96046e-08, 0, -0.125703, 0.0230959, -0.00828222, 0.991764, 1, 1, 1, 1.3, 1, 1.49012e-08, 0, 0, -0.11088, 0.00714876, -0.00236329, 0.993805, 1, 1, 1, 1.33333, 1, 7.45058e-09, 0, 5.96046e-08, -0.103762, -0.000783459, -9.77494e-05, 0.994602, 1, 1, 1, 1.36667, 1, 1.86265e-09, 5.96046e-08, 0, -0.103762, -0.000783458, -9.77493e-05, 0.994602, 1, 1, 1, 1.4, 1, -1.86265e-09, 0, 0, -0.105545, -0.00087726, -0.0451431, 0.993389, 1, 1, 1, 1.43333, 1, 0, 5.96046e-08, 0, -0.108624, -0.00130157, -0.137895, 0.984471, 1, 1, 1, 1.46667, 1, 0, 0, 0, -0.111294, -0.00219078, -0.254108, 0.960749, 1, 1, 1, 1.5, 1, 7.45058e-09, 0, 5.96046e-08, -0.112586, -0.00365208, -0.380255, 0.917996, 1, 1, 1, 1.53333, 1, -1.49012e-08, 0, 0, -0.112038, -0.00578147, -0.50391, 0.85644, 0.999999, 1, 1, 1.56667, 1, 0, 0, 0, -0.109782, -0.00870084, -0.614499, 0.781194, 0.999999, 1, 1, 1.6, 1, 2.98023e-08, 5.96046e-08, 5.96046e-08, -0.106509, -0.0126711, -0.705234, 0.700814, 0.999999, 1, 1, 1.63333, 1, -1.86265e-09, 1.19209e-07, -5.96046e-08, -0.103406, -0.0184051, -0.772974, 0.625684, 0.999999, 1, 1, 1.66667, 1, 0, 1.19209e-07, 0, -0.102825, -0.0284884, -0.813276, 0.572012, 0.999999, 1, 1, 1.7, 1, 0, 5.96046e-08, 5.96046e-08, -0.211696, -0.233064, -0.788024, 0.529041, 0.999999, 1, 1, 1.73333, 1, -1.19209e-07, -2.98023e-08, -5.96046e-08, -0.292448, -0.118228, -0.777308, 0.544323, 0.999999, 1, 1, 1.76667, 1, -5.96046e-08, -5.96046e-08, -5.96046e-08, 0.00190168, -0.0688114, -0.824686, 0.561387, 1, 1, 1, 1.8, 1, 0, 0, 0, 0.0644998, -0.0720677, -0.815423, 0.570729, 1, 1, 1, 1.83333, 1, 0, 1.19209e-07, 0, 0.103914, -0.0800269, -0.803489, 0.580691, 0.999999, 1, 1, 1.86667, 1, -5.96046e-08, -1.19209e-07, 0, 0.129426, -0.0902406, -0.790817, 0.591367, 0.999999, 1, 1, 1.9, 1, 0, -5.96046e-08, -4.65661e-10, 0.145453, -0.101224, -0.778185, 0.602515, 0.999999, 1, 1, 1.93333, 1, 0, -5.96046e-08, -4.65661e-10, 0.154501, -0.111648, -0.766146, 0.613746, 0.999999, 1, 1, 1.96667, 1, 0, -5.96046e-08, -4.65661e-10, 0.158263, -0.119846, -0.755401, 0.624466, 1, 1, 1, 2, 1, 2.98023e-08, 1.19209e-07, 0, 0.158248, -0.122988, -0.747231, 0.633622, 0.999999, 1, 1, 2.03333, 1, 0, 5.96046e-08, 0, 0.00944855, -0.0634955, -0.75789, 0.649216, 0.999999, 1, 1, 2.06667, 1, 5.96046e-08, -5.96046e-08, 5.96046e-08, -0.163083, -0.213824, -0.791654, 0.548606, 0.999999, 1, 1, 2.1, 1, 0, 0, -4.65661e-10, -0.3119, -0.0446253, -0.782127, 0.53759, 0.999999, 1, 1, 2.13333, 1, 5.7742e-08, 0, -5.96046e-08, -0.411091, -0.0216211, -0.727845, 0.548433, 0.999999, 1, 1, 2.16667, 1, 0, -2.98023e-08, 0, -0.505812, -0.00811735, -0.64095, 0.577297, 0.999999, 1, 1, 2.2, 1, 0, 5.96046e-08, 0, -0.59041, 0.000192729, -0.529719, 0.608945, 0.999999, 1, 1, 2.23333, 1, 1.49012e-08, 1.19209e-07, -4.65661e-10, -0.657743, 0.00517767, -0.406056, 0.634402, 1, 1, 1, 2.26667, 1, 2.98023e-08, 5.96046e-08, 5.96046e-08, -0.703681, 0.00817469, -0.28721, 0.649828, 1, 1, 1, 2.3, 1, 0, 0, 0, -0.729086, 0.0106223, -0.193729, 0.656346, 1, 1, 1, 2.33333, 1, -5.96046e-08, -5.96046e-08, -2.98023e-08, -0.737368, 0.0146044, -0.152763, 0.657829, 1, 1, 1, 2.36667, 1, 0, 5.96046e-08, 0, -0.285622, 0.0179112, -0.736115, 0.61338, 0.999999, 1, 1, 2.4, 1, -5.96046e-08, 0, 0, 0.0349583, -0.0756772, -0.773519, 0.628267, 0.999999, 1, 1, 2.43333, 1, -1.19209e-07, 0, 0, -0.160834, 0.068592, -0.809308, 0.560757, 1, 1, 1 ) +tracks/20/type = "transform" +tracks/20/path = NodePath("Armature/Skeleton:left_upper_arm") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = true +tracks/20/enabled = true +tracks/20/keys = PoolRealArray( 0, 1, 0, 1.49012e-08, 1.18744e-07, -1.86264e-09, 1.17094e-17, 6.28643e-09, 1, 1, 1, 1, 0.0333333, 1, 0, 7.45058e-09, 0, -1.43132e-05, 0.00059412, -0.00781862, 0.999969, 1, 1, 1, 0.0666667, 1, -7.45058e-09, 7.45058e-09, -4.65661e-10, -0.000128008, 0.00238896, -0.0314388, 0.999503, 1, 1, 1, 0.1, 1, -7.45058e-09, 7.45058e-09, -1.19675e-07, -0.000479264, 0.00532349, -0.0700575, 0.997529, 1, 1, 1, 0.133333, 1, 0, 0, 0, -0.00124204, 0.0091747, -0.12074, 0.992641, 1, 1, 1, 0.166667, 1, 0, 1.49012e-08, 1.18744e-07, -0.00259542, 0.0135245, -0.177983, 0.983937, 1, 1, 1, 0.2, 1, 4.19095e-09, 0, 0, -0.0046749, 0.0178262, -0.234595, 0.971919, 1, 1, 1, 0.233333, 1, -7.45058e-09, -7.45058e-09, -4.65661e-10, -0.00753808, 0.0215627, -0.283766, 0.958622, 1, 1, 1, 0.266667, 1, 3.72529e-09, 1.49012e-08, -4.65661e-10, -0.0111715, 0.0243824, -0.320874, 0.946742, 1, 1, 1, 0.3, 1, -3.72529e-09, 7.45058e-09, -4.65661e-10, -0.0155264, 0.026127, -0.343834, 0.938539, 1, 1, 1, 0.333333, 1, 3.72529e-09, 7.45058e-09, -4.65661e-10, -0.0205502, 0.0267712, -0.352311, 0.935274, 1, 1, 1, 0.366667, 1, 3.72529e-09, -2.23517e-08, 2.37953e-07, -0.0326834, 0.0249658, -0.348543, 0.93639, 1, 1, 1, 0.4, 1, 0, 7.45058e-09, 0, -0.0569226, 0.0196578, -0.335254, 0.940201, 1, 1, 1, 0.433333, 1, 7.45058e-09, 0, -4.65661e-10, -0.0913196, 0.0112176, -0.313157, 0.945234, 1, 1, 1, 0.466667, 1, -3.72529e-09, 7.45058e-09, -4.65661e-10, -0.133961, -3.44252e-05, -0.282745, 0.949795, 1, 1, 1, 0.5, 1, 7.45058e-09, -1.49012e-08, 0, -0.182643, -0.0137404, -0.244618, 0.952163, 1, 1, 1, 0.533333, 1, 1.53668e-08, 0, 0, -0.234653, -0.0294453, -0.199746, 0.95088, 1, 1, 1, 0.566667, 1, 1.49012e-08, 0, -4.65661e-10, -0.286641, -0.0465789, -0.149653, 0.945131, 1, 1, 1, 0.6, 1, -5.58794e-09, 7.45058e-09, -4.65661e-10, -0.334476, -0.0644852, -0.0965058, 0.935229, 1, 1, 1, 0.633333, 1, -8.84756e-09, -7.45058e-09, 0, -0.37257, -0.0824789, -0.0432605, 0.923319, 1, 1, 1, 0.666667, 1, -5.58794e-09, 2.23517e-08, 0, -0.390089, -0.0998077, 0.00527779, 0.915337, 1, 1, 1, 0.7, 1, 7.45058e-09, 7.45058e-09, -1.19675e-07, -0.371688, -0.120768, 0.0558022, 0.918776, 1, 1, 1, 0.733333, 1, 0, -2.98023e-08, -4.65661e-10, -0.366555, -0.104128, 0.0790917, 0.921162, 1, 1, 1, 0.766667, 1, -3.72529e-08, 7.45058e-09, 0, -0.363989, -0.0688146, 0.0947096, 0.924017, 1, 1, 1, 0.8, 1, -1.49012e-08, -2.23517e-08, -4.65661e-10, -0.362323, -0.0263313, 0.105673, 0.925668, 1, 1, 1, 0.833333, 1, 2.98023e-08, -7.45058e-09, -4.65661e-10, -0.360869, 0.017427, 0.113356, 0.925538, 1, 1, 1, 0.866667, 1, -4.65661e-10, -1.49012e-08, -4.65661e-10, -0.359414, 0.0586274, 0.118585, 0.923754, 1, 1, 1, 0.9, 1, -2.98023e-08, 0, -4.65661e-10, -0.358005, 0.0944537, 0.121955, 0.92089, 1, 1, 1, 0.933333, 1, 7.45058e-09, 0, -4.65661e-10, -0.356831, 0.122648, 0.123951, 0.91775, 1, 1, 1, 0.966667, 1, 0, -7.45058e-09, -3.0268e-08, -0.356136, 0.141196, 0.124972, 0.915212, 1, 1, 1, 1, 1, -1.49012e-08, 7.45058e-09, -4.65661e-10, -0.356153, 0.148017, 0.125353, 0.914075, 1, 1, 1, 1.03333, 1, 6.98492e-09, 0, -3.0268e-08, -0.359544, 0.146392, 0.12353, 0.913256, 1, 1, 1, 1.06667, 1, 4.65661e-10, 0, 0, -0.368176, 0.14147, 0.118177, 0.911299, 1, 1, 1, 1.1, 1, 1.49012e-08, 1.49012e-08, -4.65661e-10, -0.381144, 0.133627, 0.109828, 0.908191, 1, 1, 1, 1.13333, 1, 4.47035e-08, -7.45058e-09, -4.65661e-10, -0.397632, 0.12315, 0.098939, 0.903844, 1, 1, 1, 1.16667, 1, 0, -7.45058e-09, -9.31323e-10, -0.416852, 0.110281, 0.085942, 0.898157, 1, 1, 1, 1.2, 1, -5.96046e-08, 7.45058e-09, -1.19209e-07, -0.438, 0.0952452, 0.0712956, 0.891068, 1, 1, 1, 1.23333, 1, 1.53668e-08, 2.23517e-08, -5.96046e-08, -0.460185, 0.078271, 0.055548, 0.88262, 1, 1, 1, 1.26667, 1, -1.49012e-08, -2.23517e-08, 1.19209e-07, -0.482327, 0.0596155, 0.0394441, 0.87307, 1, 1, 1, 1.3, 1, 0, 7.45058e-09, 0, -0.502862, 0.0395995, 0.02419, 0.86312, 1, 1, 1, 1.33333, 1, 1.86265e-09, -7.45058e-09, -1.19675e-07, -0.518606, 0.0187424, 0.0124434, 0.854717, 1, 1, 1, 1.36667, 1, -3.72529e-09, -2.98023e-08, 0, -0.525748, -0.0101832, 0.00770391, 0.850545, 1, 1, 1, 1.4, 1, 9.31323e-10, 0, 0, -0.517384, -0.040759, 0.0121548, 0.854696, 1, 1, 1, 1.43333, 1, 4.65661e-10, -7.45058e-09, -1.19675e-07, -0.500405, -0.0736224, 0.0222646, 0.862368, 1, 1, 1, 1.46667, 1, -3.72529e-09, 2.23517e-08, -4.65661e-10, -0.479047, -0.107055, 0.0364563, 0.870474, 1, 1, 1, 1.5, 1, -7.45058e-09, 0, -4.65661e-10, -0.454953, -0.140115, 0.0544503, 0.877736, 1, 1, 1, 1.53333, 1, 0, -7.45058e-09, -1.19675e-07, -0.429229, -0.171942, 0.0764492, 0.883376, 1, 1, 1, 1.56667, 1, 0, 7.45058e-09, -4.65661e-10, -0.402939, -0.201532, 0.10308, 0.886792, 1, 1, 1, 1.6, 1, 1.49012e-08, 0, 0, -0.377411, -0.227489, 0.13565, 0.887361, 1, 1, 1, 1.63333, 1, -2.93367e-08, -7.45058e-09, -4.65661e-10, -0.354776, -0.247359, 0.177033, 0.884085, 1, 1, 1, 1.66667, 1, 0, -3.72529e-08, -4.65661e-10, -0.340122, -0.254669, 0.235686, 0.874021, 1, 1, 1, 1.7, 1, -1.49012e-08, 2.23517e-08, 0, -0.526812, -0.0197212, 0.369198, 0.765358, 1, 1, 1, 1.73333, 1, -1.49012e-08, 1.49012e-08, -1.19209e-07, -0.508137, 0.115338, 0.507923, 0.685936, 0.999999, 1, 1, 1.76667, 1, 1.53668e-08, -7.45058e-09, 0, -0.400063, 0.025383, 0.206711, 0.892511, 1, 1, 1, 1.8, 1, 0, -7.45058e-09, 0, -0.410699, 0.0327342, 0.0674984, 0.90868, 1, 1, 1, 1.83333, 1, -1.49012e-08, -1.49012e-08, 1.19209e-07, -0.418582, 0.048021, -0.0251535, 0.90656, 1, 1, 1, 1.86667, 1, 2.93367e-08, 1.49012e-08, -1.19209e-07, -0.427742, 0.0667739, -0.0859884, 0.89732, 1, 1, 1, 1.9, 1, 2.98023e-08, 2.23517e-08, 0, -0.439956, 0.086371, -0.124507, 0.885142, 1, 1, 1, 1.93333, 1, 1.49012e-08, -2.23517e-08, -1.19675e-07, -0.456402, 0.104741, -0.146985, 0.871276, 1, 1, 1, 1.96667, 1, -2.98023e-08, 7.45058e-09, -4.65661e-10, -0.478522, 0.119484, -0.157878, 0.855462, 1, 1, 1, 2, 1, 1.49012e-08, 0, -1.19675e-07, -0.50911, 0.126456, -0.161028, 0.835994, 1, 1, 1, 2.03333, 1, 5.96046e-08, 2.23517e-08, 1.18744e-07, -0.561943, -0.202039, -0.131374, 0.791291, 1, 1, 1, 2.06667, 1, -1.49012e-08, 0, -4.65661e-10, -0.567116, 0.107921, 0.0824431, 0.812364, 1, 1, 1, 2.1, 1, -1.49012e-08, 7.45058e-09, -1.19675e-07, -0.461467, 0.178003, 0.394772, 0.774285, 1, 1, 1, 2.13333, 1, 2.98023e-08, -7.45058e-09, -1.20141e-07, -0.469401, 0.140536, 0.397625, 0.775762, 1, 1, 1, 2.16667, 1, 0, -7.45058e-09, 1.19209e-07, -0.481813, 0.0536451, 0.39458, 0.780567, 1, 1, 1, 2.2, 1, -1.49012e-08, 7.45058e-09, -1.19675e-07, -0.492857, -0.057529, 0.37801, 0.781595, 1, 1, 1, 2.23333, 1, 0, -7.45058e-09, 0, -0.499652, -0.174772, 0.342718, 0.77611, 1, 1, 1, 2.26667, 1, 1.49012e-08, 0, -4.65661e-10, -0.502331, -0.28229, 0.28488, 0.766041, 1, 1, 1, 2.3, 1, -4.47035e-08, -1.49012e-08, 0, -0.503532, -0.36567, 0.198575, 0.757172, 1, 1, 1, 2.33333, 1, -2.93367e-08, -7.45058e-09, -4.65661e-10, -0.507096, -0.404975, 0.0667763, 0.757885, 1, 1, 1, 2.36667, 1, 0, 0, 0, -0.49812, -0.209324, -0.268779, 0.797382, 1, 1, 1, 2.4, 1, 0, 0, 0, -0.493192, 0.230712, -0.148688, 0.825485, 1, 1, 1, 2.43333, 1, -2.93367e-08, 0, 1.19209e-07, -0.385297, 0.366787, 0.094312, 0.841498, 1, 1, 1 ) +tracks/21/type = "transform" +tracks/21/path = NodePath("Armature/Skeleton:left_clavicle") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = true +tracks/21/enabled = true +tracks/21/keys = PoolRealArray( 0, 1, -9.31323e-10, 0, -2.38419e-07, 1.18445e-07, -3.72529e-08, 5.61122e-08, 1, 1, 1, 1, 0.0333333, 1, 1.49012e-08, 1.49012e-08, 0, 1.1846e-07, -3.72529e-08, 5.58793e-08, 1, 1, 1, 1, 0.0666667, 1, 0, 7.45058e-09, 0, 1.21952e-07, -4.47035e-08, -3.46918e-08, 1, 1, 1, 1, 0.1, 1, 1.39698e-08, -2.98023e-08, 0, 1.20206e-07, 1.39938e-17, 1.16415e-10, 1, 1, 1, 1, 0.133333, 1, 1.49012e-08, 0, 0, 1.2121e-07, -3.72529e-09, 2.98023e-08, 1, 1, 1, 1, 0.166667, 1, 1.39698e-08, -2.23517e-08, 0, 1.16466e-07, 2.71169e-17, 2.32831e-10, 1, 1, 1, 1, 0.2, 1, 0, 0, 0, 1.2196e-07, -4.09782e-08, -3.46918e-08, 1, 1, 1, 1, 0.233333, 1, -7.45058e-09, 1.49012e-08, 0, 4.47471e-09, -3.72529e-09, -9.06875e-08, 1, 1, 1, 1, 0.266667, 1, 7.45058e-09, 0, 0, 1.16474e-07, 2.71186e-17, 2.32831e-10, 1, 1, 1, 1, 0.3, 1, -3.07336e-08, -1.49012e-08, -2.38419e-07, 1.22163e-07, -3.72529e-08, 5.61122e-08, 1, 1, 1, 1, 0.333333, 1, 0, 2.23517e-08, 0, 1.18445e-07, -4.09782e-08, 5.56465e-08, 1, 1, 1, 1, 0.366667, 1, 0, 1.49012e-08, 2.38419e-07, 1.16444e-07, -3.72529e-09, 4.44089e-16, 1, 1, 1, 1, 0.4, 1, 0, 2.98023e-08, 0, 1.20235e-07, -3.72529e-09, 3.49246e-10, 1, 1, 1, 1, 0.433333, 1, 0, 2.98023e-08, -2.38419e-07, 1.24928e-07, 1.86264e-08, 1.74623e-09, 1, 1, 1, 1, 0.466667, 1, -4.47035e-08, 3.72529e-08, 0, 1.24404e-07, -1.49011e-08, 1.18627e-07, 1, 1, 1, 1, 0.5, 1, 6.51926e-09, -1.49012e-08, -2.38419e-07, 5.71163e-09, -4.09782e-08, -5.00586e-09, 1, 1, 1, 1, 0.533333, 1, -2.98023e-08, 2.98023e-08, 0, 1.24346e-08, -1.49012e-08, 2.75904e-08, 1, 1, 1, 1, 0.566667, 1, 7.45058e-09, 0, 2.38419e-07, 1.28159e-07, -1.49011e-08, 1.18627e-07, 1, 1, 1, 1, 0.6, 1, 7.45058e-09, 0, 0, 1.20206e-07, 5.59753e-17, 4.65661e-10, 1, 1, 1, 1, 0.633333, 1, -9.31323e-10, -1.49012e-08, 0, 1.16474e-07, -3.72529e-09, 3.49246e-10, 1, 1, 1, 1, 0.666667, 1, -1.58325e-08, 1.49012e-08, -2.38419e-07, 1.20213e-07, 5.59787e-17, 4.65661e-10, 1, 1, 1, 1, 0.7, 1, 1.39698e-08, -1.49012e-08, -2.38419e-07, 0.00279704, 0.000975083, 0.0338322, 0.999423, 1, 1, 1, 0.733333, 1, 9.31323e-09, 1.49012e-08, 0, 0.00278716, 0.000915342, 0.0317047, 0.999493, 1, 1, 1, 0.766667, 1, -2.65427e-08, -1.49012e-08, -1.19209e-07, 0.00273398, 0.00078969, 0.0272452, 0.999625, 1, 1, 1, 0.8, 1, -1.58325e-08, -1.49012e-08, 5.96046e-08, 0.00261833, 0.000639212, 0.0219226, 0.999756, 1, 1, 1, 0.833333, 1, 1.44355e-08, 4.47035e-08, 5.96046e-08, 0.0024283, 0.000484148, 0.0164574, 0.999862, 1, 1, 1, 0.866667, 1, 2.8871e-08, -1.49012e-08, 0, 0.00215443, 0.000336926, 0.0113014, 0.999934, 1, 1, 1, 0.9, 1, -4.47035e-08, 3.72529e-08, 0, 0.00178657, 0.000206983, 0.00679184, 0.999975, 1, 1, 1, 0.933333, 1, -7.45058e-09, 0, 0, 0.00131385, 0.00010236, 0.00321798, 0.999994, 1, 1, 1, 0.966667, 1, 0, 7.45058e-09, 0, 0.000723431, 3.07353e-05, 0.000857071, 0.999999, 1, 1, 1, 1, 1, -1.53668e-08, -7.45058e-09, -5.96046e-08, 1.22425e-07, 1.49012e-08, 1.21887e-07, 1, 1, 1, 1, 1.03333, 1, 0, 0, 0, -0.00160135, -6.11019e-06, 1.20708e-05, 0.999999, 1, 1, 1, 1.06667, 1, 2.23517e-08, 1.49012e-08, 0, -0.00464829, -1.02358e-05, 4.77922e-05, 0.999989, 1, 1, 1, 1.1, 1, -4.42378e-08, -7.45058e-09, 1.19209e-07, -0.00892983, -1.2617e-05, 0.000107092, 0.99996, 1, 1, 1, 1.13333, 1, -2.93367e-08, 3.72529e-08, 1.19209e-07, -0.0142718, -1.38348e-05, 0.000190906, 0.999898, 1, 1, 1, 1.16667, 1, -1.49477e-07, -3.72529e-09, 0, -0.0205214, -1.41716e-05, 0.000301227, 0.999789, 1, 1, 1, 1.2, 1, -3.07336e-08, -2.98023e-08, 0, -0.0275359, -1.41884e-05, 0.000441207, 0.999621, 1, 1, 1, 1.23333, 1, 0, 0, 0, -0.0351662, -1.456e-05, 0.000616535, 0.999381, 1, 1, 1, 1.26667, 1, 2.84053e-08, -1.49012e-08, -2.38419e-07, -0.0432304, -1.57463e-05, 0.000837335, 0.999065, 1, 1, 1, 1.3, 1, -6.0536e-09, 1.49012e-08, 2.38419e-07, -0.0514507, -1.92584e-05, 0.00112298, 0.998675, 1, 1, 1, 1.33333, 1, 1.39698e-08, -7.45058e-09, -2.38419e-07, -0.0592183, -2.85497e-05, 0.0015222, 0.998244, 1, 1, 1, 1.36667, 1, -2.98023e-08, 2.23517e-08, -2.38419e-07, -0.0674837, -7.19857e-05, 0.00235558, 0.997718, 1, 1, 1, 1.4, 1, 1.11759e-08, -2.23517e-08, 2.38419e-07, -0.0609419, 0.00138336, -0.00695835, 0.998116, 1, 1, 1, 1.43333, 1, -3.72529e-09, 0, 0, -0.0479216, 0.00425905, -0.0253646, 0.99852, 1, 1, 1, 1.46667, 1, 5.58794e-09, 2.98023e-08, 0, -0.0321709, 0.007724, -0.0475445, 0.998321, 1, 1, 1, 1.5, 1, 2.6077e-08, 1.49012e-08, 0, -0.0151385, 0.0114568, -0.0714406, 0.997264, 1, 1, 1, 1.53333, 1, -2.32831e-08, -2.98023e-08, 0, 0.00228035, 0.0152599, -0.0957882, 0.995282, 1, 1, 1, 1.56667, 1, 6.51926e-09, -1.49012e-08, 0, 0.0193158, 0.0189656, -0.119514, 0.992463, 1, 1, 1, 1.6, 1, 2.98023e-08, 0, 0, 0.0350754, 0.0223817, -0.141388, 0.989079, 1, 1, 1, 1.63333, 1, 0, 5.96046e-08, 0, 0.0481176, 0.0252002, -0.159436, 0.985713, 1, 1, 1, 1.66667, 1, 4.47035e-08, 0, 2.38419e-07, 0.0547076, 0.0266213, -0.168536, 0.983816, 1, 1, 1, 1.7, 1, 3.72529e-08, 0, 0, 0.0451782, 0.00346155, 0.0220944, 0.998729, 1, 1, 1, 1.73333, 1, -9.31323e-10, -5.96046e-08, 0, 0.0105906, -0.023465, 0.159699, 0.98683, 1, 1, 1, 1.76667, 1, -2.32831e-08, -4.47035e-08, 2.38419e-07, 0.00236444, 0.00812059, -0.11676, 0.993124, 1, 1, 1, 1.8, 1, -7.40401e-08, -1.49012e-08, 1.3411e-07, 0.00236277, 0.00808877, -0.111091, 0.993775, 1, 1, 1, 1.83333, 1, 1.49012e-08, 0, 0, 0.00237755, 0.00804947, -0.0989372, 0.995058, 1, 1, 1, 1.86667, 1, 1.49012e-08, 0, 0, 0.0024157, 0.00800632, -0.0837858, 0.996449, 1, 1, 1, 1.9, 1, 8.89413e-08, 0, 0, 0.00248473, 0.00796195, -0.0677284, 0.997669, 1, 1, 1, 1.93333, 1, 0, 0, 2.38419e-07, 0.00259631, 0.00792028, -0.0525602, 0.998583, 1, 1, 1, 1.96667, 1, 0, 0, 0, 0.00276974, 0.00788661, -0.0404373, 0.999147, 1, 1, 1, 2, 1, -1.49012e-08, 4.47035e-08, -2.38419e-07, 0.00304353, 0.00787138, -0.0349837, 0.999352, 1, 1, 1, 2.03333, 1, -2.98023e-08, 2.98023e-08, 0, 0.0565851, 0.0223183, -0.0923218, 0.99387, 1, 1, 1, 2.06667, 1, 2.8871e-08, -1.49012e-08, 0, 0.0451782, 0.00346152, 0.0220943, 0.998729, 1, 1, 1, 2.1, 1, 8.801e-08, 1.49012e-08, 3.57628e-07, 0.0131052, -0.0222118, 0.0524228, 0.998292, 1, 1, 1, 2.13333, 1, 5.96046e-08, 1.49012e-08, 1.19209e-07, 0.00878967, -0.0216042, 0.0458205, 0.998677, 1, 1, 1, 2.16667, 1, 2.98023e-08, 0, 0, 0.00606727, -0.0199144, 0.0300146, 0.999333, 1, 1, 1, 2.2, 1, -2.98023e-08, 2.98023e-08, 0, 0.0043238, -0.0172034, 0.00823247, 0.999809, 1, 1, 1, 2.23333, 1, -3.07336e-08, 1.49012e-08, -2.38419e-07, 0.00325072, -0.0133889, -0.0179775, 0.999743, 1, 1, 1, 2.26667, 1, 1.35042e-08, -3.72529e-09, -4.76837e-07, 0.00265959, -0.00825735, -0.0477705, 0.998821, 1, 1, 1, 2.3, 1, 2.98023e-08, 2.98023e-08, 0, 0.00241052, -0.00138822, -0.08071, 0.996734, 1, 1, 1, 2.33333, 1, -9.31323e-10, 0, -2.38419e-07, 0.0023645, 0.00812057, -0.116759, 0.993124, 1, 1, 1, 2.36667, 1, 2.8871e-08, -1.49012e-08, 0, 0.0547077, 0.0266212, -0.168536, 0.983816, 1, 1, 1, 2.4, 1, -3.07336e-08, 0, -2.38419e-07, 0.0451781, 0.00346148, 0.0220943, 0.998729, 1, 1, 1, 2.43333, 1, 0, 3.72529e-08, 0, 0.0105906, -0.023465, 0.159699, 0.98683, 1, 1, 1 ) +tracks/22/type = "transform" +tracks/22/path = NodePath("Armature/Skeleton:head") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = true +tracks/22/enabled = true +tracks/22/keys = PoolRealArray( 0, 1, 1.81899e-12, 1.19209e-07, 0, -2.8455e-22, -1.45519e-11, -4.09273e-12, 1, 1, 1, 1, 0.0333333, 1, 5.82077e-11, 0, 0, 4.15926e-05, 0.00493182, 0.000219593, 0.999988, 1, 1, 1, 0.0666667, 1, -5.2205e-10, 2.38419e-07, 7.45058e-09, 0.00016886, 0.020062, 0.000882132, 0.999798, 1, 1, 1, 0.1, 1, -9.29504e-10, 1.19209e-07, 0, 0.000380946, 0.0453533, 0.00196392, 0.998969, 1, 1, 1, 0.133333, 1, -1.39516e-09, 1.19209e-07, 0, 0.000667274, 0.0796399, 0.00338467, 0.996818, 1, 1, 1, 0.166667, 1, 1.81899e-12, 3.57628e-07, 0, 0.00100482, 0.120287, 0.00499666, 0.992726, 1, 1, 1, 0.2, 1, -4.65479e-09, 1.19209e-07, 0, 0.00136043, 0.163439, 0.00660351, 0.98653, 1, 1, 1, 0.233333, 1, 9.31323e-10, 0, 7.45058e-09, 0.00169892, 0.204959, 0.00800912, 0.978736, 1, 1, 1, 0.266667, 1, 1.86265e-09, -1.19209e-07, 0, 0.00199228, 0.241519, 0.00906756, 0.970352, 1, 1, 1, 0.3, 1, 0, 0, 7.45058e-09, 0.00222425, 0.271153, 0.00970312, 0.962485, 1, 1, 1, 0.333333, 1, 1.86265e-09, 0, 7.45058e-09, 0.0023891, 0.293134, 0.00989885, 0.956017, 1, 1, 1, 0.366667, 1, 0, 0, 0, 0.00249854, 0.309877, 0.00949198, 0.950726, 1, 1, 1, 0.4, 1, -7.45058e-09, -1.19209e-07, 0, 0.00257068, 0.324111, 0.0084085, 0.945978, 1, 1, 1, 0.433333, 1, -3.72529e-09, 0, -3.72529e-09, 0.00261396, 0.33618, 0.00677472, 0.94177, 1, 1, 1, 0.466667, 1, 0, 0, 3.72529e-09, 0.00267448, 0.342042, 0.00473424, 0.939669, 1, 1, 1, 0.5, 1, 9.31323e-10, -1.19209e-07, 7.45058e-09, 0.00271711, 0.342031, 0.00236263, 0.939682, 1, 1, 1, 0.533333, 1, 0, 0, 0, 0.00268587, 0.342021, -0.00028782, 0.939689, 1, 1, 1, 0.566667, 1, 0, 0, 0, 0.00260371, 0.342014, -0.00308056, 0.939686, 1, 1, 1, 0.6, 1, 1.86265e-09, -1.19209e-07, 0, 0.00250734, 0.342011, -0.00581821, 0.939674, 1, 1, 1, 0.633333, 1, 6.98492e-10, 0, 0, 0.00245698, 0.342012, -0.00816007, 0.939657, 1, 1, 1, 0.666667, 1, 2.96859e-09, 0, 0, 0.00257327, 0.342012, -0.00932135, 0.939646, 1, 1, 1, 0.7, 1, -2.79397e-09, 0, 0, 0.00358716, 0.342015, -0.00205769, 0.939685, 1, 1, 1, 0.733333, 1, 1.81899e-12, 2.38419e-07, -9.31323e-10, 0.00533872, 0.291039, -0.00279726, 0.956692, 1, 1, 1, 0.766667, 1, 0, 0, -2.23517e-08, 0.00766724, 0.226618, -0.00434926, 0.973944, 1, 1, 1, 0.8, 1, -2.98005e-08, -5.96046e-08, 1.49012e-08, 0.0101333, 0.158196, -0.00620409, 0.987336, 1, 1, 1, 0.833333, 1, 2.98041e-08, 1.19209e-07, 1.49012e-08, 0.0124946, 0.0916125, -0.00809132, 0.995683, 1, 1, 1, 0.866667, 1, -2.98023e-08, 0, -2.98023e-08, 0.0145954, 0.0311727, -0.00983722, 0.999359, 1, 1, 1, 0.9, 1, 1.49012e-08, 0, -1.49012e-08, 0.0163339, -0.019865, -0.0113238, 0.999605, 1, 1, 1, 0.933333, 1, 0, 5.96046e-08, 0, 0.0176418, -0.0589915, -0.0124673, 0.998025, 1, 1, 1, 0.966667, 1, 3.72529e-09, 0, 0, 0.0184647, -0.0840804, -0.0132004, 0.9962, 1, 1, 1, 1, 1, 1.81899e-12, 1.19209e-07, -7.45058e-09, 0.0187419, -0.0929371, -0.013453, 0.995405, 1, 1, 1, 1.03333, 1, 0, 0, 7.45058e-09, 0.0183419, -0.0909535, -0.0131674, 0.995599, 1, 1, 1, 1.06667, 1, 3.72529e-09, -1.19209e-07, 1.49012e-08, 0.0172789, -0.0856823, -0.0124084, 0.996095, 1, 1, 1, 1.1, 1, 7.4524e-09, -5.96046e-08, 1.49012e-08, 0.0156739, -0.0777237, -0.0112621, 0.996788, 1, 1, 1, 1.13333, 1, 1.4903e-08, 0, 1.49012e-08, 0.0136328, -0.0676021, -0.00980366, 0.997571, 1, 1, 1, 1.16667, 1, 7.4524e-09, 0, 2.98023e-08, 0.0112564, -0.0558181, -0.00810464, 0.998345, 1, 1, 1, 1.2, 1, 1.49012e-08, 5.96046e-08, 0, 0.00865197, -0.0429036, -0.00624102, 0.999022, 1, 1, 1, 1.23333, 1, 1.49012e-08, -1.19209e-07, 1.49012e-08, 0.00594905, -0.0294999, -0.00430442, 0.999538, 1, 1, 1, 1.26667, 1, 7.45058e-09, 0, -1.49012e-08, 0.00332931, -0.0165094, -0.00242334, 0.999855, 1, 1, 1, 1.3, 1, 5.58794e-09, 0, 1.86265e-09, 0.00110476, -0.00547824, -0.000818041, 0.999984, 1, 1, 1, 1.33333, 1, -2.32831e-10, 0, 0, -1.86265e-09, -5.82077e-11, -7.59428e-11, 1, 1, 1, 1, 1.36667, 1, 3.72529e-09, 0, 0, 0.0126095, -0.000213503, 1.55637e-05, 0.99992, 1, 1, 1, 1.4, 1, 0, -2.38419e-07, 0, 0.0121752, -0.00796348, -2.64439e-05, 0.999894, 1, 1, 1, 1.43333, 1, 1.86446e-09, 1.19209e-07, 4.65661e-10, 0.0111957, -0.0227067, -0.000229606, 0.999679, 1, 1, 1, 1.46667, 1, 4.6748e-10, 1.19209e-07, -7.45058e-09, 0.00983429, -0.0403203, -0.000655974, 0.999138, 1, 1, 1, 1.5, 1, -1.86083e-09, 1.19209e-07, 0, 0.00812148, -0.0592316, -0.00136122, 0.99821, 1, 1, 1, 1.53333, 1, 3.72529e-09, 0, 0, 0.00603653, -0.0784908, -0.002419, 0.996894, 1, 1, 1, 1.56667, 1, 1.81899e-12, 1.19209e-07, 0, 0.00351347, -0.0972911, -0.00394166, 0.995242, 1, 1, 1, 1.6, 1, 0, 0, 0, 0.000414776, -0.114683, -0.00612277, 0.993383, 1, 1, 1, 1.63333, 1, 1.49012e-08, -1.19209e-07, 1.49012e-08, -0.00356134, -0.129092, -0.00935889, 0.991582, 1, 1, 1, 1.66667, 1, 1.81899e-12, 2.38419e-07, -2.98023e-08, -0.00930807, -0.136372, -0.0147936, 0.990503, 1, 1, 1, 1.7, 1, 0, 0, -7.45058e-09, -0.0217893, -0.12874, -0.0344427, 0.99084, 1, 1, 1, 1.73333, 1, 1.49012e-08, 0, 0, -0.0217892, -0.12874, -0.0344427, 0.990841, 1, 1, 1, 1.76667, 1, 0, 1.19209e-07, -1.49012e-08, -0.0217893, -0.12874, -0.0344427, 0.990841, 1, 1, 1, 1.8, 1, 7.45058e-09, 0, -1.49012e-08, -0.0214509, -0.118925, -0.0346531, 0.992067, 1, 1, 1, 1.83333, 1, 1.81899e-12, 2.38419e-07, 0, -0.0206893, -0.097007, -0.03511, 0.994449, 1, 1, 1, 1.86667, 1, -3.72529e-09, 1.19209e-07, -1.49012e-08, -0.0197192, -0.0694316, -0.0356592, 0.996754, 1, 1, 1, 1.9, 1, 1.86265e-09, 0, -1.49012e-08, -0.0186736, -0.040125, -0.0362118, 0.998364, 1, 1, 1, 1.93333, 1, 5.58794e-09, -1.19209e-07, 1.49012e-08, -0.0176731, -0.0124629, -0.0367041, 0.999092, 1, 1, 1, 1.96667, 1, 9.33142e-10, 1.19209e-07, 1.49012e-08, -0.0168663, 0.0095836, -0.0370763, 0.999124, 1, 1, 1, 2, 1, 1.04956e-09, 1.19209e-07, 1.49012e-08, -0.0165016, 0.0194744, -0.0372374, 0.99898, 1, 1, 1, 2.03333, 1, -3.72529e-09, 0, 0, -0.0165016, 0.0194744, -0.0372374, 0.99898, 1, 1, 1, 2.06667, 1, 0, 0, -2.98023e-08, -0.0165016, 0.0194744, -0.0372374, 0.99898, 1, 1, 1, 2.1, 1, -1.86265e-09, 0, 0, -0.0165016, 0.0194744, -0.0372374, 0.99898, 1, 1, 1, 2.13333, 1, 2.32831e-10, 0, -2.98023e-08, -0.016451, 0.0208471, -0.0372596, 0.998953, 1, 1, 1, 2.16667, 1, 1.81899e-12, 0, 1.49012e-08, -0.0163382, 0.0239004, -0.0373086, 0.998884, 1, 1, 1, 2.2, 1, -3.72529e-09, 0, 0, -0.0161967, 0.027725, -0.0373696, 0.998786, 1, 1, 1, 2.23333, 1, 1.81899e-12, 0, 1.49012e-08, -0.0160464, 0.031778, -0.0374335, 0.998665, 1, 1, 1, 2.26667, 1, 1.81899e-12, 2.38419e-07, 0, -0.0159044, 0.0356017, -0.0374934, 0.998536, 1, 1, 1, 2.3, 1, 3.72529e-09, 0, 0, -0.0157909, 0.0386537, -0.0375407, 0.998422, 1, 1, 1, 2.33333, 1, 7.45058e-09, 0, 0, -0.0157399, 0.0400255, -0.0375619, 0.998368, 1, 1, 1, 2.36667, 1, 1.4903e-08, 1.19209e-07, 1.49012e-08, -0.0157398, 0.0400256, -0.0375619, 0.998368, 1, 1, 1, 2.4, 1, 7.45058e-09, -1.19209e-07, -1.49012e-08, -0.0228855, 0.0391366, -0.0173501, 0.998821, 1, 1, 1, 2.43333, 1, 1.49012e-08, 0, 0, -0.0165314, 0.039512, -0.0452119, 0.998059, 1, 1, 1 ) +tracks/23/type = "transform" +tracks/23/path = NodePath("Armature/Skeleton:neck") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = true +tracks/23/enabled = true +tracks/23/keys = PoolRealArray( 0, 1, -5.82077e-11, 0, 7.45058e-09, -3.72529e-09, 3.63798e-12, -9.09495e-13, 1, 1, 1, 1, 0.0333333, 1, 0, 0, 0, -1.11759e-08, 7.27596e-12, 1.30058e-10, 1, 1, 1, 1, 0.0666667, 1, -6.98492e-10, 0, 0, -3.72529e-09, 3.63798e-12, 2.03272e-10, 1, 1, 1, 1, 0.1, 1, -6.98492e-10, 1.04308e-07, 0, -3.72529e-09, 3.69255e-09, 3.46063e-10, 1, 1, 1, 1, 0.133333, 1, -4.65661e-09, 0, 7.45058e-09, -3.72529e-09, -2.54658e-11, -2.53294e-10, 1, 1, 1, 1, 0.166667, 1, -5.58794e-09, 0, 0, -3.72529e-09, 1.48502e-08, -2.36468e-11, 1, 1, 1, 1, 0.2, 1, -6.51926e-09, 0, 0, -3.72529e-09, -2.18279e-11, 4.50655e-10, 1, 1, 1, 1, 0.233333, 1, 1.86265e-09, -1.19209e-07, 0, -3.72529e-09, -7.53062e-09, -2.25555e-10, 1, 1, 1, 1, 0.266667, 1, -1.86628e-09, 1.04308e-07, -7.45058e-09, -3.72529e-09, 7.45422e-09, -1.86219e-09, 1, 1, 1, 1, 0.3, 1, 1.86265e-09, 0, 7.45058e-09, -3.72529e-09, -7.35599e-09, -1.38334e-09, 1, 1, 1, 1, 0.333333, 1, 1.86265e-09, 1.04308e-07, 0, -3.72529e-09, 7.36691e-09, 4.72937e-10, 1, 1, 1, 1, 0.366667, 1, 3.72529e-09, -1.19209e-07, 0, -3.72529e-09, 7.3378e-09, 4.56112e-10, 1, 1, 1, 1, 0.4, 1, 1.86265e-09, -1.19209e-07, 0, -3.72529e-09, -1.49848e-08, -9.26775e-10, 1, 1, 1, 1, 0.433333, 1, -1.86265e-09, -1.19209e-07, 0, -3.72529e-09, -7.36327e-09, -4.47017e-10, 1, 1, 1, 1, 0.466667, 1, -5.59157e-09, 1.04308e-07, -7.45058e-09, -3.72529e-09, 2.96059e-08, 2.3324e-09, 1, 1, 1, 1, 0.5, 1, -9.34961e-10, 2.23517e-07, -6.51926e-09, -3.72529e-09, -2.97441e-08, 1.36833e-09, 1, 1, 1, 1, 0.533333, 1, -9.34961e-10, 1.04308e-07, -7.45058e-09, -3.72529e-09, 7.42511e-09, 6.96218e-10, 1, 1, 1, 1, 0.566667, 1, -2.79397e-09, 0, 0, -3.72529e-09, -7.45058e-09, -7.03039e-10, 1, 1, 1, 1, 0.6, 1, 0, 0, -6.51926e-09, -3.72529e-09, -7.44694e-09, -1.15597e-09, 1, 1, 1, 1, 0.633333, 1, 7.91624e-09, -1.19209e-07, -7.45058e-09, -3.72529e-09, -1.48248e-08, 9.13587e-10, 1, 1, 1, 1, 0.666667, 1, -2.47383e-10, 1.04308e-07, 7.45058e-09, -3.72529e-09, -1.49703e-08, -8.37645e-10, 1, 1, 1, 1, 0.7, 1, 3.84171e-09, 0, 0, -3.72529e-09, -1.49885e-08, -8.24912e-10, 1, 1, 1, 1, 0.733333, 1, 1.49012e-08, -1.19209e-07, -3.72529e-09, -3.72529e-09, 8.24002e-09, -3.73484e-09, 1, 1, 1, 1, 0.766667, 1, 2.98023e-08, 1.04308e-07, 5.58794e-09, -3.72529e-09, 2.14241e-08, -7.45058e-09, 1, 1, 1, 1, 0.8, 1, 0, 0, 7.45058e-09, -3.72529e-09, 1.11831e-08, 7.45831e-09, 1, 1, 1, 1, 0.833333, 1, 1.49012e-08, 0, -1.39698e-08, 3.72529e-09, -1.48939e-08, -7.47468e-09, 1, 1, 1, 1, 0.866667, 1, -3.63798e-12, 5.96046e-08, -1.39698e-08, -1.11759e-08, -7.44331e-09, 1.54613e-11, 1, 1, 1, 1, 0.9, 1, 7.45058e-09, 0, -6.51926e-09, -1.11759e-08, 7.45786e-09, -7.46559e-09, 1, 1, 1, 1, 0.933333, 1, -7.45058e-09, 0, -6.51926e-09, -3.72529e-09, 2.98023e-08, 1.849e-09, 1, 1, 1, 1, 0.966667, 1, -3.72529e-09, 0, -6.51926e-09, -3.72529e-09, 1.49048e-08, 9.31323e-10, 1, 1, 1, 1, 1, 1, 0, -5.96046e-08, -7.45058e-09, -3.72529e-09, 3.63798e-12, 4.66571e-10, 1, 1, 1, 1, 1.03333, 1, 3.72529e-09, 0, -6.51926e-09, -3.72529e-09, 7.45422e-09, 4.64752e-10, 1, 1, 1, 1, 1.06667, 1, 7.45058e-09, 5.96046e-08, 9.31323e-10, -1.11759e-08, -2.07913e-17, 1.85582e-09, 1, 1, 1, 1, 1.1, 1, -7.45422e-09, 5.96046e-08, -4.37722e-08, -1.11759e-08, 3.638e-12, -1.87447e-09, 1, 1, 1, 1, 1.13333, 1, 0, 0, 2.98023e-08, 3.72529e-09, 1.38083e-17, 3.71483e-09, 1, 1, 1, 1, 1.16667, 1, -7.45058e-09, 1.04308e-07, 0, 1.11759e-08, -7.43967e-09, -7.47605e-09, 1, 1, 1, 1, 1.2, 1, -7.45058e-09, 5.96046e-08, 5.96046e-08, 1.86265e-08, 7.27596e-12, -1.59162e-11, 1, 1, 1, 1, 1.23333, 1, -1.49012e-08, 0, -2.8871e-08, -1.11759e-08, 9.3496e-10, 1.1159e-08, 1, 1, 1, 1, 1.26667, 1, 0, 1.04308e-07, 1.49012e-08, -3.72529e-09, -9.31323e-10, -1.87083e-09, 1, 1, 1, 1, 1.3, 1, 1.86265e-09, -1.19209e-07, 1.86265e-09, -3.72529e-09, -2.65573e-10, -9.14042e-10, 1, 1, 1, 1, 1.33333, 1, 3.49246e-10, -1.19209e-07, 0, -3.72529e-09, -9.82254e-11, -5.32054e-11, 1, 1, 1, 1, 1.36667, 1, 0, 0, -6.51926e-09, -3.72529e-09, 1.01863e-10, -4.62478e-10, 1, 1, 1, 1, 1.4, 1, -1.86265e-09, -1.19209e-07, -7.45058e-09, -3.72529e-09, -1.02591e-09, -1.95541e-11, 1, 1, 1, 1, 1.43333, 1, -4.65661e-10, 1.04308e-07, -3.72529e-09, -3.72529e-09, -1.09139e-11, 1.14142e-10, 1, 1, 1, 1, 1.46667, 1, 4.65661e-10, -1.19209e-07, 0, -3.72529e-09, 1.23691e-10, -7.27596e-12, 1, 1, 1, 1, 1.5, 1, -5.58794e-09, 2.23517e-07, 6.51926e-09, -3.72529e-09, 5.60249e-10, -3.63798e-12, 1, 1, 1, 1, 1.53333, 1, 1.11759e-08, 0, 3.72529e-09, -3.72529e-09, 3.56522e-10, -9.41327e-10, 1, 1, 1, 1, 1.56667, 1, -1.49012e-08, 0, -1.39698e-08, -3.72529e-09, 8.14907e-09, -1.04592e-11, 1, 1, 1, 1, 1.6, 1, -7.45058e-09, -1.19209e-07, 1.49012e-08, -3.72529e-09, -6.50834e-09, -3.70528e-09, 1, 1, 1, 1, 1.63333, 1, 1.49012e-08, 1.04308e-07, 0, -3.72529e-09, 1.40062e-09, -3.70119e-09, 1, 1, 1, 1, 1.66667, 1, 1.49012e-08, 0, -2.8871e-08, -3.72529e-09, -3.72529e-09, -1.38778e-17, 1, 1, 1, 1, 1.7, 1, -1.49012e-08, 1.04308e-07, -1.49012e-08, -1.11759e-08, 1.63054e-08, -2.7283e-12, 1, 1, 1, 1, 1.73333, 1, 2.98023e-08, 0, 7.45058e-09, -1.11759e-08, 1.49084e-08, -1.1185e-08, 1, 1, 1, 1, 1.76667, 1, 1.49012e-08, 1.04308e-07, 7.45058e-09, -3.72529e-09, 1.49048e-08, -5.59476e-09, 1, 1, 1, 1, 1.8, 1, -7.45058e-09, -1.19209e-07, 0, -3.72529e-09, -5.5843e-09, 5.58248e-09, 1, 1, 1, 1, 1.83333, 1, -1.11759e-08, 0, 0, -3.72529e-09, 1.86628e-09, 1.87811e-09, 1, 1, 1, 1, 1.86667, 1, -3.72529e-09, 0, 0, -3.72529e-09, 3.73257e-09, 9.19499e-10, 1, 1, 1, 1, 1.9, 1, 3.72529e-09, -1.19209e-07, 1.49012e-08, 3.72529e-09, 2.40107e-10, -2.80807e-09, 1, 1, 1, 1, 1.93333, 1, 0, 0, 0, -1.11759e-08, -1.50976e-09, -4.80668e-10, 1, 1, 1, 1, 1.96667, 1, 1.39698e-09, 1.04308e-07, -1.49012e-08, -3.72529e-09, -1.56069e-09, -4.83851e-10, 1, 1, 1, 1, 2, 1, -1.22236e-09, 1.04308e-07, -1.49012e-08, -1.11759e-08, 4.40196e-10, 2.50566e-10, 1, 1, 1, 1, 2.03333, 1, 0, 0, 0, -3.72529e-09, 2.10275e-09, -2.04636e-11, 1, 1, 1, 1, 2.06667, 1, 9.31323e-10, 1.04308e-07, 0, 3.72529e-09, 5.23869e-10, -2.18279e-11, 1, 1, 1, 1, 2.1, 1, -1.85901e-09, -1.19209e-07, 4.47035e-08, 3.72529e-09, -1.27693e-09, -4.77485e-10, 1, 1, 1, 1, 2.13333, 1, -9.31323e-10, 0, 1.49012e-08, -3.72529e-09, -2.18279e-11, -2.37378e-10, 1, 1, 1, 1, 2.16667, 1, 9.31323e-10, 0, -1.39698e-08, 3.72529e-09, -6.33008e-10, -1.95541e-11, 1, 1, 1, 1, 2.2, 1, 3.72529e-09, 0, 0, -1.11759e-08, -2.32467e-09, -9.35415e-10, 1, 1, 1, 1, 2.23333, 1, 1.11759e-08, 1.04308e-07, -1.49012e-08, -1.11759e-08, -3.95812e-09, -1.86447e-11, 1, 1, 1, 1, 2.26667, 1, 0, 0, 0, -3.72529e-09, -6.94854e-10, -1.8681e-09, 1, 1, 1, 1, 2.3, 1, 3.72529e-09, 0, 7.45058e-09, -1.11759e-08, -9.08039e-09, 1.8681e-09, 1, 1, 1, 1, 2.33333, 1, 0, 0, -6.51926e-09, -1.11759e-08, -7.90897e-09, -4.54756e-12, 1, 1, 1, 1, 2.36667, 1, 0, 1.04308e-07, 0, -3.72529e-09, 1.86265e-09, 3.72165e-09, 1, 1, 1, 1, 2.4, 1, 0, 0, 7.45058e-09, -1.11759e-08, -1.02409e-08, -2.7286e-12, 1, 1, 1, 1, 2.43333, 1, 0, 0, -2.8871e-08, -3.72529e-09, -1.85537e-09, -8.18546e-12, 1, 1, 1, 1 ) +tracks/24/type = "transform" +tracks/24/path = NodePath("Armature/Skeleton:spine_2") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = true +tracks/24/enabled = true +tracks/24/keys = PoolRealArray( 0, 1, 1.16415e-10, 0, 0, -4.65661e-10, 0, 3.55271e-15, 1, 1, 1, 1, 0.0333333, 1, -5.82006e-11, 1.19209e-07, 0, -0.000308561, -0.00151725, -2.44524e-05, 0.999999, 1, 1, 1, 0.0666667, 1, -5.82077e-11, 0, -9.31323e-10, -0.00123739, -0.00610766, -9.80587e-05, 0.999981, 1, 1, 1, 0.1, 1, 6.98492e-10, 0, 0, -0.00274807, -0.013628, -0.000217776, 0.999903, 1, 1, 1, 0.133333, 1, 0, -1.19209e-07, 6.98492e-10, -0.00472446, -0.0235657, -0.000374398, 0.999711, 1, 1, 1, 0.166667, 1, 0, 0, 0, -0.00696339, -0.0349841, -0.000551826, 0.999363, 1, 1, 1, 0.2, 1, -9.31315e-10, 1.19209e-07, 0, -0.00920147, -0.0466402, -0.000729186, 0.998869, 1, 1, 1, 0.233333, 1, 0, -1.19209e-07, 2.32831e-10, -0.0111756, -0.0572684, -0.000885634, 0.998296, 1, 1, 1, 0.266667, 1, -1.86265e-09, 0, 4.65661e-10, -0.0126836, -0.0658725, -0.00100513, 0.997747, 1, 1, 1, 0.3, 1, 0, -1.19209e-07, 2.32831e-10, -0.0136102, -0.071864, -0.00107856, 0.997321, 1, 1, 1, 0.333333, 1, 0, 0, 0, -0.0139178, -0.0750242, -0.00110294, 0.997084, 1, 1, 1, 0.366667, 1, -1.86264e-09, 1.19209e-07, 0, -0.0135342, -0.076481, -0.00103536, 0.996979, 1, 1, 1, 0.4, 1, 0, 0, 0, -0.0124708, -0.0774474, -0.000849249, 0.996918, 1, 1, 1, 0.433333, 1, -1.86264e-09, 1.19209e-07, 9.31323e-10, -0.0108407, -0.078029, -0.000566414, 0.996892, 1, 1, 1, 0.466667, 1, 0, -1.19209e-07, 2.32831e-10, -0.00874103, -0.0783216, -0.000206085, 0.99689, 1, 1, 1, 0.5, 1, -9.31323e-10, -1.19209e-07, 2.32831e-10, -0.0062613, -0.0784205, 0.000213427, 0.996901, 1, 1, 1, 0.533333, 1, -9.31323e-10, 0, 0, -0.00349164, -0.0784305, 0.000672887, 0.996913, 1, 1, 1, 0.566667, 1, -9.31323e-10, 1.19209e-07, -4.65661e-10, -0.000534838, -0.0784826, 0.00114935, 0.996915, 1, 1, 1, 0.6, 1, -9.31323e-10, -1.19209e-07, 2.32831e-10, 0.0024714, -0.0787672, 0.00161082, 0.996889, 1, 1, 1, 0.633333, 1, 1.39698e-09, -1.19209e-07, 2.32831e-10, 0.00529825, -0.0796188, 0.00200252, 0.996809, 1, 1, 1, 0.666667, 1, 7.10543e-15, 1.19209e-07, 0, 0.00742093, -0.0818259, 0.00219695, 0.996617, 1, 1, 1, 0.7, 1, 1.74623e-10, -1.19209e-07, -1.62981e-09, 0.00804153, -0.0935469, -0.00247536, 0.995579, 1, 1, 1, 0.733333, 1, -7.45057e-09, -5.96046e-08, 2.32831e-10, 0.00843615, -0.0895636, -0.000724209, 0.995945, 1, 1, 1, 0.766667, 1, -1.49012e-08, 5.96046e-08, -7.45058e-09, 0.00876948, -0.0810698, 0.00294718, 0.996666, 1, 1, 1, 0.8, 1, 1.49012e-08, 0, 0, 0.00906406, -0.0706989, 0.00732978, 0.99743, 1, 1, 1, 0.833333, 1, 2.98023e-08, 0, 1.49012e-08, 0.00933023, -0.0597374, 0.0118293, 0.9981, 1, 1, 1, 0.866667, 1, 1.49012e-08, -5.96046e-08, 1.5134e-08, 0.00957388, -0.0489854, 0.0160727, 0.998624, 1, 1, 1, 0.9, 1, -1.49012e-08, 0, -1.49012e-08, 0.00979882, -0.0390314, 0.0197815, 0.998994, 1, 1, 1, 0.933333, 1, -7.45057e-09, 2.98023e-08, 0, 0.0100078, -0.0303695, 0.0227185, 0.99923, 1, 1, 1, 0.966667, 1, 0, -2.98023e-08, 2.32831e-10, 0.0102029, -0.0234621, 0.0246568, 0.999369, 1, 1, 1, 1, 1, 0, 0, 0, 0.0103858, -0.0187843, 0.0253593, 0.999448, 1, 1, 1, 1.03333, 1, 7.45059e-09, 2.98023e-08, 0, 0.0105342, -0.0157223, 0.0247057, 0.999516, 1, 1, 1, 1.06667, 1, 1.49012e-08, -2.98023e-08, 2.32831e-10, 0.0106338, -0.0132542, 0.0228942, 0.999593, 1, 1, 1, 1.1, 1, -1.49012e-08, 0, -1.49012e-08, 0.0106961, -0.0112912, 0.0201154, 0.999677, 1, 1, 1, 1.13333, 1, 1.49012e-08, 0, 0, 0.0107321, -0.0097595, 0.0165327, 0.999758, 1, 1, 1, 1.16667, 1, 1.49012e-08, 0, -5.96046e-08, 0.0107526, -0.00859408, 0.0122958, 0.99983, 1, 1, 1, 1.2, 1, -7.45057e-09, 0, -2.98023e-08, 0.0107701, -0.00773332, 0.00755517, 0.999884, 1, 1, 1, 1.23333, 1, -7.45058e-09, 0, 0, 0.0108004, -0.00711211, 0.00248139, 0.999913, 1, 1, 1, 1.26667, 1, 1.11759e-08, -5.96046e-08, -1.46683e-08, 0.010867, -0.00664947, -0.00269801, 0.999915, 1, 1, 1, 1.3, 1, 0, 0, -3.72529e-09, 0.0110115, -0.00621866, -0.00760644, 0.999891, 1, 1, 1, 1.33333, 1, -1.86265e-09, 0, 0, 0.0113332, -0.00553805, -0.0113824, 0.999856, 1, 1, 1, 1.36667, 1, 3.7253e-09, 0, 0, 0.0290807, -0.00483196, -0.012836, 0.999483, 1, 1, 1, 1.4, 1, -7.45058e-09, -1.19209e-07, 3.95812e-09, 0.0260009, -0.00683704, -0.012139, 0.999565, 1, 1, 1, 1.43333, 1, 0, 0, 0, 0.0199181, -0.011348, -0.0107266, 0.99968, 1, 1, 1, 1.46667, 1, -1.86265e-09, 0, 0, 0.0126015, -0.0176205, -0.00897763, 0.999725, 1, 1, 1, 1.5, 1, 2.32831e-10, -1.19209e-07, 2.32831e-10, 0.00471886, -0.0255244, -0.0070262, 0.999638, 1, 1, 1, 1.53333, 1, 0, 1.19209e-07, 1.49012e-08, -0.00333236, -0.0351734, -0.00494099, 0.999363, 1, 1, 1, 1.56667, 1, 0, 0, 1.49012e-08, -0.0112168, -0.0469008, -0.00276618, 0.998833, 1, 1, 1, 1.6, 1, 1.49012e-08, 0, 0, -0.0185363, -0.0613846, -0.000537824, 0.997942, 1, 1, 1, 1.63333, 1, 1.49012e-08, 1.19209e-07, -2.98023e-08, -0.0246206, -0.0800898, 0.00170226, 0.996482, 1, 1, 1, 1.66667, 1, 1.49012e-08, 1.19209e-07, 0, -0.0276955, -0.107299, 0.00386707, 0.993833, 1, 1, 1, 1.7, 1, 0, -1.19209e-07, 2.32831e-10, 0.0114083, -0.166906, 0.00612591, 0.985888, 1, 1, 1, 1.73333, 1, -4.47035e-08, 0, 0, -0.0304707, -0.0870077, 0.0359405, 0.995093, 1, 1, 1, 1.76667, 1, -3.72529e-09, -1.19209e-07, -1.46683e-08, 0.0126952, -0.131958, 0.00431169, 0.991165, 1, 1, 1, 1.8, 1, 0, -1.19209e-07, 2.32831e-10, 0.0144195, -0.122233, 0.00467934, 0.992386, 1, 1, 1, 1.83333, 1, 3.7253e-09, -1.19209e-07, -1.46683e-08, 0.0155193, -0.100522, 0.0054972, 0.994799, 1, 1, 1, 1.86667, 1, 5.58794e-09, -1.19209e-07, 2.32831e-10, 0.0162249, -0.0732077, 0.00651998, 0.997163, 1, 1, 1, 1.9, 1, 3.72529e-09, -1.19209e-07, 2.32831e-10, 0.0166511, -0.0441762, 0.00759947, 0.998856, 1, 1, 1, 1.93333, 1, 3.7253e-09, 1.19209e-07, 0, 0.0168724, -0.0167702, 0.00861138, 0.99968, 1, 1, 1, 1.96667, 1, 1.86265e-09, 0, -1.49012e-08, 0.0169507, 0.00507552, 0.00941303, 0.999799, 1, 1, 1, 2, 1, 1.86265e-09, 0, -1.49012e-08, 0.0169561, 0.0148775, 0.00977129, 0.999698, 1, 1, 1, 2.03333, 1, 3.7253e-09, 0, 0, -0.0365109, -0.00486501, 0.00780233, 0.999291, 1, 1, 1, 2.06667, 1, 7.45059e-09, 0, 0, 0.0315943, 0.00992321, 0.0133901, 0.999362, 1, 1, 1, 2.1, 1, 7.10543e-15, 1.19209e-07, 0, -0.0294905, 0.00251975, 0.0110204, 0.999501, 1, 1, 1, 2.13333, 1, -1.86264e-09, 1.19209e-07, 0, -0.0272334, 0.00346346, 0.0098227, 0.999575, 1, 1, 1, 2.16667, 1, 1.86265e-09, -1.19209e-07, 2.32831e-10, -0.0222144, 0.00556307, 0.00926757, 0.999695, 1, 1, 1, 2.2, 1, 1.28057e-09, -2.38419e-07, 2.98023e-08, -0.0159265, 0.00819326, 0.00889503, 0.9998, 1, 1, 1, 2.23333, 1, -9.31323e-10, -1.19209e-07, 2.32831e-10, -0.00926139, 0.0109807, 0.00840488, 0.999862, 1, 1, 1, 2.26667, 1, 0, 1.19209e-07, 1.49012e-08, -0.00297233, 0.0136102, 0.00751194, 0.999875, 1, 1, 1, 2.3, 1, 3.7253e-09, 0, 0, 0.00204808, 0.015709, 0.00584029, 0.999857, 1, 1, 1, 2.33333, 1, 7.45059e-09, 0, 0, 0.00430482, 0.0166525, 0.00271633, 0.999848, 1, 1, 1, 2.36667, 1, 1.49012e-08, 0, 0, -0.0337548, -0.0377217, -0.0217551, 0.998481, 1, 1, 1, 2.4, 1, 0, 0, 0, 0.0318508, -0.0504093, 0.00120865, 0.99822, 1, 1, 1, 2.43333, 1, 1.49012e-08, 1.19209e-07, -2.98023e-08, -0.0308227, -0.0462971, -0.00804179, 0.99842, 1, 1, 1 ) +tracks/25/type = "transform" +tracks/25/path = NodePath("Armature/Skeleton:spine_1") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = true +tracks/25/enabled = true +tracks/25/keys = PoolRealArray( 0, 1, 0, 0, 4.65661e-10, 8.13152e-20, 9.31323e-10, 2.91038e-10, 1, 1, 1, 1, 0.0333333, 1, 0, 5.96046e-08, 2.32831e-10, 0.000189344, -0.00152856, -0.000372055, 0.999999, 1, 1, 1, 0.0666667, 1, -1.16415e-10, -5.96046e-08, 0, 0.000759297, -0.00612983, -0.00149201, 0.99998, 1, 1, 1, 0.1, 1, 4.65661e-10, 0, 0, 0.0016863, -0.0136136, -0.00331357, 0.999901, 1, 1, 1, 0.133333, 1, 4.65661e-10, 5.96046e-08, 2.32831e-10, 0.00289908, -0.0234042, -0.00569665, 0.999706, 1, 1, 1, 0.166667, 1, 0, 5.96046e-08, 2.32831e-10, 0.00427291, -0.0344952, -0.00839621, 0.999361, 1, 1, 1, 0.2, 1, -1.16415e-10, -5.96046e-08, -9.31323e-10, 0.00564618, -0.0455815, -0.0110947, 0.998883, 1, 1, 1, 0.233333, 1, -9.31323e-10, 0, 0, 0.00685751, -0.0553607, -0.0134749, 0.998352, 1, 1, 1, 0.266667, 1, -1.04774e-09, -5.96046e-08, -9.31323e-10, 0.00778283, -0.0628307, -0.0152932, 0.997877, 1, 1, 1, 0.3, 1, 9.31323e-10, 0, 9.31323e-10, 0.00835149, -0.0674215, -0.0164106, 0.997555, 1, 1, 1, 0.333333, 1, 9.31323e-10, 0, 0, 0.00854035, -0.0689463, -0.0167817, 0.997443, 1, 1, 1, 0.366667, 1, -9.31323e-10, 5.96046e-08, 2.32831e-10, 0.00850438, -0.0689242, -0.0165757, 0.997448, 1, 1, 1, 0.4, 1, 9.31323e-10, 0, 0, 0.00836751, -0.0688634, -0.0160026, 0.997463, 1, 1, 1, 0.433333, 1, -1.04774e-09, 1.19209e-07, 9.31323e-10, 0.00808327, -0.068771, -0.01512, 0.997485, 1, 1, 1, 0.466667, 1, 0, 5.96046e-08, 2.32831e-10, 0.00759741, -0.0686534, -0.0139765, 0.997514, 1, 1, 1, 0.5, 1, 9.31323e-10, 0, 0, 0.00684173, -0.0685164, -0.0126159, 0.997547, 1, 1, 1, 0.533333, 1, 9.31323e-10, 5.96046e-08, 2.32831e-10, 0.00572385, -0.0683663, -0.0110813, 0.997582, 1, 1, 1, 0.566667, 1, -1.04774e-09, -5.96046e-08, 0, 0.00410813, -0.0682106, -0.00941956, 0.997618, 1, 1, 1, 0.6, 1, -9.31323e-10, 0, 0, 0.00177417, -0.0680595, -0.00769182, 0.99765, 1, 1, 1, 0.633333, 1, 0, 5.96046e-08, 2.32831e-10, -0.00169204, -0.0679309, -0.00599679, 0.997671, 1, 1, 1, 0.666667, 1, 8.14907e-10, -5.96046e-08, 0, -0.00729614, -0.0678654, -0.00455785, 0.997657, 1, 1, 1, 0.7, 1, 0, 0, 0, -0.0205845, -0.0913443, -0.00349327, 0.9956, 1, 1, 1, 0.733333, 1, -3.72529e-09, 5.96046e-08, 2.32831e-10, -0.0202252, -0.0871302, -0.00483392, 0.99598, 1, 1, 1, 0.766667, 1, -7.45058e-09, 0, -1.49012e-08, -0.0194448, -0.0781208, -0.00764438, 0.996725, 1, 1, 1, 0.8, 1, -1.49012e-08, 5.96046e-08, 2.32831e-10, -0.0184697, -0.0670839, -0.0109988, 0.997516, 1, 1, 1, 0.833333, 1, -1.16415e-10, -2.98023e-08, 1.49012e-08, -0.0174094, -0.0553695, -0.0144419, 0.99821, 1, 1, 1, 0.866667, 1, 1.49012e-08, 5.96046e-08, 1.49012e-08, -0.0163316, -0.0438154, -0.0176883, 0.99875, 1, 1, 1, 0.9, 1, 7.45058e-09, 0, 2.32831e-10, -0.0152852, -0.0330356, -0.0205252, 0.999126, 1, 1, 1, 0.933333, 1, 0, 0, 0, -0.0143106, -0.0235436, -0.0227712, 0.999361, 1, 1, 1, 0.966667, 1, 3.72529e-09, 0, 0, -0.0134449, -0.0158177, -0.0242533, 0.99949, 1, 1, 1, 1, 1, 0, 0, 0, -0.012725, -0.0103474, -0.0247905, 0.999558, 1, 1, 1, 1.03333, 1, 0, 1.49012e-08, 2.32831e-10, -0.0121156, -0.0065379, -0.0241207, 0.999614, 1, 1, 1, 1.06667, 1, 0, 1.49012e-08, 2.32831e-10, -0.0115525, -0.00337899, -0.0222608, 0.99968, 1, 1, 1, 1.1, 1, 7.45058e-09, 1.49012e-08, -1.46683e-08, -0.0110329, -0.000787196, -0.0194021, 0.999751, 1, 1, 1, 1.13333, 1, -7.45058e-09, -2.98023e-08, 0, -0.010555, 0.00130352, -0.0157075, 0.99982, 1, 1, 1, 1.16667, 1, -7.567e-09, -5.96046e-08, 0, -0.0101188, 0.00294665, -0.011325, 0.99988, 1, 1, 1, 1.2, 1, 0, 0, 2.98023e-08, -0.00972604, 0.00418675, -0.00640173, 0.999923, 1, 1, 1, 1.23333, 1, -1.16415e-10, -5.96046e-08, 0, -0.0093809, 0.00506254, -0.00110204, 0.999943, 1, 1, 1, 1.26667, 1, 1.11759e-08, 0, 1.49012e-08, -0.00909202, 0.00561067, 0.00435763, 0.999933, 1, 1, 1, 1.3, 1, -1.16415e-10, -5.96046e-08, 0, -0.00887737, 0.00587334, 0.00962266, 0.999897, 1, 1, 1, 1.33333, 1, 3.49246e-10, -5.96046e-08, 0, -0.00878241, 0.0059254, 0.0138862, 0.999847, 1, 1, 1, 1.36667, 1, 0, 0, 3.72529e-09, -0.0436695, 0.00373941, 0.0163364, 0.998905, 1, 1, 1, 1.4, 1, -1.04774e-09, 5.96046e-08, 3.95812e-09, -0.0398019, -0.00546244, 0.0146603, 0.999085, 1, 1, 1, 1.43333, 1, -1.04774e-09, -5.96046e-08, 0, -0.0321355, -0.018085, 0.0113403, 0.999256, 1, 1, 1, 1.46667, 1, -9.31323e-10, 0, 7.45058e-09, -0.0228957, -0.0320012, 0.0073401, 0.999199, 1, 1, 1, 1.5, 1, 0, 0, 0, -0.0129297, -0.0463734, 0.00302642, 0.998836, 1, 1, 1, 1.53333, 1, -2.32831e-10, 0, -1.49012e-08, -0.00274727, -0.0606662, -0.00137998, 0.998153, 1, 1, 1, 1.56667, 1, -1.16415e-10, 1.19209e-07, 1.49012e-08, 0.00721968, -0.0743912, -0.00569229, 0.997187, 1, 1, 1, 1.6, 1, 5.47152e-09, 0, 3.00352e-08, 0.0164633, -0.0869335, -0.00969089, 0.996031, 1, 1, 1, 1.63333, 1, -1.16415e-10, 1.19209e-07, 0, 0.0241403, -0.0972256, -0.0130113, 0.994884, 1, 1, 1, 1.66667, 1, -3.84171e-09, 1.19209e-07, 0, 0.0280317, -0.102393, -0.0146942, 0.99424, 1, 1, 1, 1.7, 1, -3.72529e-09, 5.96046e-08, 2.32831e-10, 0.00676132, -0.0520511, -0.0116567, 0.998554, 1, 1, 1, 1.73333, 1, 7.45058e-09, 0, 2.32831e-10, 0.0484445, -0.123126, -0.044421, 0.990212, 1, 1, 1, 1.76667, 1, -1.04774e-09, -5.96046e-08, 0, 0.00935289, -0.0379975, -0.0101618, 0.999182, 1, 1, 1, 1.8, 1, 9.31323e-10, 0, -1.49012e-08, 0.00889887, -0.01942, -0.0101664, 0.99972, 1, 1, 1, 1.83333, 1, -9.31323e-10, 0, -1.49012e-08, 0.00861094, -0.00769996, -0.0101776, 0.999882, 1, 1, 1, 1.86667, 1, -1.16415e-10, 5.96046e-08, -1.46683e-08, 0.00842612, -0.000201769, -0.010204, 0.999912, 1, 1, 1, 1.9, 1, -1.16415e-10, -5.96046e-08, -1.49012e-08, 0.00831234, 0.00440486, -0.0102527, 0.999903, 1, 1, 1, 1.93333, 1, -1.16415e-10, -5.96046e-08, -1.49012e-08, 0.00824974, 0.00693607, -0.0103327, 0.999889, 1, 1, 1, 1.96667, 1, 0, 0, 1.49012e-08, 0.00822354, 0.00799476, -0.0104584, 0.99988, 1, 1, 1, 2, 1, 0, 0, 0, 0.00821903, 0.00817585, -0.0106581, 0.999876, 1, 1, 1, 2.03333, 1, -2.32831e-10, 0, 0, 0.0600175, -0.0428344, -0.0129148, 0.997194, 1, 1, 1, 2.06667, 1, -1.86265e-09, 5.96046e-08, 1.5134e-08, -0.0113724, 0.00184424, -0.0311179, 0.999449, 1, 1, 1, 2.1, 1, -1.39698e-09, -1.19209e-07, 2.32831e-10, 0.0458702, -0.00913119, -0.0188052, 0.998729, 1, 1, 1, 2.13333, 1, 9.31323e-10, 0, 0, 0.0436354, -0.00198872, -0.0138087, 0.99895, 1, 1, 1, 2.16667, 1, -2.32831e-10, -2.38419e-07, 0, 0.0386066, 0.0139284, -0.0118296, 0.999087, 1, 1, 1, 2.2, 1, -2.32831e-10, -5.96046e-08, 0, 0.0322764, 0.0338821, -0.0111281, 0.998843, 1, 1, 1, 2.23333, 1, 2.32831e-10, 5.96046e-08, 1.5134e-08, 0.0255475, 0.0550157, -0.010641, 0.998102, 1, 1, 1, 2.26667, 1, 1.39698e-09, 0, 0, 0.0191908, 0.0749136, -0.00944248, 0.996961, 1, 1, 1, 2.3, 1, 0, 0, 0, 0.0141173, 0.0907512, -0.00640396, 0.995753, 1, 1, 1, 2.33333, 1, 3.60887e-09, 5.96046e-08, -1.49012e-08, 0.0118382, 0.0978536, 0.000407378, 0.99513, 1, 1, 1, 2.36667, 1, 1.49012e-08, 1.19209e-07, 0, 0.055521, -0.0607931, 0.028205, 0.996206, 1, 1, 1, 2.4, 1, 0, 0, -1.49012e-08, -0.00936071, 0.0760679, -0.00554442, 0.997043, 1, 1, 1, 2.43333, 1, -1.16415e-10, 1.19209e-07, -2.98023e-08, 0.0478814, -0.00758064, 0.00533774, 0.99881, 1, 1, 1 ) +tracks/26/type = "transform" +tracks/26/path = NodePath("Armature/Skeleton:spine") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = true +tracks/26/enabled = true +tracks/26/keys = PoolRealArray( 0, 1, 0, 5.96046e-08, 0, 0, 0, 8.73115e-11, 1, 1, 1, 1, 0.0333333, 1, 4.65661e-10, 5.96046e-08, 0, 3.78524e-05, -0.00162218, 0.000187505, 0.999999, 1, 1, 1, 0.0666667, 1, 0, 5.96046e-08, 0, 0.000156093, -0.00650531, 0.000751937, 0.999979, 1, 1, 1, 0.1, 1, 4.65661e-10, 0, 0, 0.00035845, -0.0144476, 0.00166998, 0.999894, 1, 1, 1, 0.133333, 1, 0, -5.96046e-08, 0, 0.000641463, -0.0248385, 0.00287103, 0.999687, 1, 1, 1, 0.166667, 1, 4.65661e-10, 0, 0, 0.000991764, -0.0366093, 0.0042316, 0.99932, 1, 1, 1, 0.2, 1, 9.02219e-10, 5.96046e-08, 0, 0.00138666, -0.0483749, 0.00559157, 0.998813, 1, 1, 1, 0.233333, 1, 9.31323e-10, 0, 0, 0.00179899, -0.0587526, 0.00679111, 0.998248, 1, 1, 1, 0.266667, 1, 4.65661e-10, 0, 9.31323e-10, 0.00220377, -0.0666795, 0.00770737, 0.997742, 1, 1, 1, 0.3, 1, 4.65661e-10, -5.96046e-08, 0, 0.0025827, -0.0715508, 0.00827043, 0.997399, 1, 1, 1, 0.333333, 1, 4.65661e-10, 0, 0, 0.002925, -0.0731686, 0.00845743, 0.997279, 1, 1, 1, 0.366667, 1, 4.65661e-10, 0, 0, 0.00326553, -0.0726011, 0.00831576, 0.997321, 1, 1, 1, 0.4, 1, 4.65661e-10, 0, 0, 0.00363698, -0.0710377, 0.00792553, 0.997436, 1, 1, 1, 0.433333, 1, 4.65661e-10, 0, 0, 0.00403084, -0.0686614, 0.00733243, 0.997605, 1, 1, 1, 0.466667, 1, 4.65661e-10, 0, 0, 0.004439, -0.0656334, 0.00657675, 0.997812, 1, 1, 1, 0.5, 1, 4.65661e-10, 0, 0, 0.00485305, -0.0621072, 0.00569686, 0.998041, 1, 1, 1, 0.533333, 1, 4.65661e-10, 0, 0, 0.00526323, -0.0582443, 0.00473311, 0.998277, 1, 1, 1, 0.566667, 1, 4.65661e-10, 0, 0, 0.00565681, -0.0542375, 0.00373362, 0.998505, 1, 1, 1, 0.6, 1, 4.65661e-10, 0, 0, 0.00601473, -0.0503561, 0.00276554, 0.998709, 1, 1, 1, 0.633333, 1, 4.65661e-10, 0, 0, 0.00630283, -0.0470607, 0.00194378, 0.99887, 1, 1, 1, 0.666667, 1, 4.65661e-10, 0, 0, 0.00643981, -0.0454242, 0.00153573, 0.998946, 1, 1, 1, 0.7, 1, 9.31323e-10, 1.19209e-07, 4.65661e-10, 0.00055185, -0.0922162, 0.0123842, 0.995662, 1, 1, 1, 0.733333, 1, 0, 0, 0, 0.00208347, -0.0868719, 0.011329, 0.996153, 1, 1, 1, 0.766667, 1, 7.45058e-09, -5.96046e-08, 0, 0.00529523, -0.0756272, 0.00911504, 0.99708, 1, 1, 1, 0.8, 1, 1.48721e-08, 2.98023e-08, 0, 0.00912956, -0.0621402, 0.0064695, 0.998005, 1, 1, 1, 0.833333, 1, -1.49012e-08, 0, 0, 0.0130656, -0.0482139, 0.00375102, 0.998745, 1, 1, 1, 0.866667, 1, 2.23517e-08, 0, 0, 0.0167761, -0.0349851, 0.0011858, 0.999246, 1, 1, 1, 0.9, 1, 7.45058e-09, 0, 1.49012e-08, 0.0200173, -0.0233029, -0.00105722, 0.999527, 1, 1, 1, 0.933333, 1, -2.91038e-11, -7.45058e-09, -1.49012e-08, 0.0225824, -0.0138905, -0.00283381, 0.999644, 1, 1, 1, 0.966667, 1, 3.75439e-09, -3.72529e-09, 7.45058e-09, 0.0242744, -0.00743559, -0.00400662, 0.99967, 1, 1, 1, 1, 1, 3.72529e-09, 0, 7.45058e-09, 0.0248872, -0.004655, -0.004432, 0.99967, 1, 1, 1, 1.03333, 1, -3.72529e-09, 0, 0, 0.0245339, -0.00408199, -0.00409248, 0.999682, 1, 1, 1, 1.06667, 1, -7.45058e-09, 0, 1.49012e-08, 0.0235631, -0.00370224, -0.00315773, 0.999711, 1, 1, 1, 1.1, 1, 7.45058e-09, 0, 1.49012e-08, 0.0220884, -0.00347406, -0.00173731, 0.999748, 1, 1, 1, 1.13333, 1, -1.49012e-08, -1.49012e-08, 2.98605e-08, 0.02021, -0.00335963, 7.22409e-05, 0.99979, 1, 1, 1, 1.16667, 1, 1.49012e-08, 0, -2.98023e-08, 0.018023, -0.00332139, 0.002179, 0.99983, 1, 1, 1, 1.2, 1, 7.45058e-09, 0, 0, 0.0156277, -0.00331792, 0.00448638, 0.999862, 1, 1, 1, 1.23333, 1, -7.42148e-09, -5.96046e-08, 0, 0.0131436, -0.00329761, 0.00687918, 0.999885, 1, 1, 1, 1.26667, 1, 0, 0, 0, 0.0107375, -0.00318557, 0.00919671, 0.999895, 1, 1, 1, 1.3, 1, 0, 5.96046e-08, 3.72529e-09, 0.00869502, -0.00285018, 0.011164, 0.999896, 1, 1, 1, 1.33333, 1, -1.86265e-09, 0, 0, 0.00768075, -0.00198124, 0.0121408, 0.999895, 1, 1, 1, 1.36667, 1, 9.31323e-10, 5.96046e-08, 9.31323e-10, 0.0212307, 0.000812157, 0.00775038, 0.999744, 1, 1, 1, 1.4, 1, 4.65661e-10, 0, 0, 0.0290819, -0.00267033, 0.00434482, 0.999564, 1, 1, 1, 1.43333, 1, 2.32831e-10, -5.96046e-08, 0, 0.0355725, -0.00969657, 0.00107701, 0.999319, 1, 1, 1, 1.46667, 1, 0, -5.96046e-08, 0, 0.0413171, -0.018392, -0.00206374, 0.998975, 1, 1, 1, 1.5, 1, 9.02219e-10, 5.96046e-08, 0, 0.0465063, -0.0280914, -0.00506559, 0.99851, 1, 1, 1, 1.53333, 1, 0, 0, 0, 0.0512026, -0.0384531, -0.00790179, 0.997916, 1, 1, 1, 1.56667, 1, -1.83354e-09, -5.96046e-08, 0, 0.0553973, -0.0492566, -0.010526, 0.997193, 1, 1, 1, 1.6, 1, 0, 0, 0, 0.059008, -0.0603221, -0.0128553, 0.99635, 1, 1, 1, 1.63333, 1, 0, 0, 0, 0.0618149, -0.0714438, -0.0147196, 0.995419, 1, 1, 1, 1.66667, 1, 9.31323e-10, 0, 1.49012e-08, 0.0631369, -0.0822022, -0.0156302, 0.994491, 1, 1, 1, 1.7, 1, 0, 5.96046e-08, 0, -0.00204959, -0.0935677, 0.00223826, 0.995608, 1, 1, 1, 1.73333, 1, 9.31323e-10, 0, 1.49012e-08, 0.0476149, -0.138969, -0.0124057, 0.989074, 1, 1, 1, 1.76667, 1, 0, -5.96046e-08, 0, -0.000937213, -0.0627619, 0.00326646, 0.998023, 1, 1, 1, 1.8, 1, 0, -5.96046e-08, 0, -0.000938323, -0.0567439, 0.00326622, 0.998383, 1, 1, 1, 1.83333, 1, 0, -5.96046e-08, 0, -0.000938913, -0.0544673, 0.0032649, 0.99851, 1, 1, 1, 1.86667, 1, 0, -5.96046e-08, 0, -0.000939251, -0.0539096, 0.00326224, 0.99854, 1, 1, 1, 1.9, 1, 0, -5.96046e-08, 0, -0.000939434, -0.0538636, 0.00325783, 0.998543, 1, 1, 1, 1.93333, 1, 0, -5.96046e-08, 0, -0.00093957, -0.0533116, 0.00325108, 0.998572, 1, 1, 1, 1.96667, 1, 0, -5.96046e-08, 0, -0.000939728, -0.051047, 0.00324096, 0.998691, 1, 1, 1, 2, 1, 0, -5.96046e-08, 0, -0.000940004, -0.045045, 0.00322534, 0.998979, 1, 1, 1, 2.03333, 1, 9.31323e-10, 0, 1.49012e-08, 0.0478837, -0.0115256, -0.0111029, 0.998725, 1, 1, 1, 2.06667, 1, 0, 5.96046e-08, 0, 0.00173526, -0.0305229, 0.016259, 0.9994, 1, 1, 1, 2.1, 1, 9.31323e-10, 0, 1.49012e-08, 0.055663, -0.018322, -0.00966899, 0.998235, 1, 1, 1, 2.13333, 1, -1.86265e-09, -5.96046e-08, 1.49012e-08, 0.0519265, -0.00864976, -0.00947571, 0.998569, 1, 1, 1, 2.16667, 1, 9.31323e-10, 0, 1.49012e-08, 0.0435382, -0.00318215, -0.00888946, 0.999007, 1, 1, 1, 2.2, 1, 4.94765e-10, -5.96046e-08, -1.49012e-08, 0.0330051, 0.00231551, -0.00788697, 0.999421, 1, 1, 1, 2.23333, 1, 2.32831e-10, 0, 0, 0.0218259, 0.0108292, -0.00639966, 0.999683, 1, 1, 1, 2.26667, 1, 0, 0, 0, 0.0112677, 0.0254416, -0.00430221, 0.999604, 1, 1, 1, 2.3, 1, -2.91038e-11, 5.96046e-08, 1.49012e-08, 0.00283516, 0.0504532, -0.00136709, 0.998721, 1, 1, 1, 2.33333, 1, 0, -5.96046e-08, 0, -0.000951543, 0.0936954, 0.00286938, 0.995596, 1, 1, 1, 2.36667, 1, 9.31323e-10, 0, 1.49012e-08, 0.0480892, 0.342867, 0.0114444, 0.938082, 1, 1, 1, 2.4, 1, 0, 5.96046e-08, 0, 0.000993211, 0.218984, 0.00439604, 0.975718, 1, 1, 1, 2.43333, 1, 9.31323e-10, 0, 1.49012e-08, 0.0544154, 0.276053, 0.0152553, 0.95948, 1, 1, 1 ) +tracks/27/type = "transform" +tracks/27/path = NodePath("Armature/Skeleton:pelvis") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = true +tracks/27/enabled = true +tracks/27/keys = PoolRealArray( 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.0333333, 1, 0, -0.00170439, 0, 0, -0.00507696, 0, 0.999987, 1, 1, 1, 0.0666667, 1, 0, -0.00683385, 1.45519e-11, 2.83922e-14, -0.0203887, 1.46736e-15, 0.999792, 1, 1, 1, 0.1, 1, 0, -0.0151742, 0, -1.61004e-16, -0.0453653, 1.77088e-15, 0.99897, 1, 1, 1, 0.133333, 1, 0, -0.0260828, 0, -2.7583e-16, -0.078116, -2.16127e-17, 0.996944, 1, 1, 1, 0.166667, 1, 0, -0.0384405, 0, 0, -0.115206, 0, 0.993342, 1, 1, 1, 0.2, 1, 0, -0.0507983, 0, -2.67905e-14, -0.152137, -4.12383e-15, 0.98836, 1, 1, 1, 0.233333, 1, 0, -0.061707, 0, 2.73433e-14, -0.184482, -2.09707e-15, 0.982836, 1, 1, 1, 0.266667, 1, 0, -0.0700472, 0, -1.42007e-15, -0.208984, -3.03471e-16, 0.977919, 1, 1, 1, 0.3, 1, 0, -0.0751767, 0, 1.51135e-15, -0.223934, 3.47262e-16, 0.974604, 1, 1, 1, 0.333333, 1, 0, -0.0768811, -3.62779e-08, -1.09488e-14, -0.228879, -1.07998e-07, 0.973455, 1, 1, 1, 0.366667, 1, 0, -0.0768811, -3.62779e-08, -1.09488e-14, -0.228879, -1.07998e-07, 0.973455, 1, 1, 1, 0.4, 1, 0, -0.0768811, -3.62779e-08, -1.09488e-14, -0.228879, -1.07998e-07, 0.973455, 1, 1, 1, 0.433333, 1, 0, -0.0768811, -3.62779e-08, -1.09488e-14, -0.228879, -1.07998e-07, 0.973455, 1, 1, 1, 0.466667, 1, 0, -0.0768811, -3.62779e-08, -1.09488e-14, -0.228879, -1.07998e-07, 0.973455, 1, 1, 1, 0.5, 1, 0, -0.0768811, -3.62779e-08, -1.09488e-14, -0.228879, -1.07998e-07, 0.973455, 1, 1, 1, 0.533333, 1, 0, -0.0768811, -3.62779e-08, -1.09488e-14, -0.228879, -1.07998e-07, 0.973455, 1, 1, 1, 0.566667, 1, 0, -0.0768811, -3.62779e-08, -1.09488e-14, -0.228879, -1.07998e-07, 0.973455, 1, 1, 1, 0.6, 1, 0, -0.0768811, -3.62779e-08, -1.09488e-14, -0.228879, -1.07998e-07, 0.973455, 1, 1, 1, 0.633333, 1, 0, -0.0768811, -3.62779e-08, -1.09488e-14, -0.228879, -1.07998e-07, 0.973455, 1, 1, 1, 0.666667, 1, 0, -0.0768811, -3.62779e-08, -1.09488e-14, -0.228879, -1.07998e-07, 0.973455, 1, 1, 1, 0.7, 1, 0, -0.0967953, -4.56785e-08, 0.0149843, -0.245796, -0.00380024, 0.969198, 1, 1, 1, 0.733333, 1, 0, -0.160086, -7.5539e-08, 0.0838992, -0.247815, -0.0198283, 0.964964, 1, 1, 1, 0.766667, 1, 0, -0.244978, -1.15586e-07, 0.187963, -0.246833, -0.043063, 0.949678, 1, 1, 1, 0.8, 1, 0, -0.335404, -1.58267e-07, 0.304127, -0.240934, -0.0686614, 0.919099, 1, 1, 1, 0.833333, 1, 0, -0.423367, -1.99769e-07, 0.416391, -0.229929, -0.0932176, 0.874678, 1, 1, 1, 0.866667, 1, 0, -0.503728, -2.37691e-07, 0.513622, -0.215095, -0.11437, 0.822707, 1, 1, 1, 0.9, 1, 0, -0.572513, -2.70142e-07, 0.590179, -0.198394, -0.13095, 0.77148, 1, 1, 1, 0.933333, 1, 0, -0.626185, -2.95462e-07, 0.644786, -0.181651, -0.142731, 0.728616, 1, 1, 1, 0.966667, 1, 0, -0.661226, -3.12008e-07, 0.678132, -0.166139, -0.149904, 0.700045, 1, 1, 1, 1, 1, 0, -0.673836, -3.17945e-07, 0.690455, -0.152554, -0.152554, 0.690454, 1, 1, 1, 1.03333, 1, 0, -0.660161, -3.11498e-07, 0.681544, -0.139821, -0.151367, 0.702165, 1, 1, 1, 1.06667, 1, 0, -0.622493, -2.9373e-07, 0.653186, -0.126315, -0.147245, 0.731923, 1, 1, 1, 1.1, 1, 0, -0.56525, -2.66708e-07, 0.605404, -0.111515, -0.139933, 0.775545, 1, 1, 1, 1.13333, 1, 0, -0.492326, -2.32307e-07, 0.537514, -0.0950178, -0.128992, 0.827896, 1, 1, 1, 1.16667, 1, 0, -0.407427, -1.92245e-07, 0.450034, -0.0767678, -0.114127, 0.882356, 1, 1, 1, 1.2, 1, 0, -0.314446, -1.48371e-07, 0.346662, -0.0572975, -0.0955663, 0.931348, 1, 1, 1, 1.23333, 1, 0, -0.218024, -1.02867e-07, 0.235477, -0.0378245, -0.0743516, 0.968293, 1, 1, 1, 1.26667, 1, 0, -0.124635, -5.88043e-08, 0.128559, -0.0201097, -0.0522963, 0.990118, 1, 1, 1, 1.3, 1, 0, -0.0453586, -2.14059e-08, 0.0414107, -0.00631425, -0.0317035, 0.998619, 1, 1, 1, 1.33333, 1, 0, -0.005992, -2.82307e-09, 6.27992e-13, 7.46674e-09, -0.0157419, 0.999876, 1, 1, 1, 1.36667, 1, 0.0077123, -0.0126027, -5.95173e-09, 8.68397e-13, 2.85129e-09, -0.00601125, 0.999982, 1, 1, 1, 1.4, 1, 0.00729252, -0.00613111, -0.000668587, 0.00434792, -0.000178539, -0.00137946, 0.99999, 1, 1, 1, 1.43333, 1, 0.00646577, 0.00661463, -0.00198535, 0.0131397, -0.000530331, 0.00192226, 0.999912, 1, 1, 1, 1.46667, 1, 0.00547222, 0.0219319, -0.00356778, 0.0240497, -0.000953301, 0.0045577, 0.9997, 1, 1, 1, 1.5, 1, 0.00440237, 0.0384253, -0.00527173, 0.0362589, -0.00140886, 0.00675091, 0.999319, 1, 1, 1, 1.53333, 1, 0.00330993, 0.0552672, -0.00701169, 0.0493548, -0.00187397, 0.00860238, 0.998743, 1, 1, 1, 1.56667, 1, 0.00224008, 0.0717606, -0.00871565, 0.0630828, -0.00232918, 0.0101569, 0.997954, 1, 1, 1, 1.6, 1, 0.00124653, 0.0870779, -0.0102981, 0.0772551, -0.00275143, 0.011421, 0.996942, 1, 1, 1, 1.63333, 1, 0.000419779, 0.0998237, -0.011615, 0.0916905, -0.00310214, 0.0123527, 0.995706, 1, 1, 1, 1.66667, 1, 0, 0.106295, -0.0122837, 0.106086, -0.00327946, 0.0127754, 0.994269, 1, 1, 1, 1.7, 1, 0, -0.0658345, -0.0122838, 0.122639, 0, 0, 0.992451, 1, 1, 1, 1.73333, 1, 0, 0.106295, -0.0122837, 0.106086, -0.00327946, 0.0127754, 0.994269, 1, 1, 1, 1.76667, 1, 0, -0.0658345, -0.0122838, 0.118299, 0, 0, 0.992978, 1, 1, 1, 1.8, 1, 0, -0.0658345, -0.0122838, 0.118299, 0, 0, 0.992978, 1, 1, 1, 1.83333, 1, 0, -0.0658345, -0.0122838, 0.118299, 0, 0, 0.992978, 1, 1, 1, 1.86667, 1, 0, -0.0658345, -0.0122838, 0.118299, 0, 0, 0.992978, 1, 1, 1, 1.9, 1, 0, -0.0658345, -0.0122838, 0.118299, 0, 0, 0.992978, 1, 1, 1, 1.93333, 1, 0, -0.0658345, -0.0122838, 0.118299, 0, 0, 0.992978, 1, 1, 1, 1.96667, 1, 0, -0.0658345, -0.0122838, 0.118299, 0, 0, 0.992978, 1, 1, 1, 2, 1, 0, -0.0658345, -0.0122838, 0.118299, 0, 0, 0.992978, 1, 1, 1, 2.03333, 1, 0, 0.106295, -0.0122837, 0.106086, -0.00327946, 0.0127754, 0.994269, 1, 1, 1, 2.06667, 1, 0, -0.0658345, -0.0122838, 0.122639, 0, 0, 0.992451, 1, 1, 1, 2.1, 1, 0, 0.106295, -0.0122837, 0.106086, -0.00327946, 0.0127754, 0.994269, 1, 1, 1, 2.13333, 1, 0, 0.0948008, -0.0122837, 0.106903, -0.0030605, 0.0119224, 0.994193, 1, 1, 1, 2.16667, 1, 0, 0.0692316, -0.0122837, 0.108719, -0.00257339, 0.0100249, 0.994019, 1, 1, 1, 2.2, 1, 0, 0.0372029, -0.0122837, 0.110993, -0.00196317, 0.00764772, 0.99379, 1, 1, 1, 2.23333, 1, 0, 0.00325787, -0.0122837, 0.113401, -0.00131642, 0.00512822, 0.993535, 1, 1, 1, 2.26667, 1, 0, -0.0287709, -0.0122837, 0.115673, -0.000706165, 0.00275093, 0.993283, 1, 1, 1, 2.3, 1, 0, -0.0543401, -0.0122837, 0.117485, -0.000218997, 0.000853123, 0.993074, 1, 1, 1, 2.33333, 1, 0, -0.0658345, -0.0122838, 0.118299, 0, 0, 0.992978, 1, 1, 1, 2.36667, 1, 0, 0.106295, -0.0122837, 0.106086, -0.00327946, 0.0127754, 0.994269, 1, 1, 1, 2.4, 1, 0, -0.0658345, -0.0122838, 0.122639, 0, 0, 0.992451, 1, 1, 1, 2.43333, 1, 0, 0.106295, -0.0122837, 0.106086, -0.00327946, 0.0127754, 0.994269, 1, 1, 1 ) +tracks/28/type = "transform" +tracks/28/path = NodePath("Armature/Skeleton:root") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = true +tracks/28/enabled = true +tracks/28/keys = PoolRealArray( 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.0333333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.0666667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.133333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.166667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.2, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.233333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.266667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.3, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.333333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.366667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.4, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.433333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.466667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.5, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.533333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.566667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.6, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.633333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.666667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.7, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.733333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.766667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.8, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.833333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.866667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.9, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.933333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.966667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.03333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.06667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.13333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.16667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.2, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.23333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.26667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.3, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.33333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.36667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.4, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.43333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.46667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.5, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.53333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.56667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.6, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.63333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.66667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.7, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.73333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.76667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.8, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.83333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.86667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.9, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.93333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.96667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2.03333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2.06667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2.1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2.13333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2.16667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2.2, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2.23333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2.26667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2.3, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2.33333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2.36667, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2.4, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2.43333, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 ) diff --git a/game/modules/species/Human/models/armature.blend b/game/modules/species/Human/models/armature.blend new file mode 100644 index 0000000..3343e73 Binary files /dev/null and b/game/modules/species/Human/models/armature.blend differ diff --git a/game/modules/species/Human/models/armature.gd b/game/modules/species/Human/models/armature.gd new file mode 100644 index 0000000..d8d9a2e --- /dev/null +++ b/game/modules/species/Human/models/armature.gd @@ -0,0 +1,16 @@ +extends Spatial + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass diff --git a/game/modules/species/Human/models/armature.gltf b/game/modules/species/Human/models/armature.gltf new file mode 100644 index 0000000..e2289d1 --- /dev/null +++ b/game/modules/species/Human/models/armature.gltf @@ -0,0 +1,2859 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.2.75", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 30, + 31, + 32 + ] + } + ], + "nodes" : [ + { + "name" : "left_foot", + "rotation" : [ + -0.6325768232345581, + 0.005047361832112074, + 0.030593937262892723, + 0.7738766670227051 + ], + "scale" : [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "translation" : [ + -3.3178366720676422e-09, + 0.4089012145996094, + -2.3283064365386963e-10 + ] + }, + { + "children" : [ + 0 + ], + "name" : "left_calf", + "rotation" : [ + 0.0154725918546319, + -0.005551020614802837, + 0.006456935778260231, + 0.9998440742492676 + ], + "scale" : [ + 0.9999935626983643, + 1.0000076293945312, + 0.9999988675117493 + ], + "translation" : [ + 1.0317307896912098e-08, + 0.34014278650283813, + 9.313225746154785e-10 + ] + }, + { + "children" : [ + 1 + ], + "name" : "left_thigh", + "rotation" : [ + 0.9992390275001526, + 0.032366346567869186, + 0.02055218815803528, + -0.007170111406594515 + ], + "scale" : [ + 0.9999374151229858, + 0.9999986886978149, + 1.0000029802322388 + ], + "translation" : [ + 0.07293429970741272, + 0.019202888011932373, + -0.0007760133594274521 + ] + }, + { + "name" : "right_foot", + "rotation" : [ + -0.6319014430046082, + 0.05138348788022995, + 0.0007669969345442951, + 0.7733432650566101 + ], + "scale" : [ + 0.9999998807907104, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation" : [ + 1.2048985809087753e-08, + 0.4091012179851532, + 1.280568540096283e-09 + ] + }, + { + "children" : [ + 3 + ], + "name" : "right_calf", + "rotation" : [ + 0.01593266800045967, + 0.005290985573083162, + -0.006394864059984684, + 0.999838650226593 + ], + "scale" : [ + 0.9999985694885254, + 1.0000101327896118, + 0.9999995827674866 + ], + "translation" : [ + -8.105416782200336e-09, + 0.3399500250816345, + 2.3283064365386963e-10 + ] + }, + { + "children" : [ + 4 + ], + "name" : "right_thigh", + "rotation" : [ + 0.9993523955345154, + -0.0325297974050045, + -0.013831354677677155, + -0.006733276881277561 + ], + "scale" : [ + 0.9999515414237976, + 1.0000003576278687, + 0.999998152256012 + ], + "translation" : [ + -0.07292351871728897, + 0.01920086145401001, + -0.000789024808909744 + ] + }, + { + "name" : "right_thumb_head", + "rotation" : [ + -0.0011481723049655557, + 0.00754165044054389, + -0.2542818486690521, + 0.9671000838279724 + ], + "scale" : [ + 1, + 0.9999998807907104, + 1.0000001192092896 + ], + "translation" : [ + -1.1175870895385742e-08, + 0.034532707184553146, + 1.0477378964424133e-08 + ] + }, + { + "children" : [ + 6 + ], + "name" : "right_thumb_base", + "rotation" : [ + -0.07189058512449265, + 0.16178470849990845, + 0.25851282477378845, + 0.9496465921401978 + ], + "scale" : [ + 0.9999998807907104, + 1, + 0.9999998807907104 + ], + "translation" : [ + -0.04928585886955261, + 0.07636824250221252, + -0.003234900999814272 + ] + }, + { + "name" : "right_fingers_head", + "rotation" : [ + -0.009700209833681583, + 0.009682881645858288, + -0.004576227627694607, + 0.9998956322669983 + ], + "scale" : [ + 0.9999997615814209, + 0.9999998211860657, + 0.9999998211860657 + ], + "translation" : [ + -2.3283064365386963e-10, + 0.03974893316626549, + -2.1509913494810462e-07 + ] + }, + { + "children" : [ + 8 + ], + "name" : "right_fingers_base", + "rotation" : [ + -0.04790141060948372, + 0.04852546006441116, + 0.014011693187057972, + 0.9975742697715759 + ], + "scale" : [ + 0.9999997615814209, + 0.9999998211860657, + 0.9999999403953552 + ], + "translation" : [ + -4.6566128730773926e-09, + 0.10926947742700577, + 1.6746344044804573e-07 + ] + }, + { + "children" : [ + 7, + 9 + ], + "name" : "right_hand", + "rotation" : [ + 0.07300256192684174, + -0.07169535756111145, + -0.0017106152372434735, + 0.9947499632835388 + ], + "scale" : [ + 0.9999998807907104, + 0.9999997019767761, + 1 + ], + "translation" : [ + 6.984919309616089e-09, + 0.2407606542110443, + -8.690403774380684e-08 + ] + }, + { + "children" : [ + 10 + ], + "name" : "right_forearm", + "rotation" : [ + -0.005463166628032923, + -0.006203793454915285, + -0.03135939687490463, + 0.9994739890098572 + ], + "scale" : [ + 1.0000003576278687, + 1.0000001192092896, + 1.0000001192092896 + ], + "translation" : [ + 1.128682924900204e-09, + 0.25148099660873413, + 1.2479893030103995e-07 + ] + }, + { + "children" : [ + 11 + ], + "name" : "right_upper_arm", + "rotation" : [ + 0.04070461541414261, + -0.0044367341324687, + 0.024159114807844162, + 0.9988693594932556 + ], + "scale" : [ + 1.0000003576278687, + 1, + 1 + ], + "translation" : [ + 1.0477378964424133e-09, + 0.08453316241502762, + -3.1548552215099335e-08 + ] + }, + { + "children" : [ + 12 + ], + "name" : "right_clavicle", + "rotation" : [ + -0.5471820831298828, + 0.4852135181427002, + 0.5096585750579834, + 0.4532194137573242 + ], + "scale" : [ + 0.9999999403953552, + 1.0000001192092896, + 0.9999999403953552 + ], + "translation" : [ + -0.05976814776659012, + 0.14218629896640778, + -0.006619476247578859 + ] + }, + { + "name" : "left_fingers_end", + "rotation" : [ + 0.0004854204598814249, + 0.00048219706513918936, + -0.009575429372489452, + 0.9999539256095886 + ], + "scale" : [ + 0.9999999403953552, + 1, + 0.9999999403953552 + ], + "translation" : [ + -4.656612873077393e-10, + 0.039714913815259933, + -1.483585947426036e-07 + ] + }, + { + "children" : [ + 14 + ], + "name" : "left_fingers_base", + "rotation" : [ + -0.0040360745042562485, + 0.9953858852386475, + 0.06811649352312088, + 0.06746023148298264 + ], + "scale" : [ + 0.9999998211860657, + 0.9999997019767761, + 0.9999998211860657 + ], + "translation" : [ + -1.0710209608078003e-08, + 0.10928399115800858, + -6.752088665962219e-09 + ] + }, + { + "name" : "left_thumb_end", + "rotation" : [ + 0.0013020369224250317, + 0.002098255790770054, + 0.24522100389003754, + 0.9694640636444092 + ], + "scale" : [ + 1, + 1, + 1.0000001192092896 + ], + "translation" : [ + 1.210719347000122e-08, + 0.03465389087796211, + -3.1272065825760365e-08 + ] + }, + { + "children" : [ + 16 + ], + "name" : "left_thunb_base", + "rotation" : [ + -0.2526611387729645, + 0.9627922177314758, + 0.0491422563791275, + 0.08233138173818588 + ], + "scale" : [ + 0.9999999403953552, + 1.000000238418579, + 0.9999999403953552 + ], + "translation" : [ + -0.04971032589673996, + 0.07605913281440735, + 0.002089499495923519 + ] + }, + { + "children" : [ + 15, + 17 + ], + "name" : "left_hand", + "rotation" : [ + -0.0002417113137198612, + -0.9932965636253357, + -0.08247632533311844, + 0.08099108934402466 + ], + "scale" : [ + 1, + 0.9999997019767761, + 1.0000001192092896 + ], + "translation" : [ + -4.6566128730773926e-09, + 0.2406705617904663, + -7.404014468193054e-08 + ] + }, + { + "children" : [ + 18 + ], + "name" : "left_forearm", + "rotation" : [ + 0.014351874589920044, + 0.00514024356380105, + 0.03205345198512077, + 0.9993699193000793 + ], + "scale" : [ + 0.9999993443489075, + 1.0000001192092896, + 1.0000001192092896 + ], + "translation" : [ + 3.259629011154175e-09, + 0.25209471583366394, + -3.8151483749970794e-08 + ] + }, + { + "children" : [ + 19 + ], + "name" : "left_upper_arm", + "rotation" : [ + 0.026996023952960968, + 0.018886249512434006, + -0.026153087615966797, + 0.999114990234375 + ], + "scale" : [ + 0.9999996423721313, + 1, + 1.000000238418579 + ], + "translation" : [ + -5.9371814131736755e-09, + 0.08365685492753983, + -4.586763679981232e-08 + ] + }, + { + "children" : [ + 20 + ], + "name" : "left_clavicle", + "rotation" : [ + -0.5457687377929688, + -0.4851697087287903, + -0.5093544721603394, + 0.45530757308006287 + ], + "scale" : [ + 0.9999998211860657, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation" : [ + 0.057635027915239334, + 0.14212103188037872, + -0.006590674165636301 + ] + }, + { + "name" : "head", + "rotation" : [ + 0.01751827634871006, + 0.00017928233137354255, + 0.0001883702352643013, + 0.9998465776443481 + ], + "scale" : [ + 1, + 0.9999999403953552, + 1 + ], + "translation" : [ + -4.320099833421409e-12, + 0.05797429755330086, + 2.99337443721015e-09 + ] + }, + { + "children" : [ + 22 + ], + "name" : "neck", + "rotation" : [ + -0.0371236689388752, + -5.383783718571067e-05, + -0.00013793251127935946, + 0.9993106722831726 + ], + "scale" : [ + 0.9999999403953552, + 1.0000001192092896, + 0.9999998807907104 + ], + "translation" : [ + 8.349987368205802e-11, + 0.18759724497795105, + 4.4517289854439923e-10 + ] + }, + { + "children" : [ + 13, + 21, + 23 + ], + "name" : "spine_2", + "rotation" : [ + -0.007375867571681738, + 4.440144323325512e-07, + 3.2224068036157405e-07, + 0.9999728202819824 + ], + "scale" : [ + 0.9999998807907104, + 0.9999998807907104, + 1 + ], + "translation" : [ + -4.061855365944389e-11, + 0.14762933552265167, + 2.3090324097196913e-10 + ] + }, + { + "children" : [ + 24 + ], + "name" : "spine_1", + "rotation" : [ + 0.010534570552408695, + 0.010833692736923695, + 0.0031862056348472834, + 0.9998807907104492 + ], + "translation" : [ + -4.729372449219227e-10, + 0.1565963476896286, + 2.8558133635669947e-10 + ] + }, + { + "children" : [ + 25 + ], + "name" : "spine", + "rotation" : [ + -0.00885432492941618, + -0.010828322730958462, + -0.0032044071704149246, + 0.9998970627784729 + ], + "scale" : [ + 0.9999998807907104, + 1.0000001192092896, + 1 + ], + "translation" : [ + 0, + 0.049744486808776855, + 0 + ] + }, + { + "children" : [ + 2, + 5, + 26 + ], + "name" : "pelvis", + "rotation" : [ + -2.3592804154759506e-07, + 0, + 0, + 1 + ], + "translation" : [ + 3.2388281397288665e-05, + 0.7827164530754089, + -0.0002161305455956608 + ] + }, + { + "children" : [ + 27 + ], + "name" : "root", + "translation" : [ + -3.2388281397288665e-05, + 0, + 0.0002161305455956608 + ] + }, + { + "mesh" : 0, + "name" : "Male-noimp", + "skin" : 0 + }, + { + "children" : [ + 29, + 28 + ], + "name" : "Armature" + }, + { + "name" : "Sun-noimp", + "rotation" : [ + 0.5047639608383179, + -0.18435320258140564, + -0.05088244378566742, + 0.8418065309524536 + ], + "translation" : [ + -2.066239833831787, + 4.267083644866943, + 3.1175830364227295 + ] + }, + { + "name" : "Lamp-noimp", + "rotation" : [ + 0.16907575726509094, + 0.7558803558349609, + -0.27217137813568115, + 0.570947527885437 + ], + "translation" : [ + 4.076245307922363, + 5.903861999511719, + -1.0054539442062378 + ] + } + ], + "animations" : [ + { + "channels" : [ + { + "sampler" : 0, + "target" : { + "node" : 12, + "path" : "translation" + } + }, + { + "sampler" : 1, + "target" : { + "node" : 12, + "path" : "rotation" + } + }, + { + "sampler" : 2, + "target" : { + "node" : 12, + "path" : "scale" + } + }, + { + "sampler" : 3, + "target" : { + "node" : 27, + "path" : "translation" + } + }, + { + "sampler" : 4, + "target" : { + "node" : 27, + "path" : "rotation" + } + }, + { + "sampler" : 5, + "target" : { + "node" : 27, + "path" : "scale" + } + }, + { + "sampler" : 6, + "target" : { + "node" : 7, + "path" : "translation" + } + }, + { + "sampler" : 7, + "target" : { + "node" : 7, + "path" : "rotation" + } + }, + { + "sampler" : 8, + "target" : { + "node" : 7, + "path" : "scale" + } + }, + { + "sampler" : 9, + "target" : { + "node" : 4, + "path" : "translation" + } + }, + { + "sampler" : 10, + "target" : { + "node" : 4, + "path" : "rotation" + } + }, + { + "sampler" : 11, + "target" : { + "node" : 4, + "path" : "scale" + } + }, + { + "sampler" : 12, + "target" : { + "node" : 8, + "path" : "translation" + } + }, + { + "sampler" : 13, + "target" : { + "node" : 8, + "path" : "rotation" + } + }, + { + "sampler" : 14, + "target" : { + "node" : 8, + "path" : "scale" + } + }, + { + "sampler" : 15, + "target" : { + "node" : 19, + "path" : "translation" + } + }, + { + "sampler" : 16, + "target" : { + "node" : 19, + "path" : "rotation" + } + }, + { + "sampler" : 17, + "target" : { + "node" : 19, + "path" : "scale" + } + }, + { + "sampler" : 18, + "target" : { + "node" : 6, + "path" : "translation" + } + }, + { + "sampler" : 19, + "target" : { + "node" : 6, + "path" : "rotation" + } + }, + { + "sampler" : 20, + "target" : { + "node" : 6, + "path" : "scale" + } + }, + { + "sampler" : 21, + "target" : { + "node" : 18, + "path" : "translation" + } + }, + { + "sampler" : 22, + "target" : { + "node" : 18, + "path" : "rotation" + } + }, + { + "sampler" : 23, + "target" : { + "node" : 18, + "path" : "scale" + } + }, + { + "sampler" : 24, + "target" : { + "node" : 17, + "path" : "translation" + } + }, + { + "sampler" : 25, + "target" : { + "node" : 17, + "path" : "rotation" + } + }, + { + "sampler" : 26, + "target" : { + "node" : 17, + "path" : "scale" + } + }, + { + "sampler" : 27, + "target" : { + "node" : 26, + "path" : "translation" + } + }, + { + "sampler" : 28, + "target" : { + "node" : 26, + "path" : "rotation" + } + }, + { + "sampler" : 29, + "target" : { + "node" : 26, + "path" : "scale" + } + }, + { + "sampler" : 30, + "target" : { + "node" : 28, + "path" : "translation" + } + }, + { + "sampler" : 31, + "target" : { + "node" : 28, + "path" : "rotation" + } + }, + { + "sampler" : 32, + "target" : { + "node" : 28, + "path" : "scale" + } + }, + { + "sampler" : 33, + "target" : { + "node" : 11, + "path" : "translation" + } + }, + { + "sampler" : 34, + "target" : { + "node" : 11, + "path" : "rotation" + } + }, + { + "sampler" : 35, + "target" : { + "node" : 11, + "path" : "scale" + } + }, + { + "sampler" : 36, + "target" : { + "node" : 10, + "path" : "translation" + } + }, + { + "sampler" : 37, + "target" : { + "node" : 10, + "path" : "rotation" + } + }, + { + "sampler" : 38, + "target" : { + "node" : 10, + "path" : "scale" + } + }, + { + "sampler" : 39, + "target" : { + "node" : 0, + "path" : "translation" + } + }, + { + "sampler" : 40, + "target" : { + "node" : 0, + "path" : "rotation" + } + }, + { + "sampler" : 41, + "target" : { + "node" : 0, + "path" : "scale" + } + }, + { + "sampler" : 42, + "target" : { + "node" : 16, + "path" : "translation" + } + }, + { + "sampler" : 43, + "target" : { + "node" : 16, + "path" : "rotation" + } + }, + { + "sampler" : 44, + "target" : { + "node" : 16, + "path" : "scale" + } + }, + { + "sampler" : 45, + "target" : { + "node" : 1, + "path" : "translation" + } + }, + { + "sampler" : 46, + "target" : { + "node" : 1, + "path" : "rotation" + } + }, + { + "sampler" : 47, + "target" : { + "node" : 1, + "path" : "scale" + } + }, + { + "sampler" : 48, + "target" : { + "node" : 15, + "path" : "translation" + } + }, + { + "sampler" : 49, + "target" : { + "node" : 15, + "path" : "rotation" + } + }, + { + "sampler" : 50, + "target" : { + "node" : 15, + "path" : "scale" + } + }, + { + "sampler" : 51, + "target" : { + "node" : 24, + "path" : "translation" + } + }, + { + "sampler" : 52, + "target" : { + "node" : 24, + "path" : "rotation" + } + }, + { + "sampler" : 53, + "target" : { + "node" : 24, + "path" : "scale" + } + }, + { + "sampler" : 54, + "target" : { + "node" : 5, + "path" : "translation" + } + }, + { + "sampler" : 55, + "target" : { + "node" : 5, + "path" : "rotation" + } + }, + { + "sampler" : 56, + "target" : { + "node" : 5, + "path" : "scale" + } + }, + { + "sampler" : 57, + "target" : { + "node" : 9, + "path" : "translation" + } + }, + { + "sampler" : 58, + "target" : { + "node" : 9, + "path" : "rotation" + } + }, + { + "sampler" : 59, + "target" : { + "node" : 9, + "path" : "scale" + } + }, + { + "sampler" : 60, + "target" : { + "node" : 22, + "path" : "translation" + } + }, + { + "sampler" : 61, + "target" : { + "node" : 22, + "path" : "rotation" + } + }, + { + "sampler" : 62, + "target" : { + "node" : 22, + "path" : "scale" + } + }, + { + "sampler" : 63, + "target" : { + "node" : 3, + "path" : "translation" + } + }, + { + "sampler" : 64, + "target" : { + "node" : 3, + "path" : "rotation" + } + }, + { + "sampler" : 65, + "target" : { + "node" : 3, + "path" : "scale" + } + }, + { + "sampler" : 66, + "target" : { + "node" : 21, + "path" : "translation" + } + }, + { + "sampler" : 67, + "target" : { + "node" : 21, + "path" : "rotation" + } + }, + { + "sampler" : 68, + "target" : { + "node" : 21, + "path" : "scale" + } + }, + { + "sampler" : 69, + "target" : { + "node" : 14, + "path" : "translation" + } + }, + { + "sampler" : 70, + "target" : { + "node" : 14, + "path" : "rotation" + } + }, + { + "sampler" : 71, + "target" : { + "node" : 14, + "path" : "scale" + } + }, + { + "sampler" : 72, + "target" : { + "node" : 2, + "path" : "translation" + } + }, + { + "sampler" : 73, + "target" : { + "node" : 2, + "path" : "rotation" + } + }, + { + "sampler" : 74, + "target" : { + "node" : 2, + "path" : "scale" + } + }, + { + "sampler" : 75, + "target" : { + "node" : 13, + "path" : "translation" + } + }, + { + "sampler" : 76, + "target" : { + "node" : 13, + "path" : "rotation" + } + }, + { + "sampler" : 77, + "target" : { + "node" : 13, + "path" : "scale" + } + }, + { + "sampler" : 78, + "target" : { + "node" : 23, + "path" : "translation" + } + }, + { + "sampler" : 79, + "target" : { + "node" : 23, + "path" : "rotation" + } + }, + { + "sampler" : 80, + "target" : { + "node" : 23, + "path" : "scale" + } + }, + { + "sampler" : 81, + "target" : { + "node" : 25, + "path" : "translation" + } + }, + { + "sampler" : 82, + "target" : { + "node" : 25, + "path" : "rotation" + } + }, + { + "sampler" : 83, + "target" : { + "node" : 25, + "path" : "scale" + } + }, + { + "sampler" : 84, + "target" : { + "node" : 20, + "path" : "translation" + } + }, + { + "sampler" : 85, + "target" : { + "node" : 20, + "path" : "rotation" + } + }, + { + "sampler" : 86, + "target" : { + "node" : 20, + "path" : "scale" + } + } + ], + "name" : "animations", + "samplers" : [ + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 9 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 10 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 11 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 12 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 13 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 14 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 15 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 16 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 17 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 18 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 19 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 20 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 21 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 22 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 23 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 24 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 25 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 26 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 27 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 28 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 29 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 30 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 31 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 32 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 33 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 34 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 35 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 36 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 37 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 38 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 39 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 40 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 41 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 42 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 43 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 44 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 45 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 46 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 47 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 48 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 49 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 50 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 51 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 52 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 53 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 54 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 55 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 56 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 57 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 58 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 59 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 60 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 61 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 62 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 63 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 64 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 65 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 66 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 67 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 68 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 69 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 70 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 71 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 72 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 73 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 74 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 75 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 76 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 77 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 78 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 79 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 80 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 81 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 82 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 83 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 84 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 85 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 86 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 87 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 88 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 89 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 90 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 91 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 92 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 93 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 94 + }, + { + "input" : 8, + "interpolation" : "LINEAR", + "output" : 95 + } + ] + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Material.003", + "pbrMetallicRoughness" : {} + } + ], + "meshes" : [ + { + "name" : "Cube.001", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2, + "COLOR_0" : 3, + "JOINTS_0" : 4, + "WEIGHTS_0" : 5 + }, + "indices" : 6, + "material" : 0 + } + ] + } + ], + "skins" : [ + { + "inverseBindMatrices" : 7, + "joints" : [ + 28, + 27, + 2, + 1, + 0, + 5, + 4, + 3, + 26, + 25, + 24, + 13, + 12, + 11, + 10, + 7, + 6, + 9, + 8, + 21, + 20, + 19, + 18, + 15, + 14, + 17, + 16, + 23, + 22 + ], + "name" : "Armature" + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 2196, + "max" : [ + 0.8531909584999084, + 1.5639142990112305, + 0.17020562291145325 + ], + "min" : [ + -0.8531909584999084, + -6.0311325796647e-05, + -0.13162866234779358 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 2196, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 2196, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5126, + "count" : 2196, + "type" : "VEC4" + }, + { + "bufferView" : 4, + "componentType" : 5123, + "count" : 2196, + "type" : "VEC4" + }, + { + "bufferView" : 5, + "componentType" : 5126, + "count" : 2196, + "type" : "VEC4" + }, + { + "bufferView" : 6, + "componentType" : 5123, + "count" : 2226, + "type" : "SCALAR" + }, + { + "bufferView" : 7, + "componentType" : 5126, + "count" : 29, + "type" : "MAT4" + }, + { + "bufferView" : 8, + "componentType" : 5126, + "count" : 74, + "max" : [ + 2.433333333333333 + ], + "min" : [ + 0 + ], + "type" : "SCALAR" + }, + { + "bufferView" : 9, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 10, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 11, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 12, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 13, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 14, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 15, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 16, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 17, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 18, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 19, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 20, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 21, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 22, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 23, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 24, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 25, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 26, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 27, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 28, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 29, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 30, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 31, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 32, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 33, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 34, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 35, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 36, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 37, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 38, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 39, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 40, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 41, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 42, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 43, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 44, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 45, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 46, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 47, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 48, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 49, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 50, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 51, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 52, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 53, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 54, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 55, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 56, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 57, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 58, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 59, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 60, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 61, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 62, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 63, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 64, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 65, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 66, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 67, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 68, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 69, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 70, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 71, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 72, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 73, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 74, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 75, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 76, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 77, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 78, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 79, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 80, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 81, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 82, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 83, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 84, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 85, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 86, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 87, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 88, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 89, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 90, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 91, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 92, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 93, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + }, + { + "bufferView" : 94, + "componentType" : 5126, + "count" : 74, + "type" : "VEC4" + }, + { + "bufferView" : 95, + "componentType" : 5126, + "count" : 74, + "type" : "VEC3" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 26352, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 26352, + "byteOffset" : 26352 + }, + { + "buffer" : 0, + "byteLength" : 17568, + "byteOffset" : 52704 + }, + { + "buffer" : 0, + "byteLength" : 35136, + "byteOffset" : 70272 + }, + { + "buffer" : 0, + "byteLength" : 17568, + "byteOffset" : 105408 + }, + { + "buffer" : 0, + "byteLength" : 35136, + "byteOffset" : 122976 + }, + { + "buffer" : 0, + "byteLength" : 4452, + "byteOffset" : 158112 + }, + { + "buffer" : 0, + "byteLength" : 1856, + "byteOffset" : 162564 + }, + { + "buffer" : 0, + "byteLength" : 296, + "byteOffset" : 164420 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 164716 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 165604 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 166788 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 167676 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 168564 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 169748 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 170636 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 171524 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 172708 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 173596 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 174484 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 175668 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 176556 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 177444 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 178628 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 179516 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 180404 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 181588 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 182476 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 183364 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 184548 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 185436 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 186324 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 187508 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 188396 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 189284 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 190468 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 191356 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 192244 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 193428 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 194316 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 195204 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 196388 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 197276 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 198164 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 199348 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 200236 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 201124 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 202308 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 203196 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 204084 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 205268 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 206156 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 207044 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 208228 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 209116 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 210004 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 211188 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 212076 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 212964 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 214148 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 215036 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 215924 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 217108 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 217996 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 218884 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 220068 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 220956 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 221844 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 223028 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 223916 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 224804 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 225988 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 226876 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 227764 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 228948 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 229836 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 230724 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 231908 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 232796 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 233684 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 234868 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 235756 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 236644 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 237828 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 238716 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 239604 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 240788 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 241676 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 242564 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 243748 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 244636 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 245524 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 246708 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 247596 + }, + { + "buffer" : 0, + "byteLength" : 1184, + "byteOffset" : 248484 + }, + { + "buffer" : 0, + "byteLength" : 888, + "byteOffset" : 249668 + } + ], + "buffers" : [ + { + "byteLength" : 250556, + "uri" : "data:application/octet-stream;base64,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BNYNPnidmj7VPFM+kEmZPlg5Uj78dY4+kSIWP/SkYz4PkRY/WCZ3PvJDJz/AenI+3EcaPsAOfz3hRxo+6HqxPbfYLj7oerE9AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/GAAXABYAAAAXABgAAAAAABcAGAAWAAAAGgAAAAAAAAAaABkAAAAAABoAGQAAAAAAFQAWAAAAAAAVAAAAAAAAABUAFgAAAAAAEQASAA8AAAASABEADwAAABEAEgAPAAAABAADAAAAAAAEAAMAAAAAAAQAAwAAAAAAAgADAAAAAAADAAIAAAAAAAMAAgAAAAAABgAFAAAAAAAFAAYAAAAAAAUABgAAAAAADgARAA0AAAAOAA0AAAAAAA4ADQAAAAAAEwAUABsACgATABsACwAUABMAFAAAAAAAAQACAAUAAAACAAMAAAAAAAEAAAAAAAAADgANAA8AAAANAA4AAAAAAA0ADgAAAAAABgAFAAAAAAAGAAcAAAAAAAYABQAAAAAACgAbAAkAAAAJAAgACgABAAoACQAbAAAABgAFAAAAAAAFAAYAAAAAAAYABQAAAAAAEAAPAAAAAAAQAAAAAAAAABAADwAAAAAAAwACAAAAAAADAAIAAAAAAAMAAgAAAAAABwAGAAAAAAAHAAYAAAAAAAcABgAAAAAAFwAYABkAAAAYABcAAAAAABcAAAAAAAAACgAJABMAGwATABQAGwAKABMAFAAbAAAAGgAZAAAAAAAaAAAAAAAAABoAAAAAAAAABAADAAAAAAADAAQAAAAAAAQAAwAAAAAABgAAAAAAAAAHAAYAAAAAAAYABwAAAAAABgAFAAAAAAAGAAUAAAAAAAYABQAAAAAAFwAYABYAAAAYABcAFgAAABcAGAAWAAAADQAOAAAAAAANAAAAAAAAAA0AAAAAAAAABAADAAAAAAADAAQAAAAAAAQAAwAAAAAABgAHAAAAAAAGAAUAAAAAAAYABQAAAAAACQACAAoAAQABAAgACQAFAAkACgABAAgADgAAAAAAAAAOAA0ADwAAAA4ADQAAAAAAGgAZAAAAAAAaAAAAAAAAABoAGQAAAAAAHAAbAAAAAAAcABsAAAAAABwAGwATAAAAFgAAAAAAAAAWABUAAAAAABYAFQAAAAAAHAAAAAAAAAAcABsAAAAAABwAAAAAAAAAFAATAAAAAAAUABUAAAAAABQAEwAAAAAADQAOAAAAAAANAAAAAAAAAA0AAAAAAAAAHAAAAAAAAAAcABsAAAAAABwAAAAAAAAAFAATAAAAAAAUABUAAAAAABQAEwAAAAAAGwAcABMAAAAcABsAAAAAABsAHAAAAAAAGwAcAAAAAAAbABwAEwAUABsAHAATAAAACwAbAAwAEwALAAwAGwAKAAsADAAAAAAABAADAAAAAAAEAAMAAAAAAAQAAwAAAAAAFAATABsAAAAUABMAAAAAABMAFAAAAAAAGwAcABMAFAAUABMAGwAAABsAEwAcABQAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAABgAFAAAAAAAGAAAAAAAAAAYABwAAAAAACgAJABsACwAbAAsACgATAAoACQAbAAAAEAAPAAAAAAAQAAAAAAAAABAAAAAAAAAABgAFAAAAAAAGAAAAAAAAAAYABQAAAAAAAgADAAAAAAADAAIAAAAAAAMAAgAAAAAAGAAXAAAAAAAYAAAAAAAAABgAFwAAAAAACQACAAoAAQAKAAkAGwATAAoACQATABsAAwACAAAAAAACAAMAAAAAAAMAAgAAAAAAHAAbAAAAAAAcABsAAAAAABwAAAAAAAAADAANAAAAAAANAAwAAAAAAAwADQAAAAAAAwAEAAAAAAAEAAMAAAAAAAMABAAAAAAAFAAVAAAAAAAUABUAAAAAABQAFQAAAAAAEwAbAAsAFAATABsAHAALABMAFAAAAAAAEAAPAAAAAAAPAA4AEAAAABAADwAAAAAADQAMAAAAAAANAAwAAAAAAAwADQAAAAAABgAFAAAAAAAFAAYAAAAAAAUABgAAAAAAFAAVAAAAAAAUABUAAAAAABQAFQAAAAAAHAAbAAAAAAAcABsAAAAAABwAGwAAAAAAAwACAAAAAAADAAQAAAAAAAMAAgAAAAAAFAATAAAAAAAUABUAAAAAABQAFQAAAAAAAwAAAAAAAAADAAQAAAAAAAMAAAAAAAAADAANAAAAAAAMAA0AAAAAAAwADQAAAAAAEwAbABwACwAbABwAEwALABsAEwAcABQAGQAWABoAAAAaABkAAAAAABoAGQAAAAAAGwAcABMAFAAbABMAHAAUABsAHAATAAAAGwAcABMACwAbABwAEwAAABsAEwAcABQAGwAcAAAAAAAbAAsADAAAABsAAAAAAAAABwAGAAAAAAAHAAAAAAAAAAcAAAAAAAAACAAJAAUAAQAJAAgACgABAAkACAAKAAEAAgADAAAAAAACAAAAAAAAAAIAAwAAAAAAAwACAAAAAAADAAQAAAAAAAMABAAAAAAADAANAAAAAAAMAA0AAAAAAAwADQAAAAAABQAGAAAAAAAFAAEAAAAAAAUABgAAAAAAAwACAAAAAAADAAQAAAAAAAMABAAAAAAAGAAXABYAAAAYABcAAAAAABgAFwAWAAAAHAAbAAAAAAAcABsAEwAAABwAGwALABMABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAAAwACAAAAAAADAAIAAAAAAAMAAgAAAAAAEAAAAAAAAAAQAA8AAAAAABAAAAAAAAAACQAFAAoAAAAFAAkAAQAAAAUACQAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAABAAAAAAAAAAEAAMAAAAAAAQAAAAAAAAAAwAEAAAAAAADAAIAAAAAAAMAAgAAAAAAEwAUAAAAAAAbABMAHAAUABQAEwAbAAAAEgARAAAAAAASABEAAAAAABIAEQAPAAAACgAJABsAEwAJAAoAAQAIAAoACQAbAAAAFAAVAAAAAAAUABUAAAAAABQAFQAAAAAADAANAAAAAAAMAA0AAAAAAA0ADAAAAAAADQAOAA8AAAANAA4AAAAAAA0ADgAAAAAAGAAXAAAAAAAYABcAAAAAABgAFwAWAAAAFwAYABkAAAAZABYAGgAXABkAFgAaAAAAHAAAAAAAAAAcABsAAAAAABwAGwAAAAAACQACAAoAAQACAAkAAQAIAAkAAgAKAAEABAADAAAAAAAEAAMAAAAAAAQAAwAAAAAAGgAZAAAAAAAZABoAAAAAABkAGgAAAAAAFAATABsAAAATABQAGwAAABQAEwAbAAAABAAAAAAAAAAEAAMAAAAAAAQAAwAAAAAAAQAJAAgAAgABAAIAAAAAAAgACQACAAEAAwACAAAAAAADAAIAAAAAAAMAAgAAAAAAGAAXAAAAAAAYABcAGQAAABgAFwAZAAAADQAAAAAAAAANAAwAAAAAAA0ADAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAAEwAUABsACgATABQAGwAKABMAFAAbAAAADQAMAAAAAAANAAwAAAAAAA0ADAAAAAAADQAOAA8AAAAOAA8AEQAAAA0ADgAAAAAAEQASAA4AAAAOAAAAAAAAAA4AEQAAAAAAAwACAAAAAAADAAIAAAAAAAMAAgAAAAAAAwACAAAAAAACAAMAAAAAAAMAAgAAAAAAEwAUAAAAAAATABQAGwAAABMAFAAbAAoABQAGAAAAAAAGAAUAAAAAAAUABgAAAAAAFQAAAAAAAAAVABYAAAAAABUAFgAAAAAAFQAUAAAAAAAVABQAAAAAABUAFAAAAAAAAQAFAAAAAAAFAAkAAQAIAAUAAQAAAAAACgAJABsAAAAbAAoAEwALABsACgALAAwACgAJABsAEwAbAAoAEwAUAAoACQAbAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAAgAJAAEACAAJAAIACgAAAAkACgACAAgAHAAbAAsAAAAbABwACwATABsAHAALAAAAAwAEAAAAAAAEAAMAAAAAAAQAAwAAAAAABQAGAAAAAAAFAAEAAAAAAAUAAQAAAAAABAADAAAAAAADAAAAAAAAAAMABAAAAAAAFAAVAAAAAAAUABUAAAAAABQAFQAAAAAAFQAUAAAAAAAUABUAAAAAABUAFAAAAAAAFwAYAAAAAAAYABcAGQAAABcAGAAZAAAACgAJABsAAAAJAAoAAgAIAAoACQAbABMAFgAVABkAAAAZABoAAAAAABkAFgAaABcAFAATABsAAAAUABMAGwAAABQAEwAAAAAAGgAAAAAAAAAaAAAAAAAAABoAAAAAAAAAFQAWABkAAAAZABYAGgAAABkAGgAAAAAAEwAUABsAAAAUABMAAAAAABMAFAAbAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAGwAcABMAFAAbABMAFAAAABMAFAAbAAAAAgADAAAAAAADAAIAAAAAAAIAAwAAAAAAGQAaAAAAAAAaABkAAAAAABoAGQAAAAAACQAIAAoAAQAIAAkAAgABAAkACAAKAAEACgAJAAsAGwALAAwAGwAKAAsADAAbAAAABQAAAAAAAAAFAAYAAAAAAAUAAQAAAAAAEQASAAAAAAAOABEADQAAAA4ADwARAAAAEwAbAAsAFAAbAAsAHAATABMAGwAcAAsAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAEgARAAAAAAASABEAAAAAABIAEQAPAAAABAADAAAAAAAEAAAAAAAAAAQAAwAAAAAAAQAAAAAAAAABAAIABQAAAAEAAAAAAAAAAgABAAAAAAACAAkAAAAAAAIAAAAAAAAACQACAAoAAAAKAAkAEwAbAAoACQATABsAHAAbAAsAAAAbABwACwAAABwAGwAAAAAADwAQAAAAAAAQAA8AAAAAABAADwAAAAAAAwAAAAAAAAAEAAMAAAAAAAMABAAAAAAAAwACAAAAAAADAAIAAAAAAAMAAgAAAAAAAgABAAAAAAACAAMAAAAAAAIAAwAAAAAAGQAWABoAFwAWAAAAAAAAAAEABQACAAAABQAGAAAAAAAFAAYAAAAAAAMAAAAAAAAAAwACAAAAAAADAAAAAAAAAAoACQATABsAGwATAAoACwATABQAGwAKAAwACwAAAAAADAALABsAAAAMAAsAGwAAAA8AEAAAAAAAEAAPAAAAAAAPABAAAAAAABgAFwAAAAAAGAAAAAAAAAAYABcAAAAAAAMABAAAAAAABAADAAAAAAAEAAMAAAAAAAEAAgAFAAAAAgAJAAEACAACAAEAAAAAAAIACQABAAgACQAKAAIACAAJAAgACgABABsAHAALAAAAGwALABwAEwALABsAHAAAAA8ADgAQABEAEQASAA8AAAAPAA4AEAAAABUAFgAAAAAAFQAAAAAAAAAVABYAAAAAABMAFAAbAAoAFAATABsAAAATABQAGwAAABIAEQAAAAAAEgARAAAAAAASABEADgAAABEAEgAPAAAADgAPABEAAAAPAA4AEAAAABMAFAAbAAAAEwAUABsAAAATABQAGwAKAAEAAgAAAAAAAQAAAAAAAAABAAAAAAAAABsAEwAUAAAAGwAcAAAAAAAbAAAAAAAAAAUAAQAAAAAABQAGAAAAAAAFAAYAAAAAAAYABQAAAAAABgAFAAAAAAAGAAUAAAAAABwAGwAAAAAAHAAbAAAAAAAcABsAAAAAABUAFgAAAAAAFQAWABkAAAAVABYAAAAAAA0ADgAAAAAADgANAAAAAAANAA4AAAAAAAIACQABAAgACQAIAAoAAQAIAAkAAgABABQAEwAbAAAAFAATABsAAAAUABMAGwAAAA0ADAAAAAAADQAAAAAAAAANAAAAAAAAABMAFAAbAAoAEwAUABsAAAAUABMAAAAAABMAFAAbAAoAEwAUABsAAAATABQAGwAKAAEABQAAAAAAAQAJAAgAAgAIAAkABQABAAEACAAJAAUAAQAFAAIACAABAAUAAgAAABYAFQAAAAAAFQAWAAAAAAAVABYAAAAAABUAFgAAAAAAFQAUAAAAAAAVAAAAAAAAAAkACgABAAgACgAJABsACwAKAAkAGwAAABYAFQAAAAAAFgAXABUAAAAVABYAAAAAAAUAAAAAAAAABQAGAAAAAAAFAAYAAAAAABQAEwAAAAAAFAAVAAAAAAAUABMAAAAAAA4ADQAAAAAADQAOAAAAAAANAA4AAAAAABIAEQAOAAAAEQASAA4AAAARABIADgAAAAcABgAAAAAABwAGAAAAAAAHAAYAAAAAAAYABQAAAAAABQAGAAAAAAAGAAUAAAAAABIAEQAOAAAAEQAAAAAAAAARABIADgAAABQAEwAAAAAAFAAVAAAAAAAUABUAAAAAAAUACQAAAAAABQABAAAAAAAFAAkAAQAIABsACgATAAsAGwATABQAAAAbAAAAAAAAAAwACwAAAAAADAALAAAAAAALAAwAGwAAAAoACQAbAAsACQAFAAoAAAAJAAoABQAIAAIAAwAAAAAAAgAAAAAAAAACAAEAAAAAAAEAAAAAAAAAAgADAAAAAAABAAIAAAAAAAwACwAAAAAADAANAAAAAAAMAA0AAAAAAAYABQAAAAAABgAFAAAAAAAGAAUAAAAAAAQAAwAAAAAABAADAAAAAAAEAAMAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAABwAGwATAAAAGwAcABMAAAAbABwAEwALABwAGwAAAAAAGwAcAAsAAAAbABwAAAAAAAIACQABAAgAAQACAAAAAAACAAEAAAAAAAsADAAbAAoAGwALAAwAAAALAAwAGwAAAAwADQAAAAAADAANAAAAAAAMAA0AAAAAAAEABQAAAAAAAQAAAAAAAAABAAIABQAAABgAFwAZAAAAFwAYABkAAAAXABgAGQAAABYAFQAZAAAAFQAWAAAAAAAVABYAAAAAABYAFQAAAAAAFQAWAAAAAAAWABUAAAAAAAMAAgAAAAAAAwAEAAAAAAADAAIAAAAAAAcABgAAAAAABgAAAAAAAAAGAAcAAAAAABYAFQAZAAAAFgAAAAAAAAAWABUAAAAAABwAGwAAAAAAHAAbAAAAAAAcABsAAAAAABwAGwAAAAAAHAAbAAAAAAAcABsACwAAABUAFgAAAAAAFgAZABcAAAAVABYAAAAAABwAAAAAAAAAHAAbAAAAAAAcABsAAAAAABUAFAAAAAAAFAAVAAAAAAAUABUAAAAAABUAFAAAAAAAFQAWAAAAAAAVABQAAAAAABwAAAAAAAAAHAAbAAAAAAAcAAAAAAAAABsACgALAAwACgAJABsACwAKAAkAGwAAABwAGwAAAAAAHAAbAAAAAAAcABsAAAAAABsAHAAAAAAAGwAcAAsAAAAbABwACwAMAAIAAQAAAAAAAgAJAAAAAAACAAkAAQAIAAcABgAAAAAABwAGAAAAAAAHAAYAAAAAAAwACwAbAAAACwAMAAAAAAAMAAsAAAAAAAwACwAbAAAAGwAcAAsADAAbAAsAHAAMABoAGQAAAAAAGQAaAAAAAAAaABkAAAAAAAMAAAAAAAAAAwACAAAAAAADAAQAAAAAABsACwAKABMACgAJABsAEwAKAAkAGwAAABoAAAAAAAAAGgAZAAAAAAAaAAAAAAAAABIAAAAAAAAAEgARAAAAAAASABEAAAAAAAUABgAAAAAAAQAAAAAAAAABAAUAAAAAABIAAAAAAAAAEgARAAAAAAASABEAAAAAAAoACQAbAAsACQAFAAoAAQAKAAkACwAbAAkACgAFAAgACgAJABsAAAAKAAkAGwALABwAGwAAAAAAHAAbAAAAAAAcABsAAAAAABUAFAAAAAAAFAAVAAAAAAAUABUAAAAAAAcABgAAAAAABwAAAAAAAAAHAAAAAAAAAAMAAgAAAAAAAgADAAAAAAACAAMAAAAAAAsAGwAMABMACwAMAAAAAAALABsAHAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAABUAFAAAAAAAFQAUAAAAAAAUABUAAAAAAAIAAwAAAAAAAwACAAAAAAACAAMAAAAAAAwADQAAAAAADAANAAAAAAAMAA0AAAAAABIAEQAAAAAAEgARAA4AAAASABEADgAAAAYABQAAAAAABgAFAAAAAAAGAAcAAAAAAAwACwAAAAAADAALAAAAAAAMAAsAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAcAAAAAAAwACwAAAAAADAALAAAAAAALAAwAGwAKAAsAGwAcAAAAGwALABwADAAbABwACwAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAABsAHAALAAwAGwAcAAsAAAAbAAsAHAAMABsAHAALAAAAGwALABwADAAbABwACwAAAAEAAAAAAAAAAQAFAAIAAAABAAUAAgAIAAQAAAAAAAAABAADAAAAAAAEAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABEAEgAAAAAAEgARAA4AAAARABIADgAAAAYABwAAAAAABgAFAAAAAAAGAAcAAAAAABQAFQAAAAAAFAAVAAAAAAAUABUAAAAAAA4ADQAAAAAADgAAAAAAAAAOAA0AAAAAAAYABwAAAAAABgAFAAAAAAAGAAcAAAAAABwAGwAAAAAAHAAbAAAAAAAcABsAAAAAABwAGwALAAAAHAAbAAAAAAAcABsACwATAAwADQAAAAAADAALAAAAAAAMAAsAAAAAAAYABQAAAAAABgAFAAAAAAAGAAUAAAAAABAAAAAAAAAAEAAPAAAAAAAQAA8AAAAAAAIACQABAAAACQACAAoAAAACAAkAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAAAkABQAKAAAABQAJAAEACAAJAAoABQAIAAkAAgAKAAAACgAJABsAEwAJAAoAAgAIABsACwAcAAwACwAMAAAAAAAMAAsAGwAAABgAFwAAAAAAGAAXAAAAAAAYABcAGQAAABUAFgAAAAAAFQAWAAAAAAAVABYAAAAAABQAFQAAAAAAFQAUAAAAAAAUABUAAAAAABQAFQAAAAAAFAAVAAAAAAAVABQAAAAAAA0ADgAPAAAADwAQAAAAAAAPABAAAAAAABsACwAKABMACwAbAAwAEwALABsAEwAcABYAFwAAAAAAFwAYABYAAAAWABcAFQAAAAUABgAAAAAABgAFAAAAAAAGAAUAAAAAAAYABwAAAAAABwAGAAAAAAAHAAYAAAAAAAcABgAAAAAABwAGAAAAAAAHAAYAAAAAABIAEQAAAAAAEgARAAAAAAASABEADgAAAAwACwAbAAAADAALABsAAAALAAwAGwAAAAcAAAAAAAAABwAGAAAAAAAHAAYAAAAAAAYABQAAAAAABgAFAAAAAAAGAAUAAAAAAAEACAAJAAUACQAFAAoAAQAJAAoAAQAIAA0AAAAAAAAADQAOAAAAAAANAAAAAAAAABEAAAAAAAAADwAOABAAEQAOAAAAAAAAAAsADAAbAAoACwAMABsAAAALAAwAGwAKAAYABQAAAAAABgAFAAAAAAAGAAUAAAAAABYAGQAXAAAAFQAWABkAAAAVABYAAAAAABYAFwAVAAAAFwAYAAAAAAAWABkAFwAAAA0ADAAAAAAADAANAAAAAAAMAA0AAAAAAAUABgAAAAAABgAFAAAAAAAGAAUAAAAAAAsADAAbAAAACwAMAAAAAAALAAwAGwAKAAwADQAAAAAADQAMAAAAAAAMAA0AAAAAABUAFAAAAAAAFQAWAAAAAAAVAAAAAAAAAAMAAgAAAAAAAwACAAAAAAADAAIAAAAAAAUACQABAAgACQAFAAoAAQAJAAUACgABABsACgATAAsACgAJABsAAAAbAAoAEwAUAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABsAEwAUAAAAEwAUABsACgATABQAGwAAABsAHAALABMAHAAbABMAAAAbABwAEwALAAcABgAAAAAABgAHAAAAAAAHAAYAAAAAAAIAAQAAAAAAAgADAAAAAAACAAEAAAAAAAcABgAAAAAABgAHAAAAAAAGAAcAAAAAAAwADQAAAAAADAANAAAAAAAMAA0AAAAAAAwADQAAAAAADQAMAAAAAAANAAwAAAAAABYAGQAXAAAAFwAYABkAAAAZABYAGgAAABwAGwAAAAAAHAAAAAAAAAAcABsAAAAAAA4ADQAPAAAADwAOABAAEQAPABAAAAAAAAwACwAbAAAADAALAAAAAAAMAAsAGwAAABUAFAAAAAAAFQAWAAAAAAAVABQAAAAAAA0ADgAPAAAADwAQAAAAAAAPAA4AEAAAAAsADAAbAAAACwAMABsAAAAMAAsAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABsAHAALAAwACwAMABsAAAAbAAsADAAAABcAAAAAAAAAGAAXABYAAAAXABgAFgAAABAADwAAAAAADwAQAAAAAAAQAA8AAAAAAAUAAQAAAAAABQAJAAEAAAAFAAkAAQAIABMAFAAbAAoACgAJABMAGwATABQAGwAAAAoAGwAJAAAACQAIAAoAAQAJAAgACgABAAcABgAAAAAABgAHAAAAAAAHAAYAAAAAABsACwAcABMACwAbAAwAEwALABsAHAAAAAIACQABAAAAAgABAAAAAAACAAkAAQAIABgAFwAAAAAAGAAXAAAAAAAYABcAGQAAAAcAAAAAAAAABwAGAAAAAAAHAAYAAAAAAAUACQAAAAAABQABAAAAAAAFAAAAAAAAAAoACQALABsACQAFAAoAAAAKAAkACwAbAAsADAAbAAoACgAJAAsAGwALAAwAGwAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABIAEQAPAAAAEgARAAAAAAASABEADwAAAAYABQAAAAAABgAFAAAAAAAGAAUAAAAAAA4ADwARAAAADgANAAAAAAANAA4AAAAAAAMABAAAAAAABAADAAAAAAAEAAMAAAAAABsACwAMAAAAGwAKABMACwAbAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAUAAAAAAAcABgAAAAAABgAHAAAAAAAHAAYAAAAAABQAEwAAAAAAFAATABsAAAAUABMAAAAAABgAFwAAAAAAGAAXAAAAAAAYABcAFgAAAAMAAAAAAAAAAwACAAAAAAADAAIAAAAAABsACwAKAAwACgAJAAsAGwALAAwAGwAKAAUACQABAAgAAQAFAAIAAAAFAAEAAAAAAAUACQABAAgACQAIAAoAAQAJAAoABQAIABsACwAcABMAGwAcABMACwATABsAHAALABEAEgAOAAAADgARAAAAAAAOABEADQAAAAYABwAAAAAABwAGAAAAAAAHAAYAAAAAAAsADAAbAAoACwAMABsAAAAMAAsAGwAAABMAGwALABQAGwALAAoAEwALABsAEwAcABYAAAAAAAAAFwAYABYAAAAWABcAAAAAAAsADAAbAAAACwAMABsACgALAAwAGwAAAAEABQAAAAAAAQAAAAAAAAABAAAAAAAAAAIAAwAAAAAAAgABAAAAAAACAAMAAAAAAAMAAgAAAAAAAwACAAAAAAADAAIAAAAAABwAGwAAAAAAHAAbAAAAAAAcABsAAAAAAA0ADgAAAAAADQAAAAAAAAANAA4AAAAAAA0AAAAAAAAADQAMAAAAAAANAAAAAAAAAAUACQABAAgACAAJAAUAAQAJAAgACgABAAwACwAbAAAADAALABsAAAAMAAsAGwAAAA0AAAAAAAAADQAOAAAAAAANAAAAAAAAAAsADAAbAAoADAALAAAAAAALAAwAGwAAAAsADAAbAAoACwAMABsACgALAAwAGwAAAAEAAgAAAAAAAQACAAUAAAABAAAAAAAAAAEABQACAAgAAQAIAAkABQABAAIABQAAABUAAAAAAAAAFQAWAAAAAAAVABYAAAAAAA0ADAAAAAAADQAAAAAAAAANAAwAAAAAAAwACwAAAAAADAANAAAAAAAMAAsAAAAAAAEABQAAAAAAAQACAAUAAAABAAkACAACAAEAAgAAAAAAAQAJAAgAAgABAAIABQAAABIAEQAPAAAAEQASAAAAAAARABIADwAAAA0ADgAAAAAADgANAA8AAAANAA4AAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAA0ADAAAAAAADQAAAAAAAAANAAwAAAAAAA0ADgAAAAAADgANAAAAAAAOAA0AAAAAABkAGgAAAAAAFQAWABkAAAAZABoAAAAAABUAFgAAAAAAFQAWAAAAAAAVABYAAAAAABUAFgAAAAAAFQAUAAAAAAAVABQAAAAAAA0AAAAAAAAADQAOAAAAAAANAA4AAAAAABUAFgAAAAAAFQAUAAAAAAAVABQAAAAAABUAFgAAAAAAFQAWAAAAAAAVABYAAAAAABUAFgAAAAAAFgAVABkAAAAVABYAAAAAAA0AAAAAAAAADQAMAAAAAAANAAwAAAAAABUAFgAAAAAAFQAWAAAAAAAVABYAAAAAABUAFAAAAAAAFQAUAAAAAAAVABQAAAAAABsACwAcABMACwAbABMAHAALABsADAATAAYABQAAAAAABQAGAAAAAAAFAAYAAAAAABsACwAKAAwACgAJABsACwAKAAkACwAbAAcAAAAAAAAABwAGAAAAAAAHAAAAAAAAAAkABQAKAAAABQAJAAAAAAAFAAkAAQAIABEAEgAAAAAAFQAAAAAAAAAVABYAAAAAABUAFgAAAAAADQAOAAAAAAAOAA0AAAAAAA4ADQAAAAAAFgAVABkAAAAZABYAGgAXABYAAAAAAAAAGwAKABMACwAKABsACQAAAAoACQAbAAAADwAOABAAEQARABIADwAAABEAEgAPAAAADwAQAAAAAAAPAA4AEAARABAADwAAAAAABAAAAAAAAAAEAAMAAAAAAAQAAAAAAAAACwAMABsAAAAMAAsAAAAAAAsADAAAAAAABAADAAAAAAAEAAAAAAAAAAQAAwAAAAAADQAAAAAAAAANAAwAAAAAAA0ADAAAAAAAHAAbAAAAAAAcABsAAAAAABwAGwAAAAAABQAGAAAAAAABAAUAAAAAAAUAAQAAAAAAEwAUABsACgAbABMACgALABMAGwALABQAAwACAAAAAAACAAMAAAAAAAIAAwAAAAAACQAKAAUACAAJAAgACgABAAoACQAbAAAAEgARAA4AAAASABEAAAAAABEAAAAAAAAAHAAbAAAAAAAcAAAAAAAAABwAAAAAAAAAGAAXAAAAAAAYAAAAAAAAABgAFwAAAAAABQAGAAAAAAAFAAYAAAAAAAYABQAAAAAAHAAAAAAAAAAcAAAAAAAAABwAGwAAAAAABAADAAAAAAAEAAMAAAAAAAQAAAAAAAAAAwACAAAAAAADAAIAAAAAAAMAAgAAAAAACgAJABMAGwAKAAkAEwAbABMAFAAbAAoAEQASAAAAAAARABIADgAAAA4AEQANAAAAAwAEAAAAAAADAAQAAAAAAAQAAwAAAAAADgANAAAAAAAOABEAAAAAAA4AAAAAAAAAFQAWAAAAAAAWABcAFQAAABYAGQAXAAAAFAATAAAAAAAUABMAAAAAABQAEwAAAAAAAwACAAAAAAACAAMAAAAAAAIAAwAAAAAADAANAAAAAAAMAA0AAAAAAAwADQAAAAAAFQAUAAAAAAAUABUAAAAAABUAFAAAAAAAGAAXAAAAAAAYABcAAAAAABgAFwAZAAAABgAFAAAAAAAGAAUAAAAAAAYAAAAAAAAADAALABsAAAAMAAsAAAAAAAsADAAbAAoADAALABsAAAALAAwAGwAAABsAHAALAAwADAALAAAAAAALAAwAGwAAAAwACwAAAAAAGgAAAAAAAAAaABkAAAAAABoAGQAAAAAABgAFAAAAAAAGAAUAAAAAAAYABQAAAAAAHAAbAAsAAAAbABwACwAAABsAHAALAAAAFgAXAAAAAAAXABgAFgAAABcAGAAWAAAAHAAbAAsAAAAcABsACwATABsAHAALABMACgAJABsAAAAJAAgACgABAAkACgACAAgAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAbABMAAAAcABsAAAAAABsAHAATAAAAEAAPAAAAAAAQAA8AAAAAABAAAAAAAAAABgAHAAAAAAAGAAUAAAAAAAYABQAAAAAACQACAAoAAQACAAkAAQAAAAIACQABAAgABQAAAAAAAAAFAAEAAAAAAAUABgAAAAAAFgAVAAAAAAAWABcAAAAAABYAFwAVAAAAFgAVAAAAAAAVABYAAAAAABUAFgAAAAAADAANAAAAAAAMAA0AAAAAAAwADQAAAAAAHAAbAAAAAAAcABsAAAAAABwAGwAAAAAAFAAVAAAAAAAUABUAAAAAABQAFQAAAAAAHAAAAAAAAAAcAAAAAAAAABwAGwAAAAAAAwACAAAAAAADAAIAAAAAAAMAAgAAAAAAGwALAAoAEwAbABMACgALAAoACQAbABMABAADAAAAAAAEAAMAAAAAAAMABAAAAAAADQAOAA8AAAAOAA0ADwAAAA8AEAAAAAAABQAGAAAAAAAFAAYAAAAAAAEAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABQAAAAAAAAAFAAYAAAAAAAUABgAAAAAAEQAAAAAAAAARABIADwAAAA8ADgAQABEABwAGAAAAAAAHAAYAAAAAAAcAAAAAAAAAFQAWAAAAAAAVABYAAAAAABUAAAAAAAAADQAOAA8AAAAPAA4AEAAAAA4ADwARAAAAFgAZABcAAAAZABYAGgAAABUAFgAZAAAAAwACAAAAAAADAAIAAAAAAAMABAAAAAAACgAbAAkAAAAJAAgACgABAAkACAAKAAEABQAJAAEACAAFAAkAAQAAAAkABQAKAAEAAgADAAAAAAACAAEAAAAAAAIAAAAAAAAABgAFAAAAAAAGAAUAAAAAAAYABQAAAAAAAgAJAAEACAAIAAkAAgABAAEAAgAAAAAAAwACAAAAAAADAAIAAAAAAAIAAwAAAAAADAALAAAAAAAMAAsAAAAAAAwADQAAAAAADAANAAAAAAAMAA0AAAAAAA0ADAAAAAAAAgABAAAAAAABAAIAAAAAAAIAAwAAAAAAEgARAAAAAAASAAAAAAAAABIAEQAAAAAAAgADAAAAAAADAAIAAAAAAAMAAgAAAAAABgAFAAAAAAAGAAcAAAAAAAYABwAAAAAADAALAAAAAAAMAAsAAAAAAAwACwAbAAAAAgAJAAEAAAAJAAIACgABAAkAAgAKAAAAHAAAAAAAAAAcABsAAAAAABwAGwAAAAAAGAAXABkAAAAYABcAGQAAABcAGAAZAAAADQAOAAAAAAAOAA0AAAAAAA4ADQAPAAAACgAJABsACwAKAAkACwAbAAkABQAKAAAAEgARAAAAAAASAAAAAAAAABIAEQAAAAAAEgARAAAAAAAKAAkAGwALAAkABQAKAAEACQAFAAoAAQANAAwAAAAAAA0ADAAAAAAADAANAAAAAAAUABUAAAAAABQAEwAAAAAAFAAVAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAFAAIAAAASABEADwAAABIAEQAAAAAAEgARAAAAAAAMAAsAAAAAAAwACwAAAAAADAALAAAAAAAOABEADQAAAA4AEQAAAAAADgANAAAAAAAHAAYAAAAAAAcAAAAAAAAABwAGAAAAAAATABQAAAAAABQAEwAAAAAAEwAUABsAAAAYABcAFgAAABgAFwAAAAAAFwAYAAAAAAAMAA0AAAAAAA0ADAAAAAAADQAMAAAAAAANAAwAAAAAAAwADQAAAAAADQAMAAAAAAAQAA8AAAAAAA8ADgAQABEADwAOABAAAAAUABUAAAAAABUAFAAAAAAAFAAVAAAAAAAJAAIACgABAAkAAgAKAAEACgAJABsAEwAOAA0AAAAAAA0ADgAAAAAADQAOAAAAAAABAAAAAAAAAAIAAwAAAAAAAgADAAAAAAAbAAsAHAATABsAHAALABMAGwAcABMACwAYABcAAAAAAAIACQABAAAAAgABAAAAAAACAAEAAAAAAAYABwAAAAAABgAHAAAAAAAGAAUAAAAAAAkAAgAKAAAACgAJABMAGwAKAAkAGwATAAQAAwAAAAAABAADAAAAAAAEAAMAAAAAAA0ADgAAAAAADQAOAAAAAAANAAAAAAAAABQAEwAAAAAAFAATAAAAAAAUABMAAAAAABsAHAALAAAAGwAcAAsAEwAbAAsAHAATAAMAAgAAAAAAAwACAAAAAAADAAIAAAAAAAYABQAAAAAABgAFAAAAAAAFAAYAAAAAAAYABQAAAAAABgAFAAAAAAAGAAUAAAAAABYAFQAAAAAAFQAWAAAAAAAVABYAAAAAAAIAAQAAAAAAAgAJAAEAAAACAAkAAAAAAAcABgAAAAAABwAGAAAAAAAHAAYAAAAAABwAGwAAAAAAHAAbAAAAAAAcABsAAAAAABsACgALAAwACwAMABsACgAKAAkAGwALABoAGQAAAAAAGgAAAAAAAAAaAAAAAAAAAAwADQAAAAAADAALAAAAAAAMAA0AAAAAABQAEwAAAAAAFAAVAAAAAAAUABUAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAAAoACQALABsACgAJABsACwALAAwAGwAKABYAAAAAAAAAFwAAAAAAAAAXABgAFgAAAA0ADAAAAAAADQAMAAAAAAANAAAAAAAAAAQAAAAAAAAABAADAAAAAAAEAAMAAAAAABgAFwAAAAAAGAAAAAAAAAAYABcAAAAAAA8AEAAAAAAAEAAPAAAAAAAQAA8AAAAAAAEACAAJAAUABQAJAAEACAAJAAUACgABAAkABQAKAAAACQAFAAoAAQAFAAkAAQAAAA0ADgAPAAAADQAOAAAAAAANAA4AAAAAABsAEwAUAAAAGwAKABMAFAATABQAGwAKABQAFQAAAAAAFAAVAAAAAAAUABUAAAAAABQAEwAAAAAAFAATABsAAAAUABMAGwAAAAYABwAAAAAABwAGAAAAAAAHAAYAAAAAABAADwAAAAAAEAAAAAAAAAAQAAAAAAAAABsAHAATABQAEwAUABsAAAAUABMAGwAAAAIAAQAAAAAAAgADAAAAAAACAAMAAAAAABUAFAAAAAAAFQAAAAAAAAAVABYAAAAAABwAAAAAAAAAHAAAAAAAAAAcABsAAAAAAAMABAAAAAAABAADAAAAAAAEAAMAAAAAABUAFAAAAAAAFQAUAAAAAAAUABUAAAAAAAcABgAAAAAABgAHAAAAAAAGAAcAAAAAAAsADAAbAAoAGwAKAAsADAAbAAsADAAAABIAEQAAAAAAFAAVAAAAAAAUABUAAAAAABQAFQAAAAAADAANAAAAAAAMAA0AAAAAAAwADQAAAAAABwAAAAAAAAAHAAYAAAAAAAcABgAAAAAAFAATAAAAAAAUABMAAAAAABQAFQAAAAAABQAJAAEACAABAAgACQAFAAEABQACAAAADAALAAAAAAAMAAsAAAAAAAwACwAAAAAAGwALABwADAALABsAHAAAAAsADAAAAAAABQABAAAAAAABAAUAAgAAAAUABgAAAAAAAQAFAAAAAAAIAAkABQABAAUACQABAAgABgAFAAAAAAAGAAUAAAAAAAYABQAAAAAADAALAAAAAAAMAAsAAAAAAAwACwAbAAAAAwACAAAAAAADAAIAAAAAAAMAAgAAAAAAAQACAAUAAAABAAgACQAFAAIACQABAAgAAwACAAAAAAADAAIAAAAAAAMAAgAAAAAAAgADAAAAAAADAAIAAAAAAAMAAgAAAAAADAANAAAAAAANAAwAAAAAAA0ADAAAAAAACwAbAAwAEwAbAAsACgAMAAsADAAbAAoADQAMAAAAAAANAAAAAAAAAA0AAAAAAAAADgAAAAAAAAAPAA4AEAARAA4ADQAPAAAAAwACAAAAAAADAAIAAAAAAAMABAAAAAAABgAFAAAAAAAGAAUAAAAAAAUABgAAAAAAAwAEAAAAAAAEAAMAAAAAAAQAAwAAAAAABwAGAAAAAAAHAAYAAAAAAAcAAAAAAAAABwAGAAAAAAAHAAYAAAAAAAcABgAAAAAAEwAUABsACgAKAAkAGwATAAoACQATABsAGwALAAwAAAAbAAoACwAMABsACgATAAsABgAHAAAAAAAGAAcAAAAAAAcABgAAAAAAGwAcABMAAAAcABsAAAAAABwAGwAAAAAAAQAAAAAAAAABAAUAAgAIAAEAAgAFAAAAHAAbAAAAAAAcABsAAAAAABwAGwATAAAAGgAZAAAAAAAaABkAAAAAABoAAAAAAAAACQAIAAoAAQABAAkACAACAAgACQACAAEABQAGAAAAAAAFAAYAAAAAAAUAAQAAAAAAEQASAAAAAAASABEAAAAAABIAEQAOAAAADAANAAAAAAAMAA0AAAAAAAwADQAAAAAAFAATAAAAAAAUABMAGwAAABMAFAAbAAoABQAGAAAAAAAGAAUAAAAAAAYABQAAAAAAGAAXABYAAAAYABcAAAAAABgAFwAAAAAACgAJABsAAAAKABsACQAAABsACgATAAsADQAAAAAAAAANAAAAAAAAAA0ADAAAAAAACgAJABsACwAbAAsACgAMABsACwAKABMADAANAAAAAAAMAAsAAAAAAAwACwAAAAAAGgAZAAAAAAAZABYAGgAXABkAGgAAAAAAEgARAAAAAAASABEAAAAAABIAEQAOAAAAEgAAAAAAAAASAAAAAAAAABIAEQAAAAAADQAAAAAAAAANAA4AAAAAAA0ADgAAAAAAAwAAAAAAAAADAAQAAAAAAAQAAwAAAAAAGwALAAoAEwAbAAsACgAMAAsAGwAMABMAAgAJAAEACAACAAkAAAAAAAkAAgAKAAAAFQAUAAAAAAAUABUAAAAAABQAFQAAAAAACgAJABsAEwATABQAGwAKABsACgATABQAHAAbAAAAAAAcABsAAAAAABsAHAALAAAAAgADAAAAAAACAAMAAAAAAAMAAgAAAAAABAAAAAAAAAAEAAMAAAAAAAQAAwAAAAAAAwACAAAAAAADAAIAAAAAAAMAAgAAAAAAFAATAAAAAAAUABUAAAAAABQAFQAAAAAACQAKAAEACAAJAAUACgABAAoACQAbAAsAFgAVABkAAAAWABUAAAAAABUAFgAAAAAAGwAcAAAAAAAbABwACwAMABsACwAMAAAAHAAbAAsAAAAcABsAAAAAABwAGwAAAAAABgAHAAAAAAAGAAUAAAAAAAYABQAAAAAAGgAZAAAAAAAaABkAAAAAABkAGgAAAAAAGAAXABkAAAADAAAAAAAAAAMAAgAAAAAAAwACAAAAAAAJAAIACgABAAIACQABAAgAAQAIAAkABQAUABUAAAAAABUAFAAAAAAAFQAUAAAAAAASAAAAAAAAABIAEQAAAAAABAADAAAAAAAEAAMAAAAAAAQAAwAAAAAAEwAbAAsAFAALABsAEwAcABsACwAcABMABgAFAAAAAAAGAAUAAAAAAAYABQAAAAAAGQAWABoAAAAZABYAGgAXABoAGQAAAAAAEgARAA8AAAASABEADwAAAAMAAgAAAAAAAwACAAAAAAADAAIAAAAAABcAGAAWAAAABwAAAAAAAAAHAAYAAAAAAAcAAAAAAAAABgAFAAAAAAAFAAYAAAAAAAUABgAAAAAAHAAbAAAAAAAcABsAAAAAABwAGwAAAAAAFQAUAAAAAAAVABQAAAAAABUAFgAAAAAACAAJAAUAAQABAAkACAACAAkACAAKAAEADAANAAAAAAAMAA0AAAAAAAwACwAAAAAAHAAbAAAAAAAcABsAAAAAABwAGwAAAAAAFQAUAAAAAAAVABQAAAAAABQAFQAAAAAABgAFAAAAAAAGAAUAAAAAAAYABQAAAAAABwAGAAAAAAAHAAYAAAAAAAYABwAAAAAAAQAFAAIAAAABAAAAAAAAAAUABgAAAAAAEwAUAAAAAAATABsAHAALABsAEwAcABQAGgAAAAAAAAAaAAAAAAAAABoAAAAAAAAAAQACAAUAAAACAAMAAAAAAAIAAwAAAAAAEAAAAAAAAAAQAAAAAAAAABAADwAAAAAADQAOAAAAAAANAA4AAAAAAA0AAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAGwAAAAAADAALAAAAAAAMAA0AAAAAAAwADQAAAAAAGwAKABMACwAbAAoAEwAUABsAEwAUAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAEwAbAAsAFAAbABMACgALABsACwAKABMAHAAbAAAAAAAcAAAAAAAAABwAGwAAAAAABQAGAAAAAAAFAAYAAAAAAAYABQAAAAAAFAATAAAAAAAUABMAAAAAABMAFAAbAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAACwAMABsACgAKAAkACwAbAAoACQALABsABQAJAAAAAAAFAAAAAAAAAAUAAQAAAAAADgANAA8AAAANAA4ADwAAAA0ADgAAAAAAAgABAAAAAAACAAAAAAAAAAIACQAAAAAAEQASAA4AAAARAAAAAAAAAA4AAAAAAAAAGgAAAAAAAAAaAAAAAAAAABoAGQAAAAAAFAAVAAAAAAAUABUAAAAAABQAFQAAAAAABwAAAAAAAAANAAwAAAAAAA0ADAAAAAAADQAMAAAAAAAEAAMAAAAAAAMABAAAAAAAAwAAAAAAAAAGAAUAAAAAAAYABwAAAAAABgAAAAAAAAASABEADgAAABIAEQAOAAAAEQASAA4AAAACAAMAAAAAAAIAAwAAAAAAAgAAAAAAAAAVAAAAAAAAABUAFgAAAAAAFQAWAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAXAAAAAAAAABgAFwAAAAAAGAAXABYAAAAXABgAFgAAABgAFwAWAAAAGAAXABYAAAAYABcAAAAAABgAAAAAAAAAGAAXAAAAAAACAAMAAAAAAAIAAwAAAAAAAwACAAAAAAAGAAAAAAAAAAYABwAAAAAABwAGAAAAAAAUABMAAAAAABQAEwAAAAAAEwAUABsACgAVABYAAAAAABUAFgAAAAAAFQAAAAAAAAANAAAAAAAAAA0ADgAAAAAADQAOAAAAAAAUABUAAAAAABQAFQAAAAAAFAAVAAAAAAAEAAMAAAAAAAMABAAAAAAAAwAEAAAAAAAVABYAAAAAABUAFAAAAAAAFQAUAAAAAAAJAAIACgAAAAkAAgAKAAEACgAJABMAGwAUABMAAAAAABQAEwAAAAAAFAAVAAAAAAAcABsAAAAAABwAGwAAAAAAHAAbAAAAAAAWAAAAAAAAABYAFwAAAAAAFgAVAAAAAAAMAA0AAAAAAAwACwAAAAAADAALAAAAAAAUABMAAAAAABQAFQAAAAAAFAAVAAAAAAAEAAAAAAAAAAQAAwAAAAAABAAAAAAAAAAZABoAAAAAABkAFgAaAAAAGgAZAAAAAAANAA4AAAAAAA0AAAAAAAAADQAAAAAAAAAVABYAAAAAABUAFgAAAAAAFQAWABkAAAAQAAAAAAAAABAADwAAAAAAEAAPAAAAAAAXABgAGQAAABcAGAAZAAAAGQAWABoAFwADAAQAAAAAAAMABAAAAAAABAADAAAAAAASABEAAAAAABIAAAAAAAAAEgARAAAAAAADAAQAAAAAAAMABAAAAAAAAwACAAAAAAAMAA0AAAAAAAwADQAAAAAADAANAAAAAAAbABwACwATABwAGwALABMAHAAbABMAAAAKAAkAGwATAAkAAgAKAAEACQAKAAEACAADAAAAAAAAAAMABAAAAAAAAwACAAAAAAAKAAkAEwAbAAoACQAbABMAGwATAAoACwACAAMAAAAAAAEAAgAFAAAAAgABAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAHAAYAAAAAAAYABwAAAAAABgAHAAAAAAAKAAkACwAbAAkABQAKAAEACQAFAAoAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAFAAEAAAAAAAUAAQAAAAAABQAJAAEAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAHAAYAAAAAABsAEwAUAAAAGwAcABMAFAAbABwAAAAAABEAEgAOAAAAEQASAA4AAAAOABEAAAAAABAADwAAAAAADwAOABAAAAAPABAAAAAAABgAFwAAAAAAGAAAAAAAAAAYABcAAAAAAAcABgAAAAAABgAHAAAAAAAGAAAAAAAAAAYABQAAAAAABgAFAAAAAAAGAAUAAAAAAAwADQAAAAAADQAMAAAAAAAMAA0AAAAAABUAFAAAAAAAFQAWAAAAAAAVABYAAAAAAAMAAgAAAAAAAwAEAAAAAAADAAQAAAAAAA4ADwARAAAADgARAA0AAAAOAA0AAAAAAAoAGwAJAAAACgAJABsAAAAJAAgACgABAAUACQAAAAAABQAJAAEAAAAFAAEAAAAAABwAGwAAAAAAHAAbAAAAAAAcABsAAAAAABcAGAAAAAAA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kACRAJIAkwCUAJUAlgCXAJgAmQCaAJsAnACdAJ4AnwCgAKEAogCjAKQApQCmAKcAqACpAKoAqwCsAK0ArgCvALAAsQCyALMAtAC1ALYAtwC4ALkAugC7ALwAvQC+AL8AwADBAMIAwwDEAMUAxgDHAMgAyQDKAMsAzADNAM4AzwDQANEA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkA6gDrAOwA7QDuAO8A8ADxAPIA8wD0APUA9gD3APgA+QD6APsA/AD9AP4A/wAAAQEBAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QE1ANIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+Af8BAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CDwIQAhECEgITAhQCFQIWAhcCGAIZAhoCGwIcAh0CHgIfAiACIQIiAiMCJAIlAiYCJwIoAikCKgIrAiwCLQIuAi8CMAIxAjICMwI0AjUCNgI3AjgCOQI6AjsCPAI9Aj4CPwJAAkECQgJDAkQCRQJGAkcCSAJJAkoCSwJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAoYChwKIAokCigKLAowCjQKOAo8CkAKRApICkwKUApUClgKXApgCmQKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLoAukC6gLrAuwC7QLuAu8C8ALxAvIC8wL0AvUC9gL3AvgC+QL6AvsC/AL9Av4C/wIAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPDA8QDxQPGA8cDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD1APVA9YD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPkA+UD5gPnA+gD6QPqA+sD7APtA+4D7wPwA/ED8gPzA/QD9QP2A/cD+AP5A/oD+wP8A/0D/gP/AwAEAQQCBAMEBAQFBAYEBwQIBAkECgQLBAwEDQQOBA8EEAQRBBIEEwQUBBUEFgQXBBgEGQQaBBsEHAQdBB4EHwQgBCEEIgQjBCQEJQQmBCcEKAQpBCoEKwQsBC0ELgQvBDAEMQQyBDMENAQ1BDYENwQ4BDkEOgQ7BDwEPQQ+BD8EQARBBEIEQwREBEUERgRHBEgESQRKBEsETARNBE4ETwRQBFEEUgRTBFQEVQRWBFcEWARZBFoEWwRcBF0EXgRfBGAEYQRiBGMEZARlBGYEZwRoBGkEagRrBGwEbQRuBG8EcARxBHIEcwR0BHUEdgR3BHgEeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJAEkQSSBJMElASVBJYElwSYBJkEmgSbBJwEnQSeBJ8EoAShBKIEowSkBKUEpgSnBKgEqQSqBKsE/QGsBP4BrQSuBK8EsASxBLIEswS0BLUEtgS3BLgEuQS6BLsEvAS9BL4EvwTABMEEwgTDBMQExQTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNYE1wTYBNkE2gTbBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BAAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFKAUpBSoFKwUsBS0FLgUvBTAFMQUyBTMFNAU1BTYFNwU4BTkFOgU7BTwFPQU+BT8FQAVBBUIFQwVEBUUFRgVHBUgFSQVKBUsFTAVNBU4FTwVQBVEFUgVTBVQFVQVWBVcFWAVZBVoFWwVcBV0FXgVfBWAFYQViBWMFZAVlBWYFZwVoBWkFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFkwDjAZQAeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWbBZwFnQWeBZ8FoAWhBaIFowWkBaUFpgWnBagFqQWqBasFrAWtBa4FcASvBXEEsAWxBbIFswW0BbUFtgW3BbgFuQW6BbsFvAW9Bb4FvwXABcEFwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXkBeUFgAHmBYEB5wXoBekF6gXrBewF7QXuBe8F8AXxBfIF8wX0BfUF9gX3BfgF+QX6BfsF/AX9Bf4F/wUABgEGAgYDBgQGBQYGBgcGCAYJBgoGCwYMBg0GDgYPBhAGEQYSBhMGFAYVBhYGFwYYBhkGGgYbBhwGHQYeBh8GIAYhBiIGIwYkBiUGJgYnBigGKQYqBisGLAYtBi4GLwYwBjEGMgYzBjQGNQY2BjcGOAY5BjoGOwY8Bj0GPgY/BkAGQQZCBkMG0QEzADUARAZFBkYGRwZIBkkGSgZLBkwGTQZOBk8GUAZRBlIGUwZUBlUGVgZXBlgGWQZaBlsGXAZdBl4GXwZgBmEGYgaSBZEFYwZkBmUGZgZnBmgGaQZqBmsGbAZtBm4GbwZwBnEGcgZzBnQGdQZ2BncGeAZ5BnoGewZ8Bn0GfgZ/BoAGgQaCBoMGhAaFBoYGhwaIBokGigaLBowGjQaOBo8GkAaRBpIGkwaUBpUGlgaXBpgGmQaaBpsGnAadBp4GnwagBqEGogajBqQGpQamBqcGqAapBqoGqwasBq0GrgavBrAGsQayBrMGtAa1BrYGtwa4BrkGuga7BrwGvQa+Br8GwAbBBsIGwwbEBsUGxgbHBsgGyQbKBssGzAbNBs4GzwbQBtEG0gbTBtQG1QbWBtcG2AbZBtoG2wbcBt0G3gbfBuAG4QbiBuMG5AblBuYG5wboBukG6gbrBuwG7QbuBu8G8AbxBvIG8wb0BvUG9gb3BvgG+Qb6BvsG/Ab9Bv4G/wYABwEHAgcDBwQHBQcGBwcHCAcJBwoHCwcMBw0HDgcPBxAHEQcSBxMHFAcVBxYHFwcYBxkHGgcbBxwHMwAdBzQAHgcfByAHIQciByMHJAclByYHJwfJAigHKQcqBysHLActBy4HLwcwBzEHMgczBzQHugQ1BzYHNwc4BzkHgwM6B4QDOwc8Bz0HPgc/B0AHQQdCB0MHRAdFB0YHRwdIB0kHSgdLB0wHTQdOB08HUAdRB1IHUwdUB1UHVgdXB1gHWQdaB1sHXAddB14HXwdgB2EHYgdjB2QH4gGUAOMBZQdmB2cHaAdpB2oHawdsB20HbgdvB3AHcQdyB3MHdAd1B3YHdwd4B3kHegd7B3wHfQd+B38H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VVUVQHd3F0CamRlAvLsbQLLKwTC4H609ZRgKs0A+z7G4H609HXEKs3bYETK5H609RycHsyJLHjK3H609EVgMs+yw27G5H609udgHs5PLwrG3H609ggkNs/bxCTK3H609a0S6MwAAkDC5H609AIAHs+ywbbK5H609cTEIsyMoCbC6H609pvy9MwwFkzK5H6093eshtFd/ADG6H609IHIhtEWW9LG7H60976cCs5PLwrG3H609ggkNs8wRGDK4H609rL8Js+dY/jG8H609Mbz+skWW9LG7H60976cCswAAkDC5H609AIAHs0z4HzK6H6098lshtLHELbK5H609FQUIs+ywN7G5H609XKwHs3bYETK5H609RycHs2SV8zC3H609yrAMs8+9KjK1H60924gRs5PLeDK9H6099tn4slIBLzC4H609gkjvMiX2QrKwH609UV/EMtfAdLK4H609oOXtMiJLg7K9H609u5/7smSV8zC3H609yrAMs3bYETK5H609RycHs4FQDjK5H6093aTysAAAkDC5H609AIAHswAAkDC5H609AIAHs8KZgLK6H609M0f4MgAAkDC5H609AIAHs7LKwTC4H609ZRgKs7FEO7O5H609VJQJs3i4c7K6H609z60Fs0S/pS+7H609x0+/M0A+z7G4H609HXEKs2Lgea+5H609gAO9M5AKeC+4H609QWS7M+hkXjC4H609yyQJs9bjkzC5H6096LMHsyJLHjK3H609EVgMs/cUIzK6H609/64htBaRX7K6H609fZ4htCCfgjK7H609xZ0Bs+ywbbK5H609cTEIs5PLVLK1H609BZMSs+yw27G5H609udgHs8yRAbO9H609ngL9snbYiDK5H609j84Gs8wRjzK3H609Wf8Ls3bYETK5H609RycHs/wzzzC7H609B8wgtO0Gd7K6H6092kwEswOsojC5H609JnkIs041bjC5H609zjMGsyMoCbC6H609pvy9M0aoRDO5H609xhEGs0Lqc7K6H609DJkFs6LCYTC6H609weAFsyzXRbC6H609Fce+M6EfBTO5H609UGkHs/ZPVTC6H609tI0Fs5gjerK7H609pwADs0GUarK4H609pH0Js0GU87K4H609R3sLs+2XfLK4H609DzW7M5AKeC+4H609QWS7M3bYiDK5H609j84GswwFgbK5H609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AQCAPwEAgD8AAIA/AQCAPwAAgD8AAIA/AACAPwEAgD8AAIA/AACAPwAAgD8AAIA/AQCAPwAAgD///38/AACAPwAAgD8AAIA///9/P///fz///38/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA///9/PwAAgD8AAIA///9/PwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP///fz///38/AACAPwAAgD///38///9/PwAAgD8AAIA/AACAP///fz///38/AACAPwAAgD///38/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD///38/AACAPwAAgD8AAIA/AACAP///fz8AAIA///9/P///fz8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD/630m9CGecPeX8U7sI4Em9AmecPb0AVLvz30m99WacPbMAVLsJ4Em9+GacPZMAVLsI4Em98macPXgAVLv030m982acPaP/U7vi30m9AGecPQUBVLve30m9AGecPQYAVLv/30m9/GacPfP/U7sk4Em97GacPYT/U7v830m9BWecPWgBVLv830m96macPav/U7sG4Em98GacPXUAVLsI4Em9AmecPb0AVLsI4Em972acPXABVLv430m99GacPaIAVLsl4Em9+WacPeEAVLsC4Em97GacPewAVLv/30m9+2acPVEAVLu630m9/WacPYgBVLsz4Em952acPRQAVLv830m96macPen/U7vM30m9/GacPaEBVLvx30m97macPZcAVLv330m99WacPSQAVLsE4Em9/2acPXcAVLv430m99GacPaIAVLsA4Em99macPZ0AVLvv30m98macPSkAVLv330m98GacPZAAVLv130m982acPSEAVLv230m982acPZ3/U7vt30m9+GacPUYAVLvz30m982acPaoAVLvy30m972acPZgAVLvv30m992acPb3/U7v430m9+WacPbb/U7vt30m96WacPYgAVLsI4Em9AmecPb0AVLv330m962acPX4AVLve30m912acPVUAVLsX4Em9/WacPc8AVLsG4Em98GacPXUAVLsP4Em9AGecPaYAVLvv30m9CmecPREAVLv330m99WacPaL+U7sG4Em972acPXcCVLsV4Em9BmecPcICVLv430m99GacPaIAVLv430m99GacPaIAVLsG4Em98GacPXUAVLs34Em962acPfv/U7vA30m98macPYwBVLv630m99macPaUAVLvv30m98GacPZv/U7vz30m99WacPan+U7sT4Em97GacPUgAVLvr30m97WacPRj/U7v130m982acPSEAVLsP4Em95macPTkBVLsN4Em99WacPf0AVLv830m992acPakAVLv930m982acPZD/U7v130m9/macPdgBVLvo30m95macPYcAVLsG4Em98GacPXUAVLvz30m9/2acPd0AVLsW4Em97WacPckAVLvg30m9/2acPQEBVLv830m99WacPaEBVLsA4Em9+2acPa8AVLvp30m97WacPZn+U7vs30m9AWecPfMAVLv630m982acPZ4BVLteO5O946olPstbhD4KHHM/ajWSvcfJIz7ybYQ+aDBzP/sfj71oIB4+06OEPlVscz8OGYq9pucUPgD5hD5QyXM/GICDvQ/RCD7hY4U+izp0P9H/d71bL/Y9q9aFPkWvdD/Y8mi9N7DaPbBChj6qF3U/NaFbvXVjwj1mnIY+hGl1P+ZtUb3VzK89ZN2GPpChdT9aJku9q12kPc0Dhz45wXU//g9JvQWRoD1NEIc+R8t1P/UPSb0DkaA9TRCHPkfLdT/+D0m9A5GgPU4Qhz5Fy3U/+w9JvQORoD1NEIc+Rct1P+sPSb0DkaA9ThCHPkXLdT/vD0m9A5GgPU8Qhz5Fy3U/ARBJvQeRoD1NEIc+R8t1P/wPSb0DkaA9ThCHPkXLdT8AEEm9B5GgPU0Qhz5Hy3U/EBBJvQORoD1PEIc+Rct1P/sPSb0EkaA9TxCHPkXLdT/7D0m9BJGgPU0Qhz5Hy3U//A9JvQORoD1OEIc+Rct1P/gPSb0EkaA9ThCHPkXLdT/1D0m9A5GgPU4Qhz5Fy3U/AxBJvQKRoD1OEIc+Rct1P/oPSb0DkaA9TRCHPkXLdT/6D0m9BJGgPU4Qhz5Fy3U//Q9JvQGRoD1OEIc+Rct1P/gPSb0DkaA9TxCHPkXLdT/5D0m9CZGgPU4Qhz5Fy3U//A9JvQiRoD1OEIc+Rct1P/4PSb0FkaA9TRCHPkXLdT/+D0m9A5GgPU4Qhz5Fy3U/+A9JvQSRoD1NEIc+Rct1P/sPSb0FkaA9ThCHPkXLdT/4D0m9BJGgPU4Qhz5Fy3U//A9JvQSRoD1NEIc+Rct1P/oPSb0EkaA9TxCHPkXLdT/4D0m9A5GgPU8Qhz5Fy3U/+g9JvQWRoD1PEIc+Rct1P/wPSb0DkaA9ThCHPkXLdT8UJ3697dqjPQVYhz6Hh3U/H/m0vSxoqz0foYc+XOF0P4Ex+L0eGLY94YiHPrDZcz+rziG+PMPDPfrThj6UZXI/NCxKvuyp1D2WSoU+MXxwPzkddL5Tcek9WKmCPsUZbj9PyY2+CuDhPey3ej7YL2w/41qhvtQt1z1IUGk+hU9qP55ltL7+09U9J7xMPmWFaD/wI8u+JNsAPjN+0T3ESmc/nmW0vv/T1T0nvEw+ZYVoP0r/xr4En9s95TQsPrZHZj9I/8a+B5/bPeg0LD63R2Y/S//GvgWf2z3mNCw+tkdmP0n/xr4Fn9s95DQsPrZHZj9I/8a+B5/bPec0LD63R2Y/S//GvgWf2z3nNCw+tkdmP0n/xr4Fn9s96DQsPrZHZj9O/8a+B5/bPeY0LD63R2Y/n2W0vgDU1T0qvEw+ZYVoP/Ujy74k2wA+Mn7RPcNKZz+fZbS++tPVPSq8TD5lhWg/7Ci1vm/r1T3SfUs+j3BoPxjdt77JddY93M1GPo0naD/+bru+7lvXPeqQQD6PwWc/jEG/vlKK2D2W2zk+zkxnPwXbwr6M29k9PIUzPovXZj8Et8W+6wvbPUB5Lj5FdWY/Sf/GvgWf2z3lNCw+tkdmP59ltL7709U9LrxMPmWFaD/wI8u+JdsAPjB+0T3ESmc/n2W0vvzT1T0nvEw+ZYVoP/3/fz8AAIA/+f9/P///fz8CAIA///9/P/v/fz///38/+/9/P///fz8BAIA///9/P/z/fz8AAIA/+v9/PwEAgD8BAIA///9/P/3/fz8AAIA//P9/P///fz8AAIA/+v9/P/z/fz/9/38/+/9/P///fz8AAIA/AQCAP///fz/9/38/+P9/P///fz/9/38///9/P///fz8AAIA///9/PwIAgD8CAIA///9/P/v/fz/9/38/+/9/P///fz8CAIA///9/P///fz8AAIA///9/PwIAgD8DAIA/AQCAPwEAgD///38///9/P///fz8CAIA///9/P///fz8AAIA///9/P///fz///38/AACAP///fz///38///9/PwIAgD8AAIA///9/P///fz8AAIA///9/P/z/fz8AAIA///9/P///fz8AAIA///9/P///fz/9/38///9/PwEAgD8AAIA///9/P/v/fz///38///9/P/7/fz8AAIA///9/P///fz8AAIA///9/P///fz8AAIA///9/P///fz8AAIA///9/P///fz8AAIA/+/9/P///fz/9/38///9/P/z/fz8AAIA///9/P///fz8BAIA///9/PwIAgD8DAIA///9/P///fz8AAIA/+/9/P///fz8AAIA///9/P///fz8AAIA///9/P/z/fz8AAIA//P9/PwEAgD8AAIA///9/PwIAgD8AAIA/AQCAP/v/fz/5/38/9/9/PwEAgD8DAIA///9/P///fz/9/38//f9/PwEAgD8AAIA//f9/P///fz8AAIA///9/PwEAgD8BAIA/AgCAPwEAgD8CAIA/AQCAP/3/fz///38///9/P/3/fz8AAIA/+/9/P/n/fz/9/38//P9/P/n/fz/9/38/+/9/PwEAgD8AAIA///9/P/7/fz8AAIA//f9/P/7/fz8BAIA///9/P/z/fz///38/+v9/PwEAgD8BAIA/AACAP/7/fz///38/+/9/P///fz8AAIA//P9/PwEAgD8CAIA/AACAP///fz///38//f9/PwEAgD8AAIA/AQCAPwEAgD8BAIA/AQCAP/v/fz/8/38/+f9/P/7/fz8CAIA///9/PwEAgD8CAIA/AQCAP/3/fz8BAIA///9/PwEAgD8AAIA/AQCAP/v/fz/9/38///9/P///fz8BAIA/AQCAP0BINLDuDa4+PKgnLwBAC7LuDa4+AACAL3GY6THuDa4+pMETMABAC7LuDa4+AACAL2D7ATLwDa4+6C0HMWaew7LvDa4+M9FosiHlzjHsDa4+s4f6sAG+7jHuDa4+J4yAMmvyxLLvDa4+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/v9/P/3/fz8BAIA/AACAP/v/fz8AAIA/AgCAPwAAgD8CAIA/OaQsMlhydj5jJqSzEVi8sVRydj6n97Oz76eDsVxydj5ZCIqzIbDYsVBydj5O78izGscOs1xydj4nd3+zHFKmslhydj6d2ZmzxYQls1lydj4ggUm0MXgeMlRydj4KHrmzAACgsVhydj4AAJ+zign7Mldydj5/BCozQdA6Mlxydj68Lo+zwFdNr1dydj4Jnj4z76eDsVxydj5ZCIqz0SI5M1Nydj7XkOsyYRmRsldydj7Tm1K0uyZBs1lydj66YEi0m4yksllydj60m5SzOaTUMlhydj7FTKmzalqds1hydj5YHAa0Hllos1Zydj5xgBiyumlqM1pydj63HamzHFIDtFhydj7WmWuz/P2Gs1tydj5wWXWztUmXr1Zydj5WY1az+NORsVpydj4shJSzBeH9sFpydj4wvmqzHFJOslhydj7PbJyzXnYDMlhydj53S8Oz42Qcs1hydj7UiLKzdbMfsllydj65W9mzyke+Mldydj7Dr82zzNLBMllydj7wM8OznZOqMlhydj7jNeqzdjUWLldydj6ZqUaztlsislhydj4oSt2zdz4jslhydj6jmd6zJzt9M1hydj7EnmqzOaRoM1hydj6LmbOzEVi8sVRydj6n97OzoO0WL1hydj6va0GzEVi8sVRydj6n97OzAACgsVhydj4AAJ+zoO0WL1hydj6va0GzHFKmslhydj6d2ZmzNxnRMlZydj6ZyLOzy8uJM1lydj6YJbKyyIhnM1dydj7vJrqzQ9YDNFhydj61wQyzy8uJM1lydj6YJbKym4yGs1xydj6d3WqzXnZns1dydj5GIt2xHFKIs1hydj51ZoqzEVi8sVRydj6n97OzCCyusVZydj7Ue6mzy8uJM1lydj6YJbKyAACgsVhydj4AAJ+zAACgsVhydj4AAJ+zOaRoM1hydj6LmbOz2m6pMVdydj68romyCCyusVZydj7Ue6mz3bBls1lydj44lNWwMbX+M1xydj6M4mmzs0clMFpydj4T1SmzHFKIs1hydj51Zoqz9lRxM1xydj5aD4+zSqRtsVhydj52bY+zFGOUs1Rydj5FqN2zOaRoM1hydj6LmbOzHFKIs1hydj51ZoqzqneIM1Zydj6ODPGybGFVM1pydj7UBuqzXnY/M1lydj7uFhi0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/P9/P///fz8AAIA///9/PwAAgD8AAIA/+/9/PwAAgD/+/38//f9/PwAAgD8AAIA//v9/P///fz8AAIA///9/PwAAgD8AAIA//v9/P///fz8AAIA/+/9/PwAAgD8AAIA//v9/PwAAgD8AAIA/+/9/PwAAgD8AAIA//v9/PwEAgD/+/38//f9/PwAAgD8AAIA//f9/P///fz///38//v9/PwAAgD8AAIA//P9/PwAAgD8AAIA///9/PwIAgD8BAIA//P9/P///fz/+/38//P9/P///fz///38//P9/PwEAgD///38///9/PwEAgD8AAIA///9/PwEAgD8AAIA//v9/PwEAgD8AAIA//f9/PwEAgD///38//v9/PwIAgD8AAIA//f9/PwAAgD///38///9/PwEAgD8AAIA//f9/PwAAgD///38//f9/PwEAgD8AAIA//v9/PwEAgD8AAIA//v9/PwEAgD8AAIA//v9/PwEAgD8AAIA//P9/P///fz///38//v9/PwEAgD8AAIA//v9/PwEAgD///38///9/PwEAgD8AAIA//P9/PwEAgD/+/38//f9/PwAAgD8AAIA///9/PwEAgD8AAIA///9/PwEAgD8AAIA///9/PwEAgD8BAIA///9/PwIAgD8AAIA///9/PwEAgD8AAIA//f9/PwAAgD///38//P9/PwEAgD8AAIA//f9/PwEAgD8AAIA//f9/PwAAgD8BAIA//f9/PwEAgD8AAIA//P9/PwEAgD///38//f9/PwAAgD8AAIA/+/9/PwAAgD///38//v9/P///fz///38//v9/P/7/fz///38//P9/PwEAgD8AAIA//P9/PwAAgD/+/38/+/9/PwAAgD///38//f9/PwEAgD/+/38//v9/PwEAgD8AAIA///9/PwAAgD///38//v9/PwEAgD8AAIA//f9/PwEAgD8AAIA//v9/PwEAgD/+/38//f9/PwAAgD8AAIA///9/PwEAgD8AAIA//f9/PwIAgD8BAIA//f9/P///fz///38//v9/PwEAgD///38//f9/PwAAgD8AAIA//f9/PwEAgD8AAIA/p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5p9gHuAAAAAAaoWI5AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/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/v9/P/z/fz/+/38/+v9/P/n/fz8AAIA///9/P/b/fz///38//P9/P/n/fz///38/+f9/P/n/fz/+/38//v9/P/3/fz8AAIA///9/P/3/fz8AAIA/AACAP/3/fz8CAIA/+/9/P/z/fz8CAIA///9/P/v/fz8AAIA///9/P/v/fz8CAIA/+/9/P/v/fz/9/38//v9/P/3/fz///38/AACAP/f/fz8BAIA/AACAP/v/fz8BAIA/+v9/P/r/fz/+/38//v9/P/n/fz8AAIA/+/9/P/j/fz///38///9/PwAAgD8BAIA//v9/P/z/fz/+/38/+v9/P/b/fz/8/38//P9/P/n/fz///38//v9/P/v/fz8AAIA/AACAP/v/fz8AAIA//P9/P/v/fz/+/38///9/P/3/fz8CAIA/+v9/P/v/fz/+/38//v9/P/v/fz///38///9/P/v/fz8AAIA//f9/P/r/fz/+/38//P9/P/v/fz8AAIA//P9/P/z/fz8AAIA///9/P/z/fz8BAIA/AACAP/v/fz/+/38//f9/P/r/fz8AAIA//v9/P/n/fz/9/38//P9/P/n/fz/9/38///9/P/v/fz8AAIA/AACAP/3/fz8AAIA//P9/P/z/fz8AAIA///9/P///fz8AAIA/+P9/P/X/fz///38///9/P/v/fz8AAIA///9/P/r/fz8BAIA///9/P/z/fz8AAIA/+v9/P/n/fz///38//f9/P/j/fz8BAIA/+/9/P/f/fz///38/+/9/P/j/fz8AAIA///9/P/v/fz8AAIA//v9/P/3/fz///38///9/P/n/fz8AAIA///9/P/3/fz8BAIA//v9/P/v/fz///38//f9/P/r/fz8AAIA///9/P/z/fz8BAIA///9/P/z/fz8BAIA/+v9/P/n/fz8AAIA/93NssYBb0T5nMNowSItksYBb0T4k8mcwAABksYBb0T4AAICvuHRjsYBb0T4S+bOwQGoNs4Bb0T7ITVSxyiicsoBb0T4dMrGw1LSTsoBb0T5VK4iyX6uxsYBb0T7yzPEyNt4Vs4Bb0T6upt8yNqYGMn9b0T6DVnczJIG5sIBb0T5nMPyy4OUOs4Bb0T4g62uwCLetsYBb0T58aesylVFGMoBb0T46ZGIw5AqvsoBb0T4w5Psyt5+1sYBb0T5nMPgyldHiMoBb0T4dMgEx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HrwzvTCDnbtebAA8G75/P75txjz0MyQ81i5aPKvjfz94/Ba9RHwqOy1BNDxFz38/aL4NvYTAZzuHhCA8MdV/P1th8rw7irg7OSsXPHzffz+Q4L68FlEHPFe/EDxq6X8/LkiIvNbsNDxPYQg8q/B/P0OHKbw25l88lt3yO5L0fz9jjK67nAqBPEWVuzve9X8/5zJJu8GUiDz0+yk7XfZ/P/FrKL3WKBu9S+6vvFyKfz9Wmcg8u25Ovd8wzzr3mH8/A2kcvXzePb0xTvy7wod/P///fz/+/38/AACAP///fz///38/AACAP/3/fz/8/38///9/PwAAgD8AAIA/AACAP/7/fz/9/38/AACAP///fz/9/38/AACAP/7/fz/9/38/AACAP/7/fz/+/38/AACAP///fz///38/AACAPwAAgD/9/38/AACAP///fz/+/38/AACAP/z/fz/+/38//v9/PwEAgD/+/38/AACAP/7/fz///38/AACAP///fz8AAIA/AACAPwAAgD///38/AACAP/7/fz/9/38//v9/P/3/fz/9/38///9/PwAAgD///38///9/P/7/fz/+/38/AACAP/7/fz/+/38/AACAPwAAgD///38/AACAP///fz/+/38/AACAP/7/fz/+/38//v9/P/3/fz///38/AACAP/7/fz/+/38/AACAP///fz///38///9/P///fz/+/38///9/P/7/fz///38/AACAP/7/fz/8/38/AACAPwAAgD/+/38/AACAP/7/fz8AAIA/AACAP///fz///38/AACAP/3/fz8AAIA///9/P///fz/+/38/AACAP///fz/+/38/AACAP///fz/+/38/AACAP/7/fz/8/38///9/P/7/fz/9/38/AACAP/3/fz/8/38///9/PwAAgD/+/38/AACAP/7/fz///38/AACAP/3/fz/9/38/AACAP///fz/+/38/AACAP/7/fz///38///9/P///fz/+/38/AACAPwAAgD///38/AACAP/7/fz/9/38/AACAP/7/fz/+/38/AACAP///fz///38/AACAP/7/fz/+/38///9/P/7/fz/9/38/AACAP/v/fz/+/38///9/P/3/fz/8/38//v9/P///fz/+/38/AACAP/z/fz/+/38/AACAP/z/fz/+/38///9/P/7/fz8AAIA/AACAP/7/fz8AAIA/AACAP/z/fz8AAIA/AACAP/7/fz/+/38/AACAP/7/fz///38/AACAPwAAgD8AAIA/AACAP/3/fz/+/38/AACAP///fz///38/AACAP///fz/+/38///9/P/z/fz/7/38//v9/P/7/fz///38/AACAP/3/fz/9/38/AACAP/7/fz///38/AACAP///fz/+/38///9/P/3/fz/9/38///9/P///fz///38/AQCAP/7/fz/+/38/AACAP+5Ylb0gS508e9ZOuuxYlb0gS508k9ZOuu5Ylb0AS508nNZOuuxYlb0gS508o9ZOuuxYlb0gS508o9ZOuuxYlb1AS508otZOuuxYlb1AS508gtZOuu1Ylb0gS508j9ZOuu1Ylb0gS508j9ZOuvBYlb0BS508ddZOuu5Ylb0gS508i9ZOuu5Ylb0gS508i9ZOuu5Ylb0gS508i9ZOuu5Ylb0gS508i9ZOuu5Ylb0gS508i9ZOuu5Ylb0gS508i9ZOuu5Ylb0gS508i9ZOuu5Ylb0gS508i9ZOuu5Ylb0gS508i9ZOuu5Ylb0gS508i9ZOuu5Ylb0gS508i9ZOuu5Ylb0AS5083NZOuuxYlb1AS508AtZOuu5Ylb0AS508nNdOuu1Ylb0gS508j9VOuu1Ylb0oS508jNZOuu1Ylb0gS508j9ZOuu9Ylb0kS508htVOuu1Ylb0gS508j9VOuu5Ylb0gS508i9dOuu1Ylb0gS508D9ZOuuxYlb0fS508E9dOuu1Ylb0fS508j9dOuu9Ylb0hS508iNZOuu9Ylb0hS508iNhOuu1Ylb0QS508ldZOuu1Ylb0wS508idROuu1Ylb0gS508j9ZOuu9Ylb0hS508iNdOuvBYlb0BS508FddOuupYlb0/S508idZOuu9Ylb0hS508eNZOuu5Ylb0gS508q9ZOuu9Ylb0gS508SNZOuu1Ylb0gS508T9ZOuu5Ylb0gS508C9dOuuxYlb1gS508ddZOuu5Ylb0AS508mNVOuu1Ylb1gS508ctZOuu9Ylb0AS508mNdOuu5Ylb0gS508i9dOuu1Ylb0gS508j9ZOuu5Ylb0gS508i9dOuuxYlb1gS508ddhOuuxYlb1gS508ddhOuuxYlb1gS508ddhOuuxYlb1gS508ddhOuuxYlb1gS508ddhOuuxYlb1gS508ddhOuuxYlb1gS508ddhOuuxYlb1gS508ddhOuu5Ylb0gS508i9dOuu1Ylb0gS508j9ZOuu5Ylb0gS508i9dOuuxYlb1gS508ddVOuu1Ylb0gS508j9ZOuu9Ylb0gS508iNVOuu1Ylb0gS508j9ZOuu5Ylb0gS508i9dOuu5Ylb1AS508ftdOuuxYlb1gS508ddhOuu5Ylb0gS508i9dOuu1Ylb0gS508j9ZOuu5Ylb0gS508i9dOuo/Vfz/5PQW97JxivNKi3LsB038/PvUQvZf1LbwsvjO7mb1/P81KNL250mO6URMZPJltfz84Mm69d294PGwD7zwUr34/ysacvb83FT0n42I9wV19Pwpfx71rTnk9w9muPYmHez+Xl/G9kXOvPYDG7D14dHk/9ikLvoNB3T0dCRI+l4p3Pw/3GL7x5QA+cLwnPuIkdj8BTSG+umkNPkUgNj50enU/tvwjvqfdEz7j2jw+s0B1P/LnI76QwBY+G1E/PlEadT9M0CO+KqoYPm7yQD74A3U/Vasjvs3QGT5K7UE+cvp0P1ptI766ZRo+jWtCPnf6dD9YCCO+w5kaPpeWQj5sAHU/3GkivoCiGj48nEI+6Ad1P3d3Ib4iwxo+LbVCPqEKdT/MBiC+GV0bPvkzQz5q/XQ//MgdvpMbHT6jqUQ+6cR0P03+Gb5IkSE+sWpIPj7RcT/lrg++B7wvPjfedz7tYXA/plAQvrsYLz4FrYY+I1JvP3NHEr41dy4+qbqNPoeEbj9gxxS++b0tPruhkj7w6W0/5msXvtXdLD71GJY+QHltPx/2Gb7jyis+PYeYPpcsbT9tNxy+WHoqPrstmj4FAG0/EwgevijhKD40OZs+5/BsPzFCH74p8yY+m8qbPpH9bD81vh++QqIkPnj7mz6/s20/fdUdvp+kHz6kaZk+tG9vPy9gGL60NxY+PzeSPmnicT/f0Q++vvEIPtQZhz6DunQ/KIkEvkyl8D3cXnE+f6d3P6jM7b2cvck9XTlPPmteej+HvM6972qePSlOKT50oHw/QxutvTmZYD2dpAE+IkN+P+Koir1kRAM9VkC2Pfs4fz+9ZVS9bWEvPO3maT1gk38/eFEjvX0PuLu8big97EB/P8h/Er3a6Tu83wiIPfqcfT8kQii9D52UvIO1Az6D/3k/feZWvS/LwrxRZVQ+JxJ0P8wAiL3CNfK82+uVPrjJaz/rhqa9l20Tvdshwj48eGE/yK3EvVPyMb2WZuw+PtFVP1OL4L0ms1a92ksJP7LqST+8evi9bqCCva5oGT+WZj8/KFUFvq2uor3cdSU/Bqo5P2ZhCb5/Vte928MqP9Wpcz8YcGK91ZYivotTgz4+P3K/7F80vbrPRj6VdYI+EeRXP7y0yb1gpde9RYgEPwacVz8qYdO9rNvZvcGyBD92dlc/4vjWvX+S3r1juQQ/QWBXP6bE170on+S9Ia8EP2dNVz9oute9LFrrveeeBD+rM1c/UYHYvdNE8r3KkQQ/zAZXP4QO3L2E2vi9bZIEP2axVj9EquW9A1D+vS2yBD/cgDY/wcoaviVBBL4DKCw/a3JzPw2KO72UESu+dDKDPigcc7/Jvz2967I4Ph8CgT51SnW/vCEbvaNrOD4ydGA+9FJ5vzPXkbwYhzY+OpMOPkAAfL93HRg8duExPlpI3jwdy3o/ACojvQFzKb7Vo9k99CJ0P2Hvj71sEh2+6xx/PnLNZz8ZEMa9t3gNvoVlxz5aqVY/7frrvexS+L0+wAQ/I2g4P8yr+r3mks29quEsP7/fdj8I6pm8rgSBvYU9gz5jgXW/UKXVu1PRCz3T/48+1/x/PwUAgD/l/38/0/x/PwMAgD/e/38/0vx/PwQAgD/g/38/1fx/PwQAgD/j/38/1Px/PwQAgD/l/38/0/x/PwQAgD/m/38/2Px/PwUAgD/i/38/0vx/PwMAgD/h/38/1Px/PwQAgD/l/38/0/x/PwIAgD/d/38/1Px/PwMAgD/h/38/0vx/PwIAgD/h/38/1Px/PwMAgD/f/38/1fx/PwMAgD/i/38/0fx/PwMAgD/i/38/0vx/PwMAgD/h/38/1fx/PwMAgD/i/38/0/x/PwMAgD/g/38/0/x/PwIAgD/g/38/0/x/PwIAgD/f/38/1fx/PwMAgD/i/38/1fx/PwUAgD/i/38/0vx/PwMAgD/h/38/0fx/PwQAgD/g/38/z/x/PwIAgD/i/38/0/x/PwQAgD/j/38/1vx/PwMAgD/h/38/0/x/PwEAgD/g/38/0fx/PwMAgD/g/38/0vx/PwIAgD/i/38/1/x/PwMAgD/i/38/0fx/PwIAgD/g/38/0Px/PwQAgD/h/38/0/x/PwMAgD/i/38/0vx/PwMAgD/f/38/1Px/PwIAgD/i/38/1fx/PwMAgD/k/38/0fx/PwIAgD/e/38/1fx/PwMAgD/j/38/1fx/PwMAgD/f/38/1fx/PwMAgD/f/38/0fx/PwMAgD/h/38/0/x/PwIAgD/h/38/1/x/PwUAgD/l/38/1fx/PwMAgD/j/38/0/x/PwMAgD/i/38/1/x/PwQAgD/j/38/0/x/PwMAgD/h/38/0/x/PwQAgD/j/38/1vx/PwQAgD/h/38/0vx/PwMAgD/j/38/0/x/PwIAgD/e/38/1fx/PwQAgD/i/38/1Px/PwQAgD/j/38/0/x/PwMAgD/j/38/1Px/PwQAgD/k/38/0/x/PwUAgD/m/38/1fx/PwMAgD/l/38/1fx/PwUAgD/m/38/0/x/PwMAgD/h/38/1fx/PwMAgD/j/38/1fx/PwMAgD/k/38/0vx/PwIAgD/g/38/1/x/PwQAgD/i/38/1Px/PwMAgD/f/38/1fx/PwMAgD/i/38/1fx/PwQAgD/h/38/0/x/PwQAgD/j/38/0fx/PwUAgD/k/38/0fx/PwIAgD/g/38/1fx/PwQAgD/l/38/1Px/PwQAgD/j/38/0fx/PwMAgD/e/38/0/x/PwQAgD/j/38/ODkRsrXI3z22+i00m4L/sa3I3z1jGzQ0mr64sqPI3z0TRW8zqFxfMLXI3z1t/yw08tZbsafI3z2pVTg03dQJMarI3z1tO3Y09zl9sanI3z3G0zY0YyaBs6nI3z3Rz1w0TFcDtK/I3z12uE40raaKs6/I3z3cNTg0Szxesa3I3z3qqUM052MFtLHI3z2qXD00d40BtK7I3z1SU180pCIGtK3I3z2UxS80ze1usa7I3z346EI0+o4CtKzI3z1L+1A0llmQsavI3z3FOTU0Qwq5sbDI3z0sjTE0AACgsa3I3z0A0DM0grGwsa/I3z0dTjI0jyrzM63I3z2bUh80z1gEtK3I3z1wYEA09zl9sanI3z3G0zY0ojxcM7XI3z1Tphc0VAKBsbXI3z1IfE00PGM9Ma3I3z35BjM06NHSMqnI3z3A1SM0fk6PsavI3z3jUTU0eJNfMq3I3z3G8VE0JhKZMK3I3z32dnM0h5/7Ma3I3z0fihI0YSyksa3I3z2HbzM0K8ilsqzI3z3D8jU0nGK7sKzI3z2R51Q0zJoGs63I3z1oCFc0MIUXs7HI3z1W8DM0BGPBsbHI3z06zDA02uEAsq3I3z0sHBQ0PGM9Ma3I3z35BjM0dNpGsbXI3z3xYy00yvUtsqXI3z2ToDo05hSQsa3I3z1wwzM0aKwPsq3I3z2DNDQ0z1hPsq3I3z0HmTQ0tcMxsqzI3z2y0OgzHfYHM6rI3z1RF3M0RpGBM67I3z1v72w0N3VCsrDI3z0myeIzRpGBM67I3z1v72w0hDiNs5zI3z2ovwY0fBOpMZ7I3z2/Rn80nrFqM63I3z3Ihy00KoGQsbHI3z0kpkA0BXIItLDI3z3WqB00O4uRs7DI3z2eYBc052MFtLHI3z2qXD008tZbsafI3z2pVTg09zl9sanI3z3G0zY0fk6PsavI3z3jUTU0WI9gM6vI3z3YVQ80/91uM6nI3z2OizA0N3VCsrDI3z0myeIz7nM6saXI3z2M1zk0AACgsa3I3z0A0DM0bpt3NLbI3z2VpxQ0ypc7sbHI3z1CqlA0Iyu2sKvI3z22BVU0nz4/sbHI3z0OgFA0XZMRsrHI3z1nGBE0biyFs6XI3z3EH0A0BGPBsbHI3z06zDA0O4sCNKbI3z3Drmw03dQJMarI3z1tO3Y03dQJMarI3z1tO3Y0RzREvaLCRj1OkWU8CGF/P7nBVr1nf0Y97ixpPBtSfz/TVIe9U65FPQMGdDzvHH8/rty0vQtFRD3ZzoI8+at+P3538L0BRUI9NUCOPHTmfT9K8Rm+9cs/PfsXmzyWwnw/j307vmQcPT3FxKc8B1d7P0DiWL4Bkjo92siyPJfbeT9SK2++kYY4PZ0UuzxYlXg/h8d8vtI5Nz1pH8A8gb13P1qkgL55yTY9msnBPEVzdz9apIC+esk2PZnJwTxFc3c/WqSAvnrJNj2YycE8RXN3P1ikgL54yTY9lcnBPERzdz9bpIC+eck2PZrJwTxFc3c/WqSAvnrJNj2aycE8RXN3P1ikgL54yTY9lcnBPERzdz9bpIC+eck2PZjJwTxFc3c/WKSAvnrJNj2XycE8RHN3P1ukgL56yTY9msnBPEVzdz9bpIC+esk2PZrJwTxFc3c/WqSAvnnJNj2cycE8RXN3PxJ6dL77BTg9jAy9PK5CeD+wa1m+toU6PSH8sjwf1Hk/hNE4vkNVPT1Iw6Y8sHZ7P9oWF77DA0A9wAKaPCHefD/gQe69xlhCPQbUjTzI7n0/SEa2vWg5RD2EFIM88ad+P97wib1UmkU9ygh1PFcXfz+DZ1m9t3VGPaiwaTzdT38/RjREvZzCRj1MkWU8CGF/P8qzSL1uskY9VnFmPIpdfz+MF1W9doVGPRfaaDx+U38/dutnvTtARj15gmw8F0N/PxDnf7175kU9uylxPCosfz+N6I29u3tFPQ+SdjyjDn8/AjCdvR4ERT35enw8y+p+P7cFrb0WhUQ9/UuBPMLBfj/GWLy9LgdEPd4/hDxEln4/E1jJvRqaQz3av4Y8d25+PzTLz70xY0M9Ef2HPLhZfj82y8+9MWNDPRH9hzy4WX4/WTDXvZYjQz15aIk8HkF+PyMZ6L2Vj0I9M6aMPJkFfj/P+v+9bLhBPSI3kTzCqX0/UEMPvsCaQD1NCZc8+iZ9P6wvIr5XKD893jeePA1wfD+kiDm+FEY9PUMIpzxCbns/k9JWvhrBOj3KA7I8Ffh5P7pHfb5hLTc90k7APFG1dz9PHJu+jk0xPTEy1TxzoHM/Z1LgvnDqHz3mPwM9DcJlP1Ecm76QTTE9KzLVPHOgcz//CzO/v2/cPEwTLz1dgzY//wszv8Fv3DxLEy89XYM2P/8LM7/Gb9w8TRMvPV2DNj//CzO/vm/cPE8TLz1dgzY//wszv7dv3DxSEy89XYM2P/8LM7/Bb9w8TBMvPV2DNj//CzO/vW/cPFMTLz1dgzY//wszv7dv3DxVEy89XYM2P1Ecm76QTTE9KzLVPHOgcz9mUuC+bOofPeQ/Az0NwmU/URybvpBNMT0rMtU8c6BzP55Hp74Eky49TAXePP6acT/j2Mq+ZM8lPUpw9zwZsmo/mjf4vpTHGD3SfQs9zYdfP0DgEb+1CQo9FxgaPU75UT/THCO/MwX5PJI3JT0r4kQ/E4guv0Lu5DwiVCw97dU6P/8LM7+6b9w8URMvPV2DNj9PHJu+lE0xPSgy1TxzoHM/ZlLgvm/qHz3kPwM9D8JlP08cm76RTTE9KjLVPHOgcz/9/38//f9/P///fz/6/38//f9/P///fz/7/38/+v9/P/3/fz/9/38/AACAP///fz///38//v9/P/7/fz/9/38/AACAP///fz/7/38//f9/PwIAgD/7/38//f9/P///fz/9/38//f9/P///fz/6/38/+v9/P/z/fz/9/38//f9/P///fz/9/38/+/9/P///fz/8/38//v9/P///fz/9/38//v9/P///fz/4/38//f9/P/7/fz/6/38/+/9/P///fz/4/38/+/9/P/7/fz/4/38//P9/P///fz/7/38/+/9/P/7/fz/5/38/+v9/P/7/fz/6/38//f9/PwEAgD/8/38/+v9/P///fz/7/38/AACAP///fz/7/38//P9/P///fz/9/38/+f9/P/7/fz///38//f9/PwEAgD/7/38//P9/P/3/fz/7/38/+/9/P///fz/6/38//f9/P///fz/6/38/+f9/P///fz/6/38/+/9/P/7/fz/9/38/+/9/P///fz/5/38/+f9/P///fz/5/38/+v9/P/v/fz/9/38/+v9/P/7/fz///38/AACAP///fz/6/38/+/9/P/z/fz/9/38/+/9/P/z/fz/8/38/AACAP///fz/9/38//v9/P///fz/5/38/+v9/P/7/fz/7/38//f9/PwEAgD8AAIA/AgCAP///fz/8/38//P9/P///fz/7/38/+v9/P/z/fz/9/38/AQCAPwIAgD/7/38//f9/P/7/fz/8/38/+P9/P/3/fz/3/38/+/9/P///fz/9/38//P9/PwEAgD/9/38/+/9/P/7/fz/7/38//P9/P/z/fz/8/38//v9/PwEAgD/7/38//v9/P/3/fz///38//f9/PwEAgD8AAIA/AACAPwIAgD/9/38//f9/P///fz/4/38/+/9/P/3/fz///38//v9/PwEAgD/7/38//v9/P///fz///38//v9/P///fz///38//P9/P///fz/6/38/+/9/P/3/fz/9/38//P9/PwEAgD/8/38//f9/P///fz/7/38//f9/P///fz/8/38//f9/P///fz/9/38/AQCAPwIAgD/7/38/+v9/P///fz/9/38//v9/P/7/fz/9/38//v9/PwEAgD/3/38/+/9/P/7/fz/4/38/+v9/P/3/fz/7/38//P9/P/z/fz9pMlWulXZtPepW9jH//2wudXZtPaSzTTHgtiiwtXZtPU5roTKTqYawlXZtPcxZ9jGSqcawlXZtPT1b9jHPZRav1XZtPTBUhTJkqqGxlXZtPVRl9jFrj38wdXZtPXFXMzLJvAIxVXZtPbiiorCuJ+GrdXZtPeJYMzK1x/8wdXZtPQBWMzIAAJisdXZtPQC0TTGaof6xVXZtPWgvorD2MYCxdXZtPdAySLDsSVCsdXZtPeLF5jFJ2YUw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ZjYWvU6ofz8gRN06P7chPQcwFr22oH8/xszjOutVJz0LLRa9F51/P0bO4zryVSc9By0WvRedfz9Cx7C7XD0iPU7rhry5wn8/pmJ2Os7HJT3HijW90Yl/P///fz///38/AACAP///fz8BAIA/AACAPwAAgD///38/AACAPwAAgD///38/AACAP/v/fz///38/AACAPwIAgD8BAIA/AQCAPwIAgD8BAIA/AgCAPwAAgD///38/AQCAPwAAgD8BAIA/AwCAP///fz/9/38/AACAPwIAgD///38/AACAPwAAgD8BAIA/AACAPwEAgD///38/AACAPwAAgD///38//v9/PwAAgD///38//v9/PwAAgD///38//P9/PwIAgD8BAIA/AQCAP/7/fz/9/38//P9/PwEAgD///38//v9/PwAAgD8BAIA/AACAPwIAgD8AAIA/AQCAPwAAgD/7/38//P9/PwAAgD///38/AACAPwAAgD///38/AACAPwAAgD/7/38/AACAPwAAgD///38/AACAPwAAgD/+/38/AACAPwAAgD///38/AQCAPwAAgD///38//v9/P/3/fz/9/38//f9/PwAAgD///38/AACAPwAAgD///38//v9/P/7/fz///38//P9/PwAAgD///38/AACAPwAAgD///38/AACAPwIAgD8BAIA/AgCAPwAAgD///38/AACAPwAAgD///38/AgCAPwAAgD/9/38/AACAPwIAgD/9/38/AACAPwAAgD///38/AACAPwAAgD///38/AgCAPwAAgD/9/38/AACAPwIAgD8BAIA/AgCAPwAAgD8BAIA/AACAPwAAgD///38/AACAPwAAgD/+/38/AACAP/7/fz/9/38//f9/PwAAgD/+/38/AACAPwAAgD/9/38/AACAPwEAgD8AAIA/AACAPwAAgD///38/AACAP///fz/9/38/AACAPwAAgD8BAIA/AQCAPwAAgD///38/AACAPwAAgD/9/38/AACAPwIAgD8BAIA/AQCAPwAAgD///38/AACAP///fz/9/38//P9/PwAAgD8BAIA/AACAPwAAgD///38//f9/PwAAgD8BAIA//v9/PwAAgD8BAIA/AACAP/3/fz/9/38/AACAP///fz///38/AACAPwAAgD8AAIA/AACAP/7/fz/6/38/AACAPwIAgD///38/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B9pQPnJS5D1WamM/QFWhviUlij6iOKk9ivhnPz5Vob4jJYo+oDipPYn4Zz9BVaG+JSWKPqE4qT2I+Gc/QVWhviMlij6dOKk9ifhnPz5Vob4jJYo+nTipPYn4Zz9BVaG+JSWKPqA4qT2I+Gc/P1WhviIlij6aOKk9ifhnP0FVob4lJYo+oTipPYj4Zz9Raum+tkgBPu230j2DAGA/FPMuv3S80T2qmCw+avEzP5zByr4D2lA+alLkPVZqYz9APrS+ckZtPvifxD1e2WY/J6Wlvhzvfj4Ue7A9Y6doP14dob4Ro4Q+5VKpPU7PaD8iQqG+B5aHPsLJqD2qXWg/UlKhvrJAiT691ag9ERxoPylWob43/ok+BhKpPZv+Zz9BVaG+JCWKPp44qT2I+Gc/VGrpvrZIAT7tt9I9ggBgPxXzLr95vNE9rZgsPmrxMz+awcq+A9pQPmxS5D1VamM//v9/P///fz8AAIA/AACAP///fz8AAIA/AQCAP///fz8AAIA//v9/P/z/fz/9/38//v9/P/7/fz8AAIA//v9/P/3/fz/9/38/AQCAP///fz8AAIA//v9/P///fz8AAIA/AACAP///fz8AAIA//v9/P///fz8AAIA//f9/P/3/fz8AAIA//f9/P///fz/8/38/+f9/P/z/fz///38//f9/P/7/fz///38//f9/P///fz/9/38//P9/P///fz/+/38//f9/P///fz8AAIA/AACAP///fz8AAIA//v9/P/3/fz8BAIA//f9/PwAAgD/+/38//f9/P///fz/+/38/+v9/P/7/fz8AAIA//f9/PwAAgD///38//f9/PwEAgD8BAIA//f9/P/z/fz/9/38/AACAPwAAgD8AAIA//v9/P/z/fz/+/38/AACAP///fz///38//v9/PwAAgD8AAIA/AACAPwEAgD8AAIA//v9/P/7/fz///38//v9/P///fz8CAIA//v9/P///fz///38//v9/P/7/fz/9/38//v9/P/7/fz///38//v9/P///fz8AAIA/AACAP///fz///38/+v9/P/7/fz/7/38//v9/P/v/fz/8/38//v9/P/3/fz8AAIA//v9/P///fz///38//v9/P///fz8BAIA/AQCAP///fz8AAIA/AQCAP///fz/9/38//P9/P/7/fz/+/38//v9/PwAAgD8BAIA//P9/P///fz///38//v9/P/7/fz8AAIA/AQCAPwAAgD8AAIA/AACAP///fz8BAIA/+v9/P/7/fz///38//v9/P/v/fz/7/38/AQCAP///fz8BAIA//v9/PwAAgD8AAIA//v9/P/7/fz/+/38//P9/P///fz///38//f9/P///fz8AAIA//v9/P///fz8BAIA//P9/P///fz8AAIA//v9/PwAAgD8AAIA/+f9/P/z/fz/9/38//f9/P///fz8AAIA/AQCAP///fz8AAIA//v9/P/7/fz///38//v9/P///fz///38//v9/P///fz///38//v9/P/7/fz8AAIA//v9/PwAAgD8BAIA//v9/P/7/fz8AAIA//v9/P///fz/8/38//f9/P/3/fz/+/38//v9/P///fz8AAIA/+f9/P///fz/9/38/AgCAPwEAgD8BAIA/rhJsPR2IET5z9te7uRJsPS2IET519te7txJsPS2IET6V9te7rRJsPS2IET519te7tRJsPS2IET519te7rxJsPS2IET519te7tRJsPS2IET6V9te7uRJsPS2IET6l9te7tRJsPS2IET6F9te7qhJsPR2IET6z9te7uxJsPS2IET6V9te7wBJsPT2IET639te7vRJsPS2IET6V9te7thJsPR2IET5z9te7vxJsPS2IET719te7qhJsPR2IET5j9te7vRJsPS2IET7V9te7vBJsPT2IET6n9te7tRJsPS2IET6F9te7sRJsPS2IET6V9te7shJsPR2IET6T9te7qhJsPR2IET5T9te7uRJsPS2IET6B9te7rRJsPSWIET689te7sxJsPTGIET699te7wxJsPTGIET5+9te7sRJsPS2IET5V9te7vxJsPS2IET719te7tRJsPS2IET6l9te7thJsPS2IET6V9te7sRJsPSmIET6s9te7tBJsPS2IET6V9te7uRJsPS2IET5l9te7txJsPTWIET4G99e7wxJsPTWIET7m9te7sxJsPSyIET7U99e7rRJsPS2IET7V9te7tRJsPS2IET6V9te7qhJsPR2IET4z9te7wBJsPT2IET7E9te7rBJsPR2IET5T9te7tBJsPR2IET6z9te7thJsPT2IET6f9te7tRJsPS2IET6d9te7vRJsPS2IET6J9te7uRJsPS2IET5d9te7rRJsPS2IET7F9te7sRJsPS2IET6F9te7tRJsPS2IET5V9te7xRJsPS2IET6V9te7vBJsPT2IET5X9te7tRJsPS2IET5F9te7pRJsPS2IET6V9te7sBJsPT2IET7n9te7tBJsPTWIET5G99e7tRJsPS2IET519te7tRJsPS2IET519te7tRJsPS2IET7V9de7vBJsPT2IET639te7tRJsPS2IET6V9te7uhJsPR2IET6T9te7vRJsPS2IET7V9te7sRJsPS2IET5V9te7xBJsPUWIET4J9te7vRJsPTWIET4m9te7tRJsPS2IET5V9te7vRJsPS2IET7V9te7sRJsPR2IET6z9te7pRJsPQ2IET4x9te7vBJsPS2IET5V9te7rRJsPR2IET5z9te7sRJsPS2IET5V9te7rhJsPR2IET6z9te7vxJsPS2IET6V9te7gLcLvypo+L4NZQK/Ex7pPoC3C78qaPi+DWUCvxMe6T5/twu/K2j4vg1lAr8SHuk+f7cLvypo+L4NZQK/Ex7pPoC3C78raPi+DmUCvxUe6T5/twu/Kmj4vg1lAr8THuk+f7cLvyto+L4NZQK/Eh7pPn+3C78raPi+DmUCvxIe6T5/twu/Kmj4vg1lAr8THuk+gLcLvypo+L4NZQK/Ex7pPoC3C78qaPi+DWUCvxMe6T5/twu/Kmj4vg1lAr8THuk+f7cLvypo+L4NZQK/Ex7pPn+3C78qaPi+DWUCvxQe6T6Atwu/KGj4vgxlAr8VHuk+gLcLvypo+L4NZQK/Eh7pPoC3C78paPi+DWUCvxQe6T6Atwu/KGj4vgxlAr8VHuk+f7cLvypo+L4NZQK/Ex7pPn+3C78qaPi+DWUCvxMe6T5/twu/Kmj4vg1lAr8THuk+l2IPv9ZP775wVPy+ddTyPrsjD79g7+++bNT8vhRG8j5toA6/tTrxvr3h/b5qGPE+XAQOvxLB8r7BJP++DavvPjVlDb9OS/S+dzkAvwot7j7w0Ay/O7f1vizZAL8pvOw+WlIMv6fr9r4qaAG/AW/rPvvyC78u0/e+uN4BvwtZ6j4evAu/R1n4vo41Ar/4jOk+gLcLvypo+L4NZQK/Fx7pPtPnC7+s/Pe+WpcCv92r6D6sQwy/VS73vrP2Ar9z0+c+XMQMv4sK9r4DfAO/P6PmPj5kDb8InPS+PyEEv+4m5T5cHg6/AuzyvgnhBL+1aOM+Fe4Ov/kC8b5CtgW/NXLhPsnOD7/R6e6+opsGv8dN3z4nuxC/kavsvtmKB7+qCN0+sqsRv79Z6r6Oegi/NrjaPg+REr/CG+i+51YJv+aM2D7QkBO/c5nlvrgxCr8aU9Y+JIMRv/Wq6b7/uAq/lC3WPtRjDb/5ovG+jrQLvx/T1T7UUQi/vBX7vt7KDL+LQdU+ZLsCvySJAr+S2A2/63bUPkDP+b70hAe/GssOvwd30z7LMO6+B0YMv9iXD78bTdI+Jj/jvvOQEL+uOBC/aQ/RPiMM2r6vChS/8KgQv9Hpzz6UWdW+csUVv3XaEL/aSs8+6pAIv2Xk/L5TDfW+NBH8PoWJH7/6vdC+RvDSvq9pBj/k1vW+RQYLv8zyD78rvss+G3D3vhhRCr9IXg+/RV3NPpTS+r7dyAi/mRwOv97T0D4n+v6+ttkGvyeEDL9eGtU+tKYBv83FBL/3yQq/VJXZPr+nA79OyQK/1h4Jv97F3T5XOQW/bjABvzfBB78pG+E+auYFv319AL8VHAe/HKbiPprG674xHg2/S3IIv7b35D7qkAi/Z+T8vlMN9b40Efw+p1sTv/bt8b5Fqe6++4j0PgEEE79kmvK+7orxviDZ8T6yPRG/JRT2vu+L9r60ie0+rHMOv2sy+75w8Py+lCfoPqXQCr/1qgC/rS4Cv6jz4T6uYga/YwoEvzRTBr+UE9s+0yIBv+mMB78J4gq/76LTPuXW9b5FBgu/y/IPvy2+yz6VWdW+c8UVv3PaEL/YSs8+65AIv2bk/L5RDfW+MxH8PoWJH7/6vdC+RPDSvq9pBj/9/38//P9/P///fz///38///9/P///fz/6/38/AACAP///fz8AAIA/AACAP///fz/9/38/AQCAP///fz/3/38//f9/P///fz///38/AQCAP///fz/8/38///9/P///fz///38///9/PwMAgD/9/38/+v9/P/z/fz/8/38//P9/P///fz/8/38/+f9/P/z/fz/+/38/AgCAPwEAgD///38/AACAPwMAgD/+/38///9/P///fz///38//v9/P///fz8BAIA/AgCAP///fz/+/38/AgCAP///fz/9/38/AACAP///fz/+/38///9/P///fz/9/38/AQCAP///fz8BAIA/AQCAPwMAgD/8/38///9/PwAAgD///38///9/P/7/fz/9/38///9/P/z/fz/9/38///9/PwAAgD/8/38/AACAP/3/fz///38/AQCAPwAAgD/4/38///9/P///fz/8/38//v9/P/r/fz8AAIA///9/P///fz/9/38/AACAPwAAgD/6/38//f9/P///fz/9/38//v9/P/3/fz/8/38/+/9/P/3/fz/4/38//P9/P/z/fz/7/38/AACAP/3/fz/7/38//v9/P///fz/+/38/AACAPwAAgD///38/AACAPwAAgD/+/38///9/PwAAgD///38/AwCAPwEAgD/7/38/AgCAPwEAgD///38/AACAP///fz/+/38/AgCAPwAAgD8AAIA/AwCAP///fz/5/38/AQCAP///fz8BAIA/AACAPwMAgD///38/AQCAPwAAgD8BAIA/AgCAPwMAgD/3/38/+/9/P///fz/+/38//v9/P/3/fz/+/38/AQCAPwAAgD/8/38/AACAP///fz/5/38/+/9/PwEAgD/9/38//v9/P/3/fz///38///9/P///fz8AAIA///9/P///fz/+/38//P9/PwAAgD/8/38///9/PwAAgD///38/AACAP/7/fz/8/38//v9/P/7/fz8AAIA/AACAPwAAgD8CAIA/AgCAPwEAgD/+/38/AgCAPwEAgD/7/38/+v9/P///fz/8/38///9/PwAAgD8AAIA/AwCAPwAAgD/5/38///9/P/z/fz8AAIA/AgCAPwMAgD/9/38//v9/P///fz///38/AACAP///fz/9/38/AACAP/3/fz/+/38///9/P/3/fz9SYoyvK6wiPX88H7R4+BcyG6wiPf5OH7RKtAQxO6wiPS9o+bJKtAQxO6wiPS9o+bJiu4CzG6wiPaLk+bIAAACwG6wiPYBMH7Su2oCzG6wiPSB5vrN/bYEzK6wiPbNMH7Tz9zix+6siPQzYvrNl4dywC6wiPUFcH7Rl4dywC6wiPUFcH7QAAACwG6wiPYBMH7QXpAA0KqwiPaJcX7RUagC0HKwiPTlZvrOXQ5awE6wiPV1UX7Rk9gOwGqwiPQCbvrPbloGzF6wiPX1AH7QAAACwG6wiPYBMH7TOnUawF6wiPeWg/rMFv3+zI6wiPag0X7QSV/4zFqwiPVhwH7QlWpKwE6wiPV9UP7Qvgf8zHqwiPXVoP7QejievH6wiPSPR/7MvuwGzHKwiPYlDL7Qwuvoy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//9/PwEAgD8CAIA///9/P/3/fz8AAIA///9/P///fz8AAIA///9/P/3/fz/+/38//P9/P///fz8CAIA///9/PwEAgD8AAIA/AgCAPwEAgD8AAIA/AgCAP///fz8AAIA//v9/PwAAgD8AAIA///9/P///fz/+/38//v9/P/7/fz8AAIA//v9/PwEAgD8CAIA///9/P///fz8AAIA///9/PwEAgD8BAIA/AQCAP///fz///38//v9/PwAAgD8CAIA/AgCAPwEAgD8BAIA/AQCAPwEAgD8BAIA/AQCAP/z/fz8AAIA//f9/PwEAgD8CAIA///9/P///fz8AAIA///9/P/7/fz8BAIA///9/P///fz8AAIA///9/P///fz///38//P9/PwAAgD8BAIA//f9/P/3/fz8AAIA//f9/P///fz8AAIA///9/P///fz8AAIA//f9/P/3/fz/+/38//f9/P///fz8AAIA//f9/P/3/fz/9/38///9/P///fz8AAIA///9/P/z/fz///38//v9/P///fz8AAIA//v9/P///fz8AAIA///9/P/7/fz/+/38//P9/P///fz/9/38//P9/PwAAgD/+/38///9/P///fz///38/AgCAPwAAgD///38///9/P///fz/9/38//v9/PwAAgD8AAIA///9/PwEAgD8CAIA/AgCAP/v/fz///38/+/9/P/v/fz8BAIA/AQCAP/7/fz8BAIA///9/P/3/fz///38//P9/P/3/fz/8/38/+/9/P/3/fz8BAIA//v9/P///fz///38///9/P/7/fz/9/38//f9/P///fz///38/AgCAP///fz///38/AQCAP///fz8AAIA//v9/P///fz///38///9/P///fz/9/38//f9/P///fz///38//f9/P///fz///38//f9/P/v/fz/9/38/+/9/P///fz8BAIA/AgCAP///fz/+/38///9/PwEAgD8AAIA/AQCAPwEAgD8AAIA/AgCAP///fz8CAIA/BACAP///fz///38//f9/P///fz/9/38/+/9/P///fz/8/38//P9/P///fz///38//v9/P/3/fz/8/38/+/9/P///fz8BAIA///9/P/3/fz/9/38//f9/P5ZelT1AT508aG1LupRelT1AT508U21LupVelT1AT508bW1LupVelT1AT508TW1LupRelT1gT508YG1LupZelT1AT508aG1LupZelT1BT508M21LupNelT1gT508RW1LupZelT1hT508RW1LupRelT2gT508IG1LupJelT2AT508aG1LupJelT2AT508aG1LupJelT2AT508aG1LupJelT2AT508aG1LupJelT2AT508aG1LupJelT2AT508aG1LupJelT2AT508aG1LupJelT2AT508aG1LupJelT2AT508aG1LupJelT2AT508aG1LupJelT2AT508aG1LupNelT2AT508U21LupRelT2AT508UG1LupRelT1gT508YG1LupRelT1gT508XmxLupRelT1gT508YG5LupRelT1gT508Ym5LupRelT1gT508YW1LupRelT1cT508YW1LupRelT1fT508X21LupVelT1gT5083GxLupRelT1fT508Ym1LupVelT1gT508XG5LupNelT1gT508Y2xLupVelT1oT508WG9LupVelT1xT508UW9LupVelT1QT508Ym9LupRelT1gT508X21LupNelT2AT508U21LupJelT2AT508WG1LupFelT1/T508XW1LupNelT1gT508ZW1LupVelT1AT508TW1LupRelT1gT508IG1LupRelT2AT508k21LupVelT2AT508SG1LupVelT1AT508bW1LupNelT2AT508U21LupRelT1gT508YG1LupFelT2fT508UG1LupNelT2AT508U2xLupZelT1AT508aG1LupNelT2AT508U2xLupRelT2AT508TW1LupRelT2AT508TW1LupRelT2AT508TW1LupRelT2AT508TW1LupRelT2AT508TW1LupRelT2AT508TW1LupRelT2AT508TW1LupRelT2AT508TW1LupNelT2AT508U2xLupZelT1AT508aG1LupNelT2AT508U2xLupVelT0gT508e21LupRelT1gT508YG5LupVelT1AT508bW1LupVelT1gT508Wm5LupNelT1AT508c2xLupRelT1gT508YGxLupRelT2AT508TW1LupNelT2AT508U2xLupZelT1AT508aG1LupNelT2AT508U2xLuiHOfz+UkgQ9EF2oPEHz6rvbw38/VR4VPbXPuDwyOCC6Kot/P9aCRz0/iuo8Jp2dPHrcfj8YiYw9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BkQDP/hM5j4S+Be/58raPjzD/z4/qO0+WVAbvw1l0T5CQfg+xU/1PoKXHr8Sk8c+gFfwPk7f/D7wpCG/M8u9Pl1Z6D4bBQI/vi8jv+sPuD4x0+M+SSMEPyPkIr/t8bc+QgTkPr51BD+tmSK/6ka4PknG4z48zgQ/O10DvxKNBj/3POs+ZKr/PkXN/L5q5gU/By0OPw2w1T57fSK/s0jGPpqN2j5ExAM/4v4jvwPtwz6mutw+5twBP08QJb+yOcI+YR7fPpodAD/ArSW/OXvBPsv34T5er/w+G8Ulv7kEwj79gOU+RNH4PvoxJb/GScQ+qgLqPgRU9D68rSO/3gbJPqPr7z48w+4+YJ4gvz+s0T7dCfg+fznnPsTREb9Iuew+U8AFP5N53j775vC+B8sQP4d4Dz9rt8I+4L7kvt9BED+lXxc/cuC6Ps8P674nBw4/hSMWP6XUvT6xc/e+iNEJPyEMEj/5Ccc++XUDv18YBD8ZFAw/rH/TPiTVC7/hK/o+KsgEP7lv4T78KhS/uQjqPjRd+T64h+8+becbv2pp2D6t8Og+pqL8Pnt9Ir+xSMY+mY3aPkTEAz+smSK/6Ua4PknG4z49zgQ/O10DvxCNBj/1POs+ZKr/PkLN/L5r5gU/By0OPwyw1T7//38/AQCAP///fz8DAIA/BwCAP///fz///38/BACAP///fz///38/BACAP///fz8DAIA/BACAPwMAgD8AAIA/AQCAP///fz///38/AACAP///fz8BAIA/BACAPwMAgD8BAIA/AgCAPwMAgD///38/BACAP///fz8BAIA/BACAP///fz/8/38/AQCAP///fz/8/38/AACAP///fz/8/38//v9/P///fz/9/38/AQCAP///fz8AAIA/BACAPwMAgD8CAIA/BACAPwMAgD/8/38///9/P///fz8BAIA/BACAP///fz8CAIA/AgCAPwMAgD///38/AQCAP///fz/+/38/AQCAPwEAgD8AAIA/AwCAP/3/fz8BAIA/AQCAP///fz8CAIA/AwCAP///fz8BAIA/AACAPwEAgD/+/38///9/P/r/fz8AAIA/AQCAP///fz8AAIA/AQCAPwEAgD/7/38/AQCAP///fz8AAIA/AQCAP///fz/9/38/AQCAP///fz8AAIA/AQCAPwEAgD///38/AACAP/7/fz///38/AACAP///fz/6/38/AgCAP///fz///38/AQCAP///fz8DAIA/BACAPwEAgD/8/38/+f9/P/z/fz8DAIA/BACAPwMAgD8AAIA/AgCAP///fz8AAIA/AwCAPwEAgD///38/AACAP///fz/5/38/AACAPwEAgD8CAIA/BACAP///fz8CAIA/AgCAP///fz///38/AwCAPwEAgD8BAIA/AwCAP/z/fz8AAIA///9/P///fz8AAIA/AQCAPwMAgD/7/38/AACAP/7/fz/9/38/AACAP///fz/+/38/AQCAP///fz/7/38///9/PwEAgD/+/38//f9/PwEAgD8AAIA/AQCAPwEAgD8CAIA/AgCAPwEAgD8AAIA/BACAPwEAgD/7/38/AACAP///fz/9/38/AACAPwEAgD/6/38/AQCAP/z/fz8CAIA/BACAPwEAgD8AAIA/AACAPwEAgD8AAIA/AgCAP///fz/9/38///9/P/7/fz8BAIA/AQCAPwIAgD8AAIA///9/P/3/fz/9/38/AgCAP///fz/8/38///9/P/3/fz8BAIA/AwCAPwMAgD8DAIA/BACAPwEAgD/6/38/AACAP///fz///38/AwCAP///fz///38/AACAP///fz+TF9gtfhlAPopLBzJAnrcufhlAPoS89C83DCmwfhlAPu6w9C8o4h+whhlAPp9OELLnJ52xfhlAPihJBzKGIb2xfhlAPtdf9C+GId2xfhlAPmVQ9C9ucgMxdhlAPgGbHzKO1++whhlAPnP6h7IvsAUxfhlAPolMBzJ1BwgxhhlAPktNELI3uYExdhlAPvibHzJucgMxdhlAPgGbHzIjG/mwdhlAPhOZHzLj9buxhhlAPmr7h7INhVawjhlAPkj007Icr1+whhlAPjX6h7INQzqxfhlAPi6O9C+cNrkufhlAPpP/77HL3wgydhlAPrjD/zDOVBCvhhlAPqpFhbB43oYxfhlAPjv89C8Zb4AydhlAPtmdvzHefwAzhhlAPjcKQrHkBbYufhlAPpJLBzLOuoAyfhlAPr6dd7I1d98ughlAPsXPobJtcgEyfhlAPtr377ElG/2xfhlAPkwH8LFKNnqxfhlAPm8D8LFejpQuehlAPtoWMLHa5IIxfhlAPrb777GMuAEyghlAPqWgiLGcaPyxghlAPoeOULPRPLEufhlAPiePATNE/Pux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/v9/P///fz8BAIA//P9/P///fz8BAIA/AACAPwMAgD8FAIA/AQCAPwEAgD8DAIA/AQCAPwEAgD8DAIA/AQCAP///fz8BAIA/AQCAPwEAgD8DAIA//v9/P///fz8BAIA/AACAPwEAgD8DAIA/AQCAPwAAgD8CAIA/AQCAP///fz8BAIA//v9/P/7/fz8BAIA//P9/P/z/fz8AAIA//P9/P/3/fz8CAIA//P9/P/7/fz/+/38//P9/PwEAgD8DAIA//v9/P///fz8BAIA//v9/P///fz8AAIA//v9/PwAAgD8DAIA//v9/PwEAgD8CAIA//v9/P///fz8DAIA/AQCAP///fz8AAIA//v9/P/z/fz8BAIA//v9/P/7/fz///38//v9/PwAAgD8CAIA//f9/P///fz8CAIA//f9/P/3/fz8BAIA//v9/P///fz8AAIA//v9/P///fz///38//f9/P/7/fz8BAIA//v9/P///fz8BAIA//v9/P///fz8BAIA//v9/P/3/fz8AAIA//v9/PwAAgD8AAIA/AQCAPwEAgD8AAIA//P9/P///fz8BAIA//v9/P/v/fz///38//f9/P/v/fz8AAIA//P9/P/3/fz8BAIA//P9/PwIAgD8CAIA/AACAP///fz8CAIA//v9/P/3/fz///38//P9/P///fz8BAIA//v9/P/7/fz///38//f9/P/7/fz8BAIA//v9/PwEAgD8DAIA/AQCAP/7/fz8BAIA//v9/P/3/fz8AAIA//f9/P/z/fz8BAIA/+v9/PwEAgD8DAIA/AACAPwAAgD8CAIA//v9/P/3/fz8AAIA//f9/P/7/fz8BAIA/AACAP///fz8BAIA//v9/PwAAgD8BAIA//v9/P///fz8BAIA//v9/PwEAgD8CAIA/AQCAP/3/fz8BAIA//v9/PwAAgD8DAIA//v9/P///fz8DAIA//v9/P///fz8CAIA/AACAP8dv/q/LWiA+CnFOMEWnZrDPWiA+tGTUMNjF6q7HWiA+tOSFsMAWAq3LWiA+k3iXL0Bfza/PWiA+2QLTMEWnZrDPWiA+tGTUMNGjC6/HWiA+3+oCsaX3wLDLWiA+2g6oLx9skbDHWiA+BIkBsYN/AzDLWiA+U22kMJTe+y/LWiA+JvGRL0hL87DPWiA+aijXMJTe+y/LWiA+JvGRL2drEbHTWiA+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QzOHPbuD6rtWRX8/e2/wPI3arz0qPbq7jvB+P2ihxjziKNA9oRUfuwqZfj/wU7Q8NofePR3SkjtZa34/czWIPdhDTb072/Y8gf5+Py6RXDrk8rE9+uq/ug0Ifz9viG89IbhaO8DGATxrjX8/AACAPwEAgD8BAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AQCAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AQCAPwAAgD8BAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8BAIA/AACAPwAAgD8AAIA/AACAPwAAgD8BAIA/AACAPwAAgD8AAIA/AACAPwAAgD8BAIA///9/PwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP///fz8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwEAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwEAgD8AAIA///9/PwAAgD8AAIA/AACAPwAAgD8AAIA//v9/PwAAgD///38/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AQCAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwEAgD8AAIA/AQCAPwEAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AQCAPwAAgD8BAIA/AACAPwAAgD8AAIA/AACAPwEAgD8AAIA/AACAPwEAgD8AAIA/AACAPwAAgD8AAIA///9/PwAAgD8AAIA/AACAPwAAgD8AAIA/AQCAPwEAgD8AAIA/AACAPwEAgD8AAIA/AACAPwAAgD///38/AACAPwAAgD8AAIA/AQCAPwAAgD8AAIA/AACAPwAAgD8AAIA/AQCAPwAAgD8AAIA/AACAPwAAgD8BAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwEAgD8AAIA///9/P///fz///38/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/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" + } + ] +} diff --git a/game/modules/species/Human/models/armature.gltf.import b/game/modules/species/Human/models/armature.gltf.import new file mode 100644 index 0000000..6d7999d --- /dev/null +++ b/game/modules/species/Human/models/armature.gltf.import @@ -0,0 +1,1064 @@ +[remap] + +importer="scene" +type="PackedScene" +path="res://.import/armature.gltf-e13d926b47d16442c46cb6a8fc53585f.scn" + +[deps] + +source_file="res://modules/species/Human/models/armature.gltf" +dest_files=[ "res://.import/armature.gltf-e13d926b47d16442c46cb6a8fc53585f.scn" ] + +[params] + +nodes/root_type="Spatial" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +nodes/custom_script="" +nodes/storage=0 +nodes/use_legacy_names=true +materials/location=1 +materials/storage=1 +materials/keep_on_reimport=true +meshes/compress=true +meshes/ensure_tangents=true +meshes/storage=0 +meshes/light_baking=0 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +external_files/store_in_subdir=false +animation/import=true +animation/fps=30.0 +animation/filter_script="" +animation/storage=2 +animation/keep_custom_tracks=false +animation/optimizer/enabled=false +animation/optimizer/max_linear_error=0.05 +animation/optimizer/max_angular_error=0.01 +animation/optimizer/max_angle=22 +animation/optimizer/remove_unused_tracks=true +animation/clips/amount=0 +animation/clip_1/name="" +animation/clip_1/start_frame=0 +animation/clip_1/end_frame=0 +animation/clip_1/loops=false +animation/clip_2/name="" +animation/clip_2/start_frame=0 +animation/clip_2/end_frame=0 +animation/clip_2/loops=false +animation/clip_3/name="" +animation/clip_3/start_frame=0 +animation/clip_3/end_frame=0 +animation/clip_3/loops=false +animation/clip_4/name="" +animation/clip_4/start_frame=0 +animation/clip_4/end_frame=0 +animation/clip_4/loops=false +animation/clip_5/name="" +animation/clip_5/start_frame=0 +animation/clip_5/end_frame=0 +animation/clip_5/loops=false +animation/clip_6/name="" +animation/clip_6/start_frame=0 +animation/clip_6/end_frame=0 +animation/clip_6/loops=false +animation/clip_7/name="" +animation/clip_7/start_frame=0 +animation/clip_7/end_frame=0 +animation/clip_7/loops=false +animation/clip_8/name="" +animation/clip_8/start_frame=0 +animation/clip_8/end_frame=0 +animation/clip_8/loops=false +animation/clip_9/name="" +animation/clip_9/start_frame=0 +animation/clip_9/end_frame=0 +animation/clip_9/loops=false +animation/clip_10/name="" +animation/clip_10/start_frame=0 +animation/clip_10/end_frame=0 +animation/clip_10/loops=false +animation/clip_11/name="" +animation/clip_11/start_frame=0 +animation/clip_11/end_frame=0 +animation/clip_11/loops=false +animation/clip_12/name="" +animation/clip_12/start_frame=0 +animation/clip_12/end_frame=0 +animation/clip_12/loops=false +animation/clip_13/name="" +animation/clip_13/start_frame=0 +animation/clip_13/end_frame=0 +animation/clip_13/loops=false +animation/clip_14/name="" +animation/clip_14/start_frame=0 +animation/clip_14/end_frame=0 +animation/clip_14/loops=false +animation/clip_15/name="" +animation/clip_15/start_frame=0 +animation/clip_15/end_frame=0 +animation/clip_15/loops=false +animation/clip_16/name="" +animation/clip_16/start_frame=0 +animation/clip_16/end_frame=0 +animation/clip_16/loops=false +animation/clip_17/name="" +animation/clip_17/start_frame=0 +animation/clip_17/end_frame=0 +animation/clip_17/loops=false +animation/clip_18/name="" +animation/clip_18/start_frame=0 +animation/clip_18/end_frame=0 +animation/clip_18/loops=false +animation/clip_19/name="" +animation/clip_19/start_frame=0 +animation/clip_19/end_frame=0 +animation/clip_19/loops=false +animation/clip_20/name="" +animation/clip_20/start_frame=0 +animation/clip_20/end_frame=0 +animation/clip_20/loops=false +animation/clip_21/name="" +animation/clip_21/start_frame=0 +animation/clip_21/end_frame=0 +animation/clip_21/loops=false +animation/clip_22/name="" +animation/clip_22/start_frame=0 +animation/clip_22/end_frame=0 +animation/clip_22/loops=false +animation/clip_23/name="" +animation/clip_23/start_frame=0 +animation/clip_23/end_frame=0 +animation/clip_23/loops=false +animation/clip_24/name="" +animation/clip_24/start_frame=0 +animation/clip_24/end_frame=0 +animation/clip_24/loops=false +animation/clip_25/name="" +animation/clip_25/start_frame=0 +animation/clip_25/end_frame=0 +animation/clip_25/loops=false +animation/clip_26/name="" +animation/clip_26/start_frame=0 +animation/clip_26/end_frame=0 +animation/clip_26/loops=false +animation/clip_27/name="" +animation/clip_27/start_frame=0 +animation/clip_27/end_frame=0 +animation/clip_27/loops=false +animation/clip_28/name="" +animation/clip_28/start_frame=0 +animation/clip_28/end_frame=0 +animation/clip_28/loops=false +animation/clip_29/name="" +animation/clip_29/start_frame=0 +animation/clip_29/end_frame=0 +animation/clip_29/loops=false +animation/clip_30/name="" +animation/clip_30/start_frame=0 +animation/clip_30/end_frame=0 +animation/clip_30/loops=false +animation/clip_31/name="" +animation/clip_31/start_frame=0 +animation/clip_31/end_frame=0 +animation/clip_31/loops=false +animation/clip_32/name="" +animation/clip_32/start_frame=0 +animation/clip_32/end_frame=0 +animation/clip_32/loops=false +animation/clip_33/name="" +animation/clip_33/start_frame=0 +animation/clip_33/end_frame=0 +animation/clip_33/loops=false +animation/clip_34/name="" +animation/clip_34/start_frame=0 +animation/clip_34/end_frame=0 +animation/clip_34/loops=false +animation/clip_35/name="" +animation/clip_35/start_frame=0 +animation/clip_35/end_frame=0 +animation/clip_35/loops=false +animation/clip_36/name="" +animation/clip_36/start_frame=0 +animation/clip_36/end_frame=0 +animation/clip_36/loops=false +animation/clip_37/name="" +animation/clip_37/start_frame=0 +animation/clip_37/end_frame=0 +animation/clip_37/loops=false +animation/clip_38/name="" +animation/clip_38/start_frame=0 +animation/clip_38/end_frame=0 +animation/clip_38/loops=false +animation/clip_39/name="" +animation/clip_39/start_frame=0 +animation/clip_39/end_frame=0 +animation/clip_39/loops=false +animation/clip_40/name="" +animation/clip_40/start_frame=0 +animation/clip_40/end_frame=0 +animation/clip_40/loops=false +animation/clip_41/name="" +animation/clip_41/start_frame=0 +animation/clip_41/end_frame=0 +animation/clip_41/loops=false +animation/clip_42/name="" +animation/clip_42/start_frame=0 +animation/clip_42/end_frame=0 +animation/clip_42/loops=false +animation/clip_43/name="" +animation/clip_43/start_frame=0 +animation/clip_43/end_frame=0 +animation/clip_43/loops=false +animation/clip_44/name="" +animation/clip_44/start_frame=0 +animation/clip_44/end_frame=0 +animation/clip_44/loops=false +animation/clip_45/name="" +animation/clip_45/start_frame=0 +animation/clip_45/end_frame=0 +animation/clip_45/loops=false +animation/clip_46/name="" +animation/clip_46/start_frame=0 +animation/clip_46/end_frame=0 +animation/clip_46/loops=false +animation/clip_47/name="" +animation/clip_47/start_frame=0 +animation/clip_47/end_frame=0 +animation/clip_47/loops=false +animation/clip_48/name="" +animation/clip_48/start_frame=0 +animation/clip_48/end_frame=0 +animation/clip_48/loops=false +animation/clip_49/name="" +animation/clip_49/start_frame=0 +animation/clip_49/end_frame=0 +animation/clip_49/loops=false +animation/clip_50/name="" +animation/clip_50/start_frame=0 +animation/clip_50/end_frame=0 +animation/clip_50/loops=false +animation/clip_51/name="" +animation/clip_51/start_frame=0 +animation/clip_51/end_frame=0 +animation/clip_51/loops=false +animation/clip_52/name="" +animation/clip_52/start_frame=0 +animation/clip_52/end_frame=0 +animation/clip_52/loops=false +animation/clip_53/name="" +animation/clip_53/start_frame=0 +animation/clip_53/end_frame=0 +animation/clip_53/loops=false +animation/clip_54/name="" +animation/clip_54/start_frame=0 +animation/clip_54/end_frame=0 +animation/clip_54/loops=false +animation/clip_55/name="" +animation/clip_55/start_frame=0 +animation/clip_55/end_frame=0 +animation/clip_55/loops=false +animation/clip_56/name="" +animation/clip_56/start_frame=0 +animation/clip_56/end_frame=0 +animation/clip_56/loops=false +animation/clip_57/name="" +animation/clip_57/start_frame=0 +animation/clip_57/end_frame=0 +animation/clip_57/loops=false +animation/clip_58/name="" +animation/clip_58/start_frame=0 +animation/clip_58/end_frame=0 +animation/clip_58/loops=false +animation/clip_59/name="" +animation/clip_59/start_frame=0 +animation/clip_59/end_frame=0 +animation/clip_59/loops=false +animation/clip_60/name="" +animation/clip_60/start_frame=0 +animation/clip_60/end_frame=0 +animation/clip_60/loops=false +animation/clip_61/name="" +animation/clip_61/start_frame=0 +animation/clip_61/end_frame=0 +animation/clip_61/loops=false +animation/clip_62/name="" +animation/clip_62/start_frame=0 +animation/clip_62/end_frame=0 +animation/clip_62/loops=false +animation/clip_63/name="" +animation/clip_63/start_frame=0 +animation/clip_63/end_frame=0 +animation/clip_63/loops=false +animation/clip_64/name="" +animation/clip_64/start_frame=0 +animation/clip_64/end_frame=0 +animation/clip_64/loops=false +animation/clip_65/name="" +animation/clip_65/start_frame=0 +animation/clip_65/end_frame=0 +animation/clip_65/loops=false +animation/clip_66/name="" +animation/clip_66/start_frame=0 +animation/clip_66/end_frame=0 +animation/clip_66/loops=false +animation/clip_67/name="" +animation/clip_67/start_frame=0 +animation/clip_67/end_frame=0 +animation/clip_67/loops=false +animation/clip_68/name="" +animation/clip_68/start_frame=0 +animation/clip_68/end_frame=0 +animation/clip_68/loops=false +animation/clip_69/name="" +animation/clip_69/start_frame=0 +animation/clip_69/end_frame=0 +animation/clip_69/loops=false +animation/clip_70/name="" +animation/clip_70/start_frame=0 +animation/clip_70/end_frame=0 +animation/clip_70/loops=false +animation/clip_71/name="" +animation/clip_71/start_frame=0 +animation/clip_71/end_frame=0 +animation/clip_71/loops=false +animation/clip_72/name="" +animation/clip_72/start_frame=0 +animation/clip_72/end_frame=0 +animation/clip_72/loops=false +animation/clip_73/name="" +animation/clip_73/start_frame=0 +animation/clip_73/end_frame=0 +animation/clip_73/loops=false +animation/clip_74/name="" +animation/clip_74/start_frame=0 +animation/clip_74/end_frame=0 +animation/clip_74/loops=false +animation/clip_75/name="" +animation/clip_75/start_frame=0 +animation/clip_75/end_frame=0 +animation/clip_75/loops=false +animation/clip_76/name="" +animation/clip_76/start_frame=0 +animation/clip_76/end_frame=0 +animation/clip_76/loops=false +animation/clip_77/name="" +animation/clip_77/start_frame=0 +animation/clip_77/end_frame=0 +animation/clip_77/loops=false +animation/clip_78/name="" +animation/clip_78/start_frame=0 +animation/clip_78/end_frame=0 +animation/clip_78/loops=false +animation/clip_79/name="" +animation/clip_79/start_frame=0 +animation/clip_79/end_frame=0 +animation/clip_79/loops=false +animation/clip_80/name="" +animation/clip_80/start_frame=0 +animation/clip_80/end_frame=0 +animation/clip_80/loops=false +animation/clip_81/name="" +animation/clip_81/start_frame=0 +animation/clip_81/end_frame=0 +animation/clip_81/loops=false +animation/clip_82/name="" +animation/clip_82/start_frame=0 +animation/clip_82/end_frame=0 +animation/clip_82/loops=false +animation/clip_83/name="" +animation/clip_83/start_frame=0 +animation/clip_83/end_frame=0 +animation/clip_83/loops=false +animation/clip_84/name="" +animation/clip_84/start_frame=0 +animation/clip_84/end_frame=0 +animation/clip_84/loops=false +animation/clip_85/name="" +animation/clip_85/start_frame=0 +animation/clip_85/end_frame=0 +animation/clip_85/loops=false +animation/clip_86/name="" +animation/clip_86/start_frame=0 +animation/clip_86/end_frame=0 +animation/clip_86/loops=false +animation/clip_87/name="" +animation/clip_87/start_frame=0 +animation/clip_87/end_frame=0 +animation/clip_87/loops=false +animation/clip_88/name="" +animation/clip_88/start_frame=0 +animation/clip_88/end_frame=0 +animation/clip_88/loops=false +animation/clip_89/name="" +animation/clip_89/start_frame=0 +animation/clip_89/end_frame=0 +animation/clip_89/loops=false +animation/clip_90/name="" +animation/clip_90/start_frame=0 +animation/clip_90/end_frame=0 +animation/clip_90/loops=false +animation/clip_91/name="" +animation/clip_91/start_frame=0 +animation/clip_91/end_frame=0 +animation/clip_91/loops=false +animation/clip_92/name="" +animation/clip_92/start_frame=0 +animation/clip_92/end_frame=0 +animation/clip_92/loops=false +animation/clip_93/name="" +animation/clip_93/start_frame=0 +animation/clip_93/end_frame=0 +animation/clip_93/loops=false +animation/clip_94/name="" +animation/clip_94/start_frame=0 +animation/clip_94/end_frame=0 +animation/clip_94/loops=false +animation/clip_95/name="" +animation/clip_95/start_frame=0 +animation/clip_95/end_frame=0 +animation/clip_95/loops=false +animation/clip_96/name="" +animation/clip_96/start_frame=0 +animation/clip_96/end_frame=0 +animation/clip_96/loops=false +animation/clip_97/name="" +animation/clip_97/start_frame=0 +animation/clip_97/end_frame=0 +animation/clip_97/loops=false +animation/clip_98/name="" +animation/clip_98/start_frame=0 +animation/clip_98/end_frame=0 +animation/clip_98/loops=false +animation/clip_99/name="" +animation/clip_99/start_frame=0 +animation/clip_99/end_frame=0 +animation/clip_99/loops=false +animation/clip_100/name="" +animation/clip_100/start_frame=0 +animation/clip_100/end_frame=0 +animation/clip_100/loops=false +animation/clip_101/name="" +animation/clip_101/start_frame=0 +animation/clip_101/end_frame=0 +animation/clip_101/loops=false +animation/clip_102/name="" +animation/clip_102/start_frame=0 +animation/clip_102/end_frame=0 +animation/clip_102/loops=false +animation/clip_103/name="" +animation/clip_103/start_frame=0 +animation/clip_103/end_frame=0 +animation/clip_103/loops=false +animation/clip_104/name="" +animation/clip_104/start_frame=0 +animation/clip_104/end_frame=0 +animation/clip_104/loops=false +animation/clip_105/name="" +animation/clip_105/start_frame=0 +animation/clip_105/end_frame=0 +animation/clip_105/loops=false +animation/clip_106/name="" +animation/clip_106/start_frame=0 +animation/clip_106/end_frame=0 +animation/clip_106/loops=false +animation/clip_107/name="" +animation/clip_107/start_frame=0 +animation/clip_107/end_frame=0 +animation/clip_107/loops=false +animation/clip_108/name="" +animation/clip_108/start_frame=0 +animation/clip_108/end_frame=0 +animation/clip_108/loops=false +animation/clip_109/name="" +animation/clip_109/start_frame=0 +animation/clip_109/end_frame=0 +animation/clip_109/loops=false +animation/clip_110/name="" +animation/clip_110/start_frame=0 +animation/clip_110/end_frame=0 +animation/clip_110/loops=false +animation/clip_111/name="" +animation/clip_111/start_frame=0 +animation/clip_111/end_frame=0 +animation/clip_111/loops=false +animation/clip_112/name="" +animation/clip_112/start_frame=0 +animation/clip_112/end_frame=0 +animation/clip_112/loops=false +animation/clip_113/name="" +animation/clip_113/start_frame=0 +animation/clip_113/end_frame=0 +animation/clip_113/loops=false +animation/clip_114/name="" +animation/clip_114/start_frame=0 +animation/clip_114/end_frame=0 +animation/clip_114/loops=false +animation/clip_115/name="" +animation/clip_115/start_frame=0 +animation/clip_115/end_frame=0 +animation/clip_115/loops=false +animation/clip_116/name="" +animation/clip_116/start_frame=0 +animation/clip_116/end_frame=0 +animation/clip_116/loops=false +animation/clip_117/name="" +animation/clip_117/start_frame=0 +animation/clip_117/end_frame=0 +animation/clip_117/loops=false +animation/clip_118/name="" +animation/clip_118/start_frame=0 +animation/clip_118/end_frame=0 +animation/clip_118/loops=false +animation/clip_119/name="" +animation/clip_119/start_frame=0 +animation/clip_119/end_frame=0 +animation/clip_119/loops=false +animation/clip_120/name="" +animation/clip_120/start_frame=0 +animation/clip_120/end_frame=0 +animation/clip_120/loops=false +animation/clip_121/name="" +animation/clip_121/start_frame=0 +animation/clip_121/end_frame=0 +animation/clip_121/loops=false +animation/clip_122/name="" +animation/clip_122/start_frame=0 +animation/clip_122/end_frame=0 +animation/clip_122/loops=false +animation/clip_123/name="" +animation/clip_123/start_frame=0 +animation/clip_123/end_frame=0 +animation/clip_123/loops=false +animation/clip_124/name="" +animation/clip_124/start_frame=0 +animation/clip_124/end_frame=0 +animation/clip_124/loops=false +animation/clip_125/name="" +animation/clip_125/start_frame=0 +animation/clip_125/end_frame=0 +animation/clip_125/loops=false +animation/clip_126/name="" +animation/clip_126/start_frame=0 +animation/clip_126/end_frame=0 +animation/clip_126/loops=false +animation/clip_127/name="" +animation/clip_127/start_frame=0 +animation/clip_127/end_frame=0 +animation/clip_127/loops=false +animation/clip_128/name="" +animation/clip_128/start_frame=0 +animation/clip_128/end_frame=0 +animation/clip_128/loops=false +animation/clip_129/name="" +animation/clip_129/start_frame=0 +animation/clip_129/end_frame=0 +animation/clip_129/loops=false +animation/clip_130/name="" +animation/clip_130/start_frame=0 +animation/clip_130/end_frame=0 +animation/clip_130/loops=false +animation/clip_131/name="" +animation/clip_131/start_frame=0 +animation/clip_131/end_frame=0 +animation/clip_131/loops=false +animation/clip_132/name="" +animation/clip_132/start_frame=0 +animation/clip_132/end_frame=0 +animation/clip_132/loops=false +animation/clip_133/name="" +animation/clip_133/start_frame=0 +animation/clip_133/end_frame=0 +animation/clip_133/loops=false +animation/clip_134/name="" +animation/clip_134/start_frame=0 +animation/clip_134/end_frame=0 +animation/clip_134/loops=false +animation/clip_135/name="" +animation/clip_135/start_frame=0 +animation/clip_135/end_frame=0 +animation/clip_135/loops=false +animation/clip_136/name="" +animation/clip_136/start_frame=0 +animation/clip_136/end_frame=0 +animation/clip_136/loops=false +animation/clip_137/name="" +animation/clip_137/start_frame=0 +animation/clip_137/end_frame=0 +animation/clip_137/loops=false +animation/clip_138/name="" +animation/clip_138/start_frame=0 +animation/clip_138/end_frame=0 +animation/clip_138/loops=false +animation/clip_139/name="" +animation/clip_139/start_frame=0 +animation/clip_139/end_frame=0 +animation/clip_139/loops=false +animation/clip_140/name="" +animation/clip_140/start_frame=0 +animation/clip_140/end_frame=0 +animation/clip_140/loops=false +animation/clip_141/name="" +animation/clip_141/start_frame=0 +animation/clip_141/end_frame=0 +animation/clip_141/loops=false +animation/clip_142/name="" +animation/clip_142/start_frame=0 +animation/clip_142/end_frame=0 +animation/clip_142/loops=false +animation/clip_143/name="" +animation/clip_143/start_frame=0 +animation/clip_143/end_frame=0 +animation/clip_143/loops=false +animation/clip_144/name="" +animation/clip_144/start_frame=0 +animation/clip_144/end_frame=0 +animation/clip_144/loops=false +animation/clip_145/name="" +animation/clip_145/start_frame=0 +animation/clip_145/end_frame=0 +animation/clip_145/loops=false +animation/clip_146/name="" +animation/clip_146/start_frame=0 +animation/clip_146/end_frame=0 +animation/clip_146/loops=false +animation/clip_147/name="" +animation/clip_147/start_frame=0 +animation/clip_147/end_frame=0 +animation/clip_147/loops=false +animation/clip_148/name="" +animation/clip_148/start_frame=0 +animation/clip_148/end_frame=0 +animation/clip_148/loops=false +animation/clip_149/name="" +animation/clip_149/start_frame=0 +animation/clip_149/end_frame=0 +animation/clip_149/loops=false +animation/clip_150/name="" +animation/clip_150/start_frame=0 +animation/clip_150/end_frame=0 +animation/clip_150/loops=false +animation/clip_151/name="" +animation/clip_151/start_frame=0 +animation/clip_151/end_frame=0 +animation/clip_151/loops=false +animation/clip_152/name="" +animation/clip_152/start_frame=0 +animation/clip_152/end_frame=0 +animation/clip_152/loops=false +animation/clip_153/name="" +animation/clip_153/start_frame=0 +animation/clip_153/end_frame=0 +animation/clip_153/loops=false +animation/clip_154/name="" +animation/clip_154/start_frame=0 +animation/clip_154/end_frame=0 +animation/clip_154/loops=false +animation/clip_155/name="" +animation/clip_155/start_frame=0 +animation/clip_155/end_frame=0 +animation/clip_155/loops=false +animation/clip_156/name="" +animation/clip_156/start_frame=0 +animation/clip_156/end_frame=0 +animation/clip_156/loops=false +animation/clip_157/name="" +animation/clip_157/start_frame=0 +animation/clip_157/end_frame=0 +animation/clip_157/loops=false +animation/clip_158/name="" +animation/clip_158/start_frame=0 +animation/clip_158/end_frame=0 +animation/clip_158/loops=false +animation/clip_159/name="" +animation/clip_159/start_frame=0 +animation/clip_159/end_frame=0 +animation/clip_159/loops=false +animation/clip_160/name="" +animation/clip_160/start_frame=0 +animation/clip_160/end_frame=0 +animation/clip_160/loops=false +animation/clip_161/name="" +animation/clip_161/start_frame=0 +animation/clip_161/end_frame=0 +animation/clip_161/loops=false +animation/clip_162/name="" +animation/clip_162/start_frame=0 +animation/clip_162/end_frame=0 +animation/clip_162/loops=false +animation/clip_163/name="" +animation/clip_163/start_frame=0 +animation/clip_163/end_frame=0 +animation/clip_163/loops=false +animation/clip_164/name="" +animation/clip_164/start_frame=0 +animation/clip_164/end_frame=0 +animation/clip_164/loops=false +animation/clip_165/name="" +animation/clip_165/start_frame=0 +animation/clip_165/end_frame=0 +animation/clip_165/loops=false +animation/clip_166/name="" +animation/clip_166/start_frame=0 +animation/clip_166/end_frame=0 +animation/clip_166/loops=false +animation/clip_167/name="" +animation/clip_167/start_frame=0 +animation/clip_167/end_frame=0 +animation/clip_167/loops=false +animation/clip_168/name="" +animation/clip_168/start_frame=0 +animation/clip_168/end_frame=0 +animation/clip_168/loops=false +animation/clip_169/name="" +animation/clip_169/start_frame=0 +animation/clip_169/end_frame=0 +animation/clip_169/loops=false +animation/clip_170/name="" +animation/clip_170/start_frame=0 +animation/clip_170/end_frame=0 +animation/clip_170/loops=false +animation/clip_171/name="" +animation/clip_171/start_frame=0 +animation/clip_171/end_frame=0 +animation/clip_171/loops=false +animation/clip_172/name="" +animation/clip_172/start_frame=0 +animation/clip_172/end_frame=0 +animation/clip_172/loops=false +animation/clip_173/name="" +animation/clip_173/start_frame=0 +animation/clip_173/end_frame=0 +animation/clip_173/loops=false +animation/clip_174/name="" +animation/clip_174/start_frame=0 +animation/clip_174/end_frame=0 +animation/clip_174/loops=false +animation/clip_175/name="" +animation/clip_175/start_frame=0 +animation/clip_175/end_frame=0 +animation/clip_175/loops=false +animation/clip_176/name="" +animation/clip_176/start_frame=0 +animation/clip_176/end_frame=0 +animation/clip_176/loops=false +animation/clip_177/name="" +animation/clip_177/start_frame=0 +animation/clip_177/end_frame=0 +animation/clip_177/loops=false +animation/clip_178/name="" +animation/clip_178/start_frame=0 +animation/clip_178/end_frame=0 +animation/clip_178/loops=false +animation/clip_179/name="" +animation/clip_179/start_frame=0 +animation/clip_179/end_frame=0 +animation/clip_179/loops=false +animation/clip_180/name="" +animation/clip_180/start_frame=0 +animation/clip_180/end_frame=0 +animation/clip_180/loops=false +animation/clip_181/name="" +animation/clip_181/start_frame=0 +animation/clip_181/end_frame=0 +animation/clip_181/loops=false +animation/clip_182/name="" +animation/clip_182/start_frame=0 +animation/clip_182/end_frame=0 +animation/clip_182/loops=false +animation/clip_183/name="" +animation/clip_183/start_frame=0 +animation/clip_183/end_frame=0 +animation/clip_183/loops=false +animation/clip_184/name="" +animation/clip_184/start_frame=0 +animation/clip_184/end_frame=0 +animation/clip_184/loops=false +animation/clip_185/name="" +animation/clip_185/start_frame=0 +animation/clip_185/end_frame=0 +animation/clip_185/loops=false +animation/clip_186/name="" +animation/clip_186/start_frame=0 +animation/clip_186/end_frame=0 +animation/clip_186/loops=false +animation/clip_187/name="" +animation/clip_187/start_frame=0 +animation/clip_187/end_frame=0 +animation/clip_187/loops=false +animation/clip_188/name="" +animation/clip_188/start_frame=0 +animation/clip_188/end_frame=0 +animation/clip_188/loops=false +animation/clip_189/name="" +animation/clip_189/start_frame=0 +animation/clip_189/end_frame=0 +animation/clip_189/loops=false +animation/clip_190/name="" +animation/clip_190/start_frame=0 +animation/clip_190/end_frame=0 +animation/clip_190/loops=false +animation/clip_191/name="" +animation/clip_191/start_frame=0 +animation/clip_191/end_frame=0 +animation/clip_191/loops=false +animation/clip_192/name="" +animation/clip_192/start_frame=0 +animation/clip_192/end_frame=0 +animation/clip_192/loops=false +animation/clip_193/name="" +animation/clip_193/start_frame=0 +animation/clip_193/end_frame=0 +animation/clip_193/loops=false +animation/clip_194/name="" +animation/clip_194/start_frame=0 +animation/clip_194/end_frame=0 +animation/clip_194/loops=false +animation/clip_195/name="" +animation/clip_195/start_frame=0 +animation/clip_195/end_frame=0 +animation/clip_195/loops=false +animation/clip_196/name="" +animation/clip_196/start_frame=0 +animation/clip_196/end_frame=0 +animation/clip_196/loops=false +animation/clip_197/name="" +animation/clip_197/start_frame=0 +animation/clip_197/end_frame=0 +animation/clip_197/loops=false +animation/clip_198/name="" +animation/clip_198/start_frame=0 +animation/clip_198/end_frame=0 +animation/clip_198/loops=false +animation/clip_199/name="" +animation/clip_199/start_frame=0 +animation/clip_199/end_frame=0 +animation/clip_199/loops=false +animation/clip_200/name="" +animation/clip_200/start_frame=0 +animation/clip_200/end_frame=0 +animation/clip_200/loops=false +animation/clip_201/name="" +animation/clip_201/start_frame=0 +animation/clip_201/end_frame=0 +animation/clip_201/loops=false +animation/clip_202/name="" +animation/clip_202/start_frame=0 +animation/clip_202/end_frame=0 +animation/clip_202/loops=false +animation/clip_203/name="" +animation/clip_203/start_frame=0 +animation/clip_203/end_frame=0 +animation/clip_203/loops=false +animation/clip_204/name="" +animation/clip_204/start_frame=0 +animation/clip_204/end_frame=0 +animation/clip_204/loops=false +animation/clip_205/name="" +animation/clip_205/start_frame=0 +animation/clip_205/end_frame=0 +animation/clip_205/loops=false +animation/clip_206/name="" +animation/clip_206/start_frame=0 +animation/clip_206/end_frame=0 +animation/clip_206/loops=false +animation/clip_207/name="" +animation/clip_207/start_frame=0 +animation/clip_207/end_frame=0 +animation/clip_207/loops=false +animation/clip_208/name="" +animation/clip_208/start_frame=0 +animation/clip_208/end_frame=0 +animation/clip_208/loops=false +animation/clip_209/name="" +animation/clip_209/start_frame=0 +animation/clip_209/end_frame=0 +animation/clip_209/loops=false +animation/clip_210/name="" +animation/clip_210/start_frame=0 +animation/clip_210/end_frame=0 +animation/clip_210/loops=false +animation/clip_211/name="" +animation/clip_211/start_frame=0 +animation/clip_211/end_frame=0 +animation/clip_211/loops=false +animation/clip_212/name="" +animation/clip_212/start_frame=0 +animation/clip_212/end_frame=0 +animation/clip_212/loops=false +animation/clip_213/name="" +animation/clip_213/start_frame=0 +animation/clip_213/end_frame=0 +animation/clip_213/loops=false +animation/clip_214/name="" +animation/clip_214/start_frame=0 +animation/clip_214/end_frame=0 +animation/clip_214/loops=false +animation/clip_215/name="" +animation/clip_215/start_frame=0 +animation/clip_215/end_frame=0 +animation/clip_215/loops=false +animation/clip_216/name="" +animation/clip_216/start_frame=0 +animation/clip_216/end_frame=0 +animation/clip_216/loops=false +animation/clip_217/name="" +animation/clip_217/start_frame=0 +animation/clip_217/end_frame=0 +animation/clip_217/loops=false +animation/clip_218/name="" +animation/clip_218/start_frame=0 +animation/clip_218/end_frame=0 +animation/clip_218/loops=false +animation/clip_219/name="" +animation/clip_219/start_frame=0 +animation/clip_219/end_frame=0 +animation/clip_219/loops=false +animation/clip_220/name="" +animation/clip_220/start_frame=0 +animation/clip_220/end_frame=0 +animation/clip_220/loops=false +animation/clip_221/name="" +animation/clip_221/start_frame=0 +animation/clip_221/end_frame=0 +animation/clip_221/loops=false +animation/clip_222/name="" +animation/clip_222/start_frame=0 +animation/clip_222/end_frame=0 +animation/clip_222/loops=false +animation/clip_223/name="" +animation/clip_223/start_frame=0 +animation/clip_223/end_frame=0 +animation/clip_223/loops=false +animation/clip_224/name="" +animation/clip_224/start_frame=0 +animation/clip_224/end_frame=0 +animation/clip_224/loops=false +animation/clip_225/name="" +animation/clip_225/start_frame=0 +animation/clip_225/end_frame=0 +animation/clip_225/loops=false +animation/clip_226/name="" +animation/clip_226/start_frame=0 +animation/clip_226/end_frame=0 +animation/clip_226/loops=false +animation/clip_227/name="" +animation/clip_227/start_frame=0 +animation/clip_227/end_frame=0 +animation/clip_227/loops=false +animation/clip_228/name="" +animation/clip_228/start_frame=0 +animation/clip_228/end_frame=0 +animation/clip_228/loops=false +animation/clip_229/name="" +animation/clip_229/start_frame=0 +animation/clip_229/end_frame=0 +animation/clip_229/loops=false +animation/clip_230/name="" +animation/clip_230/start_frame=0 +animation/clip_230/end_frame=0 +animation/clip_230/loops=false +animation/clip_231/name="" +animation/clip_231/start_frame=0 +animation/clip_231/end_frame=0 +animation/clip_231/loops=false +animation/clip_232/name="" +animation/clip_232/start_frame=0 +animation/clip_232/end_frame=0 +animation/clip_232/loops=false +animation/clip_233/name="" +animation/clip_233/start_frame=0 +animation/clip_233/end_frame=0 +animation/clip_233/loops=false +animation/clip_234/name="" +animation/clip_234/start_frame=0 +animation/clip_234/end_frame=0 +animation/clip_234/loops=false +animation/clip_235/name="" +animation/clip_235/start_frame=0 +animation/clip_235/end_frame=0 +animation/clip_235/loops=false +animation/clip_236/name="" +animation/clip_236/start_frame=0 +animation/clip_236/end_frame=0 +animation/clip_236/loops=false +animation/clip_237/name="" +animation/clip_237/start_frame=0 +animation/clip_237/end_frame=0 +animation/clip_237/loops=false +animation/clip_238/name="" +animation/clip_238/start_frame=0 +animation/clip_238/end_frame=0 +animation/clip_238/loops=false +animation/clip_239/name="" +animation/clip_239/start_frame=0 +animation/clip_239/end_frame=0 +animation/clip_239/loops=false +animation/clip_240/name="" +animation/clip_240/start_frame=0 +animation/clip_240/end_frame=0 +animation/clip_240/loops=false +animation/clip_241/name="" +animation/clip_241/start_frame=0 +animation/clip_241/end_frame=0 +animation/clip_241/loops=false +animation/clip_242/name="" +animation/clip_242/start_frame=0 +animation/clip_242/end_frame=0 +animation/clip_242/loops=false +animation/clip_243/name="" +animation/clip_243/start_frame=0 +animation/clip_243/end_frame=0 +animation/clip_243/loops=false +animation/clip_244/name="" +animation/clip_244/start_frame=0 +animation/clip_244/end_frame=0 +animation/clip_244/loops=false +animation/clip_245/name="" +animation/clip_245/start_frame=0 +animation/clip_245/end_frame=0 +animation/clip_245/loops=false +animation/clip_246/name="" +animation/clip_246/start_frame=0 +animation/clip_246/end_frame=0 +animation/clip_246/loops=false +animation/clip_247/name="" +animation/clip_247/start_frame=0 +animation/clip_247/end_frame=0 +animation/clip_247/loops=false +animation/clip_248/name="" +animation/clip_248/start_frame=0 +animation/clip_248/end_frame=0 +animation/clip_248/loops=false +animation/clip_249/name="" +animation/clip_249/start_frame=0 +animation/clip_249/end_frame=0 +animation/clip_249/loops=false +animation/clip_250/name="" +animation/clip_250/start_frame=0 +animation/clip_250/end_frame=0 +animation/clip_250/loops=false +animation/clip_251/name="" +animation/clip_251/start_frame=0 +animation/clip_251/end_frame=0 +animation/clip_251/loops=false +animation/clip_252/name="" +animation/clip_252/start_frame=0 +animation/clip_252/end_frame=0 +animation/clip_252/loops=false +animation/clip_253/name="" +animation/clip_253/start_frame=0 +animation/clip_253/end_frame=0 +animation/clip_253/loops=false +animation/clip_254/name="" +animation/clip_254/start_frame=0 +animation/clip_254/end_frame=0 +animation/clip_254/loops=false +animation/clip_255/name="" +animation/clip_255/start_frame=0 +animation/clip_255/end_frame=0 +animation/clip_255/loops=false +animation/clip_256/name="" +animation/clip_256/start_frame=0 +animation/clip_256/end_frame=0 +animation/clip_256/loops=false diff --git a/game/modules/species/Human/models/armature_huf.tscn b/game/modules/species/Human/models/armature_huf.tscn new file mode 100644 index 0000000..5ad0a2a --- /dev/null +++ b/game/modules/species/Human/models/armature_huf.tscn @@ -0,0 +1,263 @@ +[gd_scene load_steps=41 format=2] + +[ext_resource path="res://player/CharacterSkeletonAttachPoint.gd" type="Script" id=2] +[ext_resource path="res://modules/species/Human/models/dead.tres" type="Animation" id=4] +[ext_resource path="res://modules/species/Human/models/armature.gd" type="Script" id=5] +[ext_resource path="res://modules/species/Human/models/armature.gltf" type="PackedScene" id=6] +[ext_resource path="res://player/CharacterSkeletonGD.gd" type="Script" id=8] +[ext_resource path="res://modules/species/Human/models/idle-loop.tres" type="Animation" id=9] +[ext_resource path="res://modules/species/Human/models/rest.tres" type="Animation" id=10] +[ext_resource path="res://modules/species/Human/models/cast-end.tres" type="Animation" id=11] +[ext_resource path="res://modules/species/Human/models/casting-loop.tres" type="Animation" id=12] +[ext_resource path="res://modules/species/Human/models/run-left-loop.tres" type="Animation" id=13] +[ext_resource path="res://modules/species/Human/models/run-right-loop.tres" type="Animation" id=14] +[ext_resource path="res://modules/species/Human/models/run-loop.tres" type="Animation" id=15] + +[sub_resource type="AnimationNodeAnimation" id=1] +animation = "cast-end" + +[sub_resource type="AnimationNodeAnimation" id=2] +animation = "cast-end" + +[sub_resource type="AnimationNodeAnimation" id=3] +animation = "casting-loop" + +[sub_resource type="AnimationNodeAnimation" id=4] +animation = "dead" + +[sub_resource type="AnimationNodeAnimation" id=5] +animation = "idle-loop" + +[sub_resource type="AnimationNodeAnimation" id=6] +animation = "run-left-loop" + +[sub_resource type="AnimationNodeAnimation" id=7] +animation = "run-loop" + +[sub_resource type="AnimationNodeAnimation" id=8] +animation = "run-loop" + +[sub_resource type="AnimationNodeAnimation" id=9] +animation = "run-right-loop" + +[sub_resource type="AnimationNodeBlendSpace2D" id=10] +blend_point_0/node = SubResource( 6 ) +blend_point_0/pos = Vector2( -1, 0 ) +blend_point_1/node = SubResource( 7 ) +blend_point_1/pos = Vector2( 0, 1 ) +blend_point_2/node = SubResource( 8 ) +blend_point_2/pos = Vector2( 0, -1 ) +blend_point_3/node = SubResource( 9 ) +blend_point_3/pos = Vector2( 1, 0 ) +blend_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id=11] +xfade_time = 0.09 + +[sub_resource type="AnimationNodeStateMachineTransition" id=12] +xfade_time = 0.09 + +[sub_resource type="AnimationNodeStateMachineTransition" id=13] +xfade_time = 0.05 + +[sub_resource type="AnimationNodeStateMachineTransition" id=14] +auto_advance = true +xfade_time = 0.15 + +[sub_resource type="AnimationNodeStateMachineTransition" id=15] +auto_advance = true +xfade_time = 0.14 + +[sub_resource type="AnimationNodeStateMachineTransition" id=16] +xfade_time = 0.09 + +[sub_resource type="AnimationNodeStateMachineTransition" id=17] +xfade_time = 0.1 + +[sub_resource type="AnimationNodeStateMachineTransition" id=18] +xfade_time = 0.1 + +[sub_resource type="AnimationNodeStateMachineTransition" id=19] +xfade_time = 0.09 + +[sub_resource type="AnimationNodeStateMachineTransition" id=20] +xfade_time = 0.09 + +[sub_resource type="AnimationNodeStateMachineTransition" id=21] + +[sub_resource type="AnimationNodeStateMachineTransition" id=22] +xfade_time = 0.12 + +[sub_resource type="AnimationNodeStateMachineTransition" id=23] +xfade_time = 0.12 + +[sub_resource type="AnimationNodeStateMachineTransition" id=24] +xfade_time = 0.12 + +[sub_resource type="AnimationNodeStateMachineTransition" id=25] +xfade_time = 0.12 + +[sub_resource type="AnimationNodeStateMachineTransition" id=26] +xfade_time = 0.12 + +[sub_resource type="AnimationNodeStateMachine" id=27] +states/cast-end/node = SubResource( 2 ) +states/cast-end/position = Vector2( 117.871, -197.811 ) +"states/cast-end 2/node" = SubResource( 1 ) +"states/cast-end 2/position" = Vector2( 317.871, -197.811 ) +states/casting-loop/node = SubResource( 3 ) +states/casting-loop/position = Vector2( -76.129, -197.811 ) +states/dead/node = SubResource( 4 ) +states/dead/position = Vector2( -129.129, 73.189 ) +states/idle-loop/node = SubResource( 5 ) +states/idle-loop/position = Vector2( -255.566, -317.817 ) +states/run-loop/node = SubResource( 10 ) +states/run-loop/position = Vector2( 31.871, -340.817 ) +transitions = [ "idle-loop", "casting-loop", SubResource( 11 ), "casting-loop", "idle-loop", SubResource( 12 ), "casting-loop", "cast-end", SubResource( 13 ), "cast-end", "cast-end 2", SubResource( 14 ), "cast-end 2", "idle-loop", SubResource( 15 ), "idle-loop", "cast-end", SubResource( 16 ), "idle-loop", "run-loop", SubResource( 17 ), "run-loop", "idle-loop", SubResource( 18 ), "casting-loop", "run-loop", SubResource( 19 ), "run-loop", "casting-loop", SubResource( 20 ), "run-loop", "cast-end", SubResource( 21 ), "idle-loop", "dead", SubResource( 22 ), "casting-loop", "dead", SubResource( 23 ), "cast-end 2", "dead", SubResource( 24 ), "run-loop", "dead", SubResource( 25 ), "dead", "idle-loop", SubResource( 26 ) ] +start_node = "idle-loop" +graph_offset = Vector2( -679.129, -439.651 ) + +[sub_resource type="AnimationNodeStateMachinePlayback" id=28] + +[node name="character" type="CharacterSkeleton3D"] +entity_type = 1 +model_dirty = true +animation_player_path = NodePath("armature/AnimationPlayer") +animation_tree_path = NodePath("AnimationTree") +attach_point_paths/0_left_hand = NodePath("armature/Armature/Skeleton/LeftHandAttachment/LeftHandAP") +attach_point_paths/1_right_hand = NodePath("armature/Armature/Skeleton/RightHandAttachment/RightHandAP") +attach_point_paths/2_torso = NodePath("armature/Armature/Skeleton/NeckAttachment/TorsoAP") +attach_point_paths/3_root = NodePath("armature/Armature/Skeleton/RootAttachment/RootAP") +attach_point_paths/4_right_hip = NodePath("armature/Armature/Skeleton/RightHipAttachment/Spatial") +attach_point_paths/5_left_hip = NodePath("") +attach_point_paths/6_spine_2 = NodePath("") +attach_point_paths/7_weapon_left = NodePath("armature/Armature/Skeleton/LeftWeapon") +attach_point_paths/8_weapon_right = NodePath("armature/Armature/Skeleton/RightWeapon") +attach_point_paths/9_weapon_left_back = NodePath("armature/Armature/Skeleton/LeftWeaponBack") +attach_point_paths/10_weapon_right_back = NodePath("armature/Armature/Skeleton/RightWeaponBack") +attach_point_paths/11_weapon_shield_left = NodePath("armature/Armature/Skeleton/Shield") +script = ExtResource( 8 ) +mesh_instance_path = NodePath("armature/Armature/Skeleton/MeshInstance") +skeleton_path = NodePath("armature/Armature/Skeleton") + +[node name="armature" parent="." instance=ExtResource( 6 )] +script = ExtResource( 5 ) + +[node name="Skeleton" parent="armature/Armature" index="0"] +transform = Transform( 1, -6.84064e-18, 1.54087e-25, 6.84064e-18, 1, 1.05378e-42, -1.54087e-25, 0, 1, 0, 0, 0 ) +bones/0/bound_children = [ NodePath("RootAttachment") ] +bones/1/bound_children = [ NodePath("RightHipAttachment"), NodePath("LeftHipAttachment") ] +bones/10/bound_children = [ NodePath("RightBackAttachment"), NodePath("LeftBackAttachment") ] +bones/14/bound_children = [ NodePath("RightHandAttachment") ] +bones/21/bound_children = [ NodePath("ShieldAttachment") ] +bones/22/bound_children = [ NodePath("LeftHandAttachment") ] +bones/27/bound_children = [ NodePath("NeckAttachment") ] + +[node name="MeshInstance" type="MeshInstance" parent="armature/Armature/Skeleton" index="0"] +visible = false + +[node name="LeftHandAttachment" type="BoneAttachment" parent="armature/Armature/Skeleton" index="1"] +transform = Transform( 0.178242, 0.137293, -0.974361, 0.0695386, -0.9895, -0.126706, -0.981525, -0.0451713, -0.185918, 0.240629, 0.77064, -0.0135979 ) +bone_name = "left_hand" + +[node name="LeftHandAP" type="Spatial" parent="armature/Armature/Skeleton/LeftHandAttachment"] +transform = Transform( -0.0646502, 0.683772, 0.726832, -0.148514, -0.726783, 0.670508, 0.986758, -0.0646467, 0.148575, -0.0226043, 0.107657, 0.0283146 ) +script = ExtResource( 2 ) + +[node name="ShieldAttachment" type="BoneAttachment" parent="armature/Armature/Skeleton" index="2"] +transform = Transform( -0.0304567, 0.115726, 0.992814, -0.0547942, -0.991975, 0.113947, 0.998032, -0.05093, 0.0365534, 0.212777, 1.00938, -0.00134053 ) +bone_name = "left_forearm" + +[node name="LeftHandShield" type="Spatial" parent="armature/Armature/Skeleton/ShieldAttachment"] +transform = Transform( 0.122585, 0.992132, -0.0242311, 0.987746, -0.124342, -0.0941345, -0.0964273, -0.0123912, -0.995239, 0.0157415, 0.108918, 0.0213161 ) + +[node name="RightHandAttachment" type="BoneAttachment" parent="armature/Armature/Skeleton" index="3"] +transform = Transform( -0.0765276, -0.0800615, -0.993848, -0.0567859, -0.994803, 0.0845112, -0.99545, 0.062904, 0.0715836, -0.247435, 0.769703, -0.00345938 ) +bone_name = "right_hand" + +[node name="RightHandAP" type="Spatial" parent="armature/Armature/Skeleton/RightHandAttachment"] +transform = Transform( 0.0789363, 0.493983, 0.86583, -0.0571054, -0.864836, 0.498656, 0.995268, -0.0888088, -0.0400836, -0.0131918, 0.0790432, -0.0425565 ) +script = ExtResource( 2 ) + +[node name="RootAttachment" type="BoneAttachment" parent="armature/Armature/Skeleton" index="4"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3.23883e-05, 0, 0.000216131 ) +bone_name = "root" + +[node name="RootAP" type="Spatial" parent="armature/Armature/Skeleton/RootAttachment"] +transform = Transform( 1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 0, 0, 0 ) +script = ExtResource( 2 ) + +[node name="NeckAttachment" type="BoneAttachment" parent="armature/Armature/Skeleton" index="5"] +transform = Transform( 0.99999, -0.00322995, -0.00303278, 0.00343013, 0.997646, 0.0684912, 0.00280441, -0.0685009, 0.997647, 0.000907734, 1.31551, -7.88745e-05 ) +bone_name = "neck" + +[node name="TorsoAP" type="Spatial" parent="armature/Armature/Skeleton/NeckAttachment"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.04, -0.09 ) +script = ExtResource( 2 ) + +[node name="RightHipAttachment" type="BoneAttachment" parent="armature/Armature/Skeleton" index="6"] +transform = Transform( 0.999721, 0.0236193, 1.12032e-08, -0.0236193, 0.999721, 4.71722e-07, -5.82903e-11, -4.71855e-07, 1, 0.00311605, 0.774054, 0 ) +bone_name = "pelvis" + +[node name="Spatial" type="Spatial" parent="armature/Armature/Skeleton/RightHipAttachment"] +transform = Transform( 0.993372, -0.0110498, 0.114411, 0.0109836, 0.999939, 0.00120905, -0.114417, 5.56017e-05, 0.993433, -0.141825, 0.176866, 0.16621 ) + +[node name="LeftHipAttachment" type="BoneAttachment" parent="armature/Armature/Skeleton" index="7"] +transform = Transform( 0.999721, 0.0236193, 1.12032e-08, -0.0236193, 0.999721, 4.71722e-07, -5.82903e-11, -4.71855e-07, 1, 0.00311605, 0.774054, 0 ) +bone_name = "pelvis" + +[node name="Spatial" type="Spatial" parent="armature/Armature/Skeleton/LeftHipAttachment"] +transform = Transform( 0.99343, -0.00240871, -0.114417, 0.00240855, 0.999997, -0.000139626, 0.114417, -0.00013687, 0.993433, 0.144429, 0.18077, 0.165634 ) + +[node name="RightBackAttachment" type="BoneAttachment" parent="armature/Armature/Skeleton" index="8"] +transform = Transform( 0.999989, -0.00371775, -0.00266693, 0.00370247, 0.999977, -0.00571864, 0.00268812, 0.00570872, 0.99998, 0.00160517, 1.12792, -0.00114982 ) +bone_name = "spine_2" + +[node name="RightBackAP" type="Spatial" parent="armature/Armature/Skeleton/RightBackAttachment"] +transform = Transform( 0.999997, -0.00244424, -0.000479204, 0.00243884, 0.999966, -3.47705e-05, 0.000479292, 3.44458e-05, 1, 0.000560207, -0.00363708, -0.120332 ) + +[node name="LeftBackAttachment" type="BoneAttachment" parent="armature/Armature/Skeleton" index="9"] +transform = Transform( 0.999989, -0.00371775, -0.00266693, 0.00370247, 0.999977, -0.00571864, 0.00268812, 0.00570872, 0.99998, 0.00160517, 1.12792, -0.00114982 ) +bone_name = "spine_2" + +[node name="LeftBackAP" type="Spatial" parent="armature/Armature/Skeleton/LeftBackAttachment"] +transform = Transform( 0.999994, -0.00350821, -0.000687771, 0.00350043, 0.999949, -5.02995e-05, 0.000687948, 4.91154e-05, 1, 0.000822697, -0.00513983, -0.097967 ) + +[node name="LeftWeapon" type="Spatial" parent="armature/Armature/Skeleton" index="10"] +transform = Transform( 0.993142, 0.0242247, -0.11438, -0.0240499, 0.999706, 0.00290812, 0.114417, -0.000137342, 0.993433, 0.151114, 0.951937, 0.165634 ) +script = ExtResource( 2 ) + +[node name="RightWeapon" type="Spatial" parent="armature/Armature/Skeleton" index="11"] +script = ExtResource( 2 ) + +[node name="LeftWeaponBack" type="Spatial" parent="armature/Armature/Skeleton" index="12"] +transform = Transform( 1, 0, 0, 0, 0.999886, 0, 0, 0, 1, 0, 0, 0 ) +script = ExtResource( 2 ) + +[node name="Shield" type="Spatial" parent="armature/Armature/Skeleton" index="13"] +transform = Transform( 1, 0, 0, 0, 0.999886, 0, 0, 0, 1, 0, 0, 0 ) +script = ExtResource( 2 ) + +[node name="RightWeaponBack" type="Spatial" parent="armature/Armature/Skeleton" index="14"] +transform = Transform( 1, 0, 0, 0, 0.999899, 0, 0, 0, 1, 0, 0, 0 ) +script = ExtResource( 2 ) + +[node name="AnimationPlayer" parent="armature" index="1"] +autoplay = "rest" +anims/cast-end = ExtResource( 11 ) +anims/casting-loop = ExtResource( 12 ) +anims/dead = ExtResource( 4 ) +anims/idle-loop = ExtResource( 9 ) +anims/rest = ExtResource( 10 ) +anims/run-left-loop = ExtResource( 13 ) +anims/run-loop = ExtResource( 15 ) +anims/run-right-loop = ExtResource( 14 ) + +[node name="AnimationTree" type="AnimationTree" parent="."] +tree_root = SubResource( 27 ) +anim_player = NodePath("../armature/AnimationPlayer") +active = true +parameters/playback = SubResource( 28 ) +parameters/run-loop/blend_position = Vector2( 0, -0.0172414 ) + +[editable path="armature"] diff --git a/game/modules/species/Human/models/armature_huf.txt b/game/modules/species/Human/models/armature_huf.txt new file mode 100644 index 0000000..3fe3383 --- /dev/null +++ b/game/modules/species/Human/models/armature_huf.txt @@ -0,0 +1,8 @@ +0 rest +10 cast end +20 casting loop +30 dead +40 idle loop +50 run left loop +60 run loop +70 run right loop diff --git a/game/modules/species/Human/models/armature_new.blend b/game/modules/species/Human/models/armature_new.blend new file mode 100644 index 0000000..0a79610 Binary files /dev/null and b/game/modules/species/Human/models/armature_new.blend differ diff --git a/game/modules/species/Human/models/armature_old.blend b/game/modules/species/Human/models/armature_old.blend new file mode 100644 index 0000000..0f46c44 Binary files /dev/null and b/game/modules/species/Human/models/armature_old.blend differ diff --git a/game/modules/species/Human/models/cast-end.tres b/game/modules/species/Human/models/cast-end.tres new file mode 100644 index 0000000..431f3b5 --- /dev/null +++ b/game/modules/species/Human/models/cast-end.tres @@ -0,0 +1,230 @@ +[gd_resource type="Animation" format=2] + +[resource] +length = 3.0 +loop = true +tracks/0/type = "transform" +tracks/0/path = NodePath("Armature/Skeleton:left_foot") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = PoolRealArray( 0, 1, 7.45058e-09, 0, 0, -6.42597e-07, -1.35898e-07, -0.059918, 0.998203, 1, 1, 1, 1, 1, 0, -7.45058e-09, 0, -0.0212136, -0.000454444, -0.0637177, 0.997742, 1, 1, 1, 2, 1, 7.45058e-09, 0, 0, -6.42597e-07, -1.35898e-07, -0.059918, 0.998203, 1, 1, 1 ) +tracks/1/type = "transform" +tracks/1/path = NodePath("Armature/Skeleton:left_calf") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = PoolRealArray( 0, 1, 0, 5.96046e-08, 0, 0.132753, 0.000161663, 0.0141515, 0.991048, 1, 1, 1, 1, 1, 7.91624e-09, -2.98023e-08, 0, 0.14446, 0.0134386, 0.0106908, 0.989362, 1, 1, 0.999999, 2, 1, 0, 5.96046e-08, 0, 0.132753, 0.000161663, 0.0141515, 0.991048, 1, 1, 1 ) +tracks/2/type = "transform" +tracks/2/path = NodePath("Armature/Skeleton:left_thigh") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = PoolRealArray( 0, 1, -2.23517e-08, -5.86733e-08, 0, -0.0715791, -0.0103855, -0.0277448, 0.996995, 1, 1, 1, 1, 1, -7.45058e-09, 0, 4.65661e-10, -0.0758457, -0.00493236, -0.00448998, 0.997097, 1, 1, 1, 2, 1, -2.23517e-08, -5.86733e-08, 0, -0.0715791, -0.0103855, -0.0277448, 0.996995, 1, 1, 1 ) +tracks/3/type = "transform" +tracks/3/path = NodePath("Armature/Skeleton:right_foot") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = PoolRealArray( 0, 1, -5.58794e-09, 0, 0, -8.32667e-17, -5.58794e-09, 3.72529e-09, 1, 1, 1, 1, 1, 1, 0, -7.45058e-09, 0, -0.0324907, 0.00317484, 0.00643727, 0.999446, 1, 1, 1, 2, 1, -5.58794e-09, 0, 0, -8.32667e-17, -5.58794e-09, 3.72529e-09, 1, 1, 1, 1 ) +tracks/4/type = "transform" +tracks/4/path = NodePath("Armature/Skeleton:right_calf") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = PoolRealArray( 0, 1, 1.49012e-08, -2.98023e-08, 0, 0.0765039, -0.0152721, -0.0415624, 0.996086, 1, 1, 1, 1, 1, 1.49012e-08, -2.98023e-08, 0, 0.135013, -0.0205545, -0.00442197, 0.990621, 1, 1, 0.999999, 2, 1, 1.49012e-08, -2.98023e-08, 0, 0.0765039, -0.0152721, -0.0415624, 0.996086, 1, 1, 1 ) +tracks/5/type = "transform" +tracks/5/path = NodePath("Armature/Skeleton:right_thigh") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = PoolRealArray( 0, 1, 1.49012e-08, -5.86733e-08, 0, -0.0474481, 0.00980067, 0.0079771, 0.998794, 1, 1, 1, 1, 1, -1.49012e-08, 0, -6.98492e-10, -0.0729724, 0.00473046, 0.00430401, 0.997314, 1, 1, 1, 2, 1, 1.49012e-08, -5.86733e-08, 0, -0.0474481, 0.00980067, 0.0079771, 0.998794, 1, 1, 1 ) +tracks/6/type = "transform" +tracks/6/path = NodePath("Armature/Skeleton:right_thumb_head") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = PoolRealArray( 0, 1, -1.86265e-09, 5.96046e-08, 0, -9.31322e-10, 3.25963e-09, 9.17498e-09, 1, 1, 1, 1, 1, 1, 7.45058e-09, 0, 0, -2.09548e-09, 9.31322e-10, 9.16043e-09, 1, 1, 1, 1, 2, 1, -1.86265e-09, 5.96046e-08, 0, -9.31322e-10, 3.25963e-09, 9.17498e-09, 1, 1, 1, 1 ) +tracks/7/type = "transform" +tracks/7/path = NodePath("Armature/Skeleton:right_thumb_base") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = PoolRealArray( 0, 1, -2.84053e-08, -2.30968e-07, -3.72529e-09, -1.65746e-06, -0.0871557, 1.33911e-06, 0.996195, 1, 1, 1, 1, 1, -5.58794e-08, 1.19209e-07, -2.65427e-08, -1.66691e-06, -0.0871558, 1.29248e-06, 0.996195, 1, 1, 1, 2, 1, -2.84053e-08, -2.30968e-07, -3.72529e-09, -1.65746e-06, -0.0871557, 1.33911e-06, 0.996195, 1, 1, 1 ) +tracks/8/type = "transform" +tracks/8/path = NodePath("Armature/Skeleton:right_fingers_head") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = PoolRealArray( 0, 1, 2.91038e-11, 0, 1.49012e-08, -0.139265, 2.59464e-09, 8.30026e-09, 0.990255, 1, 1, 1, 1, 1, -2.03727e-10, -5.96046e-08, 0, -0.139265, -1.0256e-09, 6.05215e-10, 0.990255, 1, 1, 1, 2, 1, 2.91038e-11, 0, 1.49012e-08, -0.139265, 2.59464e-09, 8.30026e-09, 0.990255, 1, 1, 1 ) +tracks/9/type = "transform" +tracks/9/path = NodePath("Armature/Skeleton:right_fingers_base") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = PoolRealArray( 0, 1, -7.21775e-09, -5.96046e-08, 0, -0.05376, 3.6448e-09, 1.59524e-09, 0.998554, 1, 1, 1, 1, 1, 4.65661e-10, 0, 0, -0.0537601, 0, 0, 0.998554, 1, 1, 1, 2, 1, -7.21775e-09, -5.96046e-08, 0, -0.05376, 3.6448e-09, 1.59524e-09, 0.998554, 1, 1, 1 ) +tracks/10/type = "transform" +tracks/10/path = NodePath("Armature/Skeleton:right_hand") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = PoolRealArray( 0, 1, 3.49246e-09, 0, 0, -0.110367, 0.00566552, 0.0145224, 0.993769, 1, 1, 1, 1, 1, 0, 0, 2.98023e-08, -0.110367, 0.00566552, 0.0145224, 0.993769, 1, 1, 1, 2, 1, 3.49246e-09, 0, 0, -0.110367, 0.00566552, 0.0145224, 0.993769, 1, 1, 1 ) +tracks/11/type = "transform" +tracks/11/path = NodePath("Armature/Skeleton:right_forearm") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = PoolRealArray( 0, 1, -1.86265e-09, -5.96046e-08, 2.98023e-08, -0.055871, 0.029279, 0.121061, 0.990639, 1, 1, 1, 1, 1, 0, 5.96046e-08, 0, -0.0611071, 0.000259519, 8.22582e-06, 0.998131, 1, 1, 1, 2, 1, -1.86265e-09, -5.96046e-08, 2.98023e-08, -0.055871, 0.029279, 0.121061, 0.990639, 1, 1, 1 ) +tracks/12/type = "transform" +tracks/12/path = NodePath("Armature/Skeleton:right_upper_arm") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = PoolRealArray( 0, 1, -7.45058e-09, -7.45058e-09, 4.65661e-10, -0.518247, -0.01038, -0.0931942, 0.850075, 1, 1, 1, 1, 1, 4.65661e-10, 7.45058e-09, 1.19209e-07, -0.545974, 0.000177713, -0.0066096, 0.837776, 1, 1, 1, 2, 1, -7.45058e-09, -7.45058e-09, 4.65661e-10, -0.518247, -0.01038, -0.0931942, 0.850075, 1, 1, 1 ) +tracks/13/type = "transform" +tracks/13/path = NodePath("Armature/Skeleton:right_clavicle") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = PoolRealArray( 0, 1, 1.49012e-08, -7.45058e-09, -1.49012e-08, -0.0811645, 0.000232298, -0.00449111, 0.996691, 1, 1, 1, 1, 1, -1.58325e-08, 2.98023e-08, 0, -0.0420035, 6.03078e-06, -0.000414931, 0.999117, 1, 1, 1, 2, 1, 1.49012e-08, -7.45058e-09, -1.49012e-08, -0.0811645, 0.000232298, -0.00449111, 0.996691, 1, 1, 1 ) +tracks/14/type = "transform" +tracks/14/path = NodePath("Armature/Skeleton:left_fingers_end") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = PoolRealArray( 0, 1, 7.45058e-09, 0, 3.72529e-09, -0.110999, 4.0795e-10, 1.32923e-09, 0.993821, 1, 1, 1, 1, 1, 5.82077e-11, 0, -3.72529e-09, -0.110999, -1.09626e-09, 1.16272e-09, 0.993821, 1, 1, 1, 2, 1, 7.45058e-09, 0, 3.72529e-09, -0.110999, 4.0795e-10, 1.32923e-09, 0.993821, 1, 1, 1 ) +tracks/15/type = "transform" +tracks/15/path = NodePath("Armature/Skeleton:left_fingers_base") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = PoolRealArray( 0, 1, 0, 5.96046e-08, 0, -0.166404, 2.4601e-07, 2.43637e-07, 0.986058, 1, 1, 1, 1, 1, 1.84809e-09, -5.21541e-08, 0, -0.166404, 2.64456e-07, 3.582e-07, 0.986058, 1, 1, 1, 2, 1, 0, 5.96046e-08, 0, -0.166404, 2.4601e-07, 2.43637e-07, 0.986058, 1, 1, 1 ) +tracks/16/type = "transform" +tracks/16/path = NodePath("Armature/Skeleton:left_thumb_end") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = PoolRealArray( 0, 1, 0, 0, -2.9806e-08, 3.49246e-10, -5.82077e-10, 4.72483e-10, 1, 1, 1, 1, 1, 1, -5.58794e-09, -6.14673e-08, 0, -2.32831e-10, 5.82076e-10, -1.44364e-08, 1, 1, 1, 1, 2, 1, 0, 0, -2.9806e-08, 3.49246e-10, -5.82077e-10, 4.72483e-10, 1, 1, 1, 1 ) +tracks/17/type = "transform" +tracks/17/path = NodePath("Armature/Skeleton:left_thunb_base") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = PoolRealArray( 0, 1, 6.1933e-08, -7.45058e-09, -4.65661e-10, -1.60187e-07, -5.21541e-08, 2.8871e-08, 1, 1, 1, 1, 1, 1, 0, 0, 0, -8.38191e-08, 3.65079e-07, 9.77893e-09, 1, 0.999999, 1, 1, 2, 1, 6.1933e-08, -7.45058e-09, -4.65661e-10, -1.60187e-07, -5.21541e-08, 2.8871e-08, 1, 1, 1, 1 ) +tracks/18/type = "transform" +tracks/18/path = NodePath("Armature/Skeleton:left_hand") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = PoolRealArray( 0, 1, 0, -5.96046e-08, 0, 0.0710916, -0.00669528, 0.00666156, 0.997425, 1, 1, 1, 1, 1, 0, 0, 0, 0.0710916, -0.00669567, 0.00666152, 0.997425, 1, 1, 1, 2, 1, 0, -5.96046e-08, 0, 0.0710916, -0.00669528, 0.00666156, 0.997425, 1, 1, 1 ) +tracks/19/type = "transform" +tracks/19/path = NodePath("Armature/Skeleton:left_forearm") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = PoolRealArray( 0, 1, 7.45058e-09, 0, 5.96046e-08, -0.103762, -0.000783459, -9.77494e-05, 0.994602, 1, 1, 1, 1, 1, 1.86265e-09, 5.96046e-08, 0, -0.103762, -0.000783458, -9.77493e-05, 0.994602, 1, 1, 1, 2, 1, 7.45058e-09, 0, 5.96046e-08, -0.103762, -0.000783459, -9.77494e-05, 0.994602, 1, 1, 1 ) +tracks/20/type = "transform" +tracks/20/path = NodePath("Armature/Skeleton:left_upper_arm") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = PoolRealArray( 0, 1, 1.86265e-09, -7.45058e-09, -1.19675e-07, -0.518606, 0.0187424, 0.0124434, 0.854717, 1, 1, 1, 1, 1, -3.72529e-09, -2.98023e-08, 0, -0.525748, -0.0101832, 0.00770391, 0.850545, 1, 1, 1, 2, 1, 1.86265e-09, -7.45058e-09, -1.19675e-07, -0.518606, 0.0187424, 0.0124434, 0.854717, 1, 1, 1 ) +tracks/21/type = "transform" +tracks/21/path = NodePath("Armature/Skeleton:left_clavicle") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = PoolRealArray( 0, 1, 1.39698e-08, -7.45058e-09, -2.38419e-07, -0.0592183, -2.85497e-05, 0.0015222, 0.998244, 1, 1, 1, 1, 1, -2.98023e-08, 2.23517e-08, -2.38419e-07, -0.0674837, -7.19857e-05, 0.00235558, 0.997718, 1, 1, 1, 2, 1, 1.39698e-08, -7.45058e-09, -2.38419e-07, -0.0592183, -2.85497e-05, 0.0015222, 0.998244, 1, 1, 1 ) +tracks/22/type = "transform" +tracks/22/path = NodePath("Armature/Skeleton:head") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = PoolRealArray( 0, 1, -2.32831e-10, 0, 0, -1.86265e-09, -5.82077e-11, -7.59428e-11, 1, 1, 1, 1, 1, 1, 3.72529e-09, 0, 0, 0.0126095, -0.000213503, 1.55637e-05, 0.99992, 1, 1, 1, 2, 1, -2.32831e-10, 0, 0, -1.86265e-09, -5.82077e-11, -7.59428e-11, 1, 1, 1, 1 ) +tracks/23/type = "transform" +tracks/23/path = NodePath("Armature/Skeleton:neck") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = PoolRealArray( 0, 1, 3.49246e-10, -1.19209e-07, 0, -3.72529e-09, -9.82254e-11, -5.32054e-11, 1, 1, 1, 1, 1, 1, 0, 0, -6.51926e-09, -3.72529e-09, 1.01863e-10, -4.62478e-10, 1, 1, 1, 1, 2, 1, 3.49246e-10, -1.19209e-07, 0, -3.72529e-09, -9.82254e-11, -5.32054e-11, 1, 1, 1, 1 ) +tracks/24/type = "transform" +tracks/24/path = NodePath("Armature/Skeleton:spine_2") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = PoolRealArray( 0, 1, -1.86265e-09, 0, 0, 0.0113332, -0.00553805, -0.0113824, 0.999856, 1, 1, 1, 1, 1, 3.7253e-09, 0, 0, 0.0290807, -0.00483196, -0.012836, 0.999483, 1, 1, 1, 2, 1, -1.86265e-09, 0, 0, 0.0113332, -0.00553805, -0.0113824, 0.999856, 1, 1, 1 ) +tracks/25/type = "transform" +tracks/25/path = NodePath("Armature/Skeleton:spine_1") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = PoolRealArray( 0, 1, 3.49246e-10, -5.96046e-08, 0, -0.00878241, 0.0059254, 0.0138862, 0.999847, 1, 1, 1, 1, 1, 0, 0, 3.72529e-09, -0.0436695, 0.00373941, 0.0163364, 0.998905, 1, 1, 1, 2, 1, 3.49246e-10, -5.96046e-08, 0, -0.00878241, 0.0059254, 0.0138862, 0.999847, 1, 1, 1 ) +tracks/26/type = "transform" +tracks/26/path = NodePath("Armature/Skeleton:spine") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = PoolRealArray( 0, 1, -1.86265e-09, 0, 0, 0.00768075, -0.00198124, 0.0121408, 0.999895, 1, 1, 1, 1, 1, 9.31323e-10, 5.96046e-08, 9.31323e-10, 0.0212307, 0.000812157, 0.00775038, 0.999744, 1, 1, 1, 2, 1, -1.86265e-09, 0, 0, 0.00768075, -0.00198124, 0.0121408, 0.999895, 1, 1, 1 ) +tracks/27/type = "transform" +tracks/27/path = NodePath("Armature/Skeleton:pelvis") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = PoolRealArray( 0, 1, 0, -0.005992, -2.82307e-09, 6.27992e-13, 7.46674e-09, -0.0157419, 0.999876, 1, 1, 1, 1, 1, 0.0077123, -0.0126027, -5.95173e-09, 8.68397e-13, 2.85129e-09, -0.00601125, 0.999982, 1, 1, 1, 2, 1, 0, -0.005992, -2.82307e-09, 6.27992e-13, 7.46674e-09, -0.0157419, 0.999876, 1, 1, 1 ) +tracks/28/type = "transform" +tracks/28/path = NodePath("Armature/Skeleton:root") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = PoolRealArray( 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 ) +start_frame_index = 0 +keyframe/0/name = "" +keyframe/0/animation_keyframe_index = 40 +keyframe/0/next_keyframe = 1 +keyframe/0/transition = 1.0 +keyframe/0/time = 1.0 +keyframe/0/method_name = "" +keyframe/0/position = Vector2( 360, -60 ) +keyframe/1/name = "" +keyframe/1/animation_keyframe_index = 41 +keyframe/1/next_keyframe = 2 +keyframe/1/transition = 1.0 +keyframe/1/time = 1.0 +keyframe/1/method_name = "" +keyframe/1/position = Vector2( 600, -60 ) +keyframe/2/name = "" +keyframe/2/animation_keyframe_index = 40 +keyframe/2/next_keyframe = -1 +keyframe/2/transition = 1.0 +keyframe/2/time = 1.0 +keyframe/2/method_name = "" +keyframe/2/position = Vector2( 840, -60 ) diff --git a/game/modules/species/Human/models/casting-loop.tres b/game/modules/species/Human/models/casting-loop.tres new file mode 100644 index 0000000..28edb13 --- /dev/null +++ b/game/modules/species/Human/models/casting-loop.tres @@ -0,0 +1,227 @@ +[gd_resource type="Animation" format=2] + +[resource] +length = 3.0 +loop = true +tracks/0/type = "transform" +tracks/0/path = NodePath("Armature/Skeleton:left_foot") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = PoolRealArray( 0, 1, -1.49012e-08, 0, 0, 0.142824, -0.042196, -0.0184954, 0.988675, 1, 1, 1, 1.5, 1, 3.72529e-09, 2.98023e-08, 0, 0.143077, -0.0587754, 0.0139272, 0.987867, 1, 1, 1, 3, 1, -1.49012e-08, 0, 0, 0.142824, -0.042196, -0.0184954, 0.988675, 1, 1, 1 ) +tracks/1/type = "transform" +tracks/1/path = NodePath("Armature/Skeleton:left_calf") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = PoolRealArray( 0, 1, -2.98023e-08, 2.98023e-08, 0, 0.259459, -0.221116, 0.0459544, 0.938976, 0.999999, 1, 0.999998, 1.5, 1, 3.0268e-08, 0, 0, 0.349311, -0.18365, 0.0690429, 0.916235, 0.999999, 1, 0.999997, 3, 1, -2.98023e-08, 2.98023e-08, 0, 0.259459, -0.221116, 0.0459544, 0.938976, 0.999999, 1, 0.999998 ) +tracks/2/type = "transform" +tracks/2/path = NodePath("Armature/Skeleton:left_thigh") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = PoolRealArray( 0, 1, -1.49012e-08, -5.96046e-08, 9.31323e-10, -0.28345, 0.0544103, -0.169092, 0.942392, 0.999992, 1, 1, 1.5, 1, -7.45058e-09, -5.96046e-08, 0, -0.340345, 0.0542179, -0.213165, 0.914214, 0.999989, 1.00001, 1.00001, 3, 1, -1.49012e-08, -5.96046e-08, 9.31323e-10, -0.28345, 0.0544103, -0.169092, 0.942392, 0.999992, 1, 1 ) +tracks/3/type = "transform" +tracks/3/path = NodePath("Armature/Skeleton:right_foot") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = PoolRealArray( 0, 1, -2.98023e-08, 0, 0, -0.121027, 0.0539092, -0.127002, 0.983014, 1, 1, 1, 1.5, 1, 0, -7.45058e-09, 0, -0.121027, 0.0539092, -0.127002, 0.983014, 1, 1, 1, 3, 1, -2.98023e-08, 0, 0, -0.121027, 0.0539092, -0.127002, 0.983014, 1, 1, 1 ) +tracks/4/type = "transform" +tracks/4/path = NodePath("Armature/Skeleton:right_calf") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = PoolRealArray( 0, 1, -4.65661e-10, 2.98023e-08, 0, 0.427926, 0.0621255, 0.141873, 0.890445, 0.999999, 1.00001, 0.999994, 1.5, 1, -1.49012e-08, 0, 0, 0.455768, 0.0566024, 0.164387, 0.872954, 0.999999, 1.00001, 0.999994, 3, 1, -4.65661e-10, 2.98023e-08, 0, 0.427926, 0.0621255, 0.141873, 0.890445, 0.999999, 1.00001, 0.999994 ) +tracks/5/type = "transform" +tracks/5/path = NodePath("Armature/Skeleton:right_thigh") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = PoolRealArray( 0, 1, -7.45058e-09, 9.31323e-10, 0, -0.194821, 0.178275, 0.120824, 0.956904, 0.999992, 1, 1, 1.5, 1, -7.45058e-09, 6.0536e-08, 3.95812e-09, -0.240742, 0.193381, 0.111685, 0.944549, 0.999991, 1, 1, 3, 1, -7.45058e-09, 9.31323e-10, 0, -0.194821, 0.178275, 0.120824, 0.956904, 0.999992, 1, 1 ) +tracks/6/type = "transform" +tracks/6/path = NodePath("Armature/Skeleton:right_thumb_head") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = PoolRealArray( 0, 1, 0, 0, -1.49012e-08, -5.02023e-09, -3.05436e-09, -0.0414094, 0.999142, 1, 1, 1, 1.5, 1, 0, 0, 0, -3.83903e-09, 2.95547e-09, -0.0414094, 0.999142, 1, 1, 1, 3, 1, 0, 0, -1.49012e-08, -5.02023e-09, -3.05436e-09, -0.0414094, 0.999142, 1, 1, 1 ) +tracks/7/type = "transform" +tracks/7/path = NodePath("Armature/Skeleton:right_thumb_base") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = PoolRealArray( 0, 1, -2.34926e-07, 2.98023e-08, -4.91273e-08, -1.66521e-06, -0.0871557, 1.33797e-06, 0.996195, 1, 1, 1, 1.5, 1, -5.96046e-08, -6.70552e-08, 2.07219e-08, -1.63812e-06, -0.0871558, 1.2347e-06, 0.996195, 1, 1, 1, 3, 1, -2.34926e-07, 2.98023e-08, -4.91273e-08, -1.66521e-06, -0.0871557, 1.33797e-06, 0.996195, 1, 1, 1 ) +tracks/8/type = "transform" +tracks/8/path = NodePath("Armature/Skeleton:right_fingers_head") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = PoolRealArray( 0, 1, 0, 1.49012e-08, -9.31323e-09, -0.181219, -4.87223e-09, 7.44653e-10, 0.983443, 1, 1, 1, 1.5, 1, -5.96046e-08, 0, -2.98023e-08, -0.181219, 3.7323e-09, -1.51154e-08, 0.983443, 1, 1, 1, 3, 1, 0, 1.49012e-08, -9.31323e-09, -0.181219, -4.87223e-09, 7.44653e-10, 0.983443, 1, 1, 1 ) +tracks/9/type = "transform" +tracks/9/path = NodePath("Armature/Skeleton:right_fingers_base") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = PoolRealArray( 0, 1, 1.19209e-07, 0, -7.45058e-09, -0.204865, 3.45548e-09, 1.67475e-09, 0.97879, 1, 1, 1, 1.5, 1, -1.19209e-07, 7.45058e-09, 0, -0.204865, 9.88946e-09, 7.30318e-09, 0.97879, 1, 1, 1, 3, 1, 1.19209e-07, 0, -7.45058e-09, -0.204865, 3.45548e-09, 1.67475e-09, 0.97879, 1, 1, 1 ) +tracks/10/type = "transform" +tracks/10/path = NodePath("Armature/Skeleton:right_hand") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = PoolRealArray( 0, 1, -1.19209e-07, -1.49012e-08, -3.72529e-09, -0.236992, -0.0367779, 0.00383488, 0.970808, 1, 1, 1, 1.5, 1, 0, 0, 0, -0.241115, -0.0281187, 0.0477399, 0.968914, 1, 1, 1, 3, 1, -1.19209e-07, -1.49012e-08, -3.72529e-09, -0.236992, -0.0367779, 0.00383488, 0.970808, 1, 1, 1 ) +tracks/11/type = "transform" +tracks/11/path = NodePath("Armature/Skeleton:right_forearm") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = PoolRealArray( 0, 1, 0, 0, 0, -0.614601, 0.0840237, 0.573726, 0.534831, 1, 1, 1, 1.5, 1, -1.49012e-08, 0, 0, -0.466716, 0.1082, 0.670965, 0.565929, 1, 1, 1, 3, 1, 0, 0, 0, -0.614601, 0.0840237, 0.573726, 0.534831, 1, 1, 1 ) +tracks/12/type = "transform" +tracks/12/path = NodePath("Armature/Skeleton:right_upper_arm") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = PoolRealArray( 0, 1, -3.72529e-09, 0, 0, -0.27398, -0.0283643, 0.282547, 0.918857, 1, 1, 1, 1.5, 1, 7.45058e-09, 0, 4.65661e-10, -0.285641, -0.0968182, 0.302241, 0.90426, 1, 1, 1, 3, 1, -3.72529e-09, 0, 0, -0.27398, -0.0283643, 0.282547, 0.918857, 1, 1, 1 ) +tracks/13/type = "transform" +tracks/13/path = NodePath("Armature/Skeleton:right_clavicle") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = PoolRealArray( 0, 1, -1.49012e-08, -1.49012e-08, 2.23517e-07, -9.78624e-10, 1.00583e-07, 7.1188e-08, 1, 1, 1, 1, 1.5, 1, -1.49012e-08, -2.23517e-08, -1.49012e-08, 0.0118144, 0.00613035, 0.0603184, 0.99809, 1, 1, 1, 3, 1, -1.49012e-08, -1.49012e-08, 2.23517e-07, -9.78624e-10, 1.00583e-07, 7.1188e-08, 1, 1, 1, 1 ) +tracks/14/type = "transform" +tracks/14/path = NodePath("Armature/Skeleton:left_fingers_end") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = PoolRealArray( 0, 1, 1.19267e-07, -1.49012e-08, 0, -0.376162, -3.52695e-09, 3.96791e-09, 0.926554, 1, 1, 1, 1.5, 1, 5.82077e-11, -2.98023e-08, -2.98023e-08, -0.376162, -8.58903e-10, -1.985e-09, 0.926554, 1, 1, 1, 3, 1, 1.19267e-07, -1.49012e-08, 0, -0.376162, -3.52695e-09, 3.96791e-09, 0.926554, 1, 1, 1 ) +tracks/15/type = "transform" +tracks/15/path = NodePath("Armature/Skeleton:left_fingers_base") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = PoolRealArray( 0, 1, 1.19224e-07, 7.45058e-09, 9.31323e-10, -0.163084, 7.43831e-07, 2.51332e-07, 0.986612, 1, 1, 1, 1.5, 1, 0, 7.45058e-09, 0, -0.163084, 5.15376e-07, 3.54219e-07, 0.986612, 1, 1, 1, 3, 1, 1.19224e-07, 7.45058e-09, 9.31323e-10, -0.163084, 7.43831e-07, 2.51332e-07, 0.986612, 1, 1, 1 ) +tracks/16/type = "transform" +tracks/16/path = NodePath("Armature/Skeleton:left_thumb_end") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = PoolRealArray( 0, 1, -5.96046e-08, 1.86265e-08, -3.63798e-12, -8.14907e-10, 1.50176e-08, 4.1473e-10, 1, 1, 1, 1, 1.5, 1, -6.14673e-08, 5.58794e-09, -5.9601e-08, 4.65661e-10, 2.32831e-10, 4.6748e-10, 1, 1, 1, 1, 3, 1, -5.96046e-08, 1.86265e-08, -3.63798e-12, -8.14907e-10, 1.50176e-08, 4.1473e-10, 1, 1, 1, 1 ) +tracks/17/type = "transform" +tracks/17/path = NodePath("Armature/Skeleton:left_thunb_base") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = PoolRealArray( 0, 1, -1.17347e-07, -8.9407e-08, -1.19675e-07, -8.75443e-08, 3.8743e-07, -5.12227e-08, 1, 1, 1, 1, 1.5, 1, 9.31323e-10, -5.96046e-08, -2.32831e-10, -1.73226e-07, -3.72529e-08, -4.42378e-08, 1, 1, 1, 1, 3, 1, -1.17347e-07, -8.9407e-08, -1.19675e-07, -8.75443e-08, 3.8743e-07, -5.12227e-08, 1, 1, 1, 1 ) +tracks/18/type = "transform" +tracks/18/path = NodePath("Armature/Skeleton:left_hand") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = PoolRealArray( 0, 1, -5.93718e-08, 2.98023e-08, 3.72529e-09, 0.33709, -0.0418561, 0.176893, 0.923757, 1, 1, 1, 1.5, 1, 1.18976e-07, 0, 0, 0.381372, 0.00743915, 0.0742218, 0.921407, 1, 1, 1, 3, 1, -5.93718e-08, 2.98023e-08, 3.72529e-09, 0.33709, -0.0418561, 0.176893, 0.923757, 1, 1, 1 ) +tracks/19/type = "transform" +tracks/19/path = NodePath("Armature/Skeleton:left_forearm") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = PoolRealArray( 0, 1, 1.49012e-08, 0, 5.96046e-08, -0.269704, 0.0221059, -0.666233, 0.694914, 0.999999, 1, 1, 1.5, 1, -1.49012e-08, 0, 0, -0.359071, -0.0913725, -0.668386, 0.644965, 0.999999, 1, 1, 3, 1, 1.49012e-08, 0, 5.96046e-08, -0.269704, 0.0221059, -0.666233, 0.694914, 0.999999, 1, 1 ) +tracks/20/type = "transform" +tracks/20/path = NodePath("Armature/Skeleton:left_upper_arm") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = PoolRealArray( 0, 1, -5.58794e-09, 2.23517e-08, 0, -0.390089, -0.0998078, 0.00527796, 0.915337, 1, 1, 1, 1.5, 1, 7.45058e-09, 7.45058e-09, -1.19675e-07, -0.371688, -0.120767, 0.0558024, 0.918776, 1, 1, 1, 3, 1, -5.58794e-09, 2.23517e-08, 0, -0.390089, -0.0998078, 0.00527796, 0.915337, 1, 1, 1 ) +tracks/21/type = "transform" +tracks/21/path = NodePath("Armature/Skeleton:left_clavicle") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = PoolRealArray( 0, 1, -1.58325e-08, 1.49012e-08, -2.38419e-07, 1.28144e-07, -1.11759e-08, 1.18744e-07, 1, 1, 1, 1, 1.5, 1, 1.39698e-08, -1.49012e-08, -2.38419e-07, 0.00279704, 0.000975083, 0.0338322, 0.999423, 1, 1, 1, 3, 1, -1.58325e-08, 1.49012e-08, -2.38419e-07, 1.28144e-07, -1.11759e-08, 1.18744e-07, 1, 1, 1, 1 ) +tracks/22/type = "transform" +tracks/22/path = NodePath("Armature/Skeleton:head") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = PoolRealArray( 0, 1, 2.96859e-09, 0, 0, 0.00257328, 0.342012, -0.00932132, 0.939646, 1, 1, 1, 1.5, 1, -2.79397e-09, 0, 0, 0.00358717, 0.342015, -0.00205769, 0.939686, 1, 1, 1, 3, 1, 2.96859e-09, 0, 0, 0.00257328, 0.342012, -0.00932132, 0.939646, 1, 1, 1 ) +tracks/23/type = "transform" +tracks/23/path = NodePath("Armature/Skeleton:neck") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = PoolRealArray( 0, 1, -2.47383e-10, 1.04308e-07, 7.45058e-09, -3.72529e-09, -1.49703e-08, -8.37645e-10, 1, 1, 1, 1, 1.5, 1, 3.84171e-09, 0, 0, -3.72529e-09, -1.49885e-08, -8.24912e-10, 1, 1, 1, 1, 3, 1, -2.47383e-10, 1.04308e-07, 7.45058e-09, -3.72529e-09, -1.49703e-08, -8.37645e-10, 1, 1, 1, 1 ) +tracks/24/type = "transform" +tracks/24/path = NodePath("Armature/Skeleton:spine_2") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = PoolRealArray( 0, 1, 7.10543e-15, 1.19209e-07, 0, 0.00742093, -0.081826, 0.00219693, 0.996617, 1, 1, 1, 1.5, 1, 1.7458e-10, -1.19209e-07, -1.62981e-09, 0.00804153, -0.0935469, -0.00247535, 0.995579, 1, 1, 1, 3, 1, 7.10543e-15, 1.19209e-07, 0, 0.00742093, -0.081826, 0.00219693, 0.996617, 1, 1, 1 ) +tracks/25/type = "transform" +tracks/25/path = NodePath("Armature/Skeleton:spine_1") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = PoolRealArray( 0, 1, 8.14907e-10, -5.96046e-08, 0, -0.00729619, -0.0678655, -0.00455785, 0.997657, 1, 1, 1, 1.5, 1, 0, 0, 0, -0.0205845, -0.0913443, -0.00349328, 0.9956, 1, 1, 1, 3, 1, 8.14907e-10, -5.96046e-08, 0, -0.00729619, -0.0678655, -0.00455785, 0.997657, 1, 1, 1 ) +tracks/26/type = "transform" +tracks/26/path = NodePath("Armature/Skeleton:spine") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = PoolRealArray( 0, 1, 4.65661e-10, 0, 0, 0.00643979, -0.0454244, 0.00153577, 0.998946, 1, 1, 1, 1.5, 1, 9.31323e-10, 1.19209e-07, 4.65661e-10, 0.000551859, -0.0922162, 0.0123842, 0.995662, 1, 1, 1, 3, 1, 4.65661e-10, 0, 0, 0.00643979, -0.0454244, 0.00153577, 0.998946, 1, 1, 1 ) +tracks/27/type = "transform" +tracks/27/path = NodePath("Armature/Skeleton:pelvis") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = PoolRealArray( 0, 1, 0, -0.0768812, -3.62779e-08, 5.35928e-08, -0.228879, -1.21589e-07, 0.973455, 1, 1, 1, 1.5, 1, 0, -0.0967957, -4.56785e-08, 0.0149847, -0.245796, -0.00380032, 0.969198, 1, 1, 1, 3, 1, 0, -0.0768812, -3.62779e-08, 5.35928e-08, -0.228879, -1.21589e-07, 0.973455, 1, 1, 1 ) +tracks/28/type = "transform" +tracks/28/path = NodePath("Armature/Skeleton:root") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = PoolRealArray( 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1.5, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 ) +start_frame_index = 0 +keyframe/0/name = "" +keyframe/0/animation_keyframe_index = 20 +keyframe/0/next_keyframe = 1 +keyframe/0/transition = 1.0 +keyframe/0/time = 1.5 +keyframe/0/position = Vector2( 220, 0 ) +keyframe/1/name = "" +keyframe/1/animation_keyframe_index = 21 +keyframe/1/next_keyframe = 2 +keyframe/1/transition = 1.0 +keyframe/1/time = 1.5 +keyframe/1/position = Vector2( 440, 0 ) +keyframe/2/name = "" +keyframe/2/animation_keyframe_index = 20 +keyframe/2/next_keyframe = -1 +keyframe/2/transition = 1.0 +keyframe/2/time = 0.0 +keyframe/2/position = Vector2( 640, 0 ) diff --git a/game/modules/species/Human/models/dead.tres b/game/modules/species/Human/models/dead.tres new file mode 100644 index 0000000..ac55fd0 --- /dev/null +++ b/game/modules/species/Human/models/dead.tres @@ -0,0 +1,214 @@ +[gd_resource type="Animation" format=2] + +[resource] +loop = true +tracks/0/type = "transform" +tracks/0/path = NodePath("Armature/Skeleton:left_foot") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = PoolRealArray( 0, 1, 9.31323e-09, -7.45058e-09, 5.96046e-08, 0.224406, 0.231571, 0.123262, 0.938522, 1, 1, 1 ) +tracks/1/type = "transform" +tracks/1/path = NodePath("Armature/Skeleton:left_calf") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = PoolRealArray( 0, 1, 0, 0, 0, 0.1505, -0.00629746, 0.0480323, 0.987422, 1, 1, 0.999999 ) +tracks/2/type = "transform" +tracks/2/path = NodePath("Armature/Skeleton:left_thigh") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = PoolRealArray( 0, 1, 7.45058e-09, 9.31323e-10, -7.45058e-09, -0.0888079, 0.0454234, -0.0214596, 0.994781, 1, 1, 1 ) +tracks/3/type = "transform" +tracks/3/path = NodePath("Armature/Skeleton:right_foot") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = PoolRealArray( 0, 1, 0, -2.23517e-08, -5.96046e-08, 0.296488, -0.0804118, 0.156365, 0.938711, 1, 1, 1 ) +tracks/4/type = "transform" +tracks/4/path = NodePath("Armature/Skeleton:right_calf") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = PoolRealArray( 0, 1, -1.53668e-08, 5.96046e-08, -9.31323e-09, 0.456681, 0.0495779, -0.182057, 0.86939, 0.999999, 1.00001, 0.999993 ) +tracks/5/type = "transform" +tracks/5/path = NodePath("Armature/Skeleton:right_thigh") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = PoolRealArray( 0, 1, 0, 0, -7.45058e-09, -0.303304, 0.184428, 0.12891, 0.925945, 0.999991, 1.00001, 1 ) +tracks/6/type = "transform" +tracks/6/path = NodePath("Armature/Skeleton:right_thumb_head") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = PoolRealArray( 0, 1, 5.58794e-09, 0, 0, 3.72529e-09, 8.3819e-09, 9.20045e-09, 1, 1, 1, 1 ) +tracks/7/type = "transform" +tracks/7/path = NodePath("Armature/Skeleton:right_thumb_base") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = PoolRealArray( 0, 1, -6.51926e-09, -7.45058e-09, 2.91038e-08, -1.64686e-06, -0.0871557, 1.31153e-06, 0.996195, 1, 1, 1 ) +tracks/8/type = "transform" +tracks/8/path = NodePath("Armature/Skeleton:right_fingers_head") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = PoolRealArray( 0, 1, 0, -3.72529e-09, 0, -3.1665e-08, -5.58794e-09, -6.34464e-09, 1, 1, 1, 1 ) +tracks/9/type = "transform" +tracks/9/path = NodePath("Armature/Skeleton:right_fingers_base") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = PoolRealArray( 0, 1, 1.49012e-08, 0, -2.98023e-08, -7.45058e-09, -2.23517e-08, -2.79397e-09, 1, 1, 1, 1 ) +tracks/10/type = "transform" +tracks/10/path = NodePath("Armature/Skeleton:right_hand") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = PoolRealArray( 0, 1, 0, 0, 0, -0.0559862, -0.164802, -0.072432, 0.982069, 1, 1, 1 ) +tracks/11/type = "transform" +tracks/11/path = NodePath("Armature/Skeleton:right_forearm") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = PoolRealArray( 0, 1, -5.58794e-09, 0, 0, -0.42147, 0.0346284, -0.139579, 0.895367, 1, 1, 1 ) +tracks/12/type = "transform" +tracks/12/path = NodePath("Armature/Skeleton:right_upper_arm") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = PoolRealArray( 0, 1, 7.45058e-09, 0, 4.65661e-10, -0.263863, 0.0275448, 0.418639, 0.868539, 1, 1, 1 ) +tracks/13/type = "transform" +tracks/13/path = NodePath("Armature/Skeleton:right_clavicle") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = PoolRealArray( 0, 1, 0, 0, 0, -1.08768e-07, 5.58794e-08, -5.40167e-08, 1, 1, 1, 1 ) +tracks/14/type = "transform" +tracks/14/path = NodePath("Armature/Skeleton:left_fingers_end") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = PoolRealArray( 0, 1, -3.66708e-09, 1.11759e-08, -2.9806e-08, -2.19734e-08, 5.82077e-11, -2.44907e-09, 1, 1, 1, 1 ) +tracks/15/type = "transform" +tracks/15/path = NodePath("Armature/Skeleton:left_fingers_base") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = PoolRealArray( 0, 1, -1.8772e-09, 0, -2.98023e-08, -7.45058e-09, -7.45058e-09, -5.68107e-08, 1, 1, 1, 1 ) +tracks/16/type = "transform" +tracks/16/path = NodePath("Armature/Skeleton:left_thumb_end") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = PoolRealArray( 0, 1, -1.49012e-08, 7.45058e-09, -2.98023e-08, 1.04774e-08, 5.58794e-09, 4.48381e-10, 1, 1, 1, 1 ) +tracks/17/type = "transform" +tracks/17/path = NodePath("Armature/Skeleton:left_thunb_base") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = PoolRealArray( 0, 1, 7.91624e-09, 0, 4.65661e-10, -1.63913e-07, -1.49012e-08, 1.86264e-09, 1, 1, 1, 1 ) +tracks/18/type = "transform" +tracks/18/path = NodePath("Armature/Skeleton:left_hand") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = PoolRealArray( 0, 1, -2.98023e-08, -1.49012e-08, 1.49012e-08, 0.214606, -0.472254, 0.106959, 0.848222, 1, 1, 1 ) +tracks/19/type = "transform" +tracks/19/path = NodePath("Armature/Skeleton:left_forearm") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = PoolRealArray( 0, 1, -2.98023e-08, -2.98023e-08, 0, -0.274527, 0.133859, -0.172067, 0.936541, 1, 1, 1 ) +tracks/20/type = "transform" +tracks/20/path = NodePath("Armature/Skeleton:left_upper_arm") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = PoolRealArray( 0, 1, -1.49012e-08, 7.45058e-09, -4.65661e-10, -0.356153, 0.148017, 0.125353, 0.914075, 1, 1, 1 ) +tracks/21/type = "transform" +tracks/21/path = NodePath("Armature/Skeleton:left_clavicle") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = PoolRealArray( 0, 1, -1.53668e-08, -7.45058e-09, -5.96046e-08, 1.30865e-07, 1.49012e-08, 9.20845e-08, 1, 1, 1, 1 ) +tracks/22/type = "transform" +tracks/22/path = NodePath("Armature/Skeleton:head") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = PoolRealArray( 0, 1, 1.81899e-12, 1.19209e-07, -7.45058e-09, 0.0187419, -0.0929371, -0.013453, 0.995405, 1, 1, 1 ) +tracks/23/type = "transform" +tracks/23/path = NodePath("Armature/Skeleton:neck") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = PoolRealArray( 0, 1, 0, -5.96046e-08, -7.45058e-09, -3.72529e-09, 3.63798e-12, 4.66571e-10, 1, 1, 1, 1 ) +tracks/24/type = "transform" +tracks/24/path = NodePath("Armature/Skeleton:spine_2") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = PoolRealArray( 0, 1, 8.52651e-14, 0, 0, 0.0103858, -0.0187843, 0.0253593, 0.999448, 1, 1, 1 ) +tracks/25/type = "transform" +tracks/25/path = NodePath("Armature/Skeleton:spine_1") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = PoolRealArray( 0, 1, 0, 0, 0, -0.012725, -0.0103474, -0.0247905, 0.999558, 1, 1, 1 ) +tracks/26/type = "transform" +tracks/26/path = NodePath("Armature/Skeleton:spine") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = PoolRealArray( 0, 1, 3.72529e-09, 0, 7.45058e-09, 0.0248872, -0.00465499, -0.004432, 0.99967, 1, 1, 1 ) +tracks/27/type = "transform" +tracks/27/path = NodePath("Armature/Skeleton:pelvis") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = PoolRealArray( 0, 1, 0, -0.673836, -3.17945e-07, 0.690454, -0.152554, -0.152554, 0.690454, 1, 1, 1 ) +tracks/28/type = "transform" +tracks/28/path = NodePath("Armature/Skeleton:root") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = PoolRealArray( 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 ) +start_frame_index = 0 +keyframe/0/name = "" +keyframe/0/animation_keyframe_index = 30 +keyframe/0/next_keyframe = -1 +keyframe/0/transition = 1.0 +keyframe/0/time = 1.0 +keyframe/0/position = Vector2( 220, 0 ) diff --git a/game/modules/species/Human/models/idle-loop.tres b/game/modules/species/Human/models/idle-loop.tres new file mode 100644 index 0000000..2e518c8 --- /dev/null +++ b/game/modules/species/Human/models/idle-loop.tres @@ -0,0 +1,227 @@ +[gd_resource type="Animation" format=2] + +[resource] +length = 3.0 +loop = true +tracks/0/type = "transform" +tracks/0/path = NodePath("Armature/Skeleton:left_foot") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = PoolRealArray( 0, 1, 7.45058e-09, 0, 0, -6.42597e-07, -1.35898e-07, -0.059918, 0.998203, 1, 1, 1, 1, 1, 0, -7.45058e-09, 0, -0.0212136, -0.000454444, -0.0637177, 0.997742, 1, 1, 1, 2, 1, 7.45058e-09, 0, 0, -6.42597e-07, -1.35898e-07, -0.059918, 0.998203, 1, 1, 1 ) +tracks/1/type = "transform" +tracks/1/path = NodePath("Armature/Skeleton:left_calf") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = PoolRealArray( 0, 1, 0, 5.96046e-08, 0, 0.132753, 0.000161663, 0.0141515, 0.991048, 1, 1, 1, 1, 1, 7.91624e-09, -2.98023e-08, 0, 0.14446, 0.0134386, 0.0106908, 0.989362, 1, 1, 0.999999, 2, 1, 0, 5.96046e-08, 0, 0.132753, 0.000161663, 0.0141515, 0.991048, 1, 1, 1 ) +tracks/2/type = "transform" +tracks/2/path = NodePath("Armature/Skeleton:left_thigh") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = PoolRealArray( 0, 1, -2.23517e-08, -5.86733e-08, 0, -0.0715791, -0.0103855, -0.0277448, 0.996995, 1, 1, 1, 1, 1, -7.45058e-09, 0, 4.65661e-10, -0.0758457, -0.00493236, -0.00448998, 0.997097, 1, 1, 1, 2, 1, -2.23517e-08, -5.86733e-08, 0, -0.0715791, -0.0103855, -0.0277448, 0.996995, 1, 1, 1 ) +tracks/3/type = "transform" +tracks/3/path = NodePath("Armature/Skeleton:right_foot") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = PoolRealArray( 0, 1, -5.58794e-09, 0, 0, -8.32667e-17, -5.58794e-09, 3.72529e-09, 1, 1, 1, 1, 1, 1, 0, -7.45058e-09, 0, -0.0324907, 0.00317484, 0.00643727, 0.999446, 1, 1, 1, 2, 1, -5.58794e-09, 0, 0, -8.32667e-17, -5.58794e-09, 3.72529e-09, 1, 1, 1, 1 ) +tracks/4/type = "transform" +tracks/4/path = NodePath("Armature/Skeleton:right_calf") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = PoolRealArray( 0, 1, 1.49012e-08, -2.98023e-08, 0, 0.0765039, -0.0152721, -0.0415624, 0.996086, 1, 1, 1, 1, 1, 1.49012e-08, -2.98023e-08, 0, 0.135013, -0.0205545, -0.00442197, 0.990621, 1, 1, 0.999999, 2, 1, 1.49012e-08, -2.98023e-08, 0, 0.0765039, -0.0152721, -0.0415624, 0.996086, 1, 1, 1 ) +tracks/5/type = "transform" +tracks/5/path = NodePath("Armature/Skeleton:right_thigh") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = PoolRealArray( 0, 1, 1.49012e-08, -5.86733e-08, 0, -0.0474481, 0.00980067, 0.0079771, 0.998794, 1, 1, 1, 1, 1, -1.49012e-08, 0, -6.98492e-10, -0.0729724, 0.00473046, 0.00430401, 0.997314, 1, 1, 1, 2, 1, 1.49012e-08, -5.86733e-08, 0, -0.0474481, 0.00980067, 0.0079771, 0.998794, 1, 1, 1 ) +tracks/6/type = "transform" +tracks/6/path = NodePath("Armature/Skeleton:right_thumb_head") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = PoolRealArray( 0, 1, -1.86265e-09, 5.96046e-08, 0, -9.31322e-10, 3.25963e-09, 9.17498e-09, 1, 1, 1, 1, 1, 1, 7.45058e-09, 0, 0, -2.09548e-09, 9.31322e-10, 9.16043e-09, 1, 1, 1, 1, 2, 1, -1.86265e-09, 5.96046e-08, 0, -9.31322e-10, 3.25963e-09, 9.17498e-09, 1, 1, 1, 1 ) +tracks/7/type = "transform" +tracks/7/path = NodePath("Armature/Skeleton:right_thumb_base") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = PoolRealArray( 0, 1, -2.84053e-08, -2.30968e-07, -3.72529e-09, -1.65746e-06, -0.0871557, 1.33911e-06, 0.996195, 1, 1, 1, 1, 1, -5.58794e-08, 1.19209e-07, -2.65427e-08, -1.66691e-06, -0.0871558, 1.29248e-06, 0.996195, 1, 1, 1, 2, 1, -2.84053e-08, -2.30968e-07, -3.72529e-09, -1.65746e-06, -0.0871557, 1.33911e-06, 0.996195, 1, 1, 1 ) +tracks/8/type = "transform" +tracks/8/path = NodePath("Armature/Skeleton:right_fingers_head") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = PoolRealArray( 0, 1, 2.91038e-11, 0, 1.49012e-08, -0.139265, 2.59464e-09, 8.30026e-09, 0.990255, 1, 1, 1, 1, 1, -2.03727e-10, -5.96046e-08, 0, -0.139265, -1.0256e-09, 6.05215e-10, 0.990255, 1, 1, 1, 2, 1, 2.91038e-11, 0, 1.49012e-08, -0.139265, 2.59464e-09, 8.30026e-09, 0.990255, 1, 1, 1 ) +tracks/9/type = "transform" +tracks/9/path = NodePath("Armature/Skeleton:right_fingers_base") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = PoolRealArray( 0, 1, -7.21775e-09, -5.96046e-08, 0, -0.05376, 3.6448e-09, 1.59524e-09, 0.998554, 1, 1, 1, 1, 1, 4.65661e-10, 0, 0, -0.0537601, 0, 0, 0.998554, 1, 1, 1, 2, 1, -7.21775e-09, -5.96046e-08, 0, -0.05376, 3.6448e-09, 1.59524e-09, 0.998554, 1, 1, 1 ) +tracks/10/type = "transform" +tracks/10/path = NodePath("Armature/Skeleton:right_hand") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = PoolRealArray( 0, 1, 3.49246e-09, 0, 0, -0.110367, 0.00566552, 0.0145224, 0.993769, 1, 1, 1, 1, 1, 0, 0, 2.98023e-08, -0.110367, 0.00566552, 0.0145224, 0.993769, 1, 1, 1, 2, 1, 3.49246e-09, 0, 0, -0.110367, 0.00566552, 0.0145224, 0.993769, 1, 1, 1 ) +tracks/11/type = "transform" +tracks/11/path = NodePath("Armature/Skeleton:right_forearm") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = PoolRealArray( 0, 1, -1.86265e-09, -5.96046e-08, 2.98023e-08, -0.055871, 0.029279, 0.121061, 0.990639, 1, 1, 1, 1, 1, 0, 5.96046e-08, 0, -0.0611071, 0.000259519, 8.22582e-06, 0.998131, 1, 1, 1, 2, 1, -1.86265e-09, -5.96046e-08, 2.98023e-08, -0.055871, 0.029279, 0.121061, 0.990639, 1, 1, 1 ) +tracks/12/type = "transform" +tracks/12/path = NodePath("Armature/Skeleton:right_upper_arm") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = PoolRealArray( 0, 1, -7.45058e-09, -7.45058e-09, 4.65661e-10, -0.518247, -0.01038, -0.0931942, 0.850075, 1, 1, 1, 1, 1, 4.65661e-10, 7.45058e-09, 1.19209e-07, -0.545974, 0.000177713, -0.0066096, 0.837776, 1, 1, 1, 2, 1, -7.45058e-09, -7.45058e-09, 4.65661e-10, -0.518247, -0.01038, -0.0931942, 0.850075, 1, 1, 1 ) +tracks/13/type = "transform" +tracks/13/path = NodePath("Armature/Skeleton:right_clavicle") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = PoolRealArray( 0, 1, 1.49012e-08, -7.45058e-09, -1.49012e-08, -0.0811645, 0.000232298, -0.00449111, 0.996691, 1, 1, 1, 1, 1, -1.58325e-08, 2.98023e-08, 0, -0.0420035, 6.03078e-06, -0.000414931, 0.999117, 1, 1, 1, 2, 1, 1.49012e-08, -7.45058e-09, -1.49012e-08, -0.0811645, 0.000232298, -0.00449111, 0.996691, 1, 1, 1 ) +tracks/14/type = "transform" +tracks/14/path = NodePath("Armature/Skeleton:left_fingers_end") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = PoolRealArray( 0, 1, 7.45058e-09, 0, 3.72529e-09, -0.110999, 4.0795e-10, 1.32923e-09, 0.993821, 1, 1, 1, 1, 1, 5.82077e-11, 0, -3.72529e-09, -0.110999, -1.09626e-09, 1.16272e-09, 0.993821, 1, 1, 1, 2, 1, 7.45058e-09, 0, 3.72529e-09, -0.110999, 4.0795e-10, 1.32923e-09, 0.993821, 1, 1, 1 ) +tracks/15/type = "transform" +tracks/15/path = NodePath("Armature/Skeleton:left_fingers_base") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = PoolRealArray( 0, 1, 0, 5.96046e-08, 0, -0.166404, 2.4601e-07, 2.43637e-07, 0.986058, 1, 1, 1, 1, 1, 1.84809e-09, -5.21541e-08, 0, -0.166404, 2.64456e-07, 3.582e-07, 0.986058, 1, 1, 1, 2, 1, 0, 5.96046e-08, 0, -0.166404, 2.4601e-07, 2.43637e-07, 0.986058, 1, 1, 1 ) +tracks/16/type = "transform" +tracks/16/path = NodePath("Armature/Skeleton:left_thumb_end") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = PoolRealArray( 0, 1, 0, 0, -2.9806e-08, 3.49246e-10, -5.82077e-10, 4.72483e-10, 1, 1, 1, 1, 1, 1, -5.58794e-09, -6.14673e-08, 0, -2.32831e-10, 5.82076e-10, -1.44364e-08, 1, 1, 1, 1, 2, 1, 0, 0, -2.9806e-08, 3.49246e-10, -5.82077e-10, 4.72483e-10, 1, 1, 1, 1 ) +tracks/17/type = "transform" +tracks/17/path = NodePath("Armature/Skeleton:left_thunb_base") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = PoolRealArray( 0, 1, 6.1933e-08, -7.45058e-09, -4.65661e-10, -1.60187e-07, -5.21541e-08, 2.8871e-08, 1, 1, 1, 1, 1, 1, 0, 0, 0, -8.38191e-08, 3.65079e-07, 9.77893e-09, 1, 0.999999, 1, 1, 2, 1, 6.1933e-08, -7.45058e-09, -4.65661e-10, -1.60187e-07, -5.21541e-08, 2.8871e-08, 1, 1, 1, 1 ) +tracks/18/type = "transform" +tracks/18/path = NodePath("Armature/Skeleton:left_hand") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = PoolRealArray( 0, 1, 0, -5.96046e-08, 0, 0.0710916, -0.00669528, 0.00666156, 0.997425, 1, 1, 1, 1, 1, 0, 0, 0, 0.0710916, -0.00669567, 0.00666152, 0.997425, 1, 1, 1, 2, 1, 0, -5.96046e-08, 0, 0.0710916, -0.00669528, 0.00666156, 0.997425, 1, 1, 1 ) +tracks/19/type = "transform" +tracks/19/path = NodePath("Armature/Skeleton:left_forearm") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = PoolRealArray( 0, 1, 7.45058e-09, 0, 5.96046e-08, -0.103762, -0.000783459, -9.77494e-05, 0.994602, 1, 1, 1, 1, 1, 1.86265e-09, 5.96046e-08, 0, -0.103762, -0.000783458, -9.77493e-05, 0.994602, 1, 1, 1, 2, 1, 7.45058e-09, 0, 5.96046e-08, -0.103762, -0.000783459, -9.77494e-05, 0.994602, 1, 1, 1 ) +tracks/20/type = "transform" +tracks/20/path = NodePath("Armature/Skeleton:left_upper_arm") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = PoolRealArray( 0, 1, 1.86265e-09, -7.45058e-09, -1.19675e-07, -0.518606, 0.0187424, 0.0124434, 0.854717, 1, 1, 1, 1, 1, -3.72529e-09, -2.98023e-08, 0, -0.525748, -0.0101832, 0.00770391, 0.850545, 1, 1, 1, 2, 1, 1.86265e-09, -7.45058e-09, -1.19675e-07, -0.518606, 0.0187424, 0.0124434, 0.854717, 1, 1, 1 ) +tracks/21/type = "transform" +tracks/21/path = NodePath("Armature/Skeleton:left_clavicle") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = PoolRealArray( 0, 1, 1.39698e-08, -7.45058e-09, -2.38419e-07, -0.0592183, -2.85497e-05, 0.0015222, 0.998244, 1, 1, 1, 1, 1, -2.98023e-08, 2.23517e-08, -2.38419e-07, -0.0674837, -7.19857e-05, 0.00235558, 0.997718, 1, 1, 1, 2, 1, 1.39698e-08, -7.45058e-09, -2.38419e-07, -0.0592183, -2.85497e-05, 0.0015222, 0.998244, 1, 1, 1 ) +tracks/22/type = "transform" +tracks/22/path = NodePath("Armature/Skeleton:head") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = PoolRealArray( 0, 1, -2.32831e-10, 0, 0, -1.86265e-09, -5.82077e-11, -7.59428e-11, 1, 1, 1, 1, 1, 1, 3.72529e-09, 0, 0, 0.0126095, -0.000213503, 1.55637e-05, 0.99992, 1, 1, 1, 2, 1, -2.32831e-10, 0, 0, -1.86265e-09, -5.82077e-11, -7.59428e-11, 1, 1, 1, 1 ) +tracks/23/type = "transform" +tracks/23/path = NodePath("Armature/Skeleton:neck") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = PoolRealArray( 0, 1, 3.49246e-10, -1.19209e-07, 0, -3.72529e-09, -9.82254e-11, -5.32054e-11, 1, 1, 1, 1, 1, 1, 0, 0, -6.51926e-09, -3.72529e-09, 1.01863e-10, -4.62478e-10, 1, 1, 1, 1, 2, 1, 3.49246e-10, -1.19209e-07, 0, -3.72529e-09, -9.82254e-11, -5.32054e-11, 1, 1, 1, 1 ) +tracks/24/type = "transform" +tracks/24/path = NodePath("Armature/Skeleton:spine_2") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = PoolRealArray( 0, 1, -1.86265e-09, 0, 0, 0.0113332, -0.00553805, -0.0113824, 0.999856, 1, 1, 1, 1, 1, 3.7253e-09, 0, 0, 0.0290807, -0.00483196, -0.012836, 0.999483, 1, 1, 1, 2, 1, -1.86265e-09, 0, 0, 0.0113332, -0.00553805, -0.0113824, 0.999856, 1, 1, 1 ) +tracks/25/type = "transform" +tracks/25/path = NodePath("Armature/Skeleton:spine_1") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = PoolRealArray( 0, 1, 3.49246e-10, -5.96046e-08, 0, -0.00878241, 0.0059254, 0.0138862, 0.999847, 1, 1, 1, 1, 1, 0, 0, 3.72529e-09, -0.0436695, 0.00373941, 0.0163364, 0.998905, 1, 1, 1, 2, 1, 3.49246e-10, -5.96046e-08, 0, -0.00878241, 0.0059254, 0.0138862, 0.999847, 1, 1, 1 ) +tracks/26/type = "transform" +tracks/26/path = NodePath("Armature/Skeleton:spine") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = PoolRealArray( 0, 1, -1.86265e-09, 0, 0, 0.00768075, -0.00198124, 0.0121408, 0.999895, 1, 1, 1, 1, 1, 9.31323e-10, 5.96046e-08, 9.31323e-10, 0.0212307, 0.000812157, 0.00775038, 0.999744, 1, 1, 1, 2, 1, -1.86265e-09, 0, 0, 0.00768075, -0.00198124, 0.0121408, 0.999895, 1, 1, 1 ) +tracks/27/type = "transform" +tracks/27/path = NodePath("Armature/Skeleton:pelvis") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = PoolRealArray( 0, 1, 0, -0.005992, -2.82307e-09, 6.27992e-13, 7.46674e-09, -0.0157419, 0.999876, 1, 1, 1, 1, 1, 0.0077123, -0.0126027, -5.95173e-09, 8.68397e-13, 2.85129e-09, -0.00601125, 0.999982, 1, 1, 1, 2, 1, 0, -0.005992, -2.82307e-09, 6.27992e-13, 7.46674e-09, -0.0157419, 0.999876, 1, 1, 1 ) +tracks/28/type = "transform" +tracks/28/path = NodePath("Armature/Skeleton:root") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = PoolRealArray( 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 ) +start_frame_index = 0 +keyframe/0/name = "" +keyframe/0/animation_keyframe_index = 40 +keyframe/0/next_keyframe = 1 +keyframe/0/transition = 1.0 +keyframe/0/time = 1.0 +keyframe/0/position = Vector2( 360, -60 ) +keyframe/1/name = "" +keyframe/1/animation_keyframe_index = 41 +keyframe/1/next_keyframe = 2 +keyframe/1/transition = 1.0 +keyframe/1/time = 1.0 +keyframe/1/position = Vector2( 600, -60 ) +keyframe/2/name = "" +keyframe/2/animation_keyframe_index = 40 +keyframe/2/next_keyframe = -1 +keyframe/2/transition = 1.0 +keyframe/2/time = 1.0 +keyframe/2/position = Vector2( 840, -60 ) diff --git a/game/modules/species/Human/models/rest.tres b/game/modules/species/Human/models/rest.tres new file mode 100644 index 0000000..45ff5c2 --- /dev/null +++ b/game/modules/species/Human/models/rest.tres @@ -0,0 +1,215 @@ +[gd_resource type="Animation" format=2] + +[resource] +length = 0.001 +tracks/0/type = "transform" +tracks/0/path = NodePath("Armature/Skeleton:left_foot") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = PoolRealArray( 0, 1, 0, 0, 0, -8.27181e-25, 9.31323e-10, 9.31323e-09, 1, 1, 1, 1 ) +tracks/1/type = "transform" +tracks/1/path = NodePath("Armature/Skeleton:left_calf") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = PoolRealArray( 0, 1, 0, 2.98023e-08, 0, -9.31323e-10, -1.39698e-09, 3.82715e-09, 1, 1, 1, 1 ) +tracks/2/type = "transform" +tracks/2/path = NodePath("Armature/Skeleton:left_thigh") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = PoolRealArray( 0, 1, 7.45058e-09, 6.14673e-08, 4.65661e-10, -4.65661e-10, 6.66784e-18, -7.15954e-09, 1, 1, 1, 1 ) +tracks/3/type = "transform" +tracks/3/path = NodePath("Armature/Skeleton:right_foot") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = PoolRealArray( 0, 1, 1.86265e-09, 0, 0, -1.73472e-17, -9.31323e-10, 3.72529e-09, 1, 1, 1, 1 ) +tracks/4/type = "transform" +tracks/4/path = NodePath("Armature/Skeleton:right_calf") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = PoolRealArray( 0, 1, 7.45058e-09, 0, 0, -3.72529e-09, 0, 8.73115e-10, 1, 1, 1, 1 ) +tracks/5/type = "transform" +tracks/5/path = NodePath("Armature/Skeleton:right_thigh") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = PoolRealArray( 0, 1, -7.45058e-09, 9.31323e-10, -9.31323e-10, 4.65661e-10, -3.72529e-09, 5.326e-09, 1, 1, 1, 1 ) +tracks/6/type = "transform" +tracks/6/path = NodePath("Armature/Skeleton:right_thumb_head") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = PoolRealArray( 0, 1, -5.96046e-08, -5.7742e-08, 0, 1.86264e-09, -3.25963e-09, 9.13496e-09, 1, 1, 1, 1 ) +tracks/7/type = "transform" +tracks/7/path = NodePath("Armature/Skeleton:right_thumb_base") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = PoolRealArray( 0, 1, -1.35042e-08, 1.19209e-07, 2.40514e-07, 3.72529e-09, -2.98023e-08, -1.30385e-08, 1, 1, 1, 1 ) +tracks/8/type = "transform" +tracks/8/path = NodePath("Armature/Skeleton:right_fingers_head") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = PoolRealArray( 0, 1, -3.72529e-09, -1.19209e-07, 0, -1.86265e-09, 1.86265e-09, -5.82077e-10, 1, 1, 1, 1 ) +tracks/9/type = "transform" +tracks/9/path = NodePath("Armature/Skeleton:right_fingers_base") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = PoolRealArray( 0, 1, -1.62981e-09, 5.96046e-08, -9.31323e-10, -3.72529e-09, 0, 0, 1, 1, 1, 1 ) +tracks/10/type = "transform" +tracks/10/path = NodePath("Armature/Skeleton:right_hand") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = PoolRealArray( 0, 1, -2.32831e-10, 0, -1.22935e-07, -8.27181e-25, 7.45058e-09, -9.31323e-10, 1, 1, 1, 1 ) +tracks/11/type = "transform" +tracks/11/path = NodePath("Armature/Skeleton:right_forearm") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = PoolRealArray( 0, 1, 7.45058e-09, 0, 0, 4.65661e-10, 1.86265e-09, -3.30328e-09, 1, 1, 1, 1 ) +tracks/12/type = "transform" +tracks/12/path = NodePath("Armature/Skeleton:right_upper_arm") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = PoolRealArray( 0, 1, 0, -7.45058e-09, 4.65661e-10, 3.72529e-09, 1.86265e-09, 3.72529e-09, 1, 1, 1, 1 ) +tracks/13/type = "transform" +tracks/13/path = NodePath("Armature/Skeleton:right_clavicle") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = PoolRealArray( 0, 1, 6.51926e-09, 0, 2.23517e-07, -1.11882e-07, 2.98023e-08, 3.20142e-09, 1, 1, 1, 1 ) +tracks/14/type = "transform" +tracks/14/path = NodePath("Armature/Skeleton:left_fingers_end") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = PoolRealArray( 0, 1, -8.73115e-10, 5.96046e-08, 0, -8.73115e-11, -2.91038e-11, -5.8634e-10, 1, 1, 1, 1 ) +tracks/15/type = "transform" +tracks/15/path = NodePath("Armature/Skeleton:left_fingers_base") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = PoolRealArray( 0, 1, 9.16771e-10, -5.21541e-08, 0, -4.44089e-16, -7.45058e-09, -5.4948e-08, 1, 1, 1, 1 ) +tracks/16/type = "transform" +tracks/16/path = NodePath("Armature/Skeleton:left_thumb_end") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = PoolRealArray( 0, 1, -7.45058e-09, 0, 0, 1.16415e-10, 1.16415e-10, 4.67935e-10, 1, 1, 1, 1 ) +tracks/17/type = "transform" +tracks/17/path = NodePath("Armature/Skeleton:left_thunb_base") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = PoolRealArray( 0, 1, -3.07336e-08, 0, 2.32831e-10, -8.75443e-08, 3.57628e-07, -3.86499e-08, 1, 1, 1, 1 ) +tracks/18/type = "transform" +tracks/18/path = NodePath("Armature/Skeleton:left_hand") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = PoolRealArray( 0, 1, -1.5134e-08, 0, 3.72529e-09, -1.49012e-08, -1.86264e-07, -1.67638e-08, 1, 1, 1, 1 ) +tracks/19/type = "transform" +tracks/19/path = NodePath("Armature/Skeleton:left_forearm") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = PoolRealArray( 0, 1, -3.72529e-09, 0, 0, 3.13741e-18, 4.65661e-10, 1.60071e-09, 1, 1, 1, 1 ) +tracks/20/type = "transform" +tracks/20/path = NodePath("Armature/Skeleton:left_upper_arm") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = PoolRealArray( 0, 1, 0, 1.49012e-08, 1.18744e-07, -1.86264e-09, 1.17094e-17, 6.28643e-09, 1, 1, 1, 1 ) +tracks/21/type = "transform" +tracks/21/path = NodePath("Armature/Skeleton:left_clavicle") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = PoolRealArray( 0, 1, -9.31323e-10, 0, -2.38419e-07, 1.18445e-07, -3.72529e-08, 5.61122e-08, 1, 1, 1, 1 ) +tracks/22/type = "transform" +tracks/22/path = NodePath("Armature/Skeleton:head") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = PoolRealArray( 0, 1, 1.81899e-12, 1.19209e-07, 0, -2.8455e-22, -1.45519e-11, -4.09273e-12, 1, 1, 1, 1 ) +tracks/23/type = "transform" +tracks/23/path = NodePath("Armature/Skeleton:neck") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = PoolRealArray( 0, 1, -5.82077e-11, 0, 7.45058e-09, -3.72529e-09, 3.63798e-12, -9.09495e-13, 1, 1, 1, 1 ) +tracks/24/type = "transform" +tracks/24/path = NodePath("Armature/Skeleton:spine_2") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = PoolRealArray( 0, 1, 1.16415e-10, 0, 0, -4.65661e-10, 0, 3.55271e-15, 1, 1, 1, 1 ) +tracks/25/type = "transform" +tracks/25/path = NodePath("Armature/Skeleton:spine_1") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = PoolRealArray( 0, 1, 0, 0, 4.65661e-10, 8.13152e-20, 9.31323e-10, 2.91038e-10, 1, 1, 1, 1 ) +tracks/26/type = "transform" +tracks/26/path = NodePath("Armature/Skeleton:spine") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = PoolRealArray( 0, 1, 0, 5.96046e-08, 0, 0, 0, 8.73115e-11, 1, 1, 1, 1 ) +tracks/27/type = "transform" +tracks/27/path = NodePath("Armature/Skeleton:pelvis") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = PoolRealArray( 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 ) +tracks/28/type = "transform" +tracks/28/path = NodePath("Armature/Skeleton:root") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = PoolRealArray( 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 ) +start_frame_index = 0 +keyframe/0/name = "" +keyframe/0/animation_keyframe_index = 0 +keyframe/0/next_keyframe = -1 +keyframe/0/transition = 1.0 +keyframe/0/time = 0.0 +keyframe/0/method_name = "" +keyframe/0/position = Vector2( 360, -60 ) diff --git a/game/modules/species/Human/models/run-left-loop.tres b/game/modules/species/Human/models/run-left-loop.tres new file mode 100644 index 0000000..bfd8cba --- /dev/null +++ b/game/modules/species/Human/models/run-left-loop.tres @@ -0,0 +1,239 @@ +[gd_resource type="Animation" format=2] + +[resource] +length = 0.8 +loop = true +tracks/0/type = "transform" +tracks/0/path = NodePath("Armature/Skeleton:left_foot") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = PoolRealArray( 0, 1, -5.58794e-09, -5.96046e-08, -5.96046e-08, 0.178851, 0.0815544, -0.19994, 0.959888, 1, 1, 1, 0.17, 1, -5.58794e-09, -5.96046e-08, 2.98023e-08, -0.0200893, 0.118122, -0.275996, 0.953661, 1, 1, 1, 0.4, 1, -5.58794e-09, 0, 2.98023e-08, 0.210634, -0.201289, -0.264238, 0.919399, 1, 1, 1, 0.57, 1, 3.72529e-09, 0, 0, -0.134978, -0.0112273, -0.191692, 0.972064, 1, 1, 1, 0.8, 1, -5.58794e-09, -5.96046e-08, -5.96046e-08, 0.178851, 0.0815544, -0.19994, 0.959888, 1, 1, 1 ) +tracks/1/type = "transform" +tracks/1/path = NodePath("Armature/Skeleton:left_calf") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = PoolRealArray( 0, 1, 2.28174e-08, -5.96046e-08, 0, 0.309434, 0.00834028, 0.123579, 0.94282, 0.999999, 1, 0.999997, 0.17, 1, 3.0268e-08, 5.96046e-08, 0, 0.858045, 0.020748, 0.43214, 0.276738, 0.999996, 1, 1, 0.4, 1, 3.0268e-08, -8.9407e-08, -5.86733e-08, 0.656069, 0.000542853, 0.230605, 0.718606, 0.999998, 1.00001, 0.999993, 0.57, 1, -3.25963e-09, -2.98023e-08, 1.49012e-08, 0.238889, 0.0102897, 0.0826172, 0.967471, 1, 1, 0.999998, 0.8, 1, 2.28174e-08, -5.96046e-08, 0, 0.309434, 0.00834028, 0.123579, 0.94282, 0.999999, 1, 0.999997 ) +tracks/2/type = "transform" +tracks/2/path = NodePath("Armature/Skeleton:left_thigh") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = PoolRealArray( 0, 1, 0, -5.96046e-08, -1.49012e-08, 0.195066, 0.154179, 0.0884728, 0.964547, 0.999992, 1, 1.00001, 0.17, 1, 7.45058e-09, 6.14673e-08, 4.65661e-10, -0.591284, 0.113752, -0.0566122, 0.796391, 0.999996, 0.999996, 1.00001, 0.4, 1, 0, -5.96046e-08, -1.49012e-08, -0.665554, 0.101236, -0.0839049, 0.734676, 0.999996, 0.999996, 1.00001, 0.57, 1, 0, -5.96046e-08, 0, -0.0160822, 0.104336, 0.0318193, 0.993903, 0.999997, 1, 1, 0.8, 1, 0, -5.96046e-08, -1.49012e-08, 0.195066, 0.154179, 0.0884728, 0.964547, 0.999992, 1, 1.00001 ) +tracks/3/type = "transform" +tracks/3/path = NodePath("Armature/Skeleton:right_foot") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = PoolRealArray( 0, 1, 1.86265e-09, -1.49012e-08, 2.98023e-08, 0.175061, -0.0175614, 0.136202, 0.974933, 1, 1, 1, 0.17, 1, 5.58794e-09, 2.23517e-08, -2.98023e-08, -0.0929145, -0.0629024, 0.159406, 0.980816, 1, 1, 1, 0.4, 1, -7.45058e-09, 0, 5.96046e-08, 0.249518, 0.0419373, 0.194067, 0.947797, 1, 1, 1, 0.57, 1, 1.49012e-08, -2.98023e-08, 0, 0.324866, 0.110127, 0.217509, 0.913796, 1, 1, 1, 0.8, 1, 1.86265e-09, -1.49012e-08, 2.98023e-08, 0.175061, -0.0175614, 0.136202, 0.974933, 1, 1, 1 ) +tracks/4/type = "transform" +tracks/4/path = NodePath("Armature/Skeleton:right_calf") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = PoolRealArray( 0, 1, -4.65661e-10, 0, 0, 0.69258, -0.0109734, -0.275166, 0.666705, 0.999998, 1.00001, 0.999991, 0.17, 1, 0, 0, 0, 0.439371, 0.00485768, -0.177133, 0.880655, 0.999999, 1.00001, 0.999994, 0.4, 1, -4.65661e-10, 2.98023e-08, 0, 0.225215, 0.0196586, -0.0913959, 0.969814, 1, 1, 0.999998, 0.57, 1, 0, 2.98023e-08, 6.0536e-08, 0.877553, -0.0248868, -0.356893, 0.319231, 0.999999, 1, 0.999997, 0.8, 1, -4.65661e-10, 0, 0, 0.69258, -0.0109734, -0.275166, 0.666705, 0.999998, 1.00001, 0.999991 ) +tracks/5/type = "transform" +tracks/5/path = NodePath("Armature/Skeleton:right_thigh") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = PoolRealArray( 0, 1, -7.45058e-09, 9.31323e-10, 1.49012e-08, -0.673067, -0.0724402, 0.12041, 0.726109, 0.999996, 1, 1, 0.17, 1, 0, 0, 0, -0.267146, -0.136788, 0.028901, 0.953461, 0.999996, 1, 1, 0.4, 1, -7.45058e-09, 9.31323e-10, 1.49012e-08, 0.241337, -0.189515, -0.077003, 0.948636, 0.999993, 1, 1.00001, 0.57, 1, 0, -1.18278e-07, 3.00352e-08, -0.525104, -0.0760576, 0.0788565, 0.843957, 0.999998, 1, 1, 0.8, 1, -7.45058e-09, 9.31323e-10, 1.49012e-08, -0.673067, -0.0724402, 0.12041, 0.726109, 0.999996, 1, 1 ) +tracks/6/type = "transform" +tracks/6/path = NodePath("Armature/Skeleton:right_thumb_head") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = PoolRealArray( 0, 1, -1.86265e-09, 5.96046e-08, -1.49012e-08, -5.71271e-10, -3.27614e-10, -0.261625, 0.96517, 1, 1, 1, 0.17, 1, 1.17347e-07, 1.49012e-08, -1.49012e-08, -3.41872e-08, -7.60939e-09, -0.394824, 0.918757, 1, 1, 1, 0.4, 1, 2.36556e-07, 1.86265e-08, 0, -2.19684e-08, -2.72946e-09, -0.261626, 0.965169, 1, 1, 1, 0.57, 1, 0, 0, 3.72529e-08, 1.50421e-08, 5.6177e-09, -0.157467, 0.987524, 1, 1, 1, 0.8, 1, -1.86265e-09, 5.96046e-08, -1.49012e-08, -5.71271e-10, -3.27614e-10, -0.261625, 0.96517, 1, 1, 1 ) +tracks/7/type = "transform" +tracks/7/path = NodePath("Armature/Skeleton:right_thumb_base") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = PoolRealArray( 0, 1, -5.58794e-08, 0, -9.77889e-09, -0.274655, 0.0289144, -0.0944311, 0.956458, 1, 1, 1, 0.17, 1, -2.33296e-07, 5.21541e-08, -4.19095e-08, -0.295847, 0.0685426, -0.191564, 0.933317, 1, 1, 1, 0.4, 1, 1.82772e-07, -1.19209e-07, 2.79397e-09, -0.274655, 0.028915, -0.0944323, 0.956457, 1, 1, 1, 0.57, 1, 2.32831e-10, 1.49012e-08, 1.16415e-09, -0.303913, 0.0446919, -0.128009, 0.943002, 1, 1, 1, 0.8, 1, -5.58794e-08, 0, -9.77889e-09, -0.274655, 0.0289144, -0.0944311, 0.956458, 1, 1, 1 ) +tracks/8/type = "transform" +tracks/8/path = NodePath("Armature/Skeleton:right_fingers_head") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = PoolRealArray( 0, 1, -5.96046e-08, 5.96046e-08, 0, -0.707107, 1.69369e-08, 1.2039e-08, 0.707107, 1, 1, 1, 0.17, 1, -5.95755e-08, 0, 0, -0.57173, 1.10691e-08, 1.0179e-08, 0.820442, 1, 1, 1, 0.4, 1, -1.1918e-07, 0, 2.97441e-08, -0.707106, -5.76221e-10, 3.21041e-09, 0.707108, 1, 1, 1, 0.57, 1, -5.95755e-08, 0, 2.97441e-08, -0.511014, 2.73056e-08, 6.92202e-09, 0.859572, 1, 1, 1, 0.8, 1, -5.96046e-08, 5.96046e-08, 0, -0.707107, 1.69369e-08, 1.2039e-08, 0.707107, 1, 1, 1 ) +tracks/9/type = "transform" +tracks/9/path = NodePath("Armature/Skeleton:right_fingers_base") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = PoolRealArray( 0, 1, 2.32831e-10, -1.19209e-07, 6.0536e-08, -0.257285, -3.47443e-09, 1.30496e-08, 0.966336, 1, 1, 1, 0.17, 1, 5.96046e-08, 0, 0, -0.395081, 1.41675e-08, 1.42034e-08, 0.918646, 1, 1, 1, 0.4, 1, 0, 2.98023e-08, 1.49012e-08, -0.257287, 1.19809e-09, -4.49985e-09, 0.966335, 1, 1, 1, 0.57, 1, -1.19209e-07, 2.98023e-08, -3.07336e-08, -0.665248, -2.83245e-10, -2.20815e-08, 0.746623, 1, 1, 1, 0.8, 1, 2.32831e-10, -1.19209e-07, 6.0536e-08, -0.257285, -3.47443e-09, 1.30496e-08, 0.966336, 1, 1, 1 ) +tracks/10/type = "transform" +tracks/10/path = NodePath("Armature/Skeleton:right_hand") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = PoolRealArray( 0, 1, -2.32831e-10, 5.96046e-08, -3.72529e-09, 0.0234477, -0.258101, 0.0394697, 0.965027, 1, 1, 1, 0.17, 1, 0, 0, 0, 0.064263, 0.44421, 0.0687408, 0.890967, 1, 1, 1, 0.4, 1, 0, 2.98023e-08, -2.6077e-08, -0.0898187, 0.0432889, 0.0664562, 0.992795, 1, 1, 1, 0.57, 1, 0, 2.98023e-08, 0, -0.167773, 0.0562805, -0.103044, 0.978809, 1, 1, 1, 0.8, 1, -2.32831e-10, 5.96046e-08, -3.72529e-09, 0.0234477, -0.258101, 0.0394697, 0.965027, 1, 1, 1 ) +tracks/11/type = "transform" +tracks/11/path = NodePath("Armature/Skeleton:right_forearm") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = PoolRealArray( 0, 1, -1.21072e-07, 0, 5.96046e-08, 0.409007, -0.165142, 0.756572, 0.482742, 1, 1, 1, 0.17, 1, 0, -5.96046e-08, 0, -0.103641, -0.210757, 0.718259, 0.654938, 1, 1, 1, 0.4, 1, 0, 0, 0, -0.294753, 0.0456285, 0.615493, 0.729525, 1, 1, 1, 0.57, 1, 5.7742e-08, 5.96046e-08, 5.96046e-08, -0.134125, 0.0747298, 0.724561, 0.671891, 1, 1, 1, 0.8, 1, -1.21072e-07, 0, 5.96046e-08, 0.409007, -0.165142, 0.756572, 0.482742, 1, 1, 1 ) +tracks/12/type = "transform" +tracks/12/path = NodePath("Armature/Skeleton:right_upper_arm") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = PoolRealArray( 0, 1, -1.49012e-08, -2.98023e-08, 4.65661e-10, -0.255003, -0.463984, -0.044896, 0.847158, 1, 1, 1, 0.17, 1, -7.45058e-09, 0, 0, -0.646818, 0.0178557, 0.230841, 0.72665, 1, 1, 1, 0.4, 1, -2.98023e-08, 2.98023e-08, 0, -0.53854, 0.0807899, 0.289715, 0.787092, 1, 1, 1, 0.57, 1, 1.49012e-08, 0, 4.65661e-10, -0.37629, -0.255651, 0.242466, 0.856889, 1, 1, 1, 0.8, 1, -1.49012e-08, -2.98023e-08, 4.65661e-10, -0.255003, -0.463984, -0.044896, 0.847158, 1, 1, 1 ) +tracks/13/type = "transform" +tracks/13/path = NodePath("Armature/Skeleton:right_clavicle") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = PoolRealArray( 0, 1, 1.49012e-08, 3.72529e-09, -1.3411e-07, -0.0364267, -0.00830686, -0.174019, 0.984033, 1, 1, 1, 0.17, 1, 3.67872e-08, 0, 0, 0.085607, 0.00604197, -0.00765641, 0.996281, 1, 1, 1, 0.4, 1, -9.31323e-10, 4.47035e-08, 0, 0.00169356, -0.017698, 0.0856212, 0.996169, 1, 1, 1, 0.57, 1, 1.49012e-08, 0, 0, -0.0157703, 0.0156967, -0.164933, 0.986054, 1, 1, 1, 0.8, 1, 1.49012e-08, 3.72529e-09, -1.3411e-07, -0.0364267, -0.00830686, -0.174019, 0.984033, 1, 1, 1 ) +tracks/14/type = "transform" +tracks/14/path = NodePath("Armature/Skeleton:left_fingers_end") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = PoolRealArray( 0, 1, 0, 3.72529e-09, -3.63798e-12, -0.707107, -2.31879e-09, 1.00155e-08, 0.707107, 1, 1, 1, 0.17, 1, -1.19209e-07, -1.86265e-08, -3.63798e-12, -0.648141, 1.47339e-09, 1.02581e-08, 0.76152, 1, 1, 1, 0.4, 1, 1.16415e-10, 1.49012e-08, -1.11759e-08, -0.707106, -3.9705e-09, 4.71986e-10, 0.707107, 1, 1, 1, 0.57, 1, 0, -1.49012e-08, 0, -0.628073, 6.13911e-09, 1.80059e-09, 0.778155, 1, 1, 1, 0.8, 1, 0, 3.72529e-09, -3.63798e-12, -0.707107, -2.31879e-09, 1.00155e-08, 0.707107, 1, 1, 1 ) +tracks/15/type = "transform" +tracks/15/path = NodePath("Armature/Skeleton:left_fingers_base") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = PoolRealArray( 0, 1, -5.96046e-08, 0, 9.31323e-10, -0.428831, 1.03871e-06, 4.35336e-07, 0.903385, 1, 1, 1, 0.17, 1, 1.45519e-11, -1.49012e-08, 3.07336e-08, -0.348317, 3.81352e-07, 4.92426e-07, 0.937377, 1, 1, 1, 0.4, 1, 0, 1.49012e-08, 0, -0.37237, 9.01157e-07, 5.3517e-07, 0.928084, 1, 1, 1, 0.57, 1, -5.96046e-08, -2.23517e-08, 0, -0.274624, 2.94573e-07, 8.40579e-07, 0.961552, 1, 1, 1, 0.8, 1, -5.96046e-08, 0, 9.31323e-10, -0.428831, 1.03871e-06, 4.35336e-07, 0.903385, 1, 1, 1 ) +tracks/16/type = "transform" +tracks/16/path = NodePath("Armature/Skeleton:left_thumb_end") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = PoolRealArray( 0, 1, 5.96046e-08, 2.98023e-08, -3.63798e-12, 1.07753e-08, 2.14624e-10, 0.329419, 0.944184, 1, 1, 1, 0.17, 1, 1.17347e-07, -1.86265e-09, 2.98023e-08, 1.06151e-08, 4.1908e-09, 0.343374, 0.939199, 1, 1, 1, 0.4, 1, -1.19209e-07, -2.98023e-08, -3.63798e-12, -7.05745e-09, -6.95921e-10, 0.397701, 0.917515, 1, 1, 1, 0.57, 1, 0, -1.67638e-08, 5.96046e-08, 4.52586e-11, -1.68656e-10, 0.259179, 0.965829, 1, 1, 1, 0.8, 1, 5.96046e-08, 2.98023e-08, -3.63798e-12, 1.07753e-08, 2.14624e-10, 0.329419, 0.944184, 1, 1, 1 ) +tracks/17/type = "transform" +tracks/17/path = NodePath("Armature/Skeleton:left_thunb_base") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = PoolRealArray( 0, 1, 3.35276e-08, 0, 1.18744e-07, -0.237434, -0.0912163, 0.00924559, 0.967067, 1, 1, 1, 0.17, 1, 9.31323e-10, -5.96046e-08, -2.32831e-10, -0.368915, -0.188784, 0.00216909, 0.910087, 0.999999, 1, 0.999999, 0.4, 1, 1.39698e-09, 2.23517e-08, 2.93367e-08, -0.237436, -0.0912179, 0.00924567, 0.967067, 1, 1, 1, 0.57, 1, 0, 5.96046e-08, -5.96046e-08, -0.168812, -0.141313, -0.0140907, 0.975364, 1, 1, 1, 0.8, 1, 3.35276e-08, 0, 1.18744e-07, -0.237434, -0.0912163, 0.00924559, 0.967067, 1, 1, 1 ) +tracks/18/type = "transform" +tracks/18/path = NodePath("Armature/Skeleton:left_hand") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = PoolRealArray( 0, 1, 5.96046e-08, 0, -5.96046e-08, -0.0891864, 0.0454474, 0.0434898, 0.994027, 1, 1, 1, 0.17, 1, 5.93718e-08, 0, 3.72529e-09, 0.107681, 0.0543163, 0.0423995, 0.991795, 1, 1, 1, 0.4, 1, 0, -5.96046e-08, 0, -0.069289, 0.0375404, 0.212773, 0.973919, 1, 1, 1, 0.57, 1, -2.32831e-10, -2.98023e-08, 0, -0.0401684, 0.0657755, 0.0133681, 0.996936, 1, 1, 1, 0.8, 1, 5.96046e-08, 0, -5.96046e-08, -0.0891864, 0.0454474, 0.0434898, 0.994027, 1, 1, 1 ) +tracks/19/type = "transform" +tracks/19/path = NodePath("Armature/Skeleton:left_forearm") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = PoolRealArray( 0, 1, 0, 1.19209e-07, 0, -0.102825, -0.0284883, -0.813275, 0.572013, 0.999999, 1, 1, 0.17, 1, 0, 5.96046e-08, 5.96046e-08, -0.211695, -0.233061, -0.788025, 0.529041, 0.999999, 1, 1, 0.4, 1, -1.19209e-07, -2.98023e-08, -5.96046e-08, -0.292447, -0.11823, -0.777308, 0.544323, 0.999999, 1, 1, 0.57, 1, -5.96046e-08, -5.96046e-08, -5.96046e-08, 0.00189847, -0.068812, -0.824686, 0.561387, 0.999999, 1, 1, 0.8, 1, 0, 1.19209e-07, 0, -0.102825, -0.0284883, -0.813275, 0.572013, 0.999999, 1, 1 ) +tracks/20/type = "transform" +tracks/20/path = NodePath("Armature/Skeleton:left_upper_arm") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = PoolRealArray( 0, 1, 0, -3.72529e-08, -4.65661e-10, -0.340122, -0.254669, 0.235686, 0.874021, 1, 1, 1, 0.17, 1, -1.49012e-08, 2.23517e-08, 0, -0.52681, -0.0197238, 0.369197, 0.76536, 1, 1, 1, 0.4, 1, -1.49012e-08, 1.49012e-08, -1.19209e-07, -0.508137, 0.115337, 0.507922, 0.685937, 0.999999, 1, 1, 0.57, 1, 1.53668e-08, -7.45058e-09, 0, -0.400065, 0.025384, 0.206714, 0.89251, 1, 1, 1, 0.8, 1, 0, -3.72529e-08, -4.65661e-10, -0.340122, -0.254669, 0.235686, 0.874021, 1, 1, 1 ) +tracks/21/type = "transform" +tracks/21/path = NodePath("Armature/Skeleton:left_clavicle") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = PoolRealArray( 0, 1, 4.47035e-08, 0, 2.38419e-07, 0.0547076, 0.0266213, -0.168536, 0.983816, 1, 1, 1, 0.17, 1, 3.72529e-08, 0, 0, 0.0451783, 0.00346182, 0.0220923, 0.998729, 1, 1, 1, 0.4, 1, -9.31323e-10, -5.96046e-08, 0, 0.0105909, -0.0234647, 0.159698, 0.98683, 1, 1, 1, 0.57, 1, -2.32831e-08, -4.47035e-08, 2.38419e-07, 0.00236453, 0.00812024, -0.116757, 0.993125, 1, 1, 1, 0.8, 1, 4.47035e-08, 0, 2.38419e-07, 0.0547076, 0.0266213, -0.168536, 0.983816, 1, 1, 1 ) +tracks/22/type = "transform" +tracks/22/path = NodePath("Armature/Skeleton:head") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = PoolRealArray( 0, 1, 1.81899e-12, 2.38419e-07, -2.98023e-08, -0.00930802, -0.136372, -0.0147935, 0.990503, 1, 1, 1, 0.17, 1, 0, 0, -7.45058e-09, -0.0217891, -0.12874, -0.0344424, 0.99084, 1, 1, 1, 0.4, 1, 1.49012e-08, 0, 0, -0.0217892, -0.12874, -0.0344427, 0.990841, 1, 1, 1, 0.57, 1, 0, 1.19209e-07, -1.49012e-08, -0.0217893, -0.12874, -0.0344427, 0.990841, 1, 1, 1, 0.8, 1, 1.81899e-12, 2.38419e-07, -2.98023e-08, -0.00930802, -0.136372, -0.0147935, 0.990503, 1, 1, 1 ) +tracks/23/type = "transform" +tracks/23/path = NodePath("Armature/Skeleton:neck") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = PoolRealArray( 0, 1, 1.49012e-08, 0, -2.8871e-08, -3.72529e-09, -3.72529e-09, -1.38778e-17, 1, 1, 1, 1, 0.17, 1, -1.49012e-08, 1.04308e-07, -1.49012e-08, -1.11759e-08, 1.63054e-08, -2.7283e-12, 1, 1, 1, 1, 0.4, 1, 2.98023e-08, 0, 7.45058e-09, -1.11759e-08, 1.49084e-08, -1.1185e-08, 1, 1, 1, 1, 0.57, 1, 1.49012e-08, 1.04308e-07, 7.45058e-09, -3.72529e-09, 1.49048e-08, -5.59476e-09, 1, 1, 1, 1, 0.8, 1, 1.49012e-08, 0, -2.8871e-08, -3.72529e-09, -3.72529e-09, -1.38778e-17, 1, 1, 1, 1 ) +tracks/24/type = "transform" +tracks/24/path = NodePath("Armature/Skeleton:spine_2") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = PoolRealArray( 0, 1, 1.49012e-08, 1.19209e-07, 0, -0.0276955, -0.107299, 0.00386706, 0.993833, 1, 1, 1, 0.17, 1, 1.63425e-13, -1.19209e-07, 2.32831e-10, 0.0114079, -0.166905, 0.00612589, 0.985888, 1, 1, 1, 0.4, 1, -4.4703e-08, 0, 0, -0.0304703, -0.0870086, 0.0359402, 0.995093, 1, 1, 1, 0.57, 1, -3.72573e-09, -1.19209e-07, -1.46683e-08, 0.0126948, -0.131958, 0.00431203, 0.991165, 1, 1, 1, 0.8, 1, 1.49012e-08, 1.19209e-07, 0, -0.0276955, -0.107299, 0.00386706, 0.993833, 1, 1, 1 ) +tracks/25/type = "transform" +tracks/25/path = NodePath("Armature/Skeleton:spine_1") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = PoolRealArray( 0, 1, -3.84171e-09, 1.19209e-07, 0, 0.0280316, -0.102393, -0.0146942, 0.99424, 1, 1, 1, 0.17, 1, -3.72529e-09, 5.96046e-08, 2.32831e-10, 0.00676155, -0.0520516, -0.0116567, 0.998554, 1, 1, 1, 0.4, 1, 7.45058e-09, 0, 2.32831e-10, 0.048444, -0.123125, -0.0444207, 0.990212, 1, 1, 1, 0.57, 1, -1.04774e-09, -5.96046e-08, 0, 0.00935331, -0.0379984, -0.0101622, 0.999182, 1, 1, 1, 0.8, 1, -3.84171e-09, 1.19209e-07, 0, 0.0280316, -0.102393, -0.0146942, 0.99424, 1, 1, 1 ) +tracks/26/type = "transform" +tracks/26/path = NodePath("Armature/Skeleton:spine") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = PoolRealArray( 0, 1, 9.31323e-10, 0, 1.49012e-08, 0.0631369, -0.0822021, -0.0156302, 0.994491, 1, 1, 1, 0.17, 1, 0, 5.96046e-08, 0, -0.00204889, -0.0935676, 0.00223807, 0.995608, 1, 1, 1, 0.4, 1, 9.31323e-10, 0, 1.49012e-08, 0.0476144, -0.138968, -0.0124056, 0.989074, 1, 1, 1, 0.57, 1, 0, -5.96046e-08, 0, -0.000936691, -0.0627627, 0.0032663, 0.998023, 1, 1, 1, 0.8, 1, 9.31323e-10, 0, 1.49012e-08, 0.0631369, -0.0822021, -0.0156302, 0.994491, 1, 1, 1 ) +tracks/27/type = "transform" +tracks/27/path = NodePath("Armature/Skeleton:pelvis") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = PoolRealArray( 0, 1, 3.00133e-09, 0.106295, -0.0122837, 0.106086, -0.00327946, 0.0127754, 0.99427, 1, 1, 1, 0.17, 1, 0, -0.0658326, -0.0122838, 0.122639, -3.51874e-08, 1.37076e-07, 0.992451, 1, 1, 1, 0.4, 1, 0, 0.106293, -0.0122837, 0.106086, -0.00327942, 0.0127753, 0.994269, 1, 1, 1, 0.57, 1, 0, -0.0658326, -0.0122838, 0.118299, -3.51867e-08, 1.37073e-07, 0.992978, 1, 1, 1, 0.8, 1, 3.00133e-09, 0.106295, -0.0122837, 0.106086, -0.00327946, 0.0127754, 0.99427, 1, 1, 1 ) +tracks/28/type = "transform" +tracks/28/path = NodePath("Armature/Skeleton:root") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = PoolRealArray( 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.17, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.4, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.57, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.8, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 ) +start_frame_index = 0 +keyframe/0/name = "" +keyframe/0/animation_keyframe_index = 50 +keyframe/0/next_keyframe = 1 +keyframe/0/transition = 1.0 +keyframe/0/time = 0.17 +keyframe/0/position = Vector2( 180, -40 ) +keyframe/1/name = "" +keyframe/1/animation_keyframe_index = 51 +keyframe/1/next_keyframe = 2 +keyframe/1/transition = 1.0 +keyframe/1/time = 0.23 +keyframe/1/position = Vector2( 380, -40 ) +keyframe/2/name = "" +keyframe/2/animation_keyframe_index = 52 +keyframe/2/next_keyframe = 3 +keyframe/2/transition = 1.0 +keyframe/2/time = 0.17 +keyframe/2/position = Vector2( 580, -40 ) +keyframe/3/name = "" +keyframe/3/animation_keyframe_index = 53 +keyframe/3/next_keyframe = 4 +keyframe/3/transition = 1.0 +keyframe/3/time = 0.23 +keyframe/3/position = Vector2( 780, -40 ) +keyframe/4/name = "" +keyframe/4/animation_keyframe_index = 50 +keyframe/4/next_keyframe = -1 +keyframe/4/transition = 1.0 +keyframe/4/time = 0.0 +keyframe/4/position = Vector2( 980, -40 ) diff --git a/game/modules/species/Human/models/run-loop.tres b/game/modules/species/Human/models/run-loop.tres new file mode 100644 index 0000000..61752f0 --- /dev/null +++ b/game/modules/species/Human/models/run-loop.tres @@ -0,0 +1,244 @@ +[gd_resource type="Animation" format=2] + +[resource] +length = 0.8 +loop = true +tracks/0/type = "transform" +tracks/0/path = NodePath("Armature/Skeleton:left_foot") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = PoolRealArray( 0, 1, -1.11759e-08, -2.98023e-08, -2.98023e-08, -0.134982, -0.0112252, -0.191691, 0.972064, 1, 1, 1, 0.17, 1, -1.49012e-08, 0, 0, 0.178846, 0.0815532, -0.19994, 0.959889, 1, 1, 1, 0.4, 1, 0, 0, 0, -0.0335006, 0.141182, -0.185004, 0.971967, 1, 1, 1, 0.57, 1, 1.86265e-09, 0, -2.98023e-08, 0.210633, -0.201288, -0.264237, 0.9194, 1, 1, 1, 0.8, 1, -1.11759e-08, -2.98023e-08, -2.98023e-08, -0.134982, -0.0112252, -0.191691, 0.972064, 1, 1, 1 ) +tracks/1/type = "transform" +tracks/1/path = NodePath("Armature/Skeleton:left_calf") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = PoolRealArray( 0, 1, 3.25963e-09, 0, 0, 0.232061, -0.0335776, 0.090671, 0.967884, 1, 1, 0.999998, 0.17, 1, 4.65661e-10, 8.9407e-08, 0, 0.305028, 0.0774735, 0.109435, 0.942857, 0.999999, 1, 0.999998, 0.4, 1, -1.49012e-08, 2.98023e-08, 5.86733e-08, 0.901449, -0.0146276, 0.325169, 0.285378, 0.999998, 1, 1, 0.57, 1, -2.93367e-08, 2.98023e-08, -5.96046e-08, 0.636893, -0.00337767, 0.278435, 0.718909, 0.999997, 1.00001, 0.999993, 0.8, 1, 3.25963e-09, 0, 0, 0.232061, -0.0335776, 0.090671, 0.967884, 1, 1, 0.999998 ) +tracks/2/type = "transform" +tracks/2/path = NodePath("Armature/Skeleton:left_thigh") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = PoolRealArray( 0, 1, 0, -5.96046e-08, 0, -0.0156742, 0.145665, 0.0322533, 0.988684, 0.999994, 1, 1.00001, 0.17, 1, 0, -5.96046e-08, -1.49012e-08, 0.201713, 0.105141, 0.0764387, 0.97078, 0.999996, 1, 1, 0.4, 1, 7.45058e-09, 6.14673e-08, 4.65661e-10, -0.587625, 0.112615, -0.0467163, 0.799895, 0.999996, 0.999996, 1.00001, 0.57, 1, 0, -5.96046e-08, -1.49012e-08, -0.658972, 0.123171, -0.107704, 0.734156, 0.999994, 0.999996, 1.00001, 0.8, 1, 0, -5.96046e-08, 0, -0.0156742, 0.145665, 0.0322533, 0.988684, 0.999994, 1, 1.00001 ) +tracks/3/type = "transform" +tracks/3/path = NodePath("Armature/Skeleton:right_foot") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = PoolRealArray( 0, 1, 7.45058e-09, 0, 0, 0.324867, 0.110128, 0.21751, 0.913796, 1, 1, 1, 0.17, 1, 9.31323e-09, -2.98023e-08, 2.98023e-08, 0.195172, -0.0119882, 0.135254, 0.971324, 1, 1, 1, 0.4, 1, -5.58794e-09, -1.49012e-08, 0, -0.0929131, -0.0629022, 0.159406, 0.980816, 1, 1, 1, 0.57, 1, 7.45058e-09, 0, 0, 0.249517, 0.0419369, 0.194067, 0.947798, 1, 1, 1, 0.8, 1, 7.45058e-09, 0, 0, 0.324867, 0.110128, 0.21751, 0.913796, 1, 1, 1 ) +tracks/4/type = "transform" +tracks/4/path = NodePath("Armature/Skeleton:right_calf") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = PoolRealArray( 0, 1, 0, 0, 0, 0.896478, 0.0032776, -0.312151, 0.31445, 0.999999, 1, 0.999997, 0.17, 1, 0, -2.98023e-08, 0, 0.676543, 0.0111244, -0.28551, 0.678712, 0.999998, 1.00001, 0.999991, 0.4, 1, 0, 0, 1.49012e-08, 0.444617, 0.0146551, -0.159267, 0.881326, 0.999999, 1.00001, 0.999993, 0.57, 1, -1.53668e-08, 5.96046e-08, 0, 0.2362, -0.00147479, -0.0838216, 0.968081, 1, 1, 0.999998, 0.8, 1, 0, 0, 0, 0.896478, 0.0032776, -0.312151, 0.31445, 0.999999, 1, 0.999997 ) +tracks/5/type = "transform" +tracks/5/path = NodePath("Armature/Skeleton:right_thigh") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = PoolRealArray( 0, 1, 0, -1.18278e-07, 3.00352e-08, -0.526144, -0.094875, 0.0927887, 0.839977, 0.999997, 1, 1, 0.17, 1, -7.45058e-09, 9.31323e-10, 1.49012e-08, -0.678959, -0.0963126, 0.13804, 0.714621, 0.999995, 1, 1, 0.4, 1, 0, 0, 0, -0.26729, -0.145147, 0.0194914, 0.952422, 0.999996, 1, 1, 0.57, 1, -7.45058e-09, 9.31323e-10, 1.49012e-08, 0.238897, -0.175619, -0.0794531, 0.951721, 0.999993, 1, 1.00001, 0.8, 1, 0, -1.18278e-07, 3.00352e-08, -0.526144, -0.094875, 0.0927887, 0.839977, 0.999997, 1, 1 ) +tracks/6/type = "transform" +tracks/6/path = NodePath("Armature/Skeleton:right_thumb_head") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = PoolRealArray( 0, 1, 1.19209e-07, -5.96046e-08, 1.49048e-08, 3.97979e-11, -5.66487e-09, -0.157465, 0.987525, 1, 1, 1, 0.17, 1, -5.96046e-08, 0, 0, 2.68021e-09, 9.88773e-09, -0.261624, 0.96517, 1, 1, 1, 0.4, 1, 5.58794e-08, -1.30385e-08, -5.96083e-08, -1.427e-08, -2.37711e-08, -0.394823, 0.918757, 1, 1, 1, 0.57, 1, -1.86265e-09, -3.53903e-08, 0, 9.18642e-09, 1.85205e-09, -0.261627, 0.965169, 1, 1, 1, 0.8, 1, 1.19209e-07, -5.96046e-08, 1.49048e-08, 3.97979e-11, -5.66487e-09, -0.157465, 0.987525, 1, 1, 1 ) +tracks/7/type = "transform" +tracks/7/path = NodePath("Armature/Skeleton:right_thumb_base") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = PoolRealArray( 0, 1, -5.21541e-08, 5.21541e-08, -3.93484e-08, -0.303913, 0.0446921, -0.128009, 0.943002, 1, 1, 1, 0.17, 1, 4.65661e-10, 2.98023e-08, -6.98492e-10, -0.274655, 0.0289148, -0.0944317, 0.956457, 1, 1, 1, 0.4, 1, -4.05125e-08, 0, 5.23869e-08, -0.295847, 0.0685426, -0.191563, 0.933317, 1, 1, 1, 0.57, 1, 6.96164e-08, 5.96046e-08, -4.81959e-08, -0.274655, 0.0289151, -0.0944327, 0.956457, 1, 1, 1, 0.8, 1, -5.21541e-08, 5.21541e-08, -3.93484e-08, -0.303913, 0.0446921, -0.128009, 0.943002, 1, 1, 1 ) +tracks/8/type = "transform" +tracks/8/path = NodePath("Armature/Skeleton:right_fingers_head") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = PoolRealArray( 0, 1, 5.96046e-08, 0, 0, -0.511012, 1.7867e-08, 1.3686e-08, 0.859574, 1, 1, 1, 0.17, 1, -5.95755e-08, 0, 0, -0.707104, -4.1262e-09, -1.14215e-09, 0.707109, 1, 1, 1, 0.4, 1, 5.96046e-08, 1.49012e-08, 0, -0.571731, -2.98321e-09, -1.03796e-08, 0.820441, 1, 1, 1, 0.57, 1, -1.19209e-07, -1.49012e-08, -5.82077e-11, -0.707105, 9.26109e-11, 1.22448e-09, 0.707109, 1, 1, 1, 0.8, 1, 5.96046e-08, 0, 0, -0.511012, 1.7867e-08, 1.3686e-08, 0.859574, 1, 1, 1 ) +tracks/9/type = "transform" +tracks/9/path = NodePath("Armature/Skeleton:right_fingers_base") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = PoolRealArray( 0, 1, 5.98375e-08, -2.98023e-08, 0, -0.665251, -1.76509e-08, 1.421e-08, 0.746619, 1, 1, 1, 0.17, 1, 0, 2.98023e-08, -6.0536e-08, -0.257292, 9.58488e-10, -3.59987e-09, 0.966334, 1, 1, 1, 0.4, 1, 0, -5.96046e-08, 0, -0.395081, 2.68633e-09, 3.1829e-09, 0.918646, 1, 1, 1, 0.57, 1, 0, 0, 0, -0.257288, 4.79236e-10, -1.79994e-09, 0.966335, 1, 1, 1, 0.8, 1, 5.98375e-08, -2.98023e-08, 0, -0.665251, -1.76509e-08, 1.421e-08, 0.746619, 1, 1, 1 ) +tracks/10/type = "transform" +tracks/10/path = NodePath("Armature/Skeleton:right_hand") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = PoolRealArray( 0, 1, 0, 2.98023e-08, 5.96046e-08, -0.167774, 0.0562806, -0.103046, 0.978808, 1, 1, 1, 0.17, 1, 5.96046e-08, 0, -2.98023e-08, 0.0234451, -0.258097, 0.0394677, 0.965028, 1, 1, 1, 0.4, 1, 0, -2.98023e-08, 1.49012e-08, -0.0698071, -0.283789, 0.210862, 0.932807, 1, 1, 1, 0.57, 1, 0, 0, 0, -0.0898201, 0.0432797, 0.0664582, 0.992795, 1, 1, 1, 0.8, 1, 0, 2.98023e-08, 5.96046e-08, -0.167774, 0.0562806, -0.103046, 0.978808, 1, 1, 1 ) +tracks/11/type = "transform" +tracks/11/path = NodePath("Armature/Skeleton:right_forearm") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = PoolRealArray( 0, 1, 0, 0, 0, 0.0615275, 0.0803052, 0.80209, 0.588573, 1, 1, 1, 0.17, 1, 1.19209e-07, -2.98023e-08, 0, -0.220049, 0.0792812, 0.840672, 0.48843, 1, 1, 1, 0.4, 1, 7.45058e-09, -1.19209e-07, 0, -0.45974, 0.0938149, 0.64631, 0.601765, 1, 1, 1, 0.57, 1, 0, 0, 0, -0.196198, 0.064414, 0.728096, 0.653631, 1, 1, 1, 0.8, 1, 0, 0, 0, 0.0615275, 0.0803052, 0.80209, 0.588573, 1, 1, 1 ) +tracks/12/type = "transform" +tracks/12/path = NodePath("Armature/Skeleton:right_upper_arm") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = PoolRealArray( 0, 1, 4.65661e-10, 1.49012e-08, 1.19209e-07, -0.457698, -0.201958, -0.0977275, 0.860334, 1, 1, 1, 0.17, 1, 4.47035e-08, 0, 0, -0.452701, -0.209345, -0.409849, 0.763715, 1, 1, 1, 0.4, 1, -1.44355e-08, 7.45058e-09, 0, -0.494411, 0.240801, -0.219985, 0.805717, 1, 1, 1, 0.57, 1, 4.65661e-10, 7.45058e-09, 0, -0.495059, 0.190029, -0.162041, 0.832195, 1, 1, 1, 0.8, 1, 4.65661e-10, 1.49012e-08, 1.19209e-07, -0.457698, -0.201958, -0.0977275, 0.860334, 1, 1, 1 ) +tracks/13/type = "transform" +tracks/13/path = NodePath("Armature/Skeleton:right_clavicle") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = PoolRealArray( 0, 1, -2.98023e-08, 0, 0, -0.063592, 0.0211594, -0.090956, 0.993597, 1, 1, 1, 0.17, 1, -5.96046e-08, -2.23517e-08, -1.49012e-08, -0.0382614, 0.00313229, -0.00805776, 0.99923, 1, 1, 1, 0.4, 1, 0, 2.6077e-08, -2.38419e-07, 0.0111826, 0.00495234, 0.141357, 0.989883, 1, 1, 1, 0.57, 1, -5.96046e-08, 0, 0, -0.00247922, -0.017559, 0.173529, 0.984669, 1, 1, 1, 0.8, 1, -2.98023e-08, 0, 0, -0.063592, 0.0211594, -0.090956, 0.993597, 1, 1, 1 ) +tracks/14/type = "transform" +tracks/14/path = NodePath("Armature/Skeleton:left_fingers_end") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = PoolRealArray( 0, 1, 5.82077e-11, -3.72529e-08, 5.9601e-08, -0.628072, -1.11365e-09, -4.04182e-09, 0.778155, 1, 1, 1, 0.17, 1, -1.19209e-07, -5.96046e-08, -3.63798e-12, -0.707106, 3.27594e-09, -1.50611e-09, 0.707108, 1, 1, 1, 0.4, 1, 5.82077e-11, -1.49012e-08, 2.97987e-08, -0.648141, 8.36392e-10, 2.38506e-09, 0.76152, 1, 1, 1, 0.57, 1, 0, 0, 0, -0.707106, -1.45123e-08, 4.77063e-10, 0.707108, 1, 1, 1, 0.8, 1, 5.82077e-11, -3.72529e-08, 5.9601e-08, -0.628072, -1.11365e-09, -4.04182e-09, 0.778155, 1, 1, 1 ) +tracks/15/type = "transform" +tracks/15/path = NodePath("Armature/Skeleton:left_fingers_base") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = PoolRealArray( 0, 1, 0, 8.9407e-08, -5.86733e-08, -0.274623, 3.54653e-07, 3.86047e-07, 0.961552, 1, 1, 1, 0.17, 1, -5.96046e-08, 0, 9.31323e-10, -0.428829, 1.02958e-06, 4.37186e-07, 0.903386, 1, 1, 1, 0.4, 1, -1.19209e-07, 2.23517e-08, 3.07336e-08, -0.348318, 8.66435e-07, 5.34575e-07, 0.937377, 1, 1, 1, 0.57, 1, 0, -2.23517e-08, 0, -0.37237, 8.94589e-07, 5.31531e-07, 0.928084, 1, 1, 1, 0.8, 1, 0, 8.9407e-08, -5.86733e-08, -0.274623, 3.54653e-07, 3.86047e-07, 0.961552, 1, 1, 1 ) +tracks/16/type = "transform" +tracks/16/path = NodePath("Armature/Skeleton:left_thumb_end") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = PoolRealArray( 0, 1, -6.14673e-08, -3.72529e-09, 5.96083e-08, 2.94221e-09, 7.90104e-09, 0.259178, 0.96583, 1, 1, 1, 0.17, 1, -1.21072e-07, 0, -5.96046e-08, -7.67557e-09, 7.86397e-09, 0.329418, 0.944184, 1, 1, 1, 0.4, 1, -1.86265e-09, 2.04891e-08, 2.98023e-08, -1.90578e-08, 1.2121e-08, 0.343374, 0.939199, 1, 1, 1, 0.57, 1, -1.19209e-07, 2.79397e-08, 1.49048e-08, 1.64409e-08, -3.3889e-09, 0.397701, 0.917515, 1, 1, 1, 0.8, 1, -6.14673e-08, -3.72529e-09, 5.96083e-08, 2.94221e-09, 7.90104e-09, 0.259178, 0.96583, 1, 1, 1 ) +tracks/17/type = "transform" +tracks/17/path = NodePath("Armature/Skeleton:left_thunb_base") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = PoolRealArray( 0, 1, -5.72763e-08, -1.19209e-07, 1.19209e-07, -0.168812, -0.141313, -0.014091, 0.975364, 1, 1, 1, 0.17, 1, 2.68687e-07, -2.38419e-07, 2.32831e-10, -0.237433, -0.0912178, 0.00924543, 0.967067, 1, 1, 1, 0.4, 1, 0, 0, 0, -0.368914, -0.188783, 0.00216903, 0.910087, 1, 1, 1, 0.57, 1, 2.38419e-07, 5.96046e-08, 0, -0.237436, -0.0912181, 0.00924543, 0.967067, 1, 1, 1, 0.8, 1, -5.72763e-08, -1.19209e-07, 1.19209e-07, -0.168812, -0.141313, -0.014091, 0.975364, 1, 1, 1 ) +tracks/18/type = "transform" +tracks/18/path = NodePath("Armature/Skeleton:left_hand") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = PoolRealArray( 0, 1, 5.96046e-08, 2.98023e-08, -6.33299e-08, -0.0401681, 0.0657758, 0.0133658, 0.996936, 1, 1, 1, 0.17, 1, -1.19442e-07, 5.96046e-08, -2.98023e-08, -0.0891858, 0.0454476, 0.0434894, 0.994027, 1, 1, 1, 0.4, 1, 0, 4.47035e-08, -2.98023e-08, 0.10768, 0.0543163, 0.0423995, 0.991795, 1, 1, 1, 0.57, 1, 5.93718e-08, 0, 3.72529e-09, -0.0692883, 0.0375404, 0.212772, 0.973919, 1, 1, 1, 0.8, 1, 5.96046e-08, 2.98023e-08, -6.33299e-08, -0.0401681, 0.0657758, 0.0133658, 0.996936, 1, 1, 1 ) +tracks/19/type = "transform" +tracks/19/path = NodePath("Armature/Skeleton:left_forearm") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = PoolRealArray( 0, 1, 2.98023e-08, 1.19209e-07, 0, 0.158248, -0.122988, -0.747231, 0.633622, 0.999999, 1, 1, 0.17, 1, 0, 5.96046e-08, 0, 0.00945069, -0.0634964, -0.75789, 0.649216, 0.999999, 1, 1, 0.4, 1, 5.96046e-08, -5.96046e-08, 5.96046e-08, -0.16308, -0.213821, -0.791654, 0.548607, 1, 1, 1, 0.57, 1, 0, 0, -4.65661e-10, -0.311898, -0.0446277, -0.782128, 0.537591, 0.999999, 1, 1, 0.8, 1, 2.98023e-08, 1.19209e-07, 0, 0.158248, -0.122988, -0.747231, 0.633622, 0.999999, 1, 1 ) +tracks/20/type = "transform" +tracks/20/path = NodePath("Armature/Skeleton:left_upper_arm") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = PoolRealArray( 0, 1, 1.49012e-08, 0, -1.19675e-07, -0.50911, 0.126456, -0.161028, 0.835994, 1, 1, 1, 0.17, 1, 5.96046e-08, 2.23517e-08, 1.18744e-07, -0.561943, -0.202035, -0.131374, 0.791292, 1, 1, 1, 0.4, 1, -1.49012e-08, 0, -4.65661e-10, -0.567116, 0.107917, 0.08244, 0.812365, 1, 1, 1, 0.57, 1, -1.49012e-08, 7.45058e-09, -1.19675e-07, -0.461469, 0.178002, 0.394768, 0.774287, 1, 1, 1, 0.8, 1, 1.49012e-08, 0, -1.19675e-07, -0.50911, 0.126456, -0.161028, 0.835994, 1, 1, 1 ) +tracks/21/type = "transform" +tracks/21/path = NodePath("Armature/Skeleton:left_clavicle") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = PoolRealArray( 0, 1, -1.49012e-08, 4.47035e-08, -2.38419e-07, 0.00304353, 0.00787139, -0.0349838, 0.999352, 1, 1, 1, 0.17, 1, -2.98023e-08, 2.98023e-08, 0, 0.0565844, 0.0223181, -0.092321, 0.99387, 1, 1, 1, 0.4, 1, 2.8871e-08, -1.49012e-08, 0, 0.0451783, 0.00346176, 0.0220927, 0.998729, 1, 1, 1, 0.57, 1, 8.801e-08, 1.49012e-08, 3.57628e-07, 0.0131057, -0.0222114, 0.0524224, 0.998292, 1, 1, 1, 0.8, 1, -1.49012e-08, 4.47035e-08, -2.38419e-07, 0.00304353, 0.00787139, -0.0349838, 0.999352, 1, 1, 1 ) +tracks/22/type = "transform" +tracks/22/path = NodePath("Armature/Skeleton:head") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = PoolRealArray( 0, 1, 1.04956e-09, 1.19209e-07, 1.49012e-08, -0.0165016, 0.0194742, -0.0372374, 0.99898, 1, 1, 1, 0.17, 1, -3.72529e-09, 0, 0, -0.0165016, 0.0194744, -0.0372374, 0.99898, 1, 1, 1, 0.4, 1, 0, 0, -2.98023e-08, -0.0165016, 0.0194744, -0.0372374, 0.99898, 1, 1, 1, 0.57, 1, -1.86265e-09, 0, 0, -0.0165016, 0.0194744, -0.0372374, 0.99898, 1, 1, 1, 0.8, 1, 1.04956e-09, 1.19209e-07, 1.49012e-08, -0.0165016, 0.0194742, -0.0372374, 0.99898, 1, 1, 1 ) +tracks/23/type = "transform" +tracks/23/path = NodePath("Armature/Skeleton:neck") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = PoolRealArray( 0, 1, -1.22236e-09, 1.04308e-07, -1.49012e-08, -1.11759e-08, 4.40196e-10, 2.50566e-10, 1, 1, 1, 1, 0.17, 1, 0, 0, 0, -3.72529e-09, 2.10275e-09, -2.04636e-11, 1, 1, 1, 1, 0.4, 1, 9.31323e-10, 1.04308e-07, 0, 3.72529e-09, 5.23869e-10, -2.18279e-11, 1, 1, 1, 1, 0.57, 1, -1.85901e-09, -1.19209e-07, 4.47035e-08, 3.72529e-09, -1.27693e-09, -4.77485e-10, 1, 1, 1, 1, 0.8, 1, -1.22236e-09, 1.04308e-07, -1.49012e-08, -1.11759e-08, 4.40196e-10, 2.50566e-10, 1, 1, 1, 1 ) +tracks/24/type = "transform" +tracks/24/path = NodePath("Armature/Skeleton:spine_2") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = PoolRealArray( 0, 1, 1.86265e-09, 0, -1.49012e-08, 0.0169561, 0.0148773, 0.00977128, 0.999698, 1, 1, 1, 0.17, 1, 3.72527e-09, 0, 0, -0.0365102, -0.00486473, 0.00780236, 0.999291, 1, 1, 1, 0.4, 1, 7.45053e-09, 0, 0, 0.0315933, 0.00992299, 0.01339, 0.999362, 1, 1, 1, 0.57, 1, 1.13687e-13, 1.19209e-07, 0, -0.0294896, 0.00251986, 0.0110205, 0.999501, 1, 1, 1, 0.8, 1, 1.86265e-09, 0, -1.49012e-08, 0.0169561, 0.0148773, 0.00977128, 0.999698, 1, 1, 1 ) +tracks/25/type = "transform" +tracks/25/path = NodePath("Armature/Skeleton:spine_1") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = PoolRealArray( 0, 1, 0, 0, 0, 0.00821903, 0.00817585, -0.0106581, 0.999876, 1, 1, 1, 0.17, 1, -2.32831e-10, 0, 0, 0.0600167, -0.0428336, -0.0129148, 0.997194, 1, 1, 1, 0.4, 1, -1.86265e-09, 5.96046e-08, 1.5134e-08, -0.0113714, 0.0018436, -0.0311176, 0.999449, 1, 1, 1, 0.57, 1, -1.39698e-09, -1.19209e-07, 2.32831e-10, 0.0458693, -0.00913103, -0.0188054, 0.998729, 1, 1, 1, 0.8, 1, 0, 0, 0, 0.00821903, 0.00817585, -0.0106581, 0.999876, 1, 1, 1 ) +tracks/26/type = "transform" +tracks/26/path = NodePath("Armature/Skeleton:spine") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = PoolRealArray( 0, 1, 0, -5.96046e-08, 0, -0.000940005, -0.0450452, 0.00322534, 0.998979, 1, 1, 1, 0.17, 1, 9.31323e-10, 0, 1.49012e-08, 0.047883, -0.0115261, -0.0111027, 0.998725, 1, 1, 1, 0.4, 1, 0, 5.96046e-08, 0, 0.00173592, -0.0305226, 0.0162586, 0.9994, 1, 1, 1, 0.57, 1, 9.31323e-10, 0, 1.49012e-08, 0.0556622, -0.0183222, -0.00966862, 0.998235, 1, 1, 1, 0.8, 1, 0, -5.96046e-08, 0, -0.000940005, -0.0450452, 0.00322534, 0.998979, 1, 1, 1 ) +tracks/27/type = "transform" +tracks/27/path = NodePath("Armature/Skeleton:pelvis") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = PoolRealArray( 0, 1, 0, -0.0658345, -0.0122838, 0.118299, 0, 0, 0.992978, 1, 1, 1, 0.17, 1, 0, 0.106293, -0.0122837, 0.106086, -0.00327941, 0.0127753, 0.994269, 1, 1, 1, 0.4, 1, 0, -0.065832, -0.0122838, 0.122639, -4.69166e-08, 1.82768e-07, 0.992451, 1, 1, 1, 0.57, 1, 0, 0.106293, -0.0122837, 0.106086, -0.00327941, 0.0127753, 0.994269, 1, 1, 1, 0.8, 1, 0, -0.0658345, -0.0122838, 0.118299, 0, 0, 0.992978, 1, 1, 1 ) +tracks/28/type = "transform" +tracks/28/path = NodePath("Armature/Skeleton:root") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = PoolRealArray( 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.17, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.4, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.57, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.8, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 ) +start_frame_index = 0 +keyframe/0/name = "" +keyframe/0/animation_keyframe_index = 60 +keyframe/0/next_keyframe = 1 +keyframe/0/transition = 1.0 +keyframe/0/time = 0.17 +keyframe/0/method_name = "" +keyframe/0/position = Vector2( 180, -40 ) +keyframe/1/name = "" +keyframe/1/animation_keyframe_index = 61 +keyframe/1/next_keyframe = 2 +keyframe/1/transition = 1.0 +keyframe/1/time = 0.23 +keyframe/1/method_name = "" +keyframe/1/position = Vector2( 380, -40 ) +keyframe/2/name = "" +keyframe/2/animation_keyframe_index = 62 +keyframe/2/next_keyframe = 3 +keyframe/2/transition = 1.0 +keyframe/2/time = 0.17 +keyframe/2/method_name = "" +keyframe/2/position = Vector2( 580, -40 ) +keyframe/3/name = "" +keyframe/3/animation_keyframe_index = 63 +keyframe/3/next_keyframe = 4 +keyframe/3/transition = 1.0 +keyframe/3/time = 0.23 +keyframe/3/method_name = "" +keyframe/3/position = Vector2( 780, -40 ) +keyframe/4/name = "" +keyframe/4/animation_keyframe_index = 60 +keyframe/4/next_keyframe = -1 +keyframe/4/transition = 1.0 +keyframe/4/time = 0.0 +keyframe/4/method_name = "" +keyframe/4/position = Vector2( 980, -40 ) diff --git a/game/modules/species/Human/models/run-right-loop.tres b/game/modules/species/Human/models/run-right-loop.tres new file mode 100644 index 0000000..e0363aa --- /dev/null +++ b/game/modules/species/Human/models/run-right-loop.tres @@ -0,0 +1,239 @@ +[gd_resource type="Animation" format=2] + +[resource] +length = 0.8 +loop = true +tracks/0/type = "transform" +tracks/0/path = NodePath("Armature/Skeleton:left_foot") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = PoolRealArray( 0, 1, -3.72529e-09, 0, 0, -0.134982, -0.0112264, -0.191691, 0.972064, 1, 1, 1, 0.17, 1, -2.04891e-08, -5.21541e-08, -1.19209e-07, 0.178844, 0.0815525, -0.19994, 0.959889, 1, 1, 1, 0.4, 1, 0, 0, 0, 0.0207588, 0.105019, 0.0943422, 0.989767, 1, 1, 1, 0.57, 1, 0, -2.23517e-08, -2.98023e-08, 0.210636, -0.201293, -0.264237, 0.919398, 1, 1, 1, 0.8, 1, -3.72529e-09, 0, 0, -0.134982, -0.0112264, -0.191691, 0.972064, 1, 1, 1 ) +tracks/1/type = "transform" +tracks/1/path = NodePath("Armature/Skeleton:left_calf") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = PoolRealArray( 0, 1, -3.72529e-09, 2.98023e-08, 1.49012e-08, 0.240358, 0.181008, 0.0508787, 0.9523, 0.999999, 1, 0.999999, 0.17, 1, 1.86265e-09, 5.96046e-08, 0, 0.27953, 0.158266, 0.121139, 0.939223, 0.999998, 1, 0.999999, 0.4, 1, 4.65661e-10, -2.98023e-08, 0, 0.955528, -0.0771338, -0.0142308, 0.284277, 1, 1, 0.999998, 0.57, 1, 0, 5.96046e-08, 0, 0.671528, 0.0670482, 0.174793, 0.71694, 0.999998, 1.00001, 0.999993, 0.8, 1, -3.72529e-09, 2.98023e-08, 1.49012e-08, 0.240358, 0.181008, 0.0508787, 0.9523, 0.999999, 1, 0.999999 ) +tracks/2/type = "transform" +tracks/2/path = NodePath("Armature/Skeleton:left_thigh") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = PoolRealArray( 0, 1, 0, -5.96046e-08, 0, -0.00609434, -0.00958455, 0.0350088, 0.999322, 1, 1, 1, 0.17, 1, 0, -5.96046e-08, -1.49012e-08, 0.218442, 0.0773198, 0.0654573, 0.970577, 0.999997, 1, 1, 0.4, 1, 7.45058e-09, 6.14673e-08, 4.65661e-10, -0.591532, 0.0503706, -0.00860076, 0.804661, 0.999999, 0.999996, 1, 0.57, 1, 0, -5.96046e-08, -1.49012e-08, -0.671006, 0.0331387, -0.0207483, 0.74042, 1, 0.999996, 1, 0.8, 1, 0, -5.96046e-08, 0, -0.00609434, -0.00958455, 0.0350088, 0.999322, 1, 1, 1 ) +tracks/3/type = "transform" +tracks/3/path = NodePath("Armature/Skeleton:right_foot") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = PoolRealArray( 0, 1, 0, -5.96046e-08, -2.98023e-08, 0.324867, 0.110128, 0.21751, 0.913796, 1, 1, 1, 0.17, 1, 9.31323e-09, -2.98023e-08, -2.98023e-08, 0.195173, -0.0119873, 0.135255, 0.971324, 1, 1, 1, 0.4, 1, 1.30385e-08, 0, -2.98023e-08, -0.0929091, -0.0629014, 0.159406, 0.980816, 1, 1, 1, 0.57, 1, 3.72529e-09, -5.96046e-08, 0, 0.249522, 0.0419384, 0.194067, 0.947796, 1, 1, 1, 0.8, 1, 0, -5.96046e-08, -2.98023e-08, 0.324867, 0.110128, 0.21751, 0.913796, 1, 1, 1 ) +tracks/4/type = "transform" +tracks/4/path = NodePath("Armature/Skeleton:right_calf") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = PoolRealArray( 0, 1, -3.0268e-08, 2.98023e-08, 9.31323e-10, 0.855931, -0.0327426, -0.412323, 0.310323, 0.999999, 1, 0.999998, 0.17, 1, -4.65661e-10, -2.98023e-08, 0, 0.694716, -0.0217009, -0.257025, 0.671444, 0.999998, 1.00001, 0.999991, 0.4, 1, 7.45058e-09, 0, 1.49012e-08, 0.463031, -0.128707, -0.138115, 0.866003, 0.999999, 1.00001, 0.999994, 0.57, 1, 0, 2.98023e-08, 5.96046e-08, 0.209611, -0.0374605, -0.0168066, 0.976923, 1, 1, 0.999998, 0.8, 1, -3.0268e-08, 2.98023e-08, 9.31323e-10, 0.855931, -0.0327426, -0.412323, 0.310323, 0.999999, 1, 0.999998 ) +tracks/5/type = "transform" +tracks/5/path = NodePath("Armature/Skeleton:right_thigh") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = PoolRealArray( 0, 1, 0, -1.18278e-07, 3.00352e-08, -0.526217, -0.0919273, 0.095857, 0.839915, 0.999997, 1, 1, 0.17, 1, -7.45058e-09, 9.31323e-10, 1.49012e-08, -0.681301, -0.0675548, 0.108897, 0.720699, 0.999997, 1, 1, 0.4, 1, 0, 0, 0, -0.264459, -0.0411523, -0.00862058, 0.96348, 1, 1, 0.999999, 0.57, 1, -7.45058e-09, 9.31323e-10, 1.49012e-08, 0.273409, -0.0300402, -0.0413702, 0.960538, 1, 1, 1, 0.8, 1, 0, -1.18278e-07, 3.00352e-08, -0.526217, -0.0919273, 0.095857, 0.839915, 0.999997, 1, 1 ) +tracks/6/type = "transform" +tracks/6/path = NodePath("Armature/Skeleton:right_thumb_head") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = PoolRealArray( 0, 1, -5.96046e-08, 0, 2.98023e-08, 6.7056e-11, 1.22495e-08, -0.157466, 0.987525, 1, 1, 1, 0.17, 1, 0, 1.30385e-08, 3.63798e-12, -7.5564e-10, 1.32314e-08, -0.261623, 0.96517, 1, 1, 1, 0.4, 1, 1.17347e-07, -6.14673e-08, -5.9601e-08, -9.13996e-09, 1.14014e-09, -0.394822, 0.918758, 1, 1, 1, 0.57, 1, -1.86265e-09, -2.98023e-08, -5.9601e-08, -7.9006e-09, 1.17909e-08, -0.261625, 0.96517, 1, 1, 1, 0.8, 1, -5.96046e-08, 0, 2.98023e-08, 6.7056e-11, 1.22495e-08, -0.157466, 0.987525, 1, 1, 1 ) +tracks/7/type = "transform" +tracks/7/path = NodePath("Armature/Skeleton:right_thumb_base") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = PoolRealArray( 0, 1, 4.65661e-09, 5.96046e-08, 1.86265e-09, -0.303913, 0.044692, -0.128009, 0.943002, 1, 1, 1, 0.17, 1, -1.95578e-08, -8.19564e-08, 1.17347e-07, -0.274656, 0.0289148, -0.0944319, 0.956457, 1, 1, 1, 0.4, 1, 9.22009e-08, 5.96046e-08, 1.67638e-08, -0.295847, 0.068542, -0.191562, 0.933317, 1, 1, 1, 0.57, 1, 9.0804e-09, 0, -5.86733e-08, -0.274655, 0.0289145, -0.0944314, 0.956458, 1, 1, 1, 0.8, 1, 4.65661e-09, 5.96046e-08, 1.86265e-09, -0.303913, 0.044692, -0.128009, 0.943002, 1, 1, 1 ) +tracks/8/type = "transform" +tracks/8/path = NodePath("Armature/Skeleton:right_fingers_head") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = PoolRealArray( 0, 1, -5.95755e-08, 0, 2.97441e-08, -0.511012, 1.90563e-08, 2.26206e-08, 0.859573, 1, 1, 1, 0.17, 1, 0, 0, -5.95464e-08, -0.707103, 1.57845e-08, -3.93077e-09, 0.707111, 1, 1, 1, 0.4, 1, -5.96046e-08, 2.98023e-08, -5.95464e-08, -0.571733, 3.20593e-08, 1.23418e-09, 0.82044, 1, 1, 1, 0.57, 1, 0, 4.47035e-08, 0, -0.707107, 8.26267e-09, -1.67723e-09, 0.707107, 1, 1, 1, 0.8, 1, -5.95755e-08, 0, 2.97441e-08, -0.511012, 1.90563e-08, 2.26206e-08, 0.859573, 1, 1, 1 ) +tracks/9/type = "transform" +tracks/9/path = NodePath("Armature/Skeleton:right_fingers_base") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = PoolRealArray( 0, 1, 2.32831e-10, 2.98023e-08, -9.31323e-10, -0.665251, -1.05193e-08, 6.06244e-10, 0.74662, 1, 1, 1, 0.17, 1, 1.19209e-07, -6.70552e-08, 5.86733e-08, -0.257295, 1.31959e-08, -6.12418e-09, 0.966333, 1, 1, 1, 0.4, 1, 2.32831e-10, -2.98023e-08, 5.96046e-08, -0.395079, 1.12973e-08, 1.14483e-08, 0.918647, 1, 1, 1, 0.57, 1, 2.32831e-10, -2.98023e-08, 5.96046e-08, -0.257286, 1.19808e-09, -4.49985e-09, 0.966335, 1, 1, 1, 0.8, 1, 2.32831e-10, 2.98023e-08, -9.31323e-10, -0.665251, -1.05193e-08, 6.06244e-10, 0.74662, 1, 1, 1 ) +tracks/10/type = "transform" +tracks/10/path = NodePath("Armature/Skeleton:right_hand") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = PoolRealArray( 0, 1, 5.93718e-08, 4.47035e-08, -3.72529e-09, -0.167774, 0.0562805, -0.103046, 0.978808, 1, 1, 1, 0.17, 1, -2.98023e-08, 1.49012e-08, -5.96046e-08, 0.0234437, -0.258095, 0.0394667, 0.965028, 1, 1, 1, 0.4, 1, -5.98375e-08, -1.49012e-08, -1.49012e-08, -0.0698057, -0.283788, 0.21086, 0.932807, 1, 1, 1, 0.57, 1, 0, -1.49012e-08, 0, -0.0898204, 0.0432844, 0.0664561, 0.992795, 1, 1, 1, 0.8, 1, 5.93718e-08, 4.47035e-08, -3.72529e-09, -0.167774, 0.0562805, -0.103046, 0.978808, 1, 1, 1 ) +tracks/11/type = "transform" +tracks/11/path = NodePath("Armature/Skeleton:right_forearm") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = PoolRealArray( 0, 1, 5.7742e-08, -2.98023e-08, -5.93718e-08, -0.0564026, 0.0404613, 0.851988, 0.518939, 1, 1, 1, 0.17, 1, 0, 0, -2.32831e-10, 0.886969, -0.14719, -0.0111567, -0.437604, 1, 1, 1, 0.4, 1, 1.49012e-08, -5.96046e-08, -2.32831e-10, -0.312532, 0.0243319, 0.765975, 0.561262, 1, 1, 1, 0.57, 1, -1.49012e-08, 0, 0, -0.160773, -0.0769643, 0.783368, 0.595452, 1, 1, 1, 0.8, 1, 5.7742e-08, -2.98023e-08, -5.93718e-08, -0.0564026, 0.0404613, 0.851988, 0.518939, 1, 1, 1 ) +tracks/12/type = "transform" +tracks/12/path = NodePath("Armature/Skeleton:right_upper_arm") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = PoolRealArray( 0, 1, -1.49012e-08, 0, 1.19675e-07, -0.480236, -0.174541, -0.283628, 0.811458, 1, 1, 1, 0.17, 1, 0, 0, 1.19675e-07, -0.0964006, 0.270357, -0.684194, 0.670442, 1, 1, 1, 0.4, 1, 1.49012e-08, 0, 4.65661e-10, -0.573027, 0.102994, -0.285725, 0.761179, 1, 1, 1, 0.57, 1, -1.44355e-08, 7.45058e-09, 1.19209e-07, -0.431687, 0.205608, -0.37807, 0.792738, 1, 1, 1, 0.8, 1, -1.49012e-08, 0, 1.19675e-07, -0.480236, -0.174541, -0.283628, 0.811458, 1, 1, 1 ) +tracks/13/type = "transform" +tracks/13/path = NodePath("Armature/Skeleton:right_clavicle") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = PoolRealArray( 0, 1, 7.45058e-09, -2.98023e-08, 8.9407e-08, -0.0157704, 0.0156969, -0.164934, 0.986054, 1, 1, 1, 0.17, 1, 1.49012e-08, -3.72529e-09, -1.3411e-07, -0.0364263, -0.0083064, -0.174019, 0.984033, 1, 1, 1, 0.4, 1, -3.07336e-08, -6.33299e-08, 0, 0.0856049, 0.00604167, -0.00765954, 0.996282, 1, 1, 1, 0.57, 1, -1.58325e-08, 0, 2.23517e-07, 0.00169278, -0.0176983, 0.0856222, 0.996169, 1, 1, 1, 0.8, 1, 7.45058e-09, -2.98023e-08, 8.9407e-08, -0.0157704, 0.0156969, -0.164934, 0.986054, 1, 1, 1 ) +tracks/14/type = "transform" +tracks/14/path = NodePath("Armature/Skeleton:left_fingers_end") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = PoolRealArray( 0, 1, 5.82077e-11, 2.98023e-08, -2.98023e-08, -0.628072, 4.02988e-08, 5.39949e-09, 0.778155, 1, 1, 1, 0.17, 1, -5.96046e-08, 0, 1.19206e-07, -0.707105, 1.41293e-08, 4.06296e-09, 0.707108, 1, 1, 1, 0.4, 1, 5.82077e-11, 2.98023e-08, 2.98023e-08, -0.648142, -9.66806e-09, -8.98201e-09, 0.761519, 1, 1, 1, 0.57, 1, 0, 0, 0, -0.707107, 2.91695e-09, -2.02861e-08, 0.707107, 1, 1, 1, 0.8, 1, 5.82077e-11, 2.98023e-08, -2.98023e-08, -0.628072, 4.02988e-08, 5.39949e-09, 0.778155, 1, 1, 1 ) +tracks/15/type = "transform" +tracks/15/path = NodePath("Armature/Skeleton:left_fingers_base") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = PoolRealArray( 0, 1, 5.96046e-08, 7.45058e-09, -5.86733e-08, -0.274623, 7.97769e-07, 1.63921e-07, 0.961552, 1, 1, 1, 0.17, 1, -5.96046e-08, 0, 9.31323e-10, -0.428828, 1.01971e-06, 4.23223e-07, 0.903386, 1, 1, 1, 0.4, 1, 0, 0, 6.0536e-08, -0.348319, 8.66759e-07, 5.33703e-07, 0.937376, 1, 1, 1, 0.57, 1, 5.95901e-08, -2.23517e-08, 3.1665e-08, -0.372371, 9.07724e-07, 5.38809e-07, 0.928084, 1, 1, 1, 0.8, 1, 5.96046e-08, 7.45058e-09, -5.86733e-08, -0.274623, 7.97769e-07, 1.63921e-07, 0.961552, 1, 1, 1 ) +tracks/16/type = "transform" +tracks/16/path = NodePath("Armature/Skeleton:left_thumb_end") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = PoolRealArray( 0, 1, -6.14673e-08, -3.1665e-08, 2.98023e-08, -1.16943e-10, 7.62253e-09, 0.259178, 0.96583, 1, 1, 1, 0.17, 1, 5.7742e-08, 1.86265e-09, 0, 1.22978e-08, 7.86622e-09, 0.329418, 0.944184, 1, 1, 1, 0.4, 1, -6.14673e-08, -3.72529e-09, 3.63798e-12, 7.21309e-09, -4.13374e-09, 0.343374, 0.939199, 1, 1, 1, 0.57, 1, 0, 0, 0, 7.70586e-09, 5.63986e-09, 0.397701, 0.917515, 1, 1, 1, 0.8, 1, -6.14673e-08, -3.1665e-08, 2.98023e-08, -1.16943e-10, 7.62253e-09, 0.259178, 0.96583, 1, 1, 1 ) +tracks/17/type = "transform" +tracks/17/path = NodePath("Armature/Skeleton:left_thunb_base") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = PoolRealArray( 0, 1, 6.23986e-08, 7.45058e-09, -6.03031e-08, -0.168812, -0.141313, -0.0140909, 0.975364, 1, 1, 1, 0.17, 1, 2.38884e-07, 1.11759e-07, -1.20141e-07, -0.237433, -0.0912181, 0.00924525, 0.967067, 1, 1, 1, 0.4, 1, -1.15018e-07, -3.72529e-08, -6.98492e-10, -0.368913, -0.188782, 0.00216924, 0.910088, 1, 1, 0.999999, 0.57, 1, 2.3935e-07, -3.72529e-08, -2.32831e-10, -0.237434, -0.0912169, 0.00924569, 0.967067, 1, 1, 1, 0.8, 1, 6.23986e-08, 7.45058e-09, -6.03031e-08, -0.168812, -0.141313, -0.0140909, 0.975364, 1, 1, 1 ) +tracks/18/type = "transform" +tracks/18/path = NodePath("Armature/Skeleton:left_hand") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = PoolRealArray( 0, 1, -5.96046e-08, 2.98023e-08, 2.98023e-08, -0.0401681, 0.0657755, 0.0133661, 0.996936, 1, 1, 1, 0.17, 1, -5.98375e-08, 0, 5.96046e-08, -0.0891853, 0.0454477, 0.0434891, 0.994027, 1, 1, 1, 0.4, 1, -2.32831e-10, 0, 3.72529e-09, 0.107678, 0.0543161, 0.0423995, 0.991795, 1, 1, 1, 0.57, 1, 0, -5.96046e-08, 0, -0.0692909, 0.0375402, 0.212774, 0.973918, 1, 1, 1, 0.8, 1, -5.96046e-08, 2.98023e-08, 2.98023e-08, -0.0401681, 0.0657755, 0.0133661, 0.996936, 1, 1, 1 ) +tracks/19/type = "transform" +tracks/19/path = NodePath("Armature/Skeleton:left_forearm") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = PoolRealArray( 0, 1, -5.96046e-08, -5.96046e-08, -2.98023e-08, -0.737367, 0.0146043, -0.152764, 0.657829, 1, 1, 1, 0.17, 1, 0, 5.96046e-08, 0, -0.285634, 0.0179113, -0.736106, 0.613385, 0.999999, 1, 1, 0.4, 1, -5.96046e-08, 0, 0, 0.034949, -0.0756746, -0.773519, 0.628267, 0.999999, 1, 1, 0.57, 1, -1.19209e-07, 0, 0, -0.160834, 0.068592, -0.809308, 0.560757, 1, 1, 1, 0.8, 1, -5.96046e-08, -5.96046e-08, -2.98023e-08, -0.737367, 0.0146043, -0.152764, 0.657829, 1, 1, 1 ) +tracks/20/type = "transform" +tracks/20/path = NodePath("Armature/Skeleton:left_upper_arm") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = PoolRealArray( 0, 1, -2.93367e-08, -7.45058e-09, -4.65661e-10, -0.507096, -0.404974, 0.0667792, 0.757885, 1, 1, 1, 0.17, 1, 0, 0, 0, -0.498121, -0.209328, -0.268772, 0.797382, 1, 1, 1, 0.4, 1, 0, 0, 0, -0.493194, 0.2307, -0.148692, 0.825487, 1, 1, 1, 0.57, 1, -2.93367e-08, 0, 1.19209e-07, -0.385297, 0.366787, 0.094312, 0.841498, 1, 1, 1, 0.8, 1, -2.93367e-08, -7.45058e-09, -4.65661e-10, -0.507096, -0.404974, 0.0667792, 0.757885, 1, 1, 1 ) +tracks/21/type = "transform" +tracks/21/path = NodePath("Armature/Skeleton:left_clavicle") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = PoolRealArray( 0, 1, -9.31323e-10, 0, -2.38419e-07, 0.00236454, 0.00812037, -0.116759, 0.993124, 1, 1, 1, 0.17, 1, 2.8871e-08, -1.49012e-08, 0, 0.0547065, 0.0266208, -0.168535, 0.983816, 1, 1, 1, 0.4, 1, -3.07336e-08, 0, -2.38419e-07, 0.0451784, 0.0034621, 0.0220889, 0.998729, 1, 1, 1, 0.57, 1, 0, 3.72529e-08, 0, 0.0105906, -0.023465, 0.159699, 0.98683, 1, 1, 1, 0.8, 1, -9.31323e-10, 0, -2.38419e-07, 0.00236454, 0.00812037, -0.116759, 0.993124, 1, 1, 1 ) +tracks/22/type = "transform" +tracks/22/path = NodePath("Armature/Skeleton:head") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = PoolRealArray( 0, 1, 7.45058e-09, 0, 0, -0.0157399, 0.0400255, -0.0375619, 0.998368, 1, 1, 1, 0.17, 1, 1.4903e-08, 1.19209e-07, 1.49012e-08, -0.0157398, 0.0400256, -0.0375619, 0.998368, 1, 1, 1, 0.4, 1, 7.45058e-09, -1.19209e-07, -1.49012e-08, -0.0228853, 0.0391366, -0.0173507, 0.998821, 1, 1, 1, 0.57, 1, 1.49012e-08, 0, 0, -0.0165314, 0.039512, -0.0452119, 0.998059, 1, 1, 1, 0.8, 1, 7.45058e-09, 0, 0, -0.0157399, 0.0400255, -0.0375619, 0.998368, 1, 1, 1 ) +tracks/23/type = "transform" +tracks/23/path = NodePath("Armature/Skeleton:neck") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = PoolRealArray( 0, 1, 0, 0, -6.51926e-09, -1.11759e-08, -7.90897e-09, -4.54756e-12, 1, 1, 1, 1, 0.17, 1, 0, 1.04308e-07, 0, -3.72529e-09, 1.86265e-09, 3.72165e-09, 1, 1, 1, 1, 0.4, 1, 0, 0, 7.45058e-09, -1.11759e-08, -1.02409e-08, -2.7286e-12, 1, 1, 1, 1, 0.57, 1, 0, 0, -2.8871e-08, -3.72529e-09, -1.85537e-09, -8.18546e-12, 1, 1, 1, 1, 0.8, 1, 0, 0, -6.51926e-09, -1.11759e-08, -7.90897e-09, -4.54756e-12, 1, 1, 1, 1 ) +tracks/24/type = "transform" +tracks/24/path = NodePath("Armature/Skeleton:spine_2") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = PoolRealArray( 0, 1, 7.4505e-09, 0, 0, 0.00430477, 0.0166524, 0.0027164, 0.999848, 1, 1, 1, 0.17, 1, 1.4901e-08, 0, 0, -0.033754, -0.0377206, -0.0217546, 0.998481, 1, 1, 1, 0.4, 1, 4.26326e-13, 0, 0, 0.0318489, -0.050409, 0.001208, 0.99822, 1, 1, 1, 0.57, 1, 1.49012e-08, 1.19209e-07, -2.98023e-08, -0.0308227, -0.0462971, -0.00804179, 0.99842, 1, 1, 1, 0.8, 1, 7.4505e-09, 0, 0, 0.00430477, 0.0166524, 0.0027164, 0.999848, 1, 1, 1 ) +tracks/25/type = "transform" +tracks/25/path = NodePath("Armature/Skeleton:spine_1") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = PoolRealArray( 0, 1, 3.60887e-09, 5.96046e-08, -1.49012e-08, 0.0118382, 0.0978535, 0.000407233, 0.99513, 1, 1, 1, 0.17, 1, 1.49012e-08, 1.19209e-07, 0, 0.05552, -0.0607897, 0.0282044, 0.996206, 1, 1, 1, 0.4, 1, 0, 0, -1.49012e-08, -0.00935885, 0.076064, -0.00554345, 0.997044, 1, 1, 1, 0.57, 1, -1.16415e-10, 1.19209e-07, -2.98023e-08, 0.0478814, -0.00758064, 0.00533774, 0.99881, 1, 1, 1, 0.8, 1, 3.60887e-09, 5.96046e-08, -1.49012e-08, 0.0118382, 0.0978535, 0.000407233, 0.99513, 1, 1, 1 ) +tracks/26/type = "transform" +tracks/26/path = NodePath("Armature/Skeleton:spine") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = PoolRealArray( 0, 1, 0, -5.96046e-08, 0, -0.000951463, 0.0936945, 0.00286929, 0.995596, 1, 1, 1, 0.17, 1, 9.31323e-10, 0, 1.49012e-08, 0.0480882, 0.342862, 0.0114442, 0.938084, 1, 1, 1, 0.4, 1, 0, 5.96046e-08, 0, 0.000994563, 0.218987, 0.00439624, 0.975717, 1, 1, 1, 0.57, 1, 9.31323e-10, 0, 1.49012e-08, 0.0544154, 0.276053, 0.0152553, 0.95948, 1, 1, 1, 0.8, 1, 0, -5.96046e-08, 0, -0.000951463, 0.0936945, 0.00286929, 0.995596, 1, 1, 1 ) +tracks/27/type = "transform" +tracks/27/path = NodePath("Armature/Skeleton:pelvis") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = PoolRealArray( 0, 1, 0, -0.0658342, -0.0122838, 0.118299, -4.69916e-09, 1.8306e-08, 0.992978, 1, 1, 1, 0.17, 1, 0, 0.106292, -0.0122837, 0.106086, -0.00327939, 0.0127752, 0.994269, 1, 1, 1, 0.4, 1, 0, -0.0658296, -0.0122838, 0.122638, -9.38332e-08, 3.65536e-07, 0.992451, 1, 1, 1, 0.57, 1, 0, 0.106295, -0.0122837, 0.106086, -0.00327946, 0.0127754, 0.994269, 1, 1, 1, 0.8, 1, 0, -0.0658342, -0.0122838, 0.118299, -4.69916e-09, 1.8306e-08, 0.992978, 1, 1, 1 ) +tracks/28/type = "transform" +tracks/28/path = NodePath("Armature/Skeleton:root") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = PoolRealArray( 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.17, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.4, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.57, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.8, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 ) +start_frame_index = 0 +keyframe/0/name = "" +keyframe/0/animation_keyframe_index = 70 +keyframe/0/next_keyframe = 1 +keyframe/0/transition = 1.0 +keyframe/0/time = 0.17 +keyframe/0/position = Vector2( 180, -40 ) +keyframe/1/name = "" +keyframe/1/animation_keyframe_index = 71 +keyframe/1/next_keyframe = 2 +keyframe/1/transition = 1.0 +keyframe/1/time = 0.23 +keyframe/1/position = Vector2( 380, -40 ) +keyframe/2/name = "" +keyframe/2/animation_keyframe_index = 72 +keyframe/2/next_keyframe = 3 +keyframe/2/transition = 1.0 +keyframe/2/time = 0.17 +keyframe/2/position = Vector2( 580, -40 ) +keyframe/3/name = "" +keyframe/3/animation_keyframe_index = 73 +keyframe/3/next_keyframe = 4 +keyframe/3/transition = 1.0 +keyframe/3/time = 0.23 +keyframe/3/position = Vector2( 780, -40 ) +keyframe/4/name = "" +keyframe/4/animation_keyframe_index = 70 +keyframe/4/next_keyframe = -1 +keyframe/4/transition = 1.0 +keyframe/4/time = 0.0 +keyframe/4/position = Vector2( 980, -40 ) diff --git a/game/modules/species/Human/models/ttt.png b/game/modules/species/Human/models/ttt.png new file mode 100644 index 0000000..1f988f0 Binary files /dev/null and b/game/modules/species/Human/models/ttt.png differ diff --git a/game/modules/species/Human/models/ttt.png.import b/game/modules/species/Human/models/ttt.png.import new file mode 100644 index 0000000..ff8965f --- /dev/null +++ b/game/modules/species/Human/models/ttt.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/ttt.png-d8f1b0eff7d1a5b02e85a0ab3eccfb86.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://modules/species/Human/models/ttt.png" +dest_files=[ "res://.import/ttt.png-d8f1b0eff7d1a5b02e85a0ab3eccfb86.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=2 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=1 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/modules/species/Human/species_human.tres b/game/modules/species/Human/species_human.tres new file mode 100644 index 0000000..7037f30 --- /dev/null +++ b/game/modules/species/Human/species_human.tres @@ -0,0 +1,14 @@ +[gd_resource type="EntitySpeciesData" load_steps=3 format=2] + +[ext_resource path="res://modules/species/Human/Body_2d_old.tscn" type="PackedScene" id=1] + +[sub_resource type="SpeciesModelData" id=1] +bone_structure = 4 +body = ExtResource( 1 ) + +[resource] +resource_name = "Human" +id = 1 +type = 4 +text_name = "Human" +model_datas = [ SubResource( 1 ) ] diff --git a/game/modules/species/Human/visuals/test_base_v2.tres b/game/modules/species/Human/visuals/test_base_v2.tres new file mode 100644 index 0000000..0528e31 --- /dev/null +++ b/game/modules/species/Human/visuals/test_base_v2.tres @@ -0,0 +1,126 @@ +[gd_resource type="ModelVisual" load_steps=46 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_models/huf_finger.gltf" type="MeshDataResource" id=1] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_calf_left.gltf" type="MeshDataResource" id=2] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_thigh_left.gltf" type="MeshDataResource" id=3] +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf.png" type="Texture" id=4] +[ext_resource path="res://modules/species/Human/Female/character_textures/skin.png" type="Texture" id=5] +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_green_scarfv2.png" type="Texture" id=6] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_pelvis.gltf" type="MeshDataResource" id=7] +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_simple_v2.png" type="Texture" id=8] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_fingers.gltf" type="MeshDataResource" id=9] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_spine1.gltf" type="MeshDataResource" id=10] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_handl.gltf" type="MeshDataResource" id=11] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_upperarm.gltf" type="MeshDataResource" id=12] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_neck.gltf" type="MeshDataResource" id=13] +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf.png" type="Texture" id=14] +[ext_resource path="res://modules/species/Human/Female/character_textures/head.png" type="Texture" id=15] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_hand.gltf" type="MeshDataResource" id=16] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_foot_left.gltf" type="MeshDataResource" id=17] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_spine2.gltf" type="MeshDataResource" id=18] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_forearm.gltf" type="MeshDataResource" id=19] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_head.gltf" type="MeshDataResource" id=20] + +[sub_resource type="ModelVisualEntry" id=1] +entry_0/mesh = ExtResource( 7 ) +entry_0/texture = ExtResource( 6 ) + +[sub_resource type="ModelVisualEntry" id=2] +entry_0/mesh = ExtResource( 10 ) +entry_0/texture = ExtResource( 14 ) + +[sub_resource type="ModelVisualEntry" id=3] +entry_0/mesh = ExtResource( 18 ) +entry_0/texture = ExtResource( 14 ) + +[sub_resource type="ModelVisualEntry" id=4] +entry_0/mesh = ExtResource( 13 ) +entry_0/texture = ExtResource( 6 ) + +[sub_resource type="ModelVisualEntry" id=5] +entry_0/mesh = ExtResource( 20 ) +entry_0/texture = ExtResource( 15 ) + +[sub_resource type="ModelVisualEntry" id=6] +entry_0/mesh = ExtResource( 12 ) +entry_0/texture = ExtResource( 5 ) + +[sub_resource type="ModelVisualEntry" id=7] +entry_0/mesh = ExtResource( 19 ) +entry_0/texture = ExtResource( 8 ) + +[sub_resource type="ModelVisualEntry" id=8] +entry_0/mesh = ExtResource( 11 ) +entry_0/texture = ExtResource( 4 ) + +[sub_resource type="ModelVisualEntry" id=9] +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 5 ) + +[sub_resource type="ModelVisualEntry" id=10] +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 5 ) + +[sub_resource type="ModelVisualEntry" id=11] +entry_0/mesh = ExtResource( 9 ) +entry_0/texture = ExtResource( 5 ) + +[sub_resource type="ModelVisualEntry" id=12] +entry_0/mesh = ExtResource( 9 ) +entry_0/texture = ExtResource( 5 ) + +[sub_resource type="ModelVisualEntry" id=13] +entry_0/mesh = ExtResource( 12 ) +entry_0/texture = ExtResource( 5 ) + +[sub_resource type="ModelVisualEntry" id=14] +entry_0/mesh = ExtResource( 19 ) +entry_0/texture = ExtResource( 8 ) + +[sub_resource type="ModelVisualEntry" id=15] +entry_0/mesh = ExtResource( 16 ) +entry_0/texture = ExtResource( 6 ) + +[sub_resource type="ModelVisualEntry" id=16] +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 5 ) + +[sub_resource type="ModelVisualEntry" id=17] +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 5 ) + +[sub_resource type="ModelVisualEntry" id=18] +entry_0/mesh = ExtResource( 9 ) +entry_0/texture = ExtResource( 5 ) + +[sub_resource type="ModelVisualEntry" id=19] +entry_0/mesh = ExtResource( 9 ) +entry_0/texture = ExtResource( 5 ) + +[sub_resource type="ModelVisualEntry" id=20] +entry_0/mesh = ExtResource( 3 ) +entry_0/texture = ExtResource( 8 ) + +[sub_resource type="ModelVisualEntry" id=21] +entry_0/mesh = ExtResource( 2 ) +entry_0/texture = ExtResource( 8 ) + +[sub_resource type="ModelVisualEntry" id=22] +entry_0/mesh = ExtResource( 17 ) +entry_0/texture = ExtResource( 8 ) + +[sub_resource type="ModelVisualEntry" id=23] +entry_0/mesh = ExtResource( 3 ) +entry_0/texture = ExtResource( 8 ) + +[sub_resource type="ModelVisualEntry" id=24] +entry_0/mesh = ExtResource( 2 ) +entry_0/texture = ExtResource( 8 ) + +[sub_resource type="ModelVisualEntry" id=25] +entry_0/mesh = ExtResource( 17 ) +entry_0/texture = ExtResource( 8 ) + +[resource] +layer = 1 +get_visual_entries = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ), SubResource( 13 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ), SubResource( 18 ), SubResource( 19 ), SubResource( 20 ), SubResource( 21 ), SubResource( 22 ), SubResource( 23 ), SubResource( 24 ), SubResource( 25 ) ] diff --git a/game/modules/species/Human/visuals/test_base_v3.tres b/game/modules/species/Human/visuals/test_base_v3.tres new file mode 100644 index 0000000..7ab1f1c --- /dev/null +++ b/game/modules/species/Human/visuals/test_base_v3.tres @@ -0,0 +1,33 @@ +[gd_resource type="ModelVisual" load_steps=28 format=2] + +[ext_resource path="res://modules/species/Human/Female/pelvis.tres" type="ModelVisualEntry" id=1] +[ext_resource path="res://modules/species/Human/Female/right_thigh.tres" type="ModelVisualEntry" id=2] +[ext_resource path="res://modules/species/Human/Female/spine_1.tres" type="ModelVisualEntry" id=3] +[ext_resource path="res://modules/species/Human/Female/right_calf.tres" type="ModelVisualEntry" id=4] +[ext_resource path="res://modules/species/Human/Female/right_thumb_end.tres" type="ModelVisualEntry" id=5] +[ext_resource path="res://modules/species/Human/Female/left_hand.tres" type="ModelVisualEntry" id=6] +[ext_resource path="res://modules/species/Human/Female/left_thigh.tres" type="ModelVisualEntry" id=7] +[ext_resource path="res://modules/species/Human/Female/right_upper_arm.tres" type="ModelVisualEntry" id=8] +[ext_resource path="res://modules/species/Human/Female/left_thumb_end.tres" type="ModelVisualEntry" id=9] +[ext_resource path="res://modules/species/Human/Female/left_fingers_end.tres" type="ModelVisualEntry" id=10] +[ext_resource path="res://modules/species/Human/Female/right_forearm.tres" type="ModelVisualEntry" id=11] +[ext_resource path="res://test_weapons/TestShield.tres" type="ModelVisualEntry" id=12] +[ext_resource path="res://modules/species/Human/Female/left_upper_arm.tres" type="ModelVisualEntry" id=13] +[ext_resource path="res://modules/species/Human/Female/right_fingers_end.tres" type="ModelVisualEntry" id=14] +[ext_resource path="res://modules/species/Human/Female/head.tres" type="ModelVisualEntry" id=15] +[ext_resource path="res://modules/species/Human/Female/right_fingers_base.tres" type="ModelVisualEntry" id=16] +[ext_resource path="res://modules/species/Human/Female/neck.tres" type="ModelVisualEntry" id=17] +[ext_resource path="res://modules/species/Human/Female/right_hand.tres" type="ModelVisualEntry" id=18] +[ext_resource path="res://modules/species/Human/Female/left_foot.tres" type="ModelVisualEntry" id=19] +[ext_resource path="res://modules/species/Human/Female/left_fingers_base.tres" type="ModelVisualEntry" id=20] +[ext_resource path="res://modules/species/Human/Female/right_thumb_base.tres" type="ModelVisualEntry" id=21] +[ext_resource path="res://test_weapons/TestOnehander.tres" type="ModelVisualEntry" id=22] +[ext_resource path="res://modules/species/Human/Female/right_foot.tres" type="ModelVisualEntry" id=23] +[ext_resource path="res://modules/species/Human/Female/spine_2.tres" type="ModelVisualEntry" id=24] +[ext_resource path="res://modules/species/Human/Female/left_calf.tres" type="ModelVisualEntry" id=25] +[ext_resource path="res://modules/species/Human/Female/left_thunm_base.tres" type="ModelVisualEntry" id=26] +[ext_resource path="res://modules/species/Human/Female/left_forearm.tres" type="ModelVisualEntry" id=27] + +[resource] +layer = 1 +get_visual_entries = [ ExtResource( 1 ), ExtResource( 3 ), ExtResource( 24 ), ExtResource( 17 ), ExtResource( 15 ), ExtResource( 13 ), ExtResource( 27 ), ExtResource( 6 ), ExtResource( 26 ), ExtResource( 9 ), ExtResource( 20 ), ExtResource( 10 ), ExtResource( 8 ), ExtResource( 11 ), ExtResource( 18 ), ExtResource( 21 ), ExtResource( 5 ), ExtResource( 16 ), ExtResource( 14 ), ExtResource( 7 ), ExtResource( 25 ), ExtResource( 19 ), ExtResource( 2 ), ExtResource( 4 ), ExtResource( 23 ), ExtResource( 12 ), ExtResource( 22 ) ] diff --git a/game/modules/species/Human/visuals/test_vis1.tres b/game/modules/species/Human/visuals/test_vis1.tres new file mode 100644 index 0000000..929bcf2 --- /dev/null +++ b/game/modules/species/Human/visuals/test_vis1.tres @@ -0,0 +1,125 @@ +[gd_resource type="ModelVisual" load_steps=45 format=2] + +[ext_resource path="res://modules/species/Human/Female/character_models/huf_finger.gltf" type="MeshDataResource" id=1] +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_simple.png" type="Texture" id=2] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_calf_left.gltf" type="MeshDataResource" id=3] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_thigh_left.gltf" type="MeshDataResource" id=4] +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_green_scarf.png" type="Texture" id=5] +[ext_resource path="res://modules/species/Human/Female/character_textures/skin.png" type="Texture" id=6] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_pelvis.gltf" type="MeshDataResource" id=7] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_fingers.gltf" type="MeshDataResource" id=8] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_spine1.gltf" type="MeshDataResource" id=9] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_handl.gltf" type="MeshDataResource" id=10] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_upperarm.gltf" type="MeshDataResource" id=11] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_neck.gltf" type="MeshDataResource" id=12] +[ext_resource path="res://modules/species/Human/Female/character_textures/100_seamless/armor_red_scarf.png" type="Texture" id=13] +[ext_resource path="res://modules/species/Human/Female/character_textures/head.png" type="Texture" id=14] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_hand.gltf" type="MeshDataResource" id=15] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_foot_left.gltf" type="MeshDataResource" id=16] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_spine2.gltf" type="MeshDataResource" id=17] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_forearm.gltf" type="MeshDataResource" id=18] +[ext_resource path="res://modules/species/Human/Female/character_models/huf_head.gltf" type="MeshDataResource" id=19] + +[sub_resource type="ModelVisualEntry" id=1] +entry_0/mesh = ExtResource( 7 ) +entry_0/texture = ExtResource( 2 ) + +[sub_resource type="ModelVisualEntry" id=2] +entry_0/mesh = ExtResource( 9 ) +entry_0/texture = ExtResource( 13 ) + +[sub_resource type="ModelVisualEntry" id=3] +entry_0/mesh = ExtResource( 17 ) +entry_0/texture = ExtResource( 13 ) + +[sub_resource type="ModelVisualEntry" id=4] +entry_0/mesh = ExtResource( 12 ) +entry_0/texture = ExtResource( 5 ) + +[sub_resource type="ModelVisualEntry" id=5] +entry_0/mesh = ExtResource( 19 ) +entry_0/texture = ExtResource( 14 ) + +[sub_resource type="ModelVisualEntry" id=6] +entry_0/mesh = ExtResource( 11 ) +entry_0/texture = ExtResource( 6 ) + +[sub_resource type="ModelVisualEntry" id=7] +entry_0/mesh = ExtResource( 18 ) +entry_0/texture = ExtResource( 2 ) + +[sub_resource type="ModelVisualEntry" id=8] +entry_0/mesh = ExtResource( 10 ) +entry_0/texture = ExtResource( 5 ) + +[sub_resource type="ModelVisualEntry" id=9] +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 6 ) + +[sub_resource type="ModelVisualEntry" id=10] +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 6 ) + +[sub_resource type="ModelVisualEntry" id=11] +entry_0/mesh = ExtResource( 8 ) +entry_0/texture = ExtResource( 6 ) + +[sub_resource type="ModelVisualEntry" id=12] +entry_0/mesh = ExtResource( 8 ) +entry_0/texture = ExtResource( 6 ) + +[sub_resource type="ModelVisualEntry" id=13] +entry_0/mesh = ExtResource( 11 ) +entry_0/texture = ExtResource( 6 ) + +[sub_resource type="ModelVisualEntry" id=14] +entry_0/mesh = ExtResource( 18 ) +entry_0/texture = ExtResource( 2 ) + +[sub_resource type="ModelVisualEntry" id=15] +entry_0/mesh = ExtResource( 15 ) +entry_0/texture = ExtResource( 5 ) + +[sub_resource type="ModelVisualEntry" id=16] +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 6 ) + +[sub_resource type="ModelVisualEntry" id=17] +entry_0/mesh = ExtResource( 1 ) +entry_0/texture = ExtResource( 6 ) + +[sub_resource type="ModelVisualEntry" id=18] +entry_0/mesh = ExtResource( 8 ) +entry_0/texture = ExtResource( 6 ) + +[sub_resource type="ModelVisualEntry" id=19] +entry_0/mesh = ExtResource( 8 ) +entry_0/texture = ExtResource( 6 ) + +[sub_resource type="ModelVisualEntry" id=20] +entry_0/mesh = ExtResource( 4 ) +entry_0/texture = ExtResource( 2 ) + +[sub_resource type="ModelVisualEntry" id=21] +entry_0/mesh = ExtResource( 3 ) +entry_0/texture = ExtResource( 2 ) + +[sub_resource type="ModelVisualEntry" id=22] +entry_0/mesh = ExtResource( 16 ) +entry_0/texture = ExtResource( 2 ) + +[sub_resource type="ModelVisualEntry" id=23] +entry_0/mesh = ExtResource( 4 ) +entry_0/texture = ExtResource( 2 ) + +[sub_resource type="ModelVisualEntry" id=24] +entry_0/mesh = ExtResource( 3 ) +entry_0/texture = ExtResource( 2 ) + +[sub_resource type="ModelVisualEntry" id=25] +entry_0/mesh = ExtResource( 16 ) +entry_0/texture = ExtResource( 2 ) + +[resource] +layer = 1 +get_visual_entries = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ), SubResource( 13 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ), SubResource( 18 ), SubResource( 19 ), SubResource( 20 ), SubResource( 21 ), SubResource( 22 ), SubResource( 23 ), SubResource( 24 ), SubResource( 25 ) ] diff --git a/game/modules/spell_effects/enchanter/Arrow.tscn b/game/modules/spell_effects/enchanter/Arrow.tscn new file mode 100644 index 0000000..865a901 --- /dev/null +++ b/game/modules/spell_effects/enchanter/Arrow.tscn @@ -0,0 +1,3 @@ +[gd_scene format=2] + +[node name="Arrow" type="Spatial"] diff --git a/game/new_rtileset.tres b/game/new_rtileset.tres new file mode 100644 index 0000000..8963358 --- /dev/null +++ b/game/new_rtileset.tres @@ -0,0 +1,42 @@ +[gd_resource type="RTileSet" load_steps=5 format=2] + +[ext_resource path="res://icon.png" type="Texture" id=1] + +[sub_resource type="OccluderPolygon2D" id=1] +polygon = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 ) + +[sub_resource type="FastnoiseNoiseParams" id=3] + +[resource] +noise = SubResource( 3 ) +0/name = "icon.png 0" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 32, 32, 128, 128 ) +0/tile_mode = 2 +0/autotile/icon_coordinate = Vector2( 0, 0 ) +0/autotile/tile_size = Vector2( 32, 32 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ Vector2( 1, 1 ), SubResource( 1 ) ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 2 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 diff --git a/game/player/3DBody.gd b/game/player/3DBody.gd new file mode 100644 index 0000000..6781352 --- /dev/null +++ b/game/player/3DBody.gd @@ -0,0 +1,805 @@ +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019-2021 Péter Magyar + +# 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. + +extends KinematicBody + +export(float) var max_visible_distance : float = 120 setget set_max_visible_distance +var max_visible_distance_squared : float = max_visible_distance * max_visible_distance + +export(float) var MOUSE_SENSITIVITY : float = 0.05 +export(String) var world_path : String = "../.." +export(NodePath) var contact_path : NodePath = "Contact" +export(NodePath) var model_path : NodePath = "Rotation_Helper/Model" +export(NodePath) var character_skeleton_path : NodePath = "Rotation_Helper/Model/character" + +const ray_length = 1000 + +const MAX_SLOPE_ANGLE : float = deg2rad(70.0) +const MOUSE_TARGET_MAX_OFFSET : int = 10 + +#flying +const FLY_ACCEL = 8 +var flying : bool = false + +#waling +const GRAVITY : float = -24.8 +const MAX_SPEED = 10 +const MAX_RUNNING_SPEED = 16 +const ACCEL : float = 100.0 +const DEACCEL : float = 100.0 + +#jumping +var jump_height = 7.6 +var has_contact : bool = false +var double_jumped : bool = false + +var _on : bool = true +var _controlled : bool = false + +var y_rot : float = 0.0 + +var vel : Vector3 = Vector3() +var dir : Vector3 = Vector3() + +var input_dir : Vector2 = Vector2() +var mouse_dir : Vector2 = Vector2() +var mouse_move_dir : Vector2 = Vector2() +var mouse_left_down : bool = false +var mouse_right_down : bool = false +var touchpad_dir : Vector2 = Vector2() +var mouse_down_delta : Vector2 = Vector2() +var queued_camera_rotaions : Vector2 = Vector2() +var target_movement_direction : Vector2 = Vector2() + +var key_left : bool = false +var key_right : bool = false +var key_up : bool = false +var key_down : bool = false +var key_jump : bool = false + +var cursor_grabbed : bool = false +var last_cursor_pos : Vector2 = Vector2() +var mouse_down_pos : Vector2 = Vector2() +var total_down_mouse_delta : Vector2 = Vector2() + +var camera : Camera +var camera_pivot : Spatial + +var animation_tree : AnimationTree +var anim_node_state_machine : AnimationNodeStateMachinePlayback = null +var animation_run : bool = false + +var moving : bool = false +var casting_anim : bool = false + +var sleep : bool = false +var sleep_recheck_timer : float = 0 +var dead : bool = false +var death_timer : float = 0 + +var last_mouse_over : Entity = null + +var entity : Entity +var model_rotation_node : Spatial +var character_skeleton : CharacterSkeleton3D + +var visibility_update_timer : float = 0 +var placed : bool = false +var just_place : bool = false + +var contact : RayCast = null + +var _nameplate : Node = null + +#var los : bool = false + +func _ready() -> void: + camera = get_node_or_null("CameraPivot/Camera") as Camera + camera_pivot = get_node_or_null("CameraPivot") as Spatial + + model_rotation_node = get_node(model_path) + character_skeleton = get_node(character_skeleton_path) + contact = get_node(contact_path) + entity = get_node("..") + entity.set_character_skeleton(character_skeleton) + entity.connect("notification_ccast", self, "on_notification_ccast") + entity.connect("diesd", self, "on_diesd") + entity.connect("onc_entity_controller_changed", self, "on_c_controlled_changed") + owner = entity + + on_c_controlled_changed() + + transform = entity.get_transform_3d(true) + + animation_tree = character_skeleton.get_animation_tree() + + if animation_tree != null: + anim_node_state_machine = animation_tree["parameters/playback"] + + animation_tree["parameters/run-loop/blend_position"] = Vector2(0, -1) + +# set_process(false) +# set_process_input(false) +# set_process_unhandled_input(false) + +func _enter_tree(): + set_physics_process(true) + +func _process(delta : float) -> void: + if entity.ai_state == EntityEnums.AI_STATE_OFF: + return + + visibility_update_timer += delta + + if visibility_update_timer < 1: + return + + visibility_update_timer = 0 + + var camera : Camera = get_tree().get_root().get_camera() as Camera + + if camera == null: + return + + var cam_pos : Vector3 = camera.global_transform.xform(Vector3()) + var dstv : Vector3 = cam_pos - translation + dstv.y = 0 + var dst : float = dstv.length_squared() + + if dst > max_visible_distance_squared: + if visible: + hide() + #todo check whether its needed or not + #contact.enabled = false + return + else: +# var lod_level : int = int(dst / max_visible_distance_squared * 3.0) + + if dst < 400: #20^2 + entity.get_character_skeleton().set_lod_level(0) + elif dst > 400 and dst < 900: #20^2, 30^2 + entity.get_character_skeleton().set_lod_level(1) + else: + entity.get_character_skeleton().set_lod_level(2) + + if not visible: + show() + #contact.enabled = true + + +func _physics_process(delta : float) -> void: + if not _on: + return + + if entity.sentity_data == null: + return + + if dead: + return + + if not placed: + placed = true + + if entity.getc_is_controlled(): + process_input(delta) + process_movement_player(delta) + else: +# var camera : Camera = get_tree().get_root().get_camera() as Camera +# +# if camera != null: +# var res = get_world().get_direct_space_state().intersect_ray(get_transform().origin, camera.transform.origin, [ self ], 1) +# +# if res: +# los = true +# else: +# los = false + + if sleep: + sleep_recheck_timer += delta + + if sleep_recheck_timer < 0.5: + return + + sleep_recheck_timer = 0 + + process_movement_mob(delta) + +func process_input(delta: float) -> void: + var key_dir : Vector2 = Vector2() + + if key_up: + key_dir.y -= 1 + if key_down: + key_dir.y += 1 + if key_left: + key_dir.x -= 1 + if key_right: + key_dir.x += 1 + + input_dir = key_dir + mouse_dir + touchpad_dir + mouse_move_dir + + var state : int = entity.getc_state() + + if state & EntityEnums.ENTITY_STATE_TYPE_FLAG_ROOT != 0 or state & EntityEnums.ENTITY_STATE_TYPE_FLAG_STUN != 0: + input_dir = Vector2() + return + + var input_length : float = input_dir.length_squared() + + if input_length > 0.1: + if anim_node_state_machine != null and not animation_run: + anim_node_state_machine.travel("run-loop") + animation_run = true + + input_dir = input_dir.normalized() + + animation_tree["parameters/run-loop/blend_position"] = input_dir + + if (input_dir.y < 0.1): + model_rotation_node.transform.basis = Basis(Vector3(0, acos(input_dir.x) - PI / 2.0, 0)) + else: + model_rotation_node.transform.basis = Basis() + else: + if anim_node_state_machine != null and animation_run: + anim_node_state_machine.travel("idle-loop") + animation_run = false + + if queued_camera_rotaions.length_squared() > 1: + camera_pivot.rotate_delta(queued_camera_rotaions.x * 2.0, queued_camera_rotaions.y) + queued_camera_rotaions = Vector2() + + if input_length > 0.1: + rotate_delta(camera_pivot.get_y_rot()) + camera_pivot.set_y_rot(0.0) + +func process_movement_player(delta : float) -> void: + var state : int = entity.getc_state() + + if state & EntityEnums.ENTITY_STATE_TYPE_FLAG_ROOT != 0 or state & EntityEnums.ENTITY_STATE_TYPE_FLAG_STUN != 0: + moving = false + key_jump = false + return + + if flying: + player_fly(delta) + else: + player_walk(delta) + +func player_fly(delta : float) -> void: + if input_dir.x > 0.1 or input_dir.y > 0.1 or input_dir.x < -0.1 or input_dir.y < -0.1: + var forward : Vector3 = Vector3(0, 0, 1).rotated(Vector3(0, 1, 0), deg2rad(y_rot)) + var right : Vector3 = forward.cross(Vector3(0, 1, 0)) * -input_dir.x + forward *= input_dir.y #only potentially make it zero after getting the right vector + + dir = forward + dir += right + + if dir.length_squared() > 0.1: + dir = dir.normalized() + + moving = true + entity.moved() + else: + dir = Vector3() + moving = false + return + + if key_jump: + dir.y += 1 + +# var hvel : Vector3 = vel +# hvel.y = 0 +# +# var target : Vector3 = dir +# target *= entity.getc_speed().current_value / 100.0 * 4.2 +# +# var accel +# if dir.dot(hvel) > 0: +# accel = ACCEL +# else: +# accel = DEACCEL +# +# hvel = hvel.linear_interpolate(target, accel * delta) as Vector3 +# vel.x = hvel.x +# vel.z = hvel.z +# vel = move_and_slide(vel, Vector3(0,1,0), true, 4, deg2rad(MAX_SLOPE_ANGLE)) + + var target : Vector3 = dir * entity.getc_speed().current_value / 100.0 * 4.2 + vel = vel.linear_interpolate(target, FLY_ACCEL * delta) + + move_and_slide(vel) + + crequest_set_position(translation, rotation) + + +func player_walk(delta : float) -> void: + if input_dir.x > 0.1 or input_dir.y > 0.1 or input_dir.x < -0.1 or input_dir.y < -0.1: + var forward : Vector3 = Vector3(0, 0, 1).rotated(Vector3(0, 1, 0), deg2rad(y_rot)) + var right : Vector3 = forward.cross(Vector3(0, 1, 0)) * -input_dir.x + forward *= input_dir.y #only potentially make it zero after getting the right vector + + dir = forward + dir += right + + if dir.length_squared() > 0.1: + dir = dir.normalized() + + moving = true + entity.moved() + else: + dir = Vector3() + moving = false + + if is_on_floor(): + has_contact = true + else: + if !contact.is_colliding(): + has_contact = false + + if has_contact and !is_on_floor(): + move_and_collide(Vector3(0, -1, 0)) + + vel.y += delta * GRAVITY + + var hvel : Vector3 = vel + hvel.y = 0 + + var target : Vector3 = dir + target *= entity.getc_speed().current_value / 100.0 * 4.2 + + var accel + if dir.dot(hvel) > 0: + accel = ACCEL + else: + accel = DEACCEL + + hvel = hvel.linear_interpolate(target, accel * delta) as Vector3 + vel.x = hvel.x + vel.z = hvel.z + + if has_contact and key_jump: + key_jump = false + + vel.y = jump_height + has_contact = false + +# if not foot_audio.playing and last_sound_timer >= MIN_SOUND_TIME_LIMIT: +# foot_audio.play() +# last_sound_timer = 0 +# +# step_timer = 0 + + vel = move_and_slide(vel, Vector3(0,1,0), true, 4, MAX_SLOPE_ANGLE) + +# if not has_contact and is_on_floor(): +# if not foot_audio.playing and last_sound_timer >= MIN_SOUND_TIME_LIMIT: +# foot_audio.play() +# last_sound_timer = 0 +# +# step_timer = 0 + +# var v : Vector3 = vel +# v.y = 0 +# if has_contact and v.length() > 1: +# step_timer += delta +# +# if step_timer >= WALK_STEP_TIME: +# step_timer = 0 +# +# if not foot_audio.playing and last_sound_timer >= MIN_SOUND_TIME_LIMIT: +# foot_audio.play() +# last_sound_timer = 0 + + crequest_set_position(translation, rotation) + + +func process_movement_mob(delta : float) -> void: + if entity.starget != null: + look_at(entity.starget.get_body().translation, Vector3(0, 1, 0)) + + var state : int = entity.getc_state() + + if state & EntityEnums.ENTITY_STATE_TYPE_FLAG_ROOT != 0 or state & EntityEnums.ENTITY_STATE_TYPE_FLAG_STUN != 0: + moving = false + return + + if target_movement_direction.length_squared() > 0.1: + if anim_node_state_machine != null and not animation_run: + anim_node_state_machine.travel("run-loop") + animation_run = true + + target_movement_direction = target_movement_direction.normalized() + moving = true + else: + if anim_node_state_machine != null and animation_run: + anim_node_state_machine.travel("idle-loop") + animation_run = false + + moving = false + + if target_movement_direction.x > 0.1 or target_movement_direction.y > 0.1 or target_movement_direction.x < -0.1 or target_movement_direction.y < -0.1: + y_rot = Vector2(0, 1).angle_to(target_movement_direction) + + var forward : Vector3 = Vector3(0, 0, 1).rotated(Vector3(0, 1, 0), deg2rad(y_rot)) + var right : Vector3 = forward.cross(Vector3(0, 1, 0)) * -target_movement_direction.x + forward *= target_movement_direction.y #only potentially make it zero after getting the right vector + + dir = forward + dir += right + + if dir.length_squared() > 0.1: + dir = dir.normalized() + + moving = true + else: + dir = Vector3() + moving = false + + if not moving and sleep: + return + + if moving and sleep: + sleep = false + + if is_on_floor(): + has_contact = true + else: + if !contact.is_colliding(): + has_contact = false + + if has_contact and !is_on_floor(): + move_and_collide(Vector3(0, -1, 0)) + + vel.y += delta * GRAVITY + + var hvel : Vector3 = vel + hvel.y = 0 + + var target : Vector3 = dir + target *= entity.getc_speed().current_value / 100.0 * 4.2 + + var accel + if dir.dot(hvel) > 0: + accel = ACCEL + else: + accel = DEACCEL + + hvel = hvel.linear_interpolate(target, accel * delta) as Vector3 + vel.x = hvel.x + vel.z = hvel.z + + var facing : Vector3 = vel + facing.y = 0 + + vel = move_and_slide(vel, Vector3(0,1,0), true, 4, MAX_SLOPE_ANGLE) + crequest_set_position(translation, rotation) + + if vel.length_squared() < 0.12: + sleep = true + + if translation.y < -2000.0: + print("killed mob with fall damage") + var sdi : SpellDamageInfo = SpellDamageInfo.new() + sdi.damage_source_type = SpellDamageInfo.DAMAGE_SOURCE_UNKNOWN + sdi.damage = 999999999 + entity.stake_damage(sdi) + + +func _input(event: InputEvent) -> void: + if not cursor_grabbed: + set_process_input(false) + return + + if event is InputEventMouseMotion and event.device != -1: + var s : float = ProjectSettings.get("display/mouse_cursor/sensitivity") + + var relx : float = event.relative.x * s + var rely : float = event.relative.y * s + + mouse_down_delta.x += relx + mouse_down_delta.y += rely + + total_down_mouse_delta.x += relx + total_down_mouse_delta.y += rely + + get_tree().set_input_as_handled() + + if (mouse_right_down or mouse_left_down) and event.device != -1: + if mouse_right_down: + camera_pivot.rotate_delta(0.0, -event.relative.y) + rotate_delta(-event.relative.x) + else: + camera_pivot.rotate_delta(-relx, -rely) + +func _unhandled_input(event: InputEvent) -> void: + if event.is_action_type(): + if event.is_action("move_forward"): + key_up = event.pressed + get_tree().set_input_as_handled() + return + elif event.is_action("move_backward"): + key_down = event.pressed + get_tree().set_input_as_handled() + return + elif event.is_action("move_left"): + key_left = event.pressed + get_tree().set_input_as_handled() + return + elif event.is_action("move_right"): + key_right = event.pressed + get_tree().set_input_as_handled() + return + elif event.is_action("jump"): + key_jump = event.pressed + get_tree().set_input_as_handled() + return + + if event is InputEventMouseMotion and not (mouse_right_down or mouse_left_down) and event.device != -1: + cmouseover(event) + + if event is InputEventMouseButton: + if event.button_index == BUTTON_LEFT and event.device != -1: + mouse_left_down = event.pressed + + if mouse_left_down: + mouse_down_delta = Vector2() + mouse_down_pos = event.position + + if event.button_index == BUTTON_RIGHT and event.device != -1: + mouse_right_down = event.pressed + + if mouse_right_down: + rotate_delta(camera_pivot.get_y_rot()) + camera_pivot.set_y_rot(0.0) + + if mouse_left_down and mouse_right_down: + mouse_move_dir.y = -1 + else: + mouse_move_dir.y = 0 + + if event.is_pressed() and event.device != -1: + if event.button_index == BUTTON_WHEEL_UP: + camera_pivot.camera_distance_set_delta(-0.2) + if event.button_index == BUTTON_WHEEL_DOWN: + camera_pivot.camera_distance_set_delta(0.2) + + if not event.pressed and event.button_index == BUTTON_LEFT and event.device != -1: + if mouse_down_delta.length() < MOUSE_TARGET_MAX_OFFSET: + target(event.position) + + + if event is InputEventScreenTouch and event.pressed: + target(event.position) + + update_cursor_mode() + +func update_cursor_mode(): + if mouse_left_down or mouse_right_down: + if not cursor_grabbed: + set_process_input(true) + total_down_mouse_delta = Vector2() + + cursor_grabbed = true + last_cursor_pos = get_viewport().get_mouse_position() + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + else: + if cursor_grabbed: + set_process_input(false) + cursor_grabbed = false + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + get_viewport().warp_mouse(last_cursor_pos) + + if total_down_mouse_delta.length_squared() < 8: + target(last_cursor_pos) + + +func rotate_delta(x_delta : float) -> void: + y_rot += x_delta + + while y_rot > 360: + y_rot -= 360 + + while y_rot < 0: + y_rot += 360 + + rotation_degrees = Vector3(0.0, y_rot, 0.0) + + +func target(position : Vector2): + var from = camera.project_ray_origin(position) + var to = from + camera.project_ray_normal(position) * ray_length + + var space_state = get_world().direct_space_state + var result = space_state.intersect_ray(from, to, [], collision_mask) + + if result: + if result.collider and result.collider.owner is Entity: + var ent : Entity = result.collider.owner as Entity + + entity.target_crequest_change(ent.get_path()) + return + + entity.target_crequest_change(NodePath()) + else: + entity.target_crequest_change(NodePath()) + +func cmouseover(event): + var from = camera.project_ray_origin(event.position) + var to = from + camera.project_ray_normal(event.position) * ray_length + + var space_state = get_world().direct_space_state + var result = space_state.intersect_ray(from, to, [], collision_mask) + + if result: + if result.collider:# and result.collider.owner is Entity: + var mo : Entity = result.collider.owner as Entity + + if mo == null: + return + + if last_mouse_over != null and last_mouse_over != mo: + if is_instance_valid(last_mouse_over): + last_mouse_over.notification_cmouse_exit() + + last_mouse_over = null + + if last_mouse_over == null: + mo.notification_cmouse_enter() + last_mouse_over = mo + + return + + if last_mouse_over != null: + last_mouse_over.notification_cmouse_exit() + last_mouse_over = null + +func analog_force_change(vector, touchpad): + if touchpad.padname == "TouchPad": + touchpad_dir = vector + touchpad_dir.y *= -1 + elif touchpad.padname == "TargetPad": + #try to target + return + +func queue_camera_rotation(rot : Vector2) -> void: + queued_camera_rotaions += rot + +remote func sset_position(position : Vector3, protation : Vector3) -> void: + if multiplayer.network_peer and multiplayer.is_network_server(): + for i in range(entity.seen_by_gets_count()): + var e : Entity = entity.seen_by_gets(i) + + if e == entity: + #todo make sure this doesn't happen! + continue + + if is_instance_valid(e): + var nm : int = e.get_network_master() + + if nm != 1: + rpc_id(nm, "cset_position", position, protation) + + #if _controlled && get_network_master() == 1: + cset_position(position, protation) + +func crequest_set_position(position : Vector3, protation : Vector3) -> void: + if multiplayer.network_peer && !multiplayer.is_network_server(): + rpc_id(1, "sset_position", translation, protation) + else: + sset_position(position, protation) + +remote func cset_position(position : Vector3, protation : Vector3) -> void: + translation = position + rotation = protation + +func on_notification_ccast(what : int, info : SpellCastInfo) -> void: + if what == SpellEnums.NOTIFICATION_CAST_STARTED: + if anim_node_state_machine != null and not casting_anim: + anim_node_state_machine.travel("casting-loop") + casting_anim = true + animation_run = false + elif what == SpellEnums.NOTIFICATION_CAST_FAILED: + if anim_node_state_machine != null and casting_anim: + anim_node_state_machine.travel("idle-loop") + casting_anim = false + + if animation_run: + anim_node_state_machine.travel("run-loop") + elif what == SpellEnums.NOTIFICATION_CAST_FINISHED: + if anim_node_state_machine != null: + anim_node_state_machine.travel("cast-end") + casting_anim = false + + if animation_run: + anim_node_state_machine.travel("run-loop") + elif what == SpellEnums.NOTIFICATION_CAST_SUCCESS: + if anim_node_state_machine != null: + anim_node_state_machine.travel("cast-end") + casting_anim = false + + if animation_run: + anim_node_state_machine.travel("run-loop") + + +func on_c_controlled_changed(): + #create camera and pivot if true + _controlled = entity.getc_is_controlled() + + if _controlled: + if _nameplate: + _nameplate.queue_free() + + var cam_scene : PackedScene = ResourceLoader.load("res://player/camera/CameraPivot.tscn") + camera_pivot = cam_scene.instance() as Spatial + add_child(camera_pivot) + camera = camera_pivot.get_node("Camera") as Camera + +# var uiscn : PackedScene = ResourceLoader.load("res://ui/player_ui/player_ui.tscn") +# var ui = uiscn.instance() + var ui = DataManager.request_instance(DataManager.PLAYER_UI_INSTANCE) + add_child(ui) + + + set_process_input(true) + set_process_unhandled_input(true) + else: + if camera_pivot: + camera_pivot.queue_free() + camera_pivot = null + camera = null + + set_process_input(false) + set_process_unhandled_input(false) + var nameplatescn : PackedScene = ResourceLoader.load("res://ui/nameplates/NamePlate.tscn") + _nameplate = nameplatescn.instance() + add_child(_nameplate) + + + +func on_diesd(entity): + if dead: + return + + dead = true + + anim_node_state_machine.travel("dead") + + set_physics_process(false) + +remote func set_position(position : Vector3, rotation : Vector3) -> void: + if get_tree().is_network_server(): + rpc("set_position", position, rotation) + + +func set_max_visible_distance(var value : float) -> void: + max_visible_distance_squared = value * value + + max_visible_distance = value + +func teleport(teleport_to : Vector3): + transform.origin = teleport_to + placed = false +# just_place = true + +func get_entity() -> Entity: + return entity diff --git a/game/player/Body.gd b/game/player/Body.gd new file mode 100644 index 0000000..0f1bce6 --- /dev/null +++ b/game/player/Body.gd @@ -0,0 +1,530 @@ +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019-2020 Péter Magyar + +# 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. + +extends KinematicBody2D + +export(float) var MOUSE_SENSITIVITY : float = 0.05 +export(String) var world_path : String = "../.." +export(NodePath) var model_path : NodePath = "Rotation_Helper/Model" +export(NodePath) var character_skeleton_path : NodePath = "Character" + +const BASE_SPEED = 60.0 + +const ray_length = 1000 +const ACCEL : float = 100.0 +const DEACCEL : float = 100.0 + +const MOUSE_TARGET_MAX_OFFSET : int = 10 + +var _on : bool = true + +var y_rot : float = 0.0 + +var vel : Vector2 = Vector2() +var dir : Vector2 = Vector2() + +var input_dir : Vector2 = Vector2() +var mouse_dir : Vector2 = Vector2() +var mouse_move_dir : Vector2 = Vector2() +var mouse_left_down : bool = false +var mouse_right_down : bool = false +var touchpad_dir : Vector2 = Vector2() +var mouse_down_delta : Vector2 = Vector2() + +var key_left : bool = false +var key_right : bool = false +var key_up : bool = false +var key_down : bool = false + +var cursor_grabbed : bool = false +var last_cursor_pos : Vector2 = Vector2() +var mouse_down_pos : Vector2 = Vector2() +var total_down_mouse_delta : Vector2 = Vector2() +var target_movement_direction : Vector2 = Vector2() + +var camera : Camera2D + +var animation_run : bool = false + +var moving : bool = false +var casting_anim : bool = false + +var last_mouse_over : Entity = null + +var world : Node2D = null + +var _controlled : bool = false + +var sleep : bool = false +var sleep_recheck_timer : float = 0 +var dead : bool = false +var death_timer : float = 0 + +var entity : Entity +var character_skeleton : CharacterSkeleton2D + +var visibility_update_timer : float = 0 + +var _nameplate : Node = null + +func _enter_tree() -> void: + world = get_node(world_path) as Node2D + camera = get_node_or_null("Camera") as Camera2D + + character_skeleton = get_node(character_skeleton_path) + entity = get_node("..") + entity.set_character_skeleton(character_skeleton) +# entity.connect("notification_ccast", self, "on_notification_ccast") + entity.connect("diesd", self, "on_diesd") + entity.connect("onc_entity_controller_changed", self, "on_c_controlled_changed") + owner = entity + + on_c_controlled_changed() + + transform = entity.get_transform_2d(true) + + set_physics_process(true) + +func _process(delta : float) -> void: + if entity.ai_state == EntityEnums.AI_STATE_OFF: + return + + visibility_update_timer += delta + + if visibility_update_timer < 1: + return + + visibility_update_timer = 0 + + var vpos : Vector2 = -get_tree().root.canvas_transform.get_origin() + (get_tree().root.get_visible_rect().size / 2) - position + var l : float = vpos.length_squared() + var rs : float = get_tree().root.size.x * get_tree().root.size.x + rs *= 0.3 + + if l < rs: + if not visible: + show() + set_physics_process(true) + else: + if visible: + hide() + set_physics_process(false) + + +func _physics_process(delta : float) -> void: + if not _on: + return + + if world.initial_generation: + return + + if entity.sentity_data == null: + return + + if dead: + return + + if entity.getc_is_controlled(): + process_input(delta) + process_movement_player(delta) + else: + if sleep: + sleep_recheck_timer += delta + + if sleep_recheck_timer < 0.5: + return + + sleep_recheck_timer = 0 + +# if world != null: +# if not world.is_position_walkable(transform.origin): +# return + + process_movement_mob(delta) + +func process_input(delta: float) -> void: + var key_dir : Vector2 = Vector2() + + if key_up: + key_dir.y -= 1 + if key_down: + key_dir.y += 1 + if key_left: + key_dir.x -= 1 + if key_right: + key_dir.x += 1 + + input_dir = key_dir + mouse_dir + touchpad_dir + mouse_move_dir + + var state : int = entity.getc_state() + + if state & EntityEnums.ENTITY_STATE_TYPE_FLAG_ROOT != 0 or state & EntityEnums.ENTITY_STATE_TYPE_FLAG_STUN != 0: + input_dir = Vector2() + return + + var input_length : float = input_dir.length_squared() + + if input_length > 0.1: + #handle_graphic_facing(abs(dir.dot(Vector2(0, 1))) > 0.9) + character_skeleton.move_dir(input_dir) + else: + character_skeleton.stand() + + #character_skeleton.get_animation_tree().set("parameters/walking/blend_amount", input_dir.length()) + #character_skeleton.set_ + + #character_skeleton.update_facing(input_dir) + + +func process_movement(delta : float) -> void: + var state : int = entity.getc_state() + + if state & EntityEnums.ENTITY_STATE_TYPE_FLAG_ROOT != 0 or state & EntityEnums.ENTITY_STATE_TYPE_FLAG_STUN != 0: + moving = false + return + + if (input_dir.length_squared() > 0.1): + moving = true +# entity.moved() + else: + moving = false + + var hvel = vel + + var target = dir + target *= entity.get_speed().ccurrent + + var accel + if dir.dot(hvel) > 0: + accel = ACCEL + else: + accel = DEACCEL + + hvel = hvel.linear_interpolate(target, accel*delta) + vel = hvel + vel = move_and_slide(vel) + + if multiplayer.has_network_peer(): + if not multiplayer.is_network_server(): + rpc_id(1, "sset_position", position) + else: + sset_position(position) + + +func process_movement_player(delta : float) -> void: + var state : int = entity.getc_state() + + if state & EntityEnums.ENTITY_STATE_TYPE_FLAG_ROOT != 0 or state & EntityEnums.ENTITY_STATE_TYPE_FLAG_STUN != 0: + moving = false + return + + if (input_dir.length_squared() > 0.1): + moving = true +# moved() + else: + moving = false + + var hvel = vel + + var target = input_dir.normalized() + +# target *= 100 + target *= entity.getc_speed().current_value / 100.0 * BASE_SPEED + var accel + if dir.dot(hvel) > 0: + accel = ACCEL + else: + accel = DEACCEL + + hvel = hvel.linear_interpolate(target, accel*delta) + vel = hvel + vel = move_and_slide(vel) + + if multiplayer.has_network_peer(): + if not multiplayer.is_network_server(): + rpc_id(1, "sset_position", position) + else: + sset_position(position) + + +func process_movement_mob(delta : float) -> void: + var state : int = entity.getc_state() + + if state & EntityEnums.ENTITY_STATE_TYPE_FLAG_ROOT != 0 or state & EntityEnums.ENTITY_STATE_TYPE_FLAG_STUN != 0: + moving = false + return + + if (target_movement_direction.length_squared() > 0.1): + moving = true +# moved() + else: + moving = false + + if not moving and sleep: + return + + if moving and sleep: + sleep = false + + var hvel = vel + + var target = dir.normalized() + target *= entity.getc_speed().current_value / 100.0 * BASE_SPEED + + var accel + if dir.dot(hvel) > 0: + accel = ACCEL + else: + accel = DEACCEL + + hvel = hvel.linear_interpolate(target, accel*delta) + vel = hvel + vel = move_and_slide(vel) + + sset_position(position) + + if vel.length_squared() < 0.12: + sleep = true + + +func _input(event: InputEvent) -> void: + if not cursor_grabbed: + set_process_input(false) + return + + if event is InputEventMouseMotion and event.device != -1: + var s : float = ProjectSettings.get("display/mouse_cursor/sensitivity") + + var relx : float = event.relative.x * s + var rely : float = event.relative.y * s + + mouse_down_delta.x += relx + mouse_down_delta.y += rely + + total_down_mouse_delta.x += relx + total_down_mouse_delta.y += rely + + get_tree().set_input_as_handled() + +func _unhandled_input(event: InputEvent) -> void: + if event is InputEventKey: + var ievkey : InputEventKey = event as InputEventKey + + if ievkey.scancode == KEY_W: + key_up = ievkey.pressed + if ievkey.scancode == KEY_S: + key_down = ievkey.pressed + if ievkey.scancode == KEY_A: + key_left = ievkey.pressed + if ievkey.scancode == KEY_D: + key_right = ievkey.pressed + + if event is InputEventMouseMotion and not (mouse_right_down or mouse_left_down) and event.device != -1: + cmouseover(event) + + if event is InputEventMouseButton: + if event.button_index == BUTTON_LEFT and event.device != -1: + mouse_left_down = event.pressed + + if mouse_left_down: + mouse_dir = (event.position - get_viewport_rect().size / 2).normalized() + else: + mouse_dir = Vector2() + +# if event.is_pressed() and event.device != -1: +# if event.button_index == BUTTON_WHEEL_UP: +# camera_pivot.camera_distance_set_delta(-0.2) +# if event.button_index == BUTTON_WHEEL_DOWN: +# camera_pivot.camera_distance_set_delta(0.2) + +# if not event.pressed and event.button_index == BUTTON_LEFT and event.device != -1: +# if mouse_down_delta.length() < MOUSE_TARGET_MAX_OFFSET: +# target(event.position) + + if event.pressed and event.button_index == BUTTON_RIGHT and event.device != -1: + target(event.position) + + + if event is InputEventScreenTouch and event.pressed: + target(event.position) + + if event is InputEventMouseMotion and mouse_left_down and event.device != -1: + mouse_dir = (event.position - get_viewport_rect().size / 2).normalized() + + #update_cursor_mode() + + +func update_cursor_mode(): + if mouse_left_down or mouse_right_down: + if not cursor_grabbed: + set_process_input(true) + total_down_mouse_delta = Vector2() + + cursor_grabbed = true + last_cursor_pos = get_viewport().get_mouse_position() + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + else: + if cursor_grabbed: + set_process_input(false) + cursor_grabbed = false + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + get_viewport().warp_mouse(last_cursor_pos) + + if total_down_mouse_delta.length_squared() < 8: + target(last_cursor_pos) + + +func target(position : Vector2): + var space_state = get_world_2d().direct_space_state + var results = space_state.intersect_point(world.make_canvas_position_local(position), 32, [], get_collision_layer()) + #var results = space_state.intersect_point(position, 32, [], 2) + + if results: + for result in results: + if result.collider and result.collider.owner is Entity: + entity.target_crequest_change((result.collider.owner as Node).get_path()) + return + + entity.target_crequest_change(NodePath()) + else: + entity.target_crequest_change(NodePath()) + +func cmouseover(event): + var space_state = get_world_2d().direct_space_state + var results = space_state.intersect_point(world.make_canvas_position_local(position), 32, [], get_collision_layer()) + #var results = space_state.intersect_point(position, 32, [], 2) + + if results: + for result in results: + if result.collider and result.collider.owner is Entity: + var mo : Entity = result.collider.owner as Entity + + if last_mouse_over != null and last_mouse_over != mo: + if is_instance_valid(last_mouse_over): + last_mouse_over.notification_cmouse_exit() + + last_mouse_over = null + + if last_mouse_over == null: + mo.notification_cmouse_enter() + last_mouse_over = mo + + return + + if last_mouse_over != null: + last_mouse_over.notification_cmouse_exit() + last_mouse_over = null + + +func analog_force_change(vector, touchpad): + if touchpad.padname == "TouchPad": + touchpad_dir = vector + touchpad_dir.y *= -1 + elif touchpad.padname == "TargetPad": + #try to target + return + +# +#func on_notification_ccast(what : int, info : SpellCastInfo) -> void: +# if what == SpellEnums.NOTIFICATION_CAST_STARTED: +# if anim_node_state_machine != null and not casting_anim: +# anim_node_state_machine.travel("casting-loop") +# casting_anim = true +# animation_run = false +# elif what == SpellEnums.NOTIFICATION_CAST_FAILED: +# if anim_node_state_machine != null and casting_anim: +# anim_node_state_machine.travel("idle-loop") +# casting_anim = false +# +# if animation_run: +# anim_node_state_machine.travel("run-loop") +# elif what == SpellEnums.NOTIFICATION_CAST_FINISHED: +# if anim_node_state_machine != null: +# anim_node_state_machine.travel("cast-end") +# casting_anim = false +# +# if animation_run: +# anim_node_state_machine.travel("run-loop") +# elif what == SpellEnums.NOTIFICATION_CAST_SUCCESS: +# if anim_node_state_machine != null: +# anim_node_state_machine.travel("cast-end") +# casting_anim = false +# +# if animation_run: +# anim_node_state_machine.travel("run-loop") + + +func on_c_controlled_changed(): + #create camera and pivot if true + _controlled = entity.getc_is_controlled() + + if _controlled: + if _nameplate: + _nameplate.queue_free() + + camera = Camera2D.new() + camera.zoom = Vector2(0.9, 0.9) + add_child(camera) + camera.current = true + + #var uiscn : PackedScene = ResourceLoader.load("res://ui/player_ui/player_ui.tscn") + #var ui = uiscn.instance() + #add_child(ui) + var ui = DataManager.request_instance(DataManager.PLAYER_UI_INSTANCE) + add_child(ui) + + set_process_input(true) + set_process_unhandled_input(true) + else: + if camera: + camera.queue_free() + camera = null + + set_process_input(false) + set_process_unhandled_input(false) + var nameplatescn : PackedScene = ResourceLoader.load("res://ui/nameplates/NamePlate.tscn") + _nameplate = nameplatescn.instance() + get_parent().add_child(_nameplate) + +func on_diesd(entity): + if dead: + return + + dead = true + + #anim_node_state_machine.travel("dead") + + #set_physics_process(false) + + +remote func sset_position(pposition : Vector2) -> void: + if multiplayer.network_peer and multiplayer.is_network_server(): + entity.vrpc("cset_position", position) + + if _controlled: + cset_position(position) + +remote func cset_position(pposition : Vector2) -> void: + pposition = pposition + + diff --git a/game/player/CharacterSkeleton2DGD.gd b/game/player/CharacterSkeleton2DGD.gd new file mode 100644 index 0000000..9836cca --- /dev/null +++ b/game/player/CharacterSkeleton2DGD.gd @@ -0,0 +1,144 @@ +extends CharacterSkeleton2D +class_name CharacterSkeleton2DGD + +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019 Péter Magyar + +# 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. + +export (NodePath) var front_node_path : NodePath = "" +export (NodePath) var front_animation_player_path : NodePath = "" +export (NodePath) var front_animation_tree_path : NodePath = "" + +export (NodePath) var side_node_path : NodePath = "" +export (NodePath) var side_animation_player_path : NodePath = "" +export (NodePath) var side_animation_tree_path : NodePath = "" + +export(CharacterAtlas) var character_atlas : CharacterAtlas setget set_character_atlas + +var _atlas : CharacterAtlas2D + +enum CharacterFacing { + FACING_FRONT = 0, + FACING_BACK = 1, + FACING_RIGHT = 2, + FACING_LEFT = 3, +} + +var _facing : int = 0 + +var _front_node : CharacterBones = null +var _front_animation_player : AnimationPlayer = null +var _front_animation_tree : AnimationTree = null + +var _side_node : CharacterBones = null +var _side_animation_player : AnimationPlayer = null +var _side_animation_tree : AnimationTree = null + +var _active_node : CharacterBones = null +var _active_animation_player : AnimationPlayer = null +var _active_animation_tree : AnimationTree = null + +var _is_front_side : bool = false + +var effects : Array + +func _ready() -> void: + _front_node = get_node(front_node_path) as CharacterBones + _front_animation_player = get_node(front_animation_player_path) as AnimationPlayer + _front_animation_tree = get_node(front_animation_tree_path) as AnimationTree + + _side_node = get_node(side_node_path) as CharacterBones + _side_animation_player = get_node(side_animation_player_path) as AnimationPlayer + _side_animation_tree = get_node(side_animation_tree_path) as AnimationTree + + set_character_atlas(character_atlas) + + _front_node.hide() + _side_node.show() + _active_node = _side_node + _active_animation_player = _side_animation_player + _active_animation_tree = _side_animation_tree + _is_front_side = false + +func update_facing(input_direction : Vector2) -> void: + var front : bool = abs(input_direction.dot(Vector2(0, 1))) > 0.9 + + if front: + if not _is_front_side: + _is_front_side = true + + _side_node.hide() + _front_node.show() + + _active_node = _front_node + _active_animation_tree = _front_animation_tree + + if input_direction.y > 0: + set_facing(CharacterFacing.FACING_FRONT) + else: + set_facing(CharacterFacing.FACING_BACK) + + else: + if _is_front_side: + _is_front_side = false + + _side_node.show() + _front_node.hide() + + _active_node = _side_node + _active_animation_tree = _side_animation_tree + + if input_direction.x > 0.01 and _facing != CharacterFacing.FACING_RIGHT: + set_facing(CharacterFacing.FACING_RIGHT) + _active_node.transform.x.x = -1 + elif input_direction.x < -0.01 and _facing != CharacterFacing.FACING_LEFT: + set_facing(CharacterFacing.FACING_LEFT) + _active_node.transform.x.x = 1 + +func add_effect(bone_id : int, effect : PackedScene) -> void: + pass + +func remove_effect(bone_id : int, effect : PackedScene) -> void: + pass + +func get_animation_player() -> AnimationPlayer: + return _active_animation_player + +func get_animation_tree() -> AnimationTree: + return _active_animation_tree + +func set_character_atlas(atlas : CharacterAtlas) -> void: + character_atlas = atlas + + _atlas = atlas as CharacterAtlas2D + + if _front_node != null: + _front_node.set_atlas(_atlas) + + if _front_node != null: + _side_node.set_atlas(_atlas) + +func set_facing(facing : int) -> void: + _facing = facing + + _active_node.set_facing(facing) + diff --git a/game/player/CharacterSkeletonAttachPoint.gd b/game/player/CharacterSkeletonAttachPoint.gd new file mode 100644 index 0000000..178058f --- /dev/null +++ b/game/player/CharacterSkeletonAttachPoint.gd @@ -0,0 +1,75 @@ +extends Spatial +class_name CharacterSkeketonAttachPoint + +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019 Péter Magyar + +# 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. + +var effects : Dictionary +var timed_effects : Dictionary + +func add_effect(effect : PackedScene) -> void: + if effects.has(effect): + effects[effect][0] = effects[effect][0] + 1 + else: + var eff : Node = effect.instance() + + add_child(eff) + eff.owner = self + + var data : Array = [ 1, eff ] + effects[effect] = data + +func add_effect_timed(effect : PackedScene, time : float) -> void: + if timed_effects.has(effect): + timed_effects[effect][0] = timed_effects[effect][0] + 1 + else: + var eff : Node = effect.instance() + + add_child(eff) + eff.owner = self + + var data : Array = [ 1, eff, time ] + timed_effects[effect] = data + +func remove_effect(effect : PackedScene) -> void: + if effects.has(effect): + var data : Array = effects[effect] + + data[0] = data[0] - 1 + + if data[0] <= 0: + data[1].queue_free() + + effects.erase(effect) + + +func _process(delta : float) -> void: + for k in timed_effects.keys(): + var data : Array = timed_effects[k] + + data[2] -= delta + + if data[2] <= 0: + data[1].queue_free() + + timed_effects.erase(k) diff --git a/game/player/CharacterSkeletonGD.gd b/game/player/CharacterSkeletonGD.gd new file mode 100644 index 0000000..3b2949d --- /dev/null +++ b/game/player/CharacterSkeletonGD.gd @@ -0,0 +1,356 @@ +tool +extends CharacterSkeleton3D + +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019-2021 Péter Magyar + +# 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. + +var job_script = preload("res://player/CharacterSkeletonMeshJob.gd") + +export(bool) var refresh_in_editor : bool = false setget editor_build +export(bool) var automatic_build : bool = false +export(bool) var use_lod : bool = true + +export(NodePath) var mesh_instance_path : NodePath +var mesh_instance : MeshInstance = null + +export(NodePath) var skeleton_path : NodePath +var skeleton : Skeleton + +export(Array, ModelVisual) var viss : Array + +var meshes : Array + +var _current_lod_level : int = 0 + +var _generating : bool = false + +var _mesh_job : ThreadPoolJob = null +var _material_cache : ESSMaterialCache = null + +var bone_names = { + 0: "root", + 1: "pelvis", + 2: "spine", + 3: "spine_1", + 4: "spine_2", + 5: "neck", + 6: "head", + + 7: "left_clavicle", + 8: "left_upper_arm", + 9: "left_forearm", + 10: "left_hand", + 11: "left_thunb_base", + 12: "left_thumb_end", + 13: "left_fingers_base", + 14: "left_fingers_end", + + 15: "right_clavicle", + 16: "right_upper_arm", + 17: "right_forearm", + 18: "right_hand", + 19: "right_thumb_base", + 20: "right_thumb_head", + 21: "right_fingers_base", + 22: "right_fingers_head", + + 23: "left_thigh", + 24: "left_calf", + 25: "left_foot", + + 26: "right_thigh", + 27: "right_calf", + 28: "right_foot", +} + + +var _textures : Array +var _texture : Texture + +var _editor_built : bool = false +var sheathed : bool = true + +func _enter_tree(): + _mesh_job = job_script.new() + _mesh_job.use_lod = use_lod + _mesh_job.connect("finished", self, "job_finished") + + meshes.resize(3) + + skeleton = get_node(skeleton_path) as Skeleton + mesh_instance = get_node(mesh_instance_path) as MeshInstance + + set_process(false) + + if Engine.editor_hint: + return + +# if not Engine.is_editor_hint(): + for iv in viss: + add_model_visual(iv as ModelVisual) + + call_deferred("sheath", sheathed) + + if automatic_build: + call_deferred("build_model") + +func _build_model(): + if _generating: + return + + _generating = true + + if Engine.is_editor_hint() and not refresh_in_editor: + set_process(false) + return + + if not automatic_build: + set_process(false) + return + + build() + set_process(false) + + model_dirty = false + +func build(): + setup_build_mesh() + + sort_layers() + + var data : Array = Array() + + for skele_point in range(ESS.skeletons_bones_index_get(entity_type).count(',') + 1): + var bone_name : String = get_bone_name(skele_point) + + if bone_name == "": + print("Bone name error") + continue + + var bone_idx : int = skeleton.find_bone(bone_name) + + var abi_dict : Dictionary = Dictionary() + + for abti in range(bone_additional_mesh_transform_count): + var obi : int = bone_additional_mesh_transform_bone_index_get(abti) + var bin = get_bone_name(obi) + var bi : int = skeleton.find_bone(bin) + + abi_dict[bi] = bone_additional_mesh_transform_transform_get(abti) * bone_additional_mesh_transform_user_transform_get(abti) + + var ddict : Dictionary = Dictionary() + for j in range(get_model_entry_count(skele_point)): + var entry : SkeletonModelEntry = get_model_entry(skele_point, j) + + for k in range(entry.entry.size): + if entry.entry.get_mesh(k): + ddict["bone_name"] = bone_name + ddict["bone_idx"] = bone_idx + + var global_pose = skeleton.get_bone_global_pose(bone_idx) + + ddict["transform"] = skeleton.get_bone_global_pose(bone_idx) + + if abi_dict.has(bone_idx): + global_pose *= abi_dict[bone_idx] + +# for abti in range(bone_model_additional_mesh_transform_count): +# var bin = get_bone_name(bone_model_additional_mesh_transform_bone_index_get(abti)) +# var bi : int = skeleton.find_bone(bin) +# +# if bone_idx == bi: +# global_pose *= bone_model_additional_mesh_transform_bone_transform_get(abti) +# break +# + ddict["transform"] = global_pose + + ddict["mesh"] = entry.entry.get_mesh(k) + + var texture_layer_array : Array = Array() + texture_layer_array.resize(ESS.texture_layers.count(",") + 1) + var texture_used : bool = false + + for j in range(get_model_entry_count(skele_point)): + var entry : SkeletonModelEntry = get_model_entry(skele_point, j) + + var layer : int = entry.entry.override_layer + + if texture_layer_array.size() <= layer || texture_layer_array[layer]: + continue + + for k in range(entry.entry.size): + if entry.entry.get_texture(k): + texture_layer_array[layer] = entry.entry.get_texture(k) + texture_used = true + break + + if texture_used: + ddict["textures"] = texture_layer_array + + if !ddict.empty(): + data.append(ddict) + + _mesh_job.data = data + _material_cache= ESS.material_cache_get(data.hash()) + + if _material_cache.material_get_num() == 0: + #lock just in case + _material_cache.mutex_lock() + + if _material_cache.material_get_num() == 0: + #this has to be done on the main thread! + _material_cache.initial_setup_default() + + _material_cache.mutex_unlock() + + _mesh_job.material_cache = _material_cache + + finish_build_mesh() + + ThreadPool.add_job(_mesh_job) +# _mesh_job.execute() + +func setup_build_mesh() -> void: + if mesh_instance != null: + mesh_instance.hide() + + if get_animation_tree() != null: + get_animation_tree().active = false + + if get_animation_player() != null: + get_animation_player().play("rest") + get_animation_player().seek(0, true) + +func finish_build_mesh() -> void: + mesh_instance.mesh = null +# mesh_instance.mesh = meshes[_current_lod_level] + + if get_animation_tree() != null: + get_animation_tree().active = true + + if mesh_instance != null: + mesh_instance.show() + + _generating = false + +func job_finished(): + meshes = _mesh_job.meshes + mesh_instance.mesh = meshes[_current_lod_level] + + if !mesh_instance.is_software_skinning_enabled(): + mesh_instance.initialize_skinning(true, true) + +func clear_mesh() -> void: + meshes.clear() + meshes.resize(3) + + if mesh_instance != null: + mesh_instance.mesh = null + +func editor_build(val : bool) -> void: + if not is_inside_tree(): + return + + skeleton = get_node(skeleton_path) as Skeleton + mesh_instance = get_node(mesh_instance_path) as MeshInstance + + if val: + _editor_built = true + build() + else: + clear_mesh() + _editor_built = false + + refresh_in_editor = val + +func get_bone_name(skele_point : int) -> String: + if bone_names.has(skele_point): + return bone_names[skele_point] + + return "" + +func _common_attach_point_index_get(point): + if point == EntityEnums.COMMON_SKELETON_POINT_LEFT_HAND: + return 0 + elif point == EntityEnums.COMMON_SKELETON_POINT_ROOT: + return 3 + elif point == EntityEnums.COMMON_SKELETON_POINT_SPINE_2: + return 6 + elif point == EntityEnums.COMMON_SKELETON_POINT_RIGHT_HAND: + return 1 + elif point == EntityEnums.COMMON_SKELETON_POINT_BACK: + return 6 + elif point == EntityEnums.COMMON_SKELETON_POINT_RIGHT_HIP: + return 4 + elif point == EntityEnums.COMMON_SKELETON_POINT_WEAPON_LEFT: + return 7 + elif point == EntityEnums.COMMON_SKELETON_POINT_WEAPON_LEFT_BACK: + return 9 + elif point == EntityEnums.COMMON_SKELETON_POINT_WEAPON_RIGHT: + return 8 + elif point == EntityEnums.COMMON_SKELETON_POINT_WEAPON_RIGHT_BACK: + return 10 + elif point == EntityEnums.COMMON_SKELETON_POINT_WEAPON_LEFT_SHIELD: + return 11 + + return 3 + +func set_lod_level(level : int) -> void: + if _current_lod_level == level: + return + + if meshes.size() == 0: + return + + if level < 0: + return + + if level >= meshes.size(): + level = meshes.size() - 1 + + _current_lod_level = level + + mesh_instance.mesh = meshes[_current_lod_level] + + if !mesh_instance.is_software_skinning_enabled(): + mesh_instance.initialize_skinning(true, true) + + + +func toggle_sheath(): + sheathed = not sheathed + sheath(sheathed) + + + +func sheath(on : bool) -> void: + var pos = 0 + + if not on: + pos = 1 + + attach_point_node_get(7).set_node_position(pos) + attach_point_node_get(8).set_node_position(pos) + attach_point_node_get(9).set_node_position(pos) + attach_point_node_get(10).set_node_position(pos) + attach_point_node_get(11).set_node_position(pos) diff --git a/game/player/CharacterSkeletonMeshJob.gd b/game/player/CharacterSkeletonMeshJob.gd new file mode 100644 index 0000000..4ed65ee --- /dev/null +++ b/game/player/CharacterSkeletonMeshJob.gd @@ -0,0 +1,157 @@ +tool +extends ThreadPoolJob + +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019-2021 Péter Magyar + +# 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. + +export(bool) var use_lod : bool = true + +var meshes : Array + +var _generating : bool = false + +var _textures : Array +var material_cache : ESSMaterialCache = null +var materials : Array = Array() + +var data : Array + +signal finished + +func _execute(): + prepare_textures() + + meshes.clear() + + var mm : MeshMerger = MeshMerger.new() + mm.format = ArrayMesh.ARRAY_FORMAT_VERTEX | ArrayMesh.ARRAY_FORMAT_COLOR | ArrayMesh.ARRAY_FORMAT_BONES | ArrayMesh.ARRAY_FORMAT_INDEX | ArrayMesh.ARRAY_FORMAT_NORMAL | ArrayMesh.ARRAY_FORMAT_TEX_UV | ArrayMesh.ARRAY_FORMAT_WEIGHTS + var bones : PoolIntArray = PoolIntArray() + bones.resize(4) + bones[0] = 1 + bones[1] = 0 + bones[2] = 0 + bones[3] = 0 + var bonew : PoolRealArray = PoolRealArray() + bonew.resize(4) + bonew[0] = 1 + bonew[1] = 0 + bonew[2] = 0 + bonew[3] = 0 + + for ddict in data: + var bone_name : String = ddict["bone_name"] + var bone_idx : int = ddict["bone_idx"] + var texture : Texture = ddict["texture"] + #var atlas_texture : AtlasTexture = ddict["atlas_texture"] + var transform : Transform = ddict["transform"] + var mesh : MeshDataResource = ddict["mesh"] + + var rect : Rect2 = material_cache.texture_get_uv_rect(texture) + + bones[0] = bone_idx + + mm.add_mesh_data_resource_bone(mesh, bones, bonew, transform, rect) + + var arr : Array = mm.build_mesh() + + var mesh : ArrayMesh = ArrayMesh.new() + mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arr) + mesh.surface_set_material(0, material_cache.material_lod_get(0)) + meshes.append(mesh) + + if use_lod: + arr = MeshUtils.merge_mesh_array(arr) + var meshl2 : ArrayMesh = ArrayMesh.new() + meshl2.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arr) + meshl2.surface_set_material(0, material_cache.material_lod_get(1)) + meshes.append(meshl2) + + var texture : Texture = null + + var ml : Material = material_cache.material_lod_get(0) + + if ml is SpatialMaterial: + var spml : SpatialMaterial = ml + texture = spml.get_texture(SpatialMaterial.TEXTURE_ALBEDO) + elif ml is ShaderMaterial: + var sm : ShaderMaterial = ml + texture = sm.get_shader_param("texture_albedo") + + arr = MeshUtils.bake_mesh_array_uv(arr, texture) + arr[VisualServer.ARRAY_TEX_UV] = null + var meshl3 : ArrayMesh = ArrayMesh.new() + meshl3.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arr) + meshl3.surface_set_material(0, material_cache.material_lod_get(2)) + meshes.append(meshl3) + + emit_signal("finished") +# call_deferred("emit_signal", "finished") + complete = true + +func prepare_textures() -> void: + if !material_cache.initialized: + material_cache.mutex_lock() + + #got initialized before we got the lock + #No need to have the lock anymore + if material_cache.initialized: + material_cache.mutex_unlock() + + var lmerger : TextureLayerMerger = TextureLayerMerger.new() + + for i in range(data.size()): + var ddict : Dictionary = data[i] + var textures : Array = ddict["textures"] + + var texture : Texture = null + var tcount : int = 0 + for j in range(textures.size()): + if textures[j]: + tcount += 1 + + if tcount > 1: + for j in range(textures.size() - 1, -1, -1): + if textures[j]: + lmerger.add_texture(textures[j]) + break + + lmerger.merge() + texture = lmerger.get_result_as_texture() + lmerger.clear() + else: + for j in range(textures.size() - 1, -1, -1): + if textures[j]: + texture = textures[j] + break + + ddict["texture"] = texture + + if texture != null: + if !material_cache.initialized: + material_cache.texture_add(texture) + + data[i] = ddict + + if !material_cache.initialized: + material_cache.refresh_rects() + material_cache.mutex_unlock() diff --git a/game/player/DisplayPlayer.gd b/game/player/DisplayPlayer.gd new file mode 100644 index 0000000..e8efe1f --- /dev/null +++ b/game/player/DisplayPlayer.gd @@ -0,0 +1,53 @@ +extends Entity +class_name DisplayPlayerGD + +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019 Péter Magyar + +# 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. +# +#func _setup(): +# setup_actionbars() + + +#func _son_level_up(level: int) -> void: +# if sentity_data == null: +# return +# +# var ecd : EntityClassData = sentity_data.entity_class_data +# +# if ecd == null: +# return +# +# sfree_spell_points += ecd.spell_points_per_level * level +# sfree_talent_points += level +# +# for i in range(Stat.MAIN_STAT_ID_COUNT): +# var st : int = sentity_data.entity_class_data.get_stat_data().get_level_stat_data().get_stat_diff(i, slevel - level, slevel) +# +# var statid : int = i + Stat.MAIN_STAT_ID_START +# +# var stat : Stat = get_stat_int(statid) +# +# var sm : StatModifier = stat.get_modifier(0) +# sm.base_mod += st +# +# diff --git a/game/player/DisplayPlayer.tscn b/game/player/DisplayPlayer.tscn new file mode 100644 index 0000000..a99ddf4 --- /dev/null +++ b/game/player/DisplayPlayer.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://player/DisplayPlayer.gd" type="Script" id=1] + +[node name="DisplayPlayer" type="Entity" groups=[ +"players", +]] +body_path = NodePath("KinematicBody2D") +character_skeleton_path = NodePath("KinematicBody2D/Rotation_Helper/Model") +sseed = 9240987 +cseed = 9240987 +script = ExtResource( 1 ) + +[node name="KinematicBody2D" type="KinematicBody2D" parent="."] + +[node name="Rotation_Helper" type="Spatial" parent="KinematicBody2D"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.960532, 0 ) +__meta__ = { +"_editor_description_": "" +} + +[node name="Model" type="Spatial" parent="KinematicBody2D/Rotation_Helper"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.875205, 0 ) +__meta__ = { +"_editor_description_": "" +} diff --git a/game/player/GUI.gd b/game/player/GUI.gd new file mode 100644 index 0000000..9d4a993 --- /dev/null +++ b/game/player/GUI.gd @@ -0,0 +1,38 @@ +extends Control + +# Copyright (c) 2019 Péter Magyar +# +# 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. + +export (String) var player_path : String = "../../.." +export (Array, NodePath) var child_controls : Array + +func _ready() -> void: + if player_path != null: + var player : Entity = get_node(player_path) as Entity + + if (player == null): + print("Player is null!") + return + + for child_path in child_controls: + var child = get_node(child_path) + + child.set_player(player) + diff --git a/game/player/HumanoidCharacterBones2D.gd b/game/player/HumanoidCharacterBones2D.gd new file mode 100644 index 0000000..7eee197 --- /dev/null +++ b/game/player/HumanoidCharacterBones2D.gd @@ -0,0 +1,77 @@ +tool +extends CharacterBones +class_name HumanoidCharacterBones2D + +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019 Péter Magyar + +# 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. + +enum HumanoidBones { + HUMANOID_BONE_HIP = 0, + HUMANOID_BONE_TORSO = 1, + HUMANOID_BONE_LEG_R = 2, + HUMANOID_BONE_FOOT_R = 3, + HUMANOID_BONE_TOE_R = 4, + HUMANOID_BONE_LEG_L = 5, + HUMANOID_BONE_FOOT_L = 6, + HUMANOID_BONE_TOE_L = 7, + HUMANOID_BONE_ARM_R = 8, + #HUMANOID_BONE_SHOULDER_GUARD_R = 0, + HUMANOID_BONE_HAND_R = 9, + HUMANOID_BONE_FINGERS_R = 10, + HUMANOID_BONE_ARM_L = 11, + #HUMANOID_BONE_SHOULDER_GUARD_L = 0, + HUMANOID_BONE_HAND_L = 12, + HUMANOID_BONE_FINGERS_L = 13, + HUMANOID_BONE_HEAD = 14, + HUMANOID_BONE_HEAD_TOP = 15, + + HUMANOID_BONES_MAX = 16, +} + +export (String, MULTILINE) var help : String +export (Array, NodePath) var bones : Array + +export(CharacterAtlas) var _atlas : CharacterAtlas + +func set_facing(facing : int) -> void: + if _atlas == null: + return + + for i in range(len(_atlas.slots)): + var entry : CharacterAtlasEntry2D = _atlas.slots[i] as CharacterAtlasEntry2D + + if entry == null: + continue + + var r : Rect2 = entry.get_index(facing) as Rect2 + + var bone : Sprite = get_node(bones[i]) as Sprite + + if bone == null: + continue + + bone.region_rect = r + + +func set_atlas(atlas : CharacterAtlas2D) -> void: + _atlas = atlas diff --git a/game/player/Mob.gd b/game/player/Mob.gd new file mode 100644 index 0000000..5f17558 --- /dev/null +++ b/game/player/Mob.gd @@ -0,0 +1,172 @@ +extends Entity +class_name MobGD + +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019 Péter Magyar + +# 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. + +var dead : bool = false +var death_timer : float = 0 + +func _ready() -> void: + ai_state = EntityEnums.AI_STATE_PATROL + +func _enter_tree(): + set_process(true) + +func _process(delta : float) -> void: + if dead: + death_timer += delta + + if death_timer > 60: + queue_free() + + return + + + +func sstart_attack(entity : Entity) -> void: + ai_state = EntityEnums.AI_STATE_ATTACK + + starget = entity + +func _notification_cmouse_enter() -> void: + if centity_interaction_type == EntityEnums.ENITIY_INTERACTION_TYPE_LOOT: + Input.set_default_cursor_shape(Input.CURSOR_CROSS) + elif centity_interaction_type == EntityEnums.ENITIY_INTERACTION_TYPE_NONE: + Input.set_default_cursor_shape(Input.CURSOR_ARROW) + elif centity_interaction_type == EntityEnums.ENITIY_INTERACTION_TYPE_TRAIN: + Input.set_default_cursor_shape(Input.CURSOR_HELP) + elif centity_interaction_type == EntityEnums.ENITIY_INTERACTION_TYPE_VENDOR: + Input.set_default_cursor_shape(Input.CURSOR_HELP) + else: + Input.set_default_cursor_shape(Input.CURSOR_MOVE) + +func _notification_cmouse_exit() -> void: + Input.set_default_cursor_shape(Input.CURSOR_ARROW) + +func _notification_sdeath(): + if dead: + return + + if starget == null: + queue_free() + return + + #warning-ignore:unused_variable + for i in range(aura_gets_count()): + aura_removes(aura_gets(0)) + + dead = true + + var ldiff : float = slevel - starget.slevel + 10.0 + + if ldiff < 0: + ldiff = 0 + + if ldiff > 15: + ldiff = 15 + + ldiff /= 10.0 + + starget.xp_adds(int(5.0 * slevel * ldiff)) + + starget = null + + if sentity_data.loot_db != null: + sentity_interaction_type = EntityEnums.ENITIY_INTERACTION_TYPE_LOOT + else: + sentity_interaction_type = EntityEnums.ENITIY_INTERACTION_TYPE_NONE + + ai_state = EntityEnums.AI_STATE_OFF + + +func set_position(position : Vector3, rotation : Vector3) -> void: + get_body().set_position(position, rotation) + +func _notification_sdamage(what, info): + if what == SpellEnums.NOTIFICATION_DAMAGE_DAMAGE_DEALT: + if ai_state != EntityEnums.AI_STATE_ATTACK and info.dealer != self: + sstart_attack(info.dealer) + +func _notification_cdamage(what, info): + if what == SpellEnums.NOTIFICATION_DAMAGE_DAMAGE_DEALT: + WorldNumbers.damage(get_body().position, 1.6, info.damage, info.crit) + +func _notification_cheal(what, info): + if what == SpellEnums.NOTIFICATION_DAMAGE_DAMAGE_DEALT: + WorldNumbers.heal(get_body().position, 1.6, info.heal, info.crit) + +func _notification_sxp_gained(value : int) -> void: + if not ESS.can_character_level_up(slevel): + return + + var xpr : int = ESS.get_character_xp(slevel); + + if xpr <= sxp: + levelups(1) + sxp = 0 + +func _notification_sclass_level_up(value: int): + ._notification_sclass_level_up(value) + refresh_spells(value) + +func _notification_scharacter_level_up(value: int) -> void: + ._notification_scharacter_level_up(value) + refresh_spells(value) + +func refresh_spells(value: int): + if gets_free_spell_points() == 0 and gets_free_class_talent_points() == 0: + return + + var ecd : EntityClassData = sentity_data.entity_class_data + + if ecd == null: + return + + var arr : Array = Array() + + for i in range(ecd.get_num_spells()): + arr.append(ecd.get_spell(i)) + + randomize() + arr.shuffle() + + for _v in range(value): + for i in range(arr.size()): + var spell : Spell = arr[i] + + if not spell_hass(spell): + var spnum :int = spell_gets_count() + + spell_learn_requestc(spell.id) + + if spnum != spell_gets_count(): + break + + if sfree_spell_points == 0: + break + + + if sfree_spell_points == 0: + break + diff --git a/game/player/Mob.tscn b/game/player/Mob.tscn new file mode 100644 index 0000000..c407b76 --- /dev/null +++ b/game/player/Mob.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://ui/nameplates/NamePlate.tscn" type="PackedScene" id=1] +[ext_resource path="res://characters/Character.tscn" type="PackedScene" id=2] +[ext_resource path="res://player/Mob.gd" type="Script" id=3] + +[sub_resource type="CircleShape2D" id=1] +radius = 20.0 + +[node name="Mob" type="Entity" groups=[ +"mobs", +]] +body_path = NodePath("KinematicBody2D") +character_skeleton_path = NodePath("KinematicBody2D/Character") +script = ExtResource( 3 ) + +[node name="NamePlate" parent="." instance=ExtResource( 1 )] + +[node name="KinematicBody2D" type="KinematicBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="KinematicBody2D"] +shape = SubResource( 1 ) + +[node name="Character" parent="KinematicBody2D" instance=ExtResource( 2 )] diff --git a/game/player/MobTest.gd b/game/player/MobTest.gd new file mode 100644 index 0000000..de16874 --- /dev/null +++ b/game/player/MobTest.gd @@ -0,0 +1,46 @@ +extends Entity +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + +# Called when the node enters the scene tree for the first time. +func _ready(): + connect("con_damage_taken", self, "c_on_damage_taken") + connect("son_damage_taken", self, "s_on_damage_taken") + #c_on_damage_taken( Entity Entity, DamagePipelineData damage_pipeline_data ) + + pass # Replace with function body. + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass + +func c_on_damage_taken(entity, dpd): + print("c " + str(dpd.damage)) +# print("ch " + str(heal_getth().ccurrent) + "/" + str(heal_getth().cmax)) + pass + +func s_on_damage_taken(entity, dpd): + print("s " + str(dpd.damage)) + #print("ch " + str(heal_getth().scurrent) + "/" + str(heal_getth().smax)) + pass diff --git a/game/player/NamePlate.gd b/game/player/NamePlate.gd new file mode 100644 index 0000000..799c20d --- /dev/null +++ b/game/player/NamePlate.gd @@ -0,0 +1,150 @@ +extends VBoxContainer + +# Copyright (c) 2019 Péter Magyar +# +# 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. + +export(float) var max_distance : float = 70 setget set_max_distance +var max_distance_squared : float = max_distance * max_distance + +export(NodePath) var name_label_path : NodePath = "Name" +export(NodePath) var health_bar_path : NodePath = "HealthBar" +export(NodePath) var health_bar_label_path : NodePath = "HealthBar" + +export(Color) var normal_color : Color = Color("#e7e7e7") +export(Vector2) var normal_scale : Vector2 = Vector2(0.75, 0.75) +export(Color) var mouseover_color : Color = Color("#ffffff") +export(Vector2) var mouseover_scale : Vector2 = Vector2(0.85, 0.85) +export(Color) var targeted_color : Color = Color("#ffffff") +export(Vector2) var targeted_scale : Vector2 = Vector2(0.85, 0.85) + +var target_scale : Vector2 +var interpolating : bool + +var targeted : bool = false + +var name_label : Label = null +var health_bar : TextureProgress = null +var health_bar_label : Label = null + +var entity : Entity = null +var health : EntityResource = null + +var _health : EntityResource + +func _enter_tree(): + name_label = get_node(name_label_path) as Label + health_bar = get_node(health_bar_path) as TextureProgress + health_bar_label = get_node(health_bar_label_path) as Label + + entity = get_node("..") as Entity + entity.connect("centity_resource_added", self, "on_centity_resource_added") + + name_label.text = entity.centity_name + + entity.connect("cname_changed", self, "cname_changed") + entity.connect("notification_cmouse_entered", self, "onc_entity_mouse_entered") + entity.connect("notification_cmouse_exited", self, "onc_entity_mouse_exited") + entity.connect("notification_ctargeted", self, "notification_ctargeted") + entity.connect("notification_cuntargeted", self, "notification_cuntargeted") + + modulate = normal_color + set_scale(normal_scale) + + target_scale = normal_scale + interpolating = false + + set_process(true) + +func _process(delta): + if interpolating: + var d : Vector2 = ((target_scale - get_scale()).normalized() * delta) + get_scale() + + set_scale(d) + + if (get_scale() - target_scale).length() < 0.04: + interpolating = false + + var position : Vector2 = entity.get_body().position + + position.x -= (rect_size.x / 2.0) * rect_scale.x + position.y -= 60 + + set_position(position) + + +func set_max_distance(var value : float) -> void: + max_distance_squared = value * value + + max_distance = value + +func c_health_changed() -> void: + if _health.max_value == 0: + health_bar.max_value = 1 + health_bar.value = 0 + return + + health_bar.max_value = _health.max_value + health_bar.value = _health.current_value + +# if stat.cmax != 0: +# health_bar_label.text = str(int(stat.ccurrent / stat.cmax * 100)) + + +func cname_changed(ent : Entity) -> void: + name_label.text = ent.centity_name + +func onc_entity_mouse_entered() -> void: + if targeted: + return + + modulate = mouseover_color + interpolate_scale(mouseover_scale) + +func onc_entity_mouse_exited() -> void: + if targeted: + return + + modulate = normal_color + interpolate_scale(normal_scale) + + +func notification_ctargeted() -> void: + targeted = true + + modulate = targeted_color + interpolate_scale(targeted_scale) + +func notification_cuntargeted() -> void: + targeted = false + + modulate = normal_color + interpolate_scale(normal_scale) + +func interpolate_scale(target : Vector2) -> void: + target_scale = target + interpolating = true + +func on_centity_resource_added(resorce) -> void: + if health != null: + return + + _health = entity.getc_health() + _health.connect("changed", self, "c_health_changed") + c_health_changed() diff --git a/game/player/NetworkedPlayer.gd b/game/player/NetworkedPlayer.gd new file mode 100644 index 0000000..33775d3 --- /dev/null +++ b/game/player/NetworkedPlayer.gd @@ -0,0 +1,120 @@ +extends "PlayerGDBase.gd" +class_name NetworkedPlayerGD + +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019 Péter Magyar + +# 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. + +#export (float) var MOUSE_SENSITIVITY : float = 0.05 +#export (String) var map_path : String + +#const ray_length = 1000 +#const ACCEL : float = 100.0 +#const DEACCEL : float = 100.0 +#const GRAVITY : float = -24.8 +#const JUMP_SPEED : float = 3.8 +#const MAX_SLOPE_ANGLE : float = 40.0 +#const MOUSE_TARGET_MAX_OFFSET : int = 10 +# +##var _on : bool = true +# +#var y_rot : float = 0.0 +# +##var vel : Vector3 = Vector3() +##var dir : Vector3 = Vector3() +# +#var animation_tree : AnimationTree +#var anim_node_state_machine : AnimationNodeStateMachinePlayback = null +##var animation_run : bool = false +# +#func _ready() -> void: +# animation_tree = get_character_skeleton().get_animation_tree() +# +# if animation_tree != null: +# anim_node_state_machine = animation_tree["parameters/playback"] + + +#func _physics_process(delta : float) -> void: +# if not _on: +# return +# + #process_movement(delta) + +#func process_movement(delta : float) -> void: +# if input_dir.x > 0.1 or input_dir.y > 0.1 or input_dir.x < -0.1 or input_dir.y < -0.1: +# var forward : Vector3 = Vector3(0, 0, 1).rotated(Vector3(0, 1, 0), deg2rad(y_rot)) +# var right : Vector3 = forward.cross(Vector3(0, 1, 0)) * -input_dir.x +# forward *= input_dir.y #only potentially make it zero after getting the right vector +# +# dir = forward +# dir += right +# +# if dir.length_squared() > 0.1: +# dir = dir.normalized() +# else: +# dir = Vector3() +# +# vel.y += delta * GRAVITY +# +# var hvel : Vector3 = vel +# hvel.y = 0 +# +# var target : Vector3 = dir +# target *= get_speed().ccurrent +# +# var accel +# if dir.dot(hvel) > 0: +# accel = ACCEL +# else: +# accel = DEACCEL +# +# hvel = hvel.linear_interpolate(target, accel * delta) as Vector3 +# vel.x = hvel.x +# vel.z = hvel.z +# vel = move_and_slide(vel, Vector3(0,1,0), false, 4, deg2rad(MAX_SLOPE_ANGLE)) + + +#remote func set_position(position : Vector3, rot : Vector3) -> void: +# translation = position +# rotation = rot +# +#remote func sset_position(pposition : Vector2, protation : float) -> void: +# +## if get_network_master() != 1: +## print(str(get_network_master()) + "npsset") +# +# if multiplayer.network_peer and multiplayer.is_network_server(): +# cset_position(pposition, protation) +# vrpc("cset_position", pposition, protation) +# +#remote func cset_position(pposition : Vector2, protation : float) -> void: +## if get_network_master() != 1: +## print(str(get_network_master()) + "npcset") +# +# get_body().position = pposition +# get_body().rotation = protation +# +#func _moved() -> void: +# +# if sis_casting(): +# sfail_cast() +# diff --git a/game/player/NetworkedPlayer.tscn b/game/player/NetworkedPlayer.tscn new file mode 100644 index 0000000..81f6386 --- /dev/null +++ b/game/player/NetworkedPlayer.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://player/NetworkedPlayer.gd" type="Script" id=1] +[ext_resource path="res://ui/nameplates/NamePlate.tscn" type="PackedScene" id=2] +[ext_resource path="res://characters/Character.tscn" type="PackedScene" id=3] + +[sub_resource type="EntityResourceHealth" id=1] + +[sub_resource type="EntityResourceSpeed" id=2] + +[sub_resource type="CircleShape2D" id=3] +radius = 20.0 + +[node name="NetworkedPlayer" type="Entity"] +body_path = NodePath("KinematicBody2D") +character_skeleton_path = NodePath("KinematicBody2D/Character") +sresources = [ SubResource( 1 ), SubResource( 2 ) ] +script = ExtResource( 1 ) + +[node name="NamePlate" parent="." instance=ExtResource( 2 )] + +[node name="KinematicBody2D" type="KinematicBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="KinematicBody2D"] +shape = SubResource( 3 ) + +[node name="Character" parent="KinematicBody2D" instance=ExtResource( 3 )] diff --git a/game/player/Player.gd b/game/player/Player.gd new file mode 100644 index 0000000..3ae599f --- /dev/null +++ b/game/player/Player.gd @@ -0,0 +1,32 @@ +extends "PlayerGDBase.gd" +class_name PlayerGD + +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019 Péter Magyar + +# 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. + +func _from_dict(dict): + ._from_dict(dict) + + randomize() + sseed = randi() + diff --git a/game/player/Player.tscn b/game/player/Player.tscn new file mode 100644 index 0000000..e00d396 --- /dev/null +++ b/game/player/Player.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://player/Player.gd" type="Script" id=2] + +[sub_resource type="EntityResourceHealth" id=1] + +[sub_resource type="EntityResourceSpeed" id=2] + +[node name="Player" type="Entity" groups=[ +"players", +]] +sresources = [ SubResource( 1 ), SubResource( 2 ) ] +script = ExtResource( 2 ) diff --git a/game/player/PlayerGDBase.gd b/game/player/PlayerGDBase.gd new file mode 100644 index 0000000..b828206 --- /dev/null +++ b/game/player/PlayerGDBase.gd @@ -0,0 +1,109 @@ +extends Entity + +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019 Péter Magyar + +# 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. + +var _timer : float = randf() * 2.0 + +var _query : Physics2DShapeQueryParameters +var _shape : SphereShape + +func _ready(): + _shape = SphereShape.new() + _shape.radius = 50 + + _query = Physics2DShapeQueryParameters.new() + _query.exclude = [ self ] + _query.shape_rid = _shape.get_rid() + + set_physics_process(true) + +func _physics_process(delta): +# if (multiplayer.has_network_peer() and multiplayer.is_network_server()) or not multiplayer.has_network_peer(): + if multiplayer.has_network_peer() and multiplayer.is_network_server(): + _timer += delta + + if _timer > 3: + _timer -= 3 + + update_visibility() + +func update_visibility() -> void: + _query.collision_layer = get_body().get_collision_layer() + + _query.transform = Transform2D(0, get_body().position) + var res : Array = get_body().get_world_2d().direct_space_state.intersect_shape(_query) + + #warning-ignore:unassigned_variable + var currenty_sees : Array = Array() + + for collision in res: + var collider = collision["collider"] + + if collider is Entity and not currenty_sees.has(collider): + currenty_sees.append(collider) + + + #warning-ignore:unassigned_variable + var used_to_see : Array = Array() + + for i in range(sees_gets_count()): + var ent : Entity = sees_gets(i) + + used_to_see.append(ent) + + + #warning-ignore:unassigned_variable + var currenty_sees_filtered : Array = Array() + + for e in currenty_sees: + currenty_sees_filtered.append(e) + + for e in currenty_sees: + if used_to_see.has(e): + used_to_see.erase(e) + currenty_sees_filtered.erase(e) + + for e in used_to_see: + var ent : Entity = e as Entity + + if self.get_network_master() != 1: + ESS.entity_spawner.despawn_for(self, ent) + + sees_removes(ent) + + for e in currenty_sees_filtered: + var ent : Entity = e as Entity + + if self.get_network_master() != 1: + ESS.entity_spawner.spawn_for(self, ent) + + sees_adds(ent) + + +remote func set_position_remote(pos : Vector2) -> void: + if get_tree().is_network_server(): + rpc("set_position_remote", pos) + #print(position) + get_body().position = pos + diff --git a/game/player/Unitframes.gd b/game/player/Unitframes.gd new file mode 100644 index 0000000..8d3d9d4 --- /dev/null +++ b/game/player/Unitframes.gd @@ -0,0 +1,51 @@ +extends Control + +# Copyright (c) 2019 Péter Magyar +# +# 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. + +export (NodePath) var player_unit_frame_path : NodePath +export (NodePath) var target_unit_frame_path : NodePath + +var target_unit_frame : Node +var player_unit_frame : Node + +#func _ready() -> void: +# target_unit_frame = get_node(target_unit_frame_path) as Node +# player_unit_frame = get_node(player_unit_frame_path) as Node + +func set_player(player : Entity) -> void: + target_unit_frame = get_node(target_unit_frame_path) as Node + player_unit_frame = get_node(player_unit_frame_path) as Node + + player_unit_frame.set_player(player) + + _ctarget_changed(player, null) + + player.connect("ctarget_changed", self, "_ctarget_changed") + + +func _ctarget_changed(entity : Entity, old_target : Entity) -> void: + if entity.ctarget == null: + target_unit_frame.hide() + else: + target_unit_frame.show() + + target_unit_frame.set_player(entity.ctarget) + diff --git a/game/player/bs_entity_spawner.gd b/game/player/bs_entity_spawner.gd new file mode 100644 index 0000000..157a9b0 --- /dev/null +++ b/game/player/bs_entity_spawner.gd @@ -0,0 +1,338 @@ +extends ESSEntitySpawner + +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019-2020 Péter Magyar + +# 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. + +export(PackedScene) var player_display_scene : PackedScene +export(String) var spawn_parent_path : String = "/root/Main" +export(int) var default_level_override : int = 0 + +var _spawn_parent : Node = null + +var _next_entity_guid : int = 0 + +func _ready(): +# get_scene_tree().multiplayer.connect("network_peer_packet", self, "on_network_peer_packet") + +# ProfileManager.load() +# ESS.load_resource_db() +# ESS.get_resource_db().load_all() +# ESS.connect("on_entity_spawn_requested", self, "on_entity_spawn_requested") + +# get_tree().connect("network_peer_connected", self, "_player_connected") +# get_tree().connect("network_peer_disconnected", self, "_player_disconnected") +# get_tree().connect("connected_to_server", self, "_connected_ok") +# get_tree().connect("connection_failed", self, "_connected_fail") +# get_tree().connect("server_disconnected", self, "_server_disconnected") + pass + +func on_network_peer_packet(id : int, packet : PoolByteArray) ->void: + #todo + pass + +func spawn_for(player : Entity, target: Entity) -> void: + print("spawnfor " + target.name) +# rpc_id(player.get_network_master(), "creceive_spawn_for", to_json(target.to_dict()), target.name, target.translation) + +func despawn_for(player : Entity, target: Entity) -> void: + print("despawnfor " + target.name) +# rpc_id(player.get_network_master(), "creceive_despawn_for", target.get_path()) + +remote func creceive_spawn_for(data: String, global_name : String, position: Vector3) -> Entity: + var createinfo : EntityCreateInfo = EntityCreateInfo.new() + + createinfo.player_name = global_name + createinfo.entity_controller = EntityEnums.ENITIY_CONTROLLER_PLAYER + createinfo.entity_player_type = EntityEnums.ENTITY_PLAYER_TYPE_NETWORKED + createinfo.serialized_data = parse_json(data) + createinfo.transform.origin = position + + ESS.request_entity_spawn(createinfo) + +# print("Player spawned ") + + return createinfo.created_entity + +remote func creceive_despawn_for(path : NodePath) -> void: +# print("recdespawnfor " + path) + var ent = get_tree().root.get_node_or_null(path) + + if ent: + ent.queue_free() + +puppet func spawn_owned_player(data : String, position : Vector3) -> Entity: + var createinfo : EntityCreateInfo = EntityCreateInfo.new() + + createinfo.guid = get_tree().multiplayer.get_network_unique_id() +# createinfo.player_name = "" + createinfo.entity_controller = EntityEnums.ENITIY_CONTROLLER_PLAYER + createinfo.entity_player_type = EntityEnums.ENTITY_PLAYER_TYPE_PLAYER + createinfo.serialized_data = parse_json(data) + createinfo.transform.origin = position + + ESS.request_entity_spawn(createinfo) + +# print("Player spawned ") + + return createinfo.created_entity + +func load_player(file_name : String, position : Vector3, network_owner : int) -> Entity: + var createinfo : EntityCreateInfo = EntityCreateInfo.new() + + createinfo.guid = _next_entity_guid + _next_entity_guid += 1 +# createinfo.player_name = name + createinfo.entity_controller = EntityEnums.ENITIY_CONTROLLER_PLAYER + createinfo.entity_player_type = EntityEnums.ENTITY_PLAYER_TYPE_PLAYER + createinfo.serialized_data = load_file(file_name) + createinfo.transform.origin = position + createinfo.networked = false +# print("Player spawned ") + ESS.request_entity_spawn(createinfo) + + return createinfo.created_entity + +func spawn_player_for_menu(class_id : int, name : String, parent : Node) -> Entity: + var createinfo : EntityCreateInfo = EntityCreateInfo.new() + var cls : EntityData = ESS.resource_db.get_entity_data(class_id) + var class_profile : ClassProfile = ProfileManager.getc_player_profile().get_class_profile(cls.resource_path) + + var level : int = 1 + + if default_level_override > 0: + level = default_level_override + + createinfo.class_id = class_id + createinfo.entity_data = cls + createinfo.player_name = name + createinfo.level = level +# createinfo.class_level = class_profile.level + createinfo.xp = 0 +# createinfo.class_xp = class_profile.xp + createinfo.entity_controller = EntityEnums.ENITIY_CONTROLLER_PLAYER + createinfo.entity_player_type = EntityEnums.ENTITY_PLAYER_TYPE_DISPLAY + createinfo.networked = false + createinfo.parent_path = parent.get_path() + + ESS.request_entity_spawn(createinfo) + +# print("Player spawned " + str(createinfo)) + + return createinfo.created_entity + +func spawn_display_player(file_name : String, node_path : NodePath) -> Entity: + var createinfo : EntityCreateInfo = EntityCreateInfo.new() + + createinfo.guid = _next_entity_guid + _next_entity_guid += 1 +# createinfo.player_name = name + createinfo.entity_controller = EntityEnums.ENITIY_CONTROLLER_PLAYER + createinfo.entity_player_type = EntityEnums.ENTITY_PLAYER_TYPE_DISPLAY + createinfo.serialized_data = load_file(file_name) + createinfo.parent_path = node_path + +# print("Player spawned ") + + ESS.request_entity_spawn(createinfo) + + return createinfo.created_entity + +func spawn_networked_player(class_id : int, position : Vector3, name : String, node_name : String, sid : int) -> Entity: + var createinfo : EntityCreateInfo = EntityCreateInfo.new() + var cls : EntityData = ESS.resource_db.get_player_character_data(class_id) + var class_profile : ClassProfile = ProfileManager.get_class_profile(class_id) + + var level : int = class_profile.level + + if default_level_override > 0: + level = default_level_override + + createinfo.class_id = class_id + createinfo.entity_data = cls + createinfo.player_name = name + createinfo.character_level = 1 +# createinfo.level = level + createinfo.xp = 0 +# createinfo.class_xp = class_profile.xp + createinfo.entity_controller = EntityEnums.ENITIY_CONTROLLER_PLAYER + createinfo.entity_player_type = EntityEnums.ENTITY_PLAYER_TYPE_NETWORKED + createinfo.network_owner = sid + createinfo.transform.origin = position + createinfo.networked = false + createinfo.transform.origin = position + + ESS.request_entity_spawn(createinfo) + +# print("Player spawned " + str(createinfo)) + + return createinfo.created_entity + +func spawn_player(class_id : int, position : Vector3, name : String, node_name : String, network_owner : int) -> Entity: + var createinfo : EntityCreateInfo = EntityCreateInfo.new() + var cls : EntityData = ESS.resource_db.get_player_character_data(class_id) + var class_profile : ClassProfile = ProfileManager.get_class_profile(class_id) + + var level : int = class_profile.level + + if default_level_override > 0: + level = default_level_override + + createinfo.class_id = class_id + createinfo.entity_data = cls + createinfo.player_name = name + createinfo.character_level = 1 + createinfo.class_level = level + createinfo.character_xp = 0 +# createinfo.class_xp = class_profile.xp + createinfo.entity_controller = EntityEnums.ENITIY_CONTROLLER_PLAYER + createinfo.entity_player_type = EntityEnums.ENTITY_PLAYER_TYPE_PLAYER + createinfo.network_owner = network_owner + createinfo.transform.origin = position + createinfo.networked = false + + ESS.request_entity_spawn(createinfo) + +# print("Player spawned " + str(createinfo)) + + return createinfo.created_entity + + +func spawn_mob(class_id : int, level : int, position : Vector3) -> void: + var createinfo : EntityCreateInfo = EntityCreateInfo.new() + + var cls : EntityData = ESS.get_resource_db().get_entity_data(class_id) + + createinfo.class_id = class_id + createinfo.entity_data = cls + createinfo.player_name = "Mob" + createinfo.level = level + createinfo.entity_controller = EntityEnums.ENITIY_CONTROLLER_AI + createinfo.entity_player_type = EntityEnums.ENTITY_PLAYER_TYPE_AI + createinfo.transform2d.origin = Vector2(position.x, position.y) + + ESS.request_entity_spawn_deferred(createinfo) + +# print("Mob spawned " + str(createinfo)) + + #return createinfo.created_entity + + +func _request_entity_spawn(createinfo : EntityCreateInfo): + var entity_node : Entity = null + + if createinfo.entity_player_type == EntityEnums.ENTITY_PLAYER_TYPE_DISPLAY: + entity_node = player_display_scene.instance() + else: + if not createinfo.networked: + if createinfo.entity_controller == EntityEnums.ENITIY_CONTROLLER_PLAYER: + entity_node = PlayerGD.new() + else: + entity_node = MobGD.new() + else: + entity_node = NetworkedPlayerGD.new() + + if entity_node == null: + print("EntityManager: entity node is null") + return null + + entity_node.set_transform_2d(createinfo.transform2d) + + if (createinfo.parent_path == ""): + if _spawn_parent == null: + _spawn_parent = get_tree().root.get_node(spawn_parent_path) + + if _spawn_parent.current_scene != null: + var spawn_parent = _spawn_parent.current_scene + + spawn_parent.add_child(entity_node) + else: + get_tree().root.get_node(createinfo.parent_path).add_child(entity_node) + + entity_node.setup(createinfo) + + createinfo.created_entity = entity_node + +func _player_connected(id): + pass # Will go unused; not useful here. + +func _player_disconnected(id): + #player_info.erase(id) # Erase player from info. + pass + +func _connected_ok(): + # Only called on clients, not server. Send my ID and info to all the other peers. + #rpc("register_player", get_tree().get_network_unique_id(), my_info) + pass + +func _server_disconnected(): + pass # Server kicked us; show error and abort. + +func _connected_fail(): + pass # Could not even connect to server; abort. + +remote func register_player(id, info): + # Store the info +# player_info[id] = info + # If I'm the server, let the new guy know about existing players. +# if get_tree().is_network_server(): +# # Send my info to new player +# rpc_id(id, "register_player", 1, my_info) +# # Send the info of existing players +# for peer_id in player_info: +# rpc_id(id, "register_player", peer_id, player_info[peer_id]) + + # Call function to update lobby UI here + pass + +func load_file(file_name : String) -> Dictionary: + + var f : File = File.new() + + if f.open("user://characters/" + file_name, File.READ) == OK: + var st : String = f.get_as_text() + f.close() + + var json_err : String = validate_json(st) + + if json_err != "": + print("Save corrupted! " + file_name) + print(json_err) + return Dictionary() + + var p = parse_json(st) + + if typeof(p) != TYPE_DICTIONARY: + print("Save corrupted! Not Dict! " + file_name) + return Dictionary() + + if p is Dictionary: + return p as Dictionary + + return Dictionary() + +func save_player(player: Entity, file_name : String) -> void: + var f : File = File.new() + + if f.open("user://characters/" + file_name, File.WRITE) == OK: + f.store_string(to_json(player.to_dict())) + f.close() diff --git a/game/player/bs_entity_spawner.tscn b/game/player/bs_entity_spawner.tscn new file mode 100644 index 0000000..2c1ee59 --- /dev/null +++ b/game/player/bs_entity_spawner.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://player/bs_entity_spawner.gd" type="Script" id=1] +[ext_resource path="res://player/DisplayPlayer.tscn" type="PackedScene" id=2] + +[node name="ESSEntitySpawner" type="ESSEntitySpawner"] +script = ExtResource( 1 ) +player_display_scene = ExtResource( 2 ) diff --git a/game/project.godot b/game/project.godot new file mode 100644 index 0000000..1cdab70 --- /dev/null +++ b/game/project.godot @@ -0,0 +1,670 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +_global_script_classes=[ { +"base": "Reference", +"class": "BrushPrefabs", +"language": "GDScript", +"path": "res://addons/Godoxel/BrushPrefabs.gd" +}, { +"base": "CharacterAtlas", +"class": "CharacterAtlas2D", +"language": "GDScript", +"path": "res://scripts/item_visuals/CharacterAtlas2D.gd" +}, { +"base": "CharacterAtlasEntry", +"class": "CharacterAtlasEntry2D", +"language": "GDScript", +"path": "res://scripts/item_visuals/CharacterAtlasEntry2D.gd" +}, { +"base": "Spatial", +"class": "CharacterSkeketonAttachPoint", +"language": "GDScript", +"path": "res://player/CharacterSkeletonAttachPoint.gd" +}, { +"base": "CharacterSkeleton2D", +"class": "CharacterSkeleton2DGD", +"language": "GDScript", +"path": "res://player/CharacterSkeleton2DGD.gd" +}, { +"base": "Entity", +"class": "DisplayPlayerGD", +"language": "GDScript", +"path": "res://player/DisplayPlayer.gd" +}, { +"base": "EntityAI", +"class": "EntityAIGD", +"language": "GDScript", +"path": "res://scripts/ai/EntityAIGD.gd" +}, { +"base": "EntityData", +"class": "EntityDataGD", +"language": "GDScript", +"path": "res://scripts/entities/EntityDataGD.gd" +}, { +"base": "Node", +"class": "GEAction", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Action.gd" +}, { +"base": "GEAction", +"class": "GEBrighten", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Brighten.gd" +}, { +"base": "GEAction", +"class": "GEBrush", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Brush.gd" +}, { +"base": "GEAction", +"class": "GEBucket", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Bucket.gd" +}, { +"base": "Control", +"class": "GECanvas", +"language": "GDScript", +"path": "res://addons/Godoxel/Canvas.gd" +}, { +"base": "GEAction", +"class": "GECut", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Cut.gd" +}, { +"base": "GEAction", +"class": "GEDarken", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Darken.gd" +}, { +"base": "Reference", +"class": "GELayer", +"language": "GDScript", +"path": "res://addons/Godoxel/Layer.gd" +}, { +"base": "GEAction", +"class": "GELine", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Line.gd" +}, { +"base": "GEAction", +"class": "GEMultiLine", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/MultiLine.gd" +}, { +"base": "GEAction", +"class": "GEPasteCut", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/PasteCut.gd" +}, { +"base": "GEAction", +"class": "GEPencil", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Pencil.gd" +}, { +"base": "GEAction", +"class": "GERainbow", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Rainbow.gd" +}, { +"base": "GEAction", +"class": "GERect", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Rect.gd" +}, { +"base": "Node", +"class": "GEUtils", +"language": "GDScript", +"path": "res://addons/Godoxel/Util.gd" +}, { +"base": "Reference", +"class": "GSAIAgentLocation", +"language": "GDScript", +"path": "res://steering_ai_framework/GSAIAgentLocation.gd" +}, { +"base": "GSAISteeringBehavior", +"class": "GSAIArrive", +"language": "GDScript", +"path": "res://steering_ai_framework/Behaviors/GSAIArrive.gd" +}, { +"base": "GSAIGroupBehavior", +"class": "GSAIAvoidCollisions", +"language": "GDScript", +"path": "res://steering_ai_framework/Behaviors/GSAIAvoidCollisions.gd" +}, { +"base": "GSAISteeringBehavior", +"class": "GSAIBlend", +"language": "GDScript", +"path": "res://steering_ai_framework/Behaviors/GSAIBlend.gd" +}, { +"base": "GSAIGroupBehavior", +"class": "GSAICohesion", +"language": "GDScript", +"path": "res://steering_ai_framework/Behaviors/GSAICohesion.gd" +}, { +"base": "GSAIPursue", +"class": "GSAIEvade", +"language": "GDScript", +"path": "res://steering_ai_framework/Behaviors/GSAIEvade.gd" +}, { +"base": "GSAIMatchOrientation", +"class": "GSAIFace", +"language": "GDScript", +"path": "res://steering_ai_framework/Behaviors/GSAIFace.gd" +}, { +"base": "GSAISeek", +"class": "GSAIFlee", +"language": "GDScript", +"path": "res://steering_ai_framework/Behaviors/GSAIFlee.gd" +}, { +"base": "GSAIArrive", +"class": "GSAIFollowPath", +"language": "GDScript", +"path": "res://steering_ai_framework/Behaviors/GSAIFollowPath.gd" +}, { +"base": "GSAISteeringBehavior", +"class": "GSAIGroupBehavior", +"language": "GDScript", +"path": "res://steering_ai_framework/GSAIGroupBehavior.gd" +}, { +"base": "GSAIProximity", +"class": "GSAIInfiniteProximity", +"language": "GDScript", +"path": "res://steering_ai_framework/Proximities/GSAIInfiniteProximity.gd" +}, { +"base": "GSAISpecializedAgent", +"class": "GSAIKinematicBody2DAgent", +"language": "GDScript", +"path": "res://steering_ai_framework/Agents/GSAIKinematicBody2DAgent.gd" +}, { +"base": "GSAISpecializedAgent", +"class": "GSAIKinematicBody3DAgent", +"language": "GDScript", +"path": "res://steering_ai_framework/Agents/GSAIKinematicBody3DAgent.gd" +}, { +"base": "GSAIMatchOrientation", +"class": "GSAILookWhereYouGo", +"language": "GDScript", +"path": "res://steering_ai_framework/Behaviors/GSAILookWhereYouGo.gd" +}, { +"base": "GSAISteeringBehavior", +"class": "GSAIMatchOrientation", +"language": "GDScript", +"path": "res://steering_ai_framework/Behaviors/GSAIMatchOrientation.gd" +}, { +"base": "Reference", +"class": "GSAIPath", +"language": "GDScript", +"path": "res://steering_ai_framework/GSAIPath.gd" +}, { +"base": "GSAISteeringBehavior", +"class": "GSAIPriority", +"language": "GDScript", +"path": "res://steering_ai_framework/Behaviors/GSAIPriority.gd" +}, { +"base": "Reference", +"class": "GSAIProximity", +"language": "GDScript", +"path": "res://steering_ai_framework/Proximities/GSAIProximity.gd" +}, { +"base": "GSAISteeringBehavior", +"class": "GSAIPursue", +"language": "GDScript", +"path": "res://steering_ai_framework/Behaviors/GSAIPursue.gd" +}, { +"base": "GSAIProximity", +"class": "GSAIRadiusProximity", +"language": "GDScript", +"path": "res://steering_ai_framework/Proximities/GSAIRadiusProximity.gd" +}, { +"base": "GSAISpecializedAgent", +"class": "GSAIRigidBody2DAgent", +"language": "GDScript", +"path": "res://steering_ai_framework/Agents/GSAIRigidBody2DAgent.gd" +}, { +"base": "GSAISpecializedAgent", +"class": "GSAIRigidBody3DAgent", +"language": "GDScript", +"path": "res://steering_ai_framework/Agents/GSAIRigidBody3DAgent.gd" +}, { +"base": "GSAISteeringBehavior", +"class": "GSAISeek", +"language": "GDScript", +"path": "res://steering_ai_framework/Behaviors/GSAISeek.gd" +}, { +"base": "GSAIGroupBehavior", +"class": "GSAISeparation", +"language": "GDScript", +"path": "res://steering_ai_framework/Behaviors/GSAISeparation.gd" +}, { +"base": "GSAISteeringAgent", +"class": "GSAISpecializedAgent", +"language": "GDScript", +"path": "res://steering_ai_framework/Agents/GSAISpecializedAgent.gd" +}, { +"base": "GSAIAgentLocation", +"class": "GSAISteeringAgent", +"language": "GDScript", +"path": "res://steering_ai_framework/GSAISteeringAgent.gd" +}, { +"base": "Reference", +"class": "GSAISteeringBehavior", +"language": "GDScript", +"path": "res://steering_ai_framework/GSAISteeringBehavior.gd" +}, { +"base": "Reference", +"class": "GSAITargetAcceleration", +"language": "GDScript", +"path": "res://steering_ai_framework/GSAITargetAcceleration.gd" +}, { +"base": "Reference", +"class": "GSAIUtils", +"language": "GDScript", +"path": "res://steering_ai_framework/GSAIUtils.gd" +}, { +"base": "Resource", +"class": "GameModule", +"language": "GDScript", +"path": "res://scripts/game_modules/GameModule.gd" +}, { +"base": "EntityResource", +"class": "HealthResource", +"language": "GDScript", +"path": "res://scripts/resources/HealthResource.gd" +}, { +"base": "CharacterBones", +"class": "HumanoidCharacterBones2D", +"language": "GDScript", +"path": "res://player/HumanoidCharacterBones2D.gd" +}, { +"base": "ItemTemplate", +"class": "ItemTemplateGD", +"language": "GDScript", +"path": "res://scripts/items/ItemTemplateGD.gd" +}, { +"base": "SkeletonModelEntry", +"class": "ItemVisual2D", +"language": "GDScript", +"path": "res://scripts/item_visuals/ItemVisual2D.gd" +}, { +"base": "SkeletonModelEntry", +"class": "ItemVisualEntry2D", +"language": "GDScript", +"path": "res://scripts/item_visuals/ItemVisualEntry2D.gd" +}, { +"base": "Node2D", +"class": "LayeredTextureMaker", +"language": "GDScript", +"path": "res://texture_tools/LayeredTextureMaker.gd" +}, { +"base": "Resource", +"class": "MMMateial", +"language": "GDScript", +"path": "res://addons/mat_maker_gd/nodes/mm_material.gd" +}, { +"base": "Resource", +"class": "MMNode", +"language": "GDScript", +"path": "res://addons/mat_maker_gd/nodes/mm_node.gd" +}, { +"base": "Resource", +"class": "MMNodeUniversalProperty", +"language": "GDScript", +"path": "res://addons/mat_maker_gd/nodes/mm_node_universal_property.gd" +}, { +"base": "Node", +"class": "Main", +"language": "GDScript", +"path": "res://scenes/MainScene.gd" +}, { +"base": "EntityResource", +"class": "ManaResource", +"language": "GDScript", +"path": "res://scripts/resources/ManaResource.gd" +}, { +"base": "Control", +"class": "Menu", +"language": "GDScript", +"path": "res://scenes/Menu.gd" +}, { +"base": "Entity", +"class": "MobGD", +"language": "GDScript", +"path": "res://player/Mob.gd" +}, { +"base": "", +"class": "NetworkedPlayerGD", +"language": "GDScript", +"path": "res://player/NetworkedPlayer.gd" +}, { +"base": "", +"class": "PlayerGD", +"language": "GDScript", +"path": "res://player/Player.gd" +}, { +"base": "Resource", +"class": "PlayerMaster", +"language": "GDScript", +"path": "res://scripts/networking/PlayerMaster.gd" +}, { +"base": "EntityResource", +"class": "SpeedResource", +"language": "GDScript", +"path": "res://scripts/resources/SpeedResource.gd" +}, { +"base": "SpellEffectVisual", +"class": "SpellEffectVisualBasic", +"language": "GDScript", +"path": "res://scripts/resources/spell_effect_visual_basic.gd" +}, { +"base": "Spell", +"class": "SpellGD", +"language": "GDScript", +"path": "res://scripts/spells/gd_spell_script.gd" +}, { +"base": "GameModule", +"class": "UIGuiChildModule", +"language": "GDScript", +"path": "res://scripts/game_modules/ui_gui_child_module.gd" +}, { +"base": "GameModule", +"class": "UIWindowModule", +"language": "GDScript", +"path": "res://scripts/game_modules/ui_window_module.gd" +} ] +_global_script_class_icons={ +"BrushPrefabs": "", +"CharacterAtlas2D": "", +"CharacterAtlasEntry2D": "", +"CharacterSkeketonAttachPoint": "", +"CharacterSkeleton2DGD": "", +"DisplayPlayerGD": "", +"EntityAIGD": "", +"EntityDataGD": "", +"GEAction": "", +"GEBrighten": "", +"GEBrush": "", +"GEBucket": "", +"GECanvas": "", +"GECut": "", +"GEDarken": "", +"GELayer": "", +"GELine": "", +"GEMultiLine": "", +"GEPasteCut": "", +"GEPencil": "", +"GERainbow": "", +"GERect": "", +"GEUtils": "", +"GSAIAgentLocation": "", +"GSAIArrive": "", +"GSAIAvoidCollisions": "", +"GSAIBlend": "", +"GSAICohesion": "", +"GSAIEvade": "", +"GSAIFace": "", +"GSAIFlee": "", +"GSAIFollowPath": "", +"GSAIGroupBehavior": "", +"GSAIInfiniteProximity": "", +"GSAIKinematicBody2DAgent": "", +"GSAIKinematicBody3DAgent": "", +"GSAILookWhereYouGo": "", +"GSAIMatchOrientation": "", +"GSAIPath": "", +"GSAIPriority": "", +"GSAIProximity": "", +"GSAIPursue": "", +"GSAIRadiusProximity": "", +"GSAIRigidBody2DAgent": "", +"GSAIRigidBody3DAgent": "", +"GSAISeek": "", +"GSAISeparation": "", +"GSAISpecializedAgent": "", +"GSAISteeringAgent": "", +"GSAISteeringBehavior": "", +"GSAITargetAcceleration": "", +"GSAIUtils": "", +"GameModule": "", +"HealthResource": "", +"HumanoidCharacterBones2D": "", +"ItemTemplateGD": "", +"ItemVisual2D": "", +"ItemVisualEntry2D": "", +"LayeredTextureMaker": "", +"MMMateial": "", +"MMNode": "", +"MMNodeUniversalProperty": "", +"Main": "", +"ManaResource": "", +"Menu": "", +"MobGD": "", +"NetworkedPlayerGD": "", +"PlayerGD": "", +"PlayerMaster": "", +"SpeedResource": "", +"SpellEffectVisualBasic": "", +"SpellGD": "", +"UIGuiChildModule": "", +"UIWindowModule": "" +} +Node="input/actionbar_5_11" + +[application] + +config/name="Broken Seals 2D" +config/description="An open source third person RPG " +run/main_scene="res://scenes/Main.tscn" +config/icon="res://icon.png" +config/version="0.2" + +[autoload] + +Server="*res://autoload/Server.tscn" +ThemeAtlas="*res://ui/autoload/ThemeAtlas.tscn" +WorldNumbers="*res://ui/world_numbers_2d/WorldNumbers.tscn" +CursorManager="*res://cursors/autoload/CursorManager.tscn" +Settings="*res://ui/autoload/SettingsManager.tscn" +Logger="*res://autoload/Logger.tscn" +DataManager="*res://scripts/game_modules/DataManager.tscn" +EntitySpawner="*res://player/bs_entity_spawner.tscn" + +[debug] + +gdscript/completion/autocomplete_setters_and_getters=true +gdscript/warnings/unused_argument=false +gdscript/warnings/unused_signal=false +gdscript/warnings/return_value_discarded=false +gdscript/warnings/integer_division=false + +[display] + +window/dpi/allow_hidpi=true +window/handheld/orientation="sensor_landscape" +window/stretch/mode="2d" +window/stretch/aspect="expand" +mouse_cursor/sensitivity=0.9 +window/size/viewport_scale=100 +window/size/ui_scale=1.2 +window/size/ui_scale_touch=1.0 + +[editor_plugins] + +enabled=PoolStringArray( "res://addons/Godoxel/plugin.cfg", "res://addons/mat_maker_gd/plugin.cfg", "res://addons/tile_generator/plugin.cfg" ) + +[ess] + +data/ess_resource_db_path="res://data/resource_db.tres" +enums/stats="Agility,Strength,Stamina,Intellect,Spirit,Health,Mana,Speed,Global Cooldown,Haste,Haste Rating,Resilience,Armor,Attack Power,Spell Power,Melee Crit,Melee Crit Bonus,Spell Crit,Spell Crit Bonus,Block,Parry,Damage Reduction,Melee Damage Reduction,Spell Damage Reduction,Damage Taken,Heal Taken,Melee Damage,Spell Damage,Holy Resist,Shadow Resist,Nature Resist,Fire Resist,Frost Resist,Lightning Resist,Chaos Resist,Silence Resist,Fear Resist,Stun Resist,Energy,Rage,XP Rate,Weapon Damage Min,Weapon Damage Max" +enums/skeletons_bones=PoolStringArray( "", "root,pelvis,spine,spine_1,spine_2,neck,head,left_clavicle,left_upper_arm,left_forearm,left_hand,left_thumb_base,left_thumb_end,left_fingers_base,left_fingers_end,right_clavicle,right_upper_arm,right_forearm,right_hand,right_thumb_base,right_thumb_end,right_fingers_base,right_fingers_end,left_thigh,left_calf,left_foot,right_thigh,right_calf,right_foot" ) +enums/skeletons_bone_attachment_points=PoolStringArray( "", "left_hand,right_hand,torso,root,right_hip,left_hip,spine_2,weapon_left,weapon_right,weapon_left_back,weapon_right_back,weapon_shield_left" ) +xp/class_xps=PoolIntArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) +xp/character_xps=PoolIntArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) +profiles/automatic_save=true +data/ess_entity_spawner_path="res://player/bs_entity_spawner.tres" +level/max_character_level=60 +level/max_class_level=60 + +[importer_defaults] + +texture_array={ +"compress/mode": 0, +"compress/no_bptc_if_rgb": false, +"flags/filter": false, +"flags/mipmaps": false, +"flags/repeat": 0, +"flags/srgb": 0, +"slices/horizontal": 8, +"slices/vertical": 8 +} +texture={ +"compress/bptc_ldr": 0, +"compress/hdr_mode": 0, +"compress/lossy_quality": 0.7, +"compress/mode": 0, +"compress/normal_map": 0, +"detect_3d": false, +"flags/anisotropic": false, +"flags/filter": false, +"flags/mipmaps": false, +"flags/repeat": 1, +"flags/srgb": 2, +"process/HDR_as_SRGB": false, +"process/fix_alpha_border": false, +"process/invert_color": false, +"process/premult_alpha": false, +"size_limit": 0, +"stream": false, +"svg/scale": 1.0 +} + +[input] + +ui_accept={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777222,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) + ] +} +actionbar_1_0={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":82,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +actionbar_1_1={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":70,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +actionbar_1_2={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":67,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +actionbar_1_3={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":84,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +actionbar_1_4={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":71,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +actionbar_1_5={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":49,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +actionbar_1_6={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":50,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +actionbar_1_7={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":51,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +actionbar_1_8={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":52,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +actionbar_1_9={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":true,"control":false,"meta":false,"command":false,"pressed":false,"scancode":82,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +actionbar_1_10={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":true,"control":false,"meta":false,"command":false,"pressed":false,"scancode":70,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +actionbar_1_11={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":true,"control":false,"meta":false,"command":false,"pressed":false,"scancode":84,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +actionbar_1_12={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":true,"control":false,"meta":false,"command":false,"pressed":false,"scancode":39,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +sheath={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":80,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} + +[layer_names] + +3d_physics/layer_1="World" +3d_physics/layer_2="Entities" + +[memory] + +limits/message_queue/max_size_kb=2048 + +[physics] + +2d/default_gravity=0 + +[props] + +default_prop_material_cache_class="PropMaterialCachePCM" + +[rendering] + +quality/driver/driver_name="GLES2" +quality/driver/fallback_to_gles2=true +quality/intended_usage/framebuffer_allocation=0 +quality/intended_usage/framebuffer_allocation.mobile=0 +vram_compression/import_etc=true +quality/directional_shadow/size=256 +quality/directional_shadow/size.mobile=256 +quality/shadow_atlas/size=256 +quality/shadow_atlas/size.mobile=256 +quality/shadow_atlas/cubemap_size=64 +quality/shadow_atlas/quadrant_0_subdiv=0 +quality/shadow_atlas/quadrant_1_subdiv=0 +quality/shadow_atlas/quadrant_2_subdiv=0 +quality/shadow_atlas/quadrant_3_subdiv=0 +quality/reflections/texture_array_reflections=false +quality/reflections/high_quality_ggx=false +quality/shading/force_vertex_shading=true +quality/depth_prepass/enable=false +quality/filters/anisotropic_filter_level=1 +quality/reflections/atlas_size=0 +quality/depth/hdr=false +quality/2d/use_batching=true +quality/shadows/enabled=false diff --git a/game/scenes/BrokenSeals.tscn b/game/scenes/BrokenSeals.tscn new file mode 100644 index 0000000..ceeda28 --- /dev/null +++ b/game/scenes/BrokenSeals.tscn @@ -0,0 +1,3 @@ +[gd_scene format=2] + +[node name="BrokenSeals" type="Node"] diff --git a/game/scenes/CharacterCreationMenu.gd b/game/scenes/CharacterCreationMenu.gd new file mode 100644 index 0000000..ae86280 --- /dev/null +++ b/game/scenes/CharacterCreationMenu.gd @@ -0,0 +1,86 @@ +extends Control + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(PackedScene) var character_entry : PackedScene +export(NodePath) var menu_path : NodePath +export(NodePath) var name_imput_path : NodePath +export(NodePath) var container_path : NodePath +export(ButtonGroup) var character_creation_button_group : ButtonGroup +export(String) var character_folder : String + +var container : Node +var name_line_edit : LineEdit + +func _ready(): + name_line_edit = get_node(name_imput_path) + container = get_node(container_path) + + var profile : PlayerProfile = ProfileManager.getc_player_profile() + + var fb : Button = null + + for i in range(ESS.get_resource_db().get_entity_data_count()): + var d : EntityData = ESS.get_resource_db().get_entity_data_index(i) + + if not d.is_playable: + continue + + var ce : Button = character_entry.instance() as Button + + if fb == null: + fb = ce + + container.add_child(ce) + ce.owner = container + + ce.id = d.id + var class_profile : ClassProfile = profile.get_class_profile(d.resource_path) + ce.set_class_name(d.entity_class_data.text_name, class_profile.level, class_profile) + ce.group = character_creation_button_group + + if fb != null: + fb.pressed = true + +func create() -> void: + if name_line_edit.text == "": + return + + var file_name : String = "user://" + character_folder + "/" + name_line_edit.text + + var f : File = File.new() + + if f.file_exists(file_name): + return + + var active : BaseButton = character_creation_button_group.get_pressed_button() + + var id : int = active.id + + var ent : Entity = ESS.entity_spawner.spawn_player_for_menu(id, name_line_edit.text, self) + if f.open(file_name, File.WRITE) == OK: + f.store_string(to_json(ent.to_dict())) + f.close() + + ent.queue_free() + + get_node(menu_path).switch_to_menu(Menu.StartMenuTypes.CHARACTER_SELECT) + diff --git a/game/scenes/CharacterSelector.gd b/game/scenes/CharacterSelector.gd new file mode 100644 index 0000000..884bebd --- /dev/null +++ b/game/scenes/CharacterSelector.gd @@ -0,0 +1,52 @@ +extends MarginContainer + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var container_path : NodePath +var container : Node + +export(String) var character_folder : String + +func _ready(): + container = get_node(container_path) + + if container == null: + Logger.error("CharacterSelector not set up properly!") + + refresh() + +func refresh(): + var dir : Directory = Directory.new() + + if dir.open("user://" + character_folder) == OK: + dir.list_dir_begin() + + var file_name = dir.get_next() + + while (file_name != ""): + if dir.current_is_dir(): + file_name = dir.get_next() + + + + else: + dir.make_dir("user://" + character_folder) + diff --git a/game/scenes/CharacterSelectorMenu.gd b/game/scenes/CharacterSelectorMenu.gd new file mode 100644 index 0000000..0edb052 --- /dev/null +++ b/game/scenes/CharacterSelectorMenu.gd @@ -0,0 +1,220 @@ +extends Control + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var menu_path : NodePath +export(NodePath) var container_path : NodePath +export(NodePath) var player_display_container_path : NodePath +export(ButtonGroup) var character_button_group : ButtonGroup +export(PackedScene) var character_entry : PackedScene +export(String) var character_folder : String + +export(NodePath) var load_button_path : NodePath +export(NodePath) var renounce_button_path : NodePath +export(NodePath) var create_button_path : NodePath + +export(bool) var automatic_character_load : bool = false +export(bool) var only_one_character : bool = false + +var container : Node +var player_display_container_node : Node + +func _ready(): + container = get_node(container_path) + player_display_container_node = get_node(player_display_container_path) + + if container == null: + Logger.error("CharacterSelector not set up properly!") + + connect("visibility_changed", self, "visibility_changed") + + refresh() + +func refresh(): + clear() +# Entities.list_spells() + var dir : Directory = Directory.new() + + var first_entry : Button = null + + if dir.open("user://" + character_folder) == OK: + dir.list_dir_begin() + + var file_name = "." + + while (file_name != ""): + file_name = dir.get_next() + + if dir.current_is_dir(): + continue + + var f : File = File.new() + + if f.open("user://" + character_folder + "/" + file_name, File.READ) == OK: + var st : String = f.get_as_text() + f.close() + + var json_err : String = validate_json(st) + + if json_err != "": + Logger.error("Save corrupted! " + file_name) + Logger.error(json_err) + continue + + var p = parse_json(st) + + if typeof(p) != TYPE_DICTIONARY: + Logger.error("Save corrupted! Not Dict! " + file_name) + continue + + var display : Entity = ESS.entity_spawner.spawn_display_player(file_name, player_display_container_node.get_path()) + + var entity_data : EntityData = ESS.get_resource_db().get_entity_data(display.characterclass_id) + + if entity_data == null: + print("EntityData not found!") + display.queue_free() + continue + + #player_display_container_node.add_child(display) + #display.owner = player_display_container_node + + #display.from_dict(p as Dictionary) + + var centry : Button = character_entry.instance() as Button + container.add_child(centry) + centry.owner = container + centry.group = character_button_group + centry.pressed = true + centry.connect("pressed", self, "character_selection_changed") + + centry.setup(file_name, display.sentity_name, ESS.get_resource_db().get_entity_data(display.characterclass_id).text_name, display.slevel, display.slevel, display) + + if first_entry == null: + first_entry = centry + + if first_entry != null: + first_entry.pressed = true + + if first_entry != null: + #note that this just disables the create button, and + #will still allow character creation otherwise + if only_one_character: + get_node(create_button_path).hide() + get_node(container_path).show() + + get_node(load_button_path).show() + get_node(renounce_button_path).show() + + if (automatic_character_load): + load_character() + else: + if only_one_character: + get_node(create_button_path).show() + get_node(container_path).hide() + + get_node(load_button_path).hide() + get_node(renounce_button_path).hide() + else: + dir.make_dir("user://" + character_folder) + if only_one_character: + get_node(container_path).hide() + get_node(create_button_path).show() + + get_node(load_button_path).hide() + get_node(renounce_button_path).hide() + +func clear() -> void: + for c in container.get_children(): + c.disconnect("pressed", self, "character_selection_changed") + c.queue_free() + + for e in player_display_container_node.get_children(): + e.queue_free() + +func renounce_character() -> void: + var b : BaseButton = character_button_group.get_pressed_button() + + if b == null: + return + + if ESS.use_class_xp: + var class_profile : ClassProfile = ProfileManager.getc_player_profile().get_class_profile(b.entity.sentity_data.resource_path) + + if ESS.can_class_level_up(class_profile.level): + class_profile.xp += b.entity.sclass_xp + + + var xpr : int = ESS.get_class_xp(class_profile.level) + + while ESS.can_class_level_up(class_profile.level) and class_profile.xp >= xpr: + class_profile.level += 1 + class_profile.xp -= xpr + + xpr = ESS.get_class_xp(class_profile.level) + + ProfileManager.save() + + var file_name : String = "user://" + character_folder + "/" + b.file_name + + var f : File = File.new() + + if f.file_exists(file_name): + var d : Directory = Directory.new() + if d.remove(file_name) == OK: + refresh() + +func load_character() -> void: + var b : BaseButton = character_button_group.get_pressed_button() + + if b == null: + return + +# if multiplayer.has_network_peer(): +# var file_name : String = "user://" + character_folder + "/" + b.file_name +# +# var f : File = File.new() +# +# if f.open(file_name, File.READ) == OK: +# var data : String = f.get_as_text() +# +# f.close() +# +# Server.upload_character(data) +# +# get_node("/root/Main").load_character(b.file_name) +# else: + get_node("/root/Main").load_character(b.file_name) + +func visibility_changed() -> void: + if visible: + refresh() + +func character_selection_changed() -> void: + var b : BaseButton = character_button_group.get_pressed_button() + + if b == null: + return + + for e in player_display_container_node.get_children(): + e.get_body().hide() + + b.entity.get_body().show() diff --git a/game/scenes/ConnectButton.gd b/game/scenes/ConnectButton.gd new file mode 100644 index 0000000..f44a661 --- /dev/null +++ b/game/scenes/ConnectButton.gd @@ -0,0 +1,35 @@ +extends Button + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +func _ready(): + get_tree().connect("connected_to_server", self, "connected_to_server") + get_tree().connect("server_disconnected", self, "server_disconnected") + +func _exit_tree(): + get_tree().disconnect("connected_to_server", self, "connected_to_server") + get_tree().disconnect("server_disconnected", self, "server_disconnected") + +func connected_to_server(): + hide() + +func server_disconnected(): + show() diff --git a/game/scenes/ConnectServerButton.gd b/game/scenes/ConnectServerButton.gd new file mode 100644 index 0000000..de4b73e --- /dev/null +++ b/game/scenes/ConnectServerButton.gd @@ -0,0 +1,73 @@ +extends Button + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var container_path : NodePath +export(NodePath) var status_label_path : NodePath + +export(NodePath) var use_websockets_checkbox_path : NodePath + +export(NodePath) var ip_line_edit_path : NodePath +export(NodePath) var port_line_edit_path : NodePath + +var _container : Control +var _status : Label + +var _use_websockets_checkbox : CheckBox + +var _ip_line_edit : LineEdit +var _port_line_edit : LineEdit + +func _ready(): + _container = get_node(container_path) as Control + get_tree().connect("connected_to_server", self, "connected_to_server") + + _status = get_node(status_label_path) as Label + _status.text = "" + + _use_websockets_checkbox = get_node(use_websockets_checkbox_path) as CheckBox + + _ip_line_edit = get_node(ip_line_edit_path) as LineEdit + _port_line_edit = get_node(port_line_edit_path) as LineEdit + +func _exit_tree(): + get_tree().disconnect("connected_to_server", self, "connected_to_server") + +func _pressed(): + var ip : String = _ip_line_edit.text + var port : String = _port_line_edit.text + + var portint : int = int(port) + + _status.text = "Connecting..." + var err : int = 0 + + if _use_websockets_checkbox.pressed: + err = Server.connect_to_server_websocket(ip, portint) + else: + err = Server.connect_to_server(ip, portint) + + if err != OK: + _status.text = "Error: " + str(err) + + +func connected_to_server(): + _container.hide() diff --git a/game/scenes/DisconnectButton.gd b/game/scenes/DisconnectButton.gd new file mode 100644 index 0000000..431ce17 --- /dev/null +++ b/game/scenes/DisconnectButton.gd @@ -0,0 +1,35 @@ +extends Button + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +func _ready(): + get_tree().connect("connected_to_server", self, "connected_to_server") + get_tree().connect("server_disconnected", self, "server_disconnected") + +func _exit_tree(): + get_tree().disconnect("connected_to_server", self, "connected_to_server") + get_tree().disconnect("server_disconnected", self, "server_disconnected") + +func connected_to_server(): + show() + +func server_disconnected(): + hide() diff --git a/game/scenes/GameScene.gd b/game/scenes/GameScene.gd new file mode 100644 index 0000000..b580707 --- /dev/null +++ b/game/scenes/GameScene.gd @@ -0,0 +1,25 @@ +extends Node + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +func _ready(): + VisualServer.set_default_clear_color(Color(0, 0, 0)) + diff --git a/game/scenes/HostButton.gd b/game/scenes/HostButton.gd new file mode 100644 index 0000000..6def017 --- /dev/null +++ b/game/scenes/HostButton.gd @@ -0,0 +1,30 @@ +extends Button + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + +# Called when the node enters the scene tree for the first time. + +#func _pressed(): +# Server.start_hosting() diff --git a/game/scenes/HostGameButton.gd b/game/scenes/HostGameButton.gd new file mode 100644 index 0000000..81ea165 --- /dev/null +++ b/game/scenes/HostGameButton.gd @@ -0,0 +1,71 @@ +extends Button + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var container_path : NodePath +export(NodePath) var status_label_path : NodePath + +export(NodePath) var use_websockets_checkbox_path : NodePath + +export(NodePath) var port_line_edit_path : NodePath + +var _container : Control +var _status : Label + +var _use_websockets_checkbox : CheckBox + +var _port_line_edit : LineEdit + +func _ready(): + _container = get_node(container_path) as Control +# get_tree().connect("connected_to_server", self, "connected_to_server") + + _status = get_node(status_label_path) as Label + _status.text = "" + + _use_websockets_checkbox = get_node(use_websockets_checkbox_path) as CheckBox + + _port_line_edit = get_node(port_line_edit_path) as LineEdit + +#func _exit_tree(): +# get_tree().disconnect("connected_to_server", self, "connected_to_server") + +func _pressed(): + var port : String = _port_line_edit.text + + var portint : int = int(port) + + _status.text = "Connecting..." + var err : int = 0 + + if _use_websockets_checkbox.pressed: + err = Server.start_hosting_websocket(portint) + else: + err = Server.start_hosting(portint) + + if err != OK: + _status.text = "Error: " + str(err) + else: + _container.hide() + + +#func connected_to_server(): +# _container.hide() diff --git a/game/scenes/Main.tscn b/game/scenes/Main.tscn new file mode 100644 index 0000000..43dcdb4 --- /dev/null +++ b/game/scenes/Main.tscn @@ -0,0 +1,96 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://scenes/MainScene.gd" type="Script" id=1] +[ext_resource path="res://scenes/World.tscn" type="PackedScene" id=2] +[ext_resource path="res://scenes/Menu.tscn" type="PackedScene" id=3] +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=4] +[ext_resource path="res://ui/debug/DebugInfo.tscn" type="PackedScene" id=5] +[ext_resource path="res://debug/FreeLookCam.tscn" type="PackedScene" id=6] + +[node name="Main" type="Node"] +script = ExtResource( 1 ) +menu_scene = ExtResource( 3 ) +world_scene = ExtResource( 2 ) +debug_camera_scene = ExtResource( 6 ) +loading_screen_path = NodePath("LoadingScreen/PanelContainer") + +[node name="LoadingScreen" type="CanvasLayer" parent="."] +layer = 100 + +[node name="PanelContainer" type="PanelContainer" parent="LoadingScreen"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 4 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="RichTextLabel" type="RichTextLabel" parent="LoadingScreen/PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 1020.0 +margin_bottom = 596.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +bbcode_enabled = true +bbcode_text = "[center] + + + + + + +Broken Seals + + + + + + + + + + + + + + + + + + + +[wave]LOADING[/wave] +[/center]" +text = " + + + + + + +Broken Seals + + + + + + + + + + + + + + + + + + + +LOADING +" + +[node name="DebugInfo" parent="." instance=ExtResource( 5 )] diff --git a/game/scenes/MainScene.gd b/game/scenes/MainScene.gd new file mode 100644 index 0000000..2f38b7d --- /dev/null +++ b/game/scenes/MainScene.gd @@ -0,0 +1,110 @@ +extends Node +class_name Main + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(int, "None", "Menu", "World") var start_scene = 1 +export(PackedScene) var menu_scene : PackedScene +export(PackedScene) var world_scene : PackedScene +export(PackedScene) var debug_camera_scene : PackedScene +export(NodePath) var loading_screen_path : NodePath + +enum StartSceneTypes { + NONE, MENU, WORLD +} + +var _loading_screen : Node + +var current_scene : Node +var current_character_file_name : String = "" + +func _ready() -> void: + _loading_screen = get_node(loading_screen_path) + + switch_scene(start_scene) + +func switch_scene(scene : int) -> void: + if current_scene != null: + for s in get_tree().get_nodes_in_group("save"): + if not s.has_method("save"): + print(str(s) + " is in group save, but doesn't have save()!") + continue + + s.save() + + current_scene.queue_free() + remove_child(current_scene) + + WorldNumbers.clear() + + if scene == StartSceneTypes.MENU: + var gs : Node = menu_scene.instance() + add_child(gs) + gs.owner = self + + current_scene = gs + + elif scene == StartSceneTypes.WORLD: + var gs : Node = world_scene.instance() + add_child(gs) + gs.owner = self + + current_scene = gs + + if multiplayer.has_network_peer():# and get_tree().network_peer.get_connection_status() == NetworkedMultiplayerPeer.CONNECTION_CONNECTED: + if multiplayer.is_network_server(): + gs.load_character(current_character_file_name) + else: +# var dc = debug_camera_scene.instance() +# +# gs.add_child(dc) +# dc.owner = gs +# + gs.setup_client_seed(Server._cseed) + + var file_name : String = "user://characters/" + current_character_file_name + + var f : File = File.new() + + if f.open(file_name, File.READ) == OK: + var data : String = f.get_as_text() + + f.close() + + Server.upload_character(data) + else: + gs.load_character(current_character_file_name) + + if current_scene.has_method("needs_loading_screen"): + if current_scene.needs_loading_screen(): + show_loading_screen() + +func load_character(file_name : String) -> void: + current_character_file_name = file_name + + switch_scene(StartSceneTypes.WORLD) + +func show_loading_screen() -> void: + _loading_screen.show() + +func hide_loading_screen() -> void: + _loading_screen.hide() + diff --git a/game/scenes/Menu.gd b/game/scenes/Menu.gd new file mode 100644 index 0000000..e19e688 --- /dev/null +++ b/game/scenes/Menu.gd @@ -0,0 +1,51 @@ + +extends Control +class_name Menu + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(int, "Character Select", "Character Create") var start_menu : int = 0 +export (NodePath) var character_selector_scene : NodePath +export (NodePath) var charcer_creation_scenes : NodePath + +enum StartMenuTypes { + CHARACTER_SELECT, CHARACTER_CREATE +} + +func _ready(): + switch_to_menu(start_menu) + +func switch_to_menu(menu : int) -> void: + + if menu == StartMenuTypes.CHARACTER_SELECT: + get_node(character_selector_scene).show() + else: + get_node(character_selector_scene).hide() + + if menu == StartMenuTypes.CHARACTER_CREATE: + get_node(charcer_creation_scenes).show() + else: + get_node(charcer_creation_scenes).hide() + + + +func _on_About_pressed(): + pass # Replace with function body. diff --git a/game/scenes/Menu.tscn b/game/scenes/Menu.tscn new file mode 100644 index 0000000..48afb09 --- /dev/null +++ b/game/scenes/Menu.tscn @@ -0,0 +1,551 @@ +[gd_scene load_steps=18 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/menu/CharacterEntry.tscn" type="PackedScene" id=2] +[ext_resource path="res://scenes/Menu.gd" type="Script" id=3] +[ext_resource path="res://ui/menu/menu_character_button_group.tres" type="ButtonGroup" id=4] +[ext_resource path="res://scenes/CharacterSelectorMenu.gd" type="Script" id=5] +[ext_resource path="res://scenes/CharacterCreationMenu.gd" type="Script" id=6] +[ext_resource path="res://ui/menu/character_creation_button_group.tres" type="ButtonGroup" id=7] +[ext_resource path="res://ui/options/Options.tscn" type="PackedScene" id=8] +[ext_resource path="res://ui/register/Register.tscn" type="PackedScene" id=9] +[ext_resource path="res://ui/login/Login.tscn" type="PackedScene" id=10] +[ext_resource path="res://scenes/ConnectButton.gd" type="Script" id=11] +[ext_resource path="res://scenes/HostButton.gd" type="Script" id=12] +[ext_resource path="res://scenes/DisconnectButton.gd" type="Script" id=13] +[ext_resource path="res://scenes/ConnectServerButton.gd" type="Script" id=14] +[ext_resource path="res://scenes/HostGameButton.gd" type="Script" id=15] +[ext_resource path="res://menu/ExitButton.gd" type="Script" id=16] +[ext_resource path="res://ui/about/About.tscn" type="PackedScene" id=20] + +[node name="Menu" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 1 ) +script = ExtResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} +character_selector_scene = NodePath("CharacterSelectorMenu") +charcer_creation_scenes = NodePath("CharacterCreationMenu") + +[node name="GameName" type="PanelContainer" parent="."] +anchor_left = 0.5 +anchor_right = 0.5 +margin_left = -61.0 +margin_right = 61.0 +margin_bottom = 26.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="GameName"] +margin_left = 4.0 +margin_top = 5.0 +margin_right = 118.0 +margin_bottom = 20.0 +text = "Borken Seals" +align = 1 +valign = 1 + +[node name="CharacterSelectorMenu" type="Control" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 1 ) +script = ExtResource( 5 ) +__meta__ = { +"_edit_use_anchors_": false, +"_editor_description_": "" +} +menu_path = NodePath("..") +container_path = NodePath("CharacterSelector/VBoxContainer/CharacterSelector/VBoxContainer/ScrollContainer/Container") +player_display_container_path = NodePath("../Char/CharacterDisplay") +character_button_group = ExtResource( 4 ) +character_entry = ExtResource( 2 ) +character_folder = "characters" +load_button_path = NodePath("CharacterSelector/VBoxContainer/CharacterSelector/VBoxContainer/Load") +renounce_button_path = NodePath("CharacterSelector/VBoxContainer/CharacterSelector/VBoxContainer/Delete") +create_button_path = NodePath("CharacterSelector/VBoxContainer/CharacterSelector/VBoxContainer/New") + +[node name="CharacterSelector" type="MarginContainer" parent="CharacterSelectorMenu"] +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +margin_left = -289.0 +margin_top = -300.0 +margin_bottom = 300.0 +custom_constants/margin_right = 20 +custom_constants/margin_top = 20 +custom_constants/margin_bottom = 20 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="CharacterSelectorMenu/CharacterSelector"] +margin_top = 20.0 +margin_right = 269.0 +margin_bottom = 580.0 +alignment = 2 + +[node name="CharacterSelector" type="PanelContainer" parent="CharacterSelectorMenu/CharacterSelector/VBoxContainer"] +margin_right = 269.0 +margin_bottom = 560.0 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="CharacterSelectorMenu/CharacterSelector/VBoxContainer/CharacterSelector"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 265.0 +margin_bottom = 556.0 + +[node name="ScrollContainer" type="ScrollContainer" parent="CharacterSelectorMenu/CharacterSelector/VBoxContainer/CharacterSelector/VBoxContainer"] +margin_right = 261.0 +margin_bottom = 450.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Container" type="VBoxContainer" parent="CharacterSelectorMenu/CharacterSelector/VBoxContainer/CharacterSelector/VBoxContainer/ScrollContainer"] +margin_right = 261.0 +size_flags_horizontal = 3 + +[node name="Load" type="Button" parent="CharacterSelectorMenu/CharacterSelector/VBoxContainer/CharacterSelector/VBoxContainer"] +margin_top = 458.0 +margin_right = 261.0 +margin_bottom = 484.57 +text = "Load" + +[node name="New" type="Button" parent="CharacterSelectorMenu/CharacterSelector/VBoxContainer/CharacterSelector/VBoxContainer"] +margin_top = 492.0 +margin_right = 261.0 +margin_bottom = 518.57 +text = "New" + +[node name="Delete" type="Button" parent="CharacterSelectorMenu/CharacterSelector/VBoxContainer/CharacterSelector/VBoxContainer"] +margin_top = 526.0 +margin_right = 261.0 +margin_bottom = 552.57 +text = "Delete" + +[node name="PlayerDisplays" type="Node" parent="CharacterSelectorMenu"] + +[node name="CharacterCreationMenu" type="Control" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 6 ) +__meta__ = { +"_edit_use_anchors_": false +} +character_entry = ExtResource( 2 ) +menu_path = NodePath("..") +name_imput_path = NodePath("CharacterSelector2/CharacterSelector/VBoxContainer/PanelContainer/VBoxContainer/LineEdit") +container_path = NodePath("CharacterSelector2/CharacterSelector/VBoxContainer/ScrollContainer/Container") +character_creation_button_group = ExtResource( 7 ) +character_folder = "characters" + +[node name="CharacterSelector2" type="MarginContainer" parent="CharacterCreationMenu"] +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +margin_left = -289.0 +margin_top = -300.0 +margin_bottom = 300.0 +custom_constants/margin_right = 20 +custom_constants/margin_top = 20 +custom_constants/margin_bottom = 20 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CharacterSelector" type="PanelContainer" parent="CharacterCreationMenu/CharacterSelector2"] +margin_top = 20.0 +margin_right = 269.0 +margin_bottom = 580.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="CharacterCreationMenu/CharacterSelector2/CharacterSelector"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 265.0 +margin_bottom = 556.0 + +[node name="ScrollContainer" type="ScrollContainer" parent="CharacterCreationMenu/CharacterSelector2/CharacterSelector/VBoxContainer"] +margin_right = 261.0 +margin_bottom = 421.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Container" type="VBoxContainer" parent="CharacterCreationMenu/CharacterSelector2/CharacterSelector/VBoxContainer/ScrollContainer"] +margin_right = 261.0 +size_flags_horizontal = 3 + +[node name="PanelContainer" type="PanelContainer" parent="CharacterCreationMenu/CharacterSelector2/CharacterSelector/VBoxContainer"] +margin_top = 429.0 +margin_right = 261.0 +margin_bottom = 552.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="CharacterCreationMenu/CharacterSelector2/CharacterSelector/VBoxContainer/PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 257.0 +margin_bottom = 119.0 + +[node name="Label" type="Label" parent="CharacterCreationMenu/CharacterSelector2/CharacterSelector/VBoxContainer/PanelContainer/VBoxContainer"] +margin_right = 253.0 +margin_bottom = 15.0 +text = "Character name" + +[node name="LineEdit" type="LineEdit" parent="CharacterCreationMenu/CharacterSelector2/CharacterSelector/VBoxContainer/PanelContainer/VBoxContainer"] +margin_top = 23.0 +margin_right = 253.0 +margin_bottom = 47.3413 + +[node name="Create" type="Button" parent="CharacterCreationMenu/CharacterSelector2/CharacterSelector/VBoxContainer/PanelContainer/VBoxContainer"] +margin_top = 55.0 +margin_right = 253.0 +margin_bottom = 81.5702 +size_flags_horizontal = 3 +text = "Create" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Back" type="Button" parent="CharacterCreationMenu/CharacterSelector2/CharacterSelector/VBoxContainer/PanelContainer/VBoxContainer"] +margin_top = 89.0 +margin_right = 253.0 +margin_bottom = 115.57 +text = "Back" + +[node name="ConnectMenu" type="Control" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="PanelContainer" type="PanelContainer" parent="ConnectMenu"] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -126.0 +margin_top = -89.0 +margin_right = 126.0 +margin_bottom = 89.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="ConnectMenu/PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 248.0 +margin_bottom = 254.0 + +[node name="Label3" type="Label" parent="ConnectMenu/PanelContainer/VBoxContainer"] +margin_right = 244.0 +margin_bottom = 15.0 +text = "Connect" +align = 1 +valign = 1 + +[node name="Label" type="Label" parent="ConnectMenu/PanelContainer/VBoxContainer"] +margin_top = 23.0 +margin_right = 244.0 +margin_bottom = 38.0 +text = "Hostname / IP" + +[node name="LineEdit" type="LineEdit" parent="ConnectMenu/PanelContainer/VBoxContainer"] +margin_top = 46.0 +margin_right = 244.0 +margin_bottom = 70.3413 +text = "127.0.0.1" + +[node name="Label2" type="Label" parent="ConnectMenu/PanelContainer/VBoxContainer"] +margin_top = 78.0 +margin_right = 244.0 +margin_bottom = 93.0 +text = "Port" + +[node name="LineEdit2" type="LineEdit" parent="ConnectMenu/PanelContainer/VBoxContainer"] +margin_top = 101.0 +margin_right = 244.0 +margin_bottom = 125.341 +text = "23223" + +[node name="CheckBox" type="CheckBox" parent="ConnectMenu/PanelContainer/VBoxContainer"] +margin_top = 133.0 +margin_right = 244.0 +margin_bottom = 159.57 +text = "Use WebSockets" + +[node name="Status" type="Label" parent="ConnectMenu/PanelContainer/VBoxContainer"] +margin_top = 167.0 +margin_right = 244.0 +margin_bottom = 182.0 +align = 1 +valign = 1 + +[node name="ConnectButton" type="Button" parent="ConnectMenu/PanelContainer/VBoxContainer"] +margin_top = 190.0 +margin_right = 244.0 +margin_bottom = 216.57 +text = "Connect" +script = ExtResource( 14 ) +container_path = NodePath("../../..") +status_label_path = NodePath("../Status") +use_websockets_checkbox_path = NodePath("../CheckBox") +ip_line_edit_path = NodePath("../LineEdit") +port_line_edit_path = NodePath("../LineEdit2") + +[node name="Button2" type="Button" parent="ConnectMenu/PanelContainer/VBoxContainer"] +margin_top = 224.0 +margin_right = 244.0 +margin_bottom = 250.57 +text = "Cancel" + +[node name="HostMenu" type="Control" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="PanelContainer" type="PanelContainer" parent="HostMenu"] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -126.0 +margin_top = -101.5 +margin_right = 126.0 +margin_bottom = 101.5 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="HostMenu/PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 248.0 +margin_bottom = 199.0 + +[node name="Label3" type="Label" parent="HostMenu/PanelContainer/VBoxContainer"] +margin_right = 244.0 +margin_bottom = 15.0 +text = "Host" +align = 1 +valign = 1 + +[node name="Label2" type="Label" parent="HostMenu/PanelContainer/VBoxContainer"] +margin_top = 23.0 +margin_right = 244.0 +margin_bottom = 38.0 +text = "Port" + +[node name="LineEdit2" type="LineEdit" parent="HostMenu/PanelContainer/VBoxContainer"] +margin_top = 46.0 +margin_right = 244.0 +margin_bottom = 70.3413 +text = "23223" + +[node name="CheckBox" type="CheckBox" parent="HostMenu/PanelContainer/VBoxContainer"] +margin_top = 78.0 +margin_right = 244.0 +margin_bottom = 104.57 +text = "Use WebSockets" + +[node name="Status" type="Label" parent="HostMenu/PanelContainer/VBoxContainer"] +margin_top = 112.0 +margin_right = 244.0 +margin_bottom = 127.0 +align = 1 +valign = 1 + +[node name="HostButton" type="Button" parent="HostMenu/PanelContainer/VBoxContainer"] +margin_top = 135.0 +margin_right = 244.0 +margin_bottom = 161.57 +text = "Host" +script = ExtResource( 15 ) +container_path = NodePath("../../..") +status_label_path = NodePath("../Status") +use_websockets_checkbox_path = NodePath("../CheckBox") +port_line_edit_path = NodePath("../LineEdit2") + +[node name="Button2" type="Button" parent="HostMenu/PanelContainer/VBoxContainer"] +margin_top = 169.0 +margin_right = 244.0 +margin_bottom = 195.57 +text = "Cancel" + +[node name="OptionsButton" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +custom_constants/margin_right = 20 +custom_constants/margin_top = 20 +custom_constants/margin_left = 20 +custom_constants/margin_bottom = 20 +__meta__ = { +"_edit_lock_": true, +"_edit_use_anchors_": false +} + +[node name="Control" type="Control" parent="OptionsButton"] +margin_left = 20.0 +margin_top = 20.0 +margin_right = 1004.0 +margin_bottom = 580.0 +mouse_filter = 2 +__meta__ = { +"_edit_lock_": true +} + +[node name="VBoxContainer" type="VBoxContainer" parent="OptionsButton/Control"] +anchor_top = 1.0 +anchor_bottom = 1.0 +margin_top = -175.0 +margin_right = 111.0 +mouse_filter = 2 +alignment = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Disconnect" type="Button" parent="OptionsButton/Control/VBoxContainer"] +visible = false +margin_right = 120.0 +margin_bottom = 26.269 +rect_min_size = Vector2( 120, 0 ) +text = "Disconnect" +script = ExtResource( 13 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Connect" type="Button" parent="OptionsButton/Control/VBoxContainer"] +margin_top = 13.0 +margin_right = 120.0 +margin_bottom = 39.5702 +rect_min_size = Vector2( 120, 0 ) +text = "Connect" +script = ExtResource( 11 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Host" type="Button" parent="OptionsButton/Control/VBoxContainer"] +margin_top = 47.0 +margin_right = 120.0 +margin_bottom = 73.5702 +rect_min_size = Vector2( 120, 0 ) +text = "Host" +script = ExtResource( 12 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Button2" type="Button" parent="OptionsButton/Control/VBoxContainer"] +visible = false +margin_top = 115.0 +margin_right = 120.0 +margin_bottom = 141.57 +rect_min_size = Vector2( 120, 0 ) +text = "Login" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Button3" type="Button" parent="OptionsButton/Control/VBoxContainer"] +visible = false +margin_top = 115.0 +margin_right = 120.0 +margin_bottom = 141.57 +rect_min_size = Vector2( 120, 0 ) +text = "Register" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="About" type="Button" parent="OptionsButton/Control/VBoxContainer"] +margin_top = 81.0 +margin_right = 120.0 +margin_bottom = 107.57 +rect_min_size = Vector2( 120, 0 ) +text = "About" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Button" type="Button" parent="OptionsButton/Control/VBoxContainer"] +margin_top = 115.0 +margin_right = 120.0 +margin_bottom = 141.57 +rect_min_size = Vector2( 120, 0 ) +text = "Options" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Exit" type="Button" parent="OptionsButton/Control/VBoxContainer"] +margin_top = 149.0 +margin_right = 120.0 +margin_bottom = 175.57 +rect_min_size = Vector2( 120, 0 ) +text = "Exit" +script = ExtResource( 16 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Options" parent="." instance=ExtResource( 8 )] +visible = false + +[node name="About" parent="." instance=ExtResource( 20 )] +visible = false + +[node name="Login" parent="." instance=ExtResource( 10 )] +visible = false +margin_left = -107.5 +margin_top = -127.5 +margin_right = 107.5 +margin_bottom = 127.5 + +[node name="Register" parent="." instance=ExtResource( 9 )] +visible = false + +[node name="Char" type="Spatial" parent="."] +transform = Transform( 0.359313, 0, 0.933217, 0, 1, 0, -0.933217, 0, 0.359313, -2.44425, 0.926699, 0 ) + +[node name="CharacterDisplay" type="Spatial" parent="Char"] +transform = Transform( 1, 1.49012e-08, 0, 0, 0.990268, -0.139173, -2.98023e-08, 0.139173, 0.990268, -5.96046e-08, 0.578123, 0.08125 ) + +[node name="Camera" type="Camera" parent="Char"] +transform = Transform( 0.907555, -0.0761572, 0.41297, 0.0262364, 0.99178, 0.12524, -0.419113, -0.102827, 0.902093, 0.752064, 1.69463, 3.15021 ) +current = true + +[connection signal="pressed" from="CharacterSelectorMenu/CharacterSelector/VBoxContainer/CharacterSelector/VBoxContainer/Load" to="CharacterSelectorMenu" method="load_character"] +[connection signal="pressed" from="CharacterSelectorMenu/CharacterSelector/VBoxContainer/CharacterSelector/VBoxContainer/New" to="." method="switch_to_menu" binds= [ 1 ]] +[connection signal="pressed" from="CharacterSelectorMenu/CharacterSelector/VBoxContainer/CharacterSelector/VBoxContainer/Delete" to="CharacterSelectorMenu" method="renounce_character"] +[connection signal="pressed" from="CharacterCreationMenu/CharacterSelector2/CharacterSelector/VBoxContainer/PanelContainer/VBoxContainer/Create" to="CharacterCreationMenu" method="create"] +[connection signal="pressed" from="CharacterCreationMenu/CharacterSelector2/CharacterSelector/VBoxContainer/PanelContainer/VBoxContainer/Back" to="." method="switch_to_menu" binds= [ 0 ]] +[connection signal="pressed" from="ConnectMenu/PanelContainer/VBoxContainer/Button2" to="ConnectMenu" method="hide"] +[connection signal="pressed" from="HostMenu/PanelContainer/VBoxContainer/Button2" to="HostMenu" method="hide"] +[connection signal="pressed" from="OptionsButton/Control/VBoxContainer/Connect" to="ConnectMenu" method="show"] +[connection signal="pressed" from="OptionsButton/Control/VBoxContainer/Host" to="HostMenu" method="show"] +[connection signal="pressed" from="OptionsButton/Control/VBoxContainer/Button2" to="Login" method="show"] +[connection signal="pressed" from="OptionsButton/Control/VBoxContainer/Button3" to="Register" method="show"] +[connection signal="pressed" from="OptionsButton/Control/VBoxContainer/About" to="About" method="show"] +[connection signal="pressed" from="OptionsButton/Control/VBoxContainer/Button" to="Options" method="show"] diff --git a/game/scenes/Shared.tscn b/game/scenes/Shared.tscn new file mode 100644 index 0000000..942f716 --- /dev/null +++ b/game/scenes/Shared.tscn @@ -0,0 +1,11 @@ +[gd_scene format=2] + +[node name="SharedScene" type="Node"] + +[node name="Options" type="Control" parent="."] +margin_right = 806.0 +margin_bottom = 557.0 + +[node name="Keybindings" type="Control" parent="."] +margin_right = 746.0 +margin_bottom = 531.0 diff --git a/game/scenes/World.gd b/game/scenes/World.gd new file mode 100644 index 0000000..f06f213 --- /dev/null +++ b/game/scenes/World.gd @@ -0,0 +1,100 @@ +extends Node2D + +# Copyright (c) 2019 Péter Magyar +# +# 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. + +export(PackedScene) var world_layer : PackedScene + +export(bool) var spawn_mobs : bool = true +export(bool) var editor_generate : bool = false setget set_editor_generate, get_editor_generate +export(bool) var show_loading_screen : bool = true +export(bool) var generate_on_ready : bool = false + +var initial_generation : bool = false + +var _editor_generate : bool + +var _player_file_name : String +var _player : Entity + +func _ready(): +# print(get_layer(2)) + pass # Replace with function body. + +func get_layer(index : int) -> Navigation2D: + for ch in get_children(): + if ch.has_method('collision_layer') and ch.collision_layer() == index: + return ch + + var wl : Navigation2D = world_layer.instance() as Navigation2D + add_child(wl) + wl.collision_layer = index + + return wl + +func load_character(file_name: String) -> void: + _player_file_name = file_name + _player = ESS.entity_spawner.load_player(file_name, Vector3(5, 5, 0), 1) as Entity + #TODO hack, do this properly +# _player.set_physics_process(false) + + Server.sset_seed(_player.sseed) + + if spawn_mobs: + generate() + + + + +func generate() -> void: + for x in range(-2, 2): + for y in range(-2, 2): + ESS.entity_spawner.spawn_mob(1, 50, Vector3(x * 200, y * 200, 0)) + +func save() -> void: + if _player == null or _player_file_name == "": + return + + ESS.entity_spawner.save_player(_player, _player_file_name) + +func _generation_finished(): + + if show_loading_screen and not Engine.editor_hint: + get_node("..").hide_loading_screen() + +# if _player: +# _player.set_physics_process(true) + +func get_editor_generate() -> bool: + return _editor_generate + +func set_editor_generate(value : bool) -> void: + if value: + #library.refresh_rects() + + #level_generator.setup(self, current_seed, false, library) + #spawn() + pass + else: + #spawned = false + #clear() + pass + + _editor_generate = value diff --git a/game/scenes/World.tscn b/game/scenes/World.tscn new file mode 100644 index 0000000..4ff877b --- /dev/null +++ b/game/scenes/World.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://scenes/World.gd" type="Script" id=1] +[ext_resource path="res://world/WorldLayer.tscn" type="PackedScene" id=2] +[ext_resource path="res://modules/planets/TileMap64x32.tscn" type="PackedScene" id=3] + +[node name="World" type="Node2D" groups=["save"]] +scale = Vector2( 1, 0.706 ) +script = ExtResource( 1 ) +world_layer = ExtResource( 2 ) + +[node name="TileMap" parent="." instance=ExtResource( 3 )] diff --git a/game/scenes/World3d.tscn b/game/scenes/World3d.tscn new file mode 100644 index 0000000..ebbf4e1 --- /dev/null +++ b/game/scenes/World3d.tscn @@ -0,0 +1,63 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://scripts/settings/DirectionalLightSettings.gd" type="Script" id=3] + +[sub_resource type="ProceduralSky" id=1] +sky_top_color = Color( 0.435294, 0.423529, 0.313726, 1 ) +sky_horizon_color = Color( 0.309804, 0.317647, 0.219608, 1 ) +sky_curve = 0.263535 +sky_energy = 0.3 +ground_bottom_color = Color( 0.196078, 0.152941, 0.152941, 1 ) +ground_horizon_color = Color( 0.223529, 0.192157, 0.164706, 1 ) +ground_curve = 0.101965 +ground_energy = 0.4 +sun_color = Color( 0.356863, 0.313726, 0.219608, 1 ) +sun_latitude = 39.71 +sun_longitude = -8.09 +sun_angle_min = 0.0 +sun_angle_max = 23.15 +sun_energy = 9.29 +texture_size = 0 + +[sub_resource type="Environment" id=2] +background_mode = 2 +background_sky = SubResource( 1 ) +ambient_light_color = Color( 0.870588, 0.870588, 0.870588, 1 ) +ambient_light_energy = 1.67 +ambient_light_sky_contribution = 0.09 +fog_enabled = true +fog_color = Color( 0.184314, 0.207843, 0.156863, 1 ) +fog_sun_color = Color( 0.196078, 0.266667, 0.309804, 1 ) +fog_sun_amount = 0.53 +fog_depth_begin = 155.9 +fog_depth_end = 379.9 +fog_depth_curve = 1.18921 +tonemap_mode = 2 +tonemap_exposure = 0.83 +auto_exposure_max_luma = 7.33 +ss_reflections_enabled = true +ssao_enabled = true +glow_levels/3 = false +glow_intensity = 1.6 +glow_strength = 1.1 +glow_bloom = 0.1 +glow_hdr_luminance_cap = 1.0 + +[node name="World" type="Spatial" groups=[ +"save", +]] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource( 2 ) +__meta__ = { +"_editor_description_": "" +} + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( -0.797163, 0.45442, 0.397535, 0.124932, -0.520028, 0.844963, 0.590697, 0.723238, 0.357776, 0, 18.834, 0 ) +layers = 3 +light_color = Color( 1, 0.878431, 0.878431, 1 ) +light_energy = 0.87 +light_specular = 0.65 +shadow_bias = 0.07 +script = ExtResource( 3 ) diff --git a/game/scripts/ai/EntityAIGD.gd b/game/scripts/ai/EntityAIGD.gd new file mode 100644 index 0000000..293ad4f --- /dev/null +++ b/game/scripts/ai/EntityAIGD.gd @@ -0,0 +1,142 @@ +extends EntityAI +class_name EntityAIGD + +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019-2020 Péter Magyar + +# 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. + +var _data : Dictionary = { + "target_aura_spells": {}, + "spells": [] +} + +func _ready(): + pass + +func _on_set_owner(): + if not is_instance_valid(owner): + return + + #owner.connect("starget_changed", self, "starget_changed") + + if not owner.sentity_data: + return + + var ent_data : EntityData = owner.sentity_data + + if not ent_data.entity_class_data: + return + + var class_data : EntityClassData = ent_data.entity_class_data + + for i in range(class_data.get_num_spells()): + var spell : Spell = class_data.get_spell(i) + + if spell.spells_cast_on_target_num_get() > 0: + var aura : Spell = spell.spell_cast_on_target_get(0) + + if not _data["target_aura_spells"].has(aura.aura_group): + _data["target_aura_spells"][aura.aura_group] = [] + + _data["target_aura_spells"][aura.aura_group].append({ "aura_id": aura.id, "spell_id": spell.id, "rank": spell.rank }) + + continue + + _data["spells"].append(spell.id) + + for key in _data["target_aura_spells"]: + var arr : Array = _data["target_aura_spells"][key] + + arr.sort_custom(self, "sort_spells_by_rank") + + +func _update(delta): + if owner.ai_state == EntityEnums.AI_STATE_ATTACK: + attack(delta) + +func attack(delta): + var target : Entity = owner.starget + + if target == null: + owner.ai_state = EntityEnums.AI_STATE_REGENERATE + owner.get_body().target_movement_direction = Vector2() + return + + var cast : bool = false + if not owner.gcd_hass(): + var taspellsdict : Dictionary = _data["target_aura_spells"] + + for taskey in taspellsdict.keys(): + for tas in taspellsdict[taskey]: + var spell_id : int = tas["spell_id"] + + if not owner.spell_hass_id(spell_id): + continue + + if taskey == null: + if target.aura_gets_by(owner, tas["aura_id"]) == null and not owner.cooldown_hass(spell_id): + owner.spell_crequest_cast(spell_id) + cast = true + break + else: + if target.aura_gets_with_group_by(owner, taskey) == null and not owner.cooldown_hass(spell_id): + owner.spell_crequest_cast(spell_id) + cast = true + break + if cast: + break + + if not cast: + var sps : Array = _data["spells"] + + for spell_id in sps: + if not owner.spell_hass_id(spell_id): + continue + + if not owner.cooldown_hass(spell_id): + owner.spell_crequest_cast(spell_id) + cast = true + break + + if owner.cast_is_castings(): + owner.get_body().target_movement_direction = Vector2() + return + + owner.get_body().target_movement_direction = Vector2() + + var dir : Vector2 = target.get_body().position - owner.get_body().position + var l = dir.length() + + if l > 2.5: + owner.get_body().target_movement_direction = Vector2(dir.x, dir.y) + +func sort_spells_by_rank(a, b): + if a == null or b == null: + return true + + return a["rank"] > b["rank"] + +func starget_changed(entity: Entity, old_target: Entity): + if entity: + owner.ai_state = EntityEnums.AI_STATE_ATTACK + else: + owner.ai_state = EntityEnums.AI_STATE_OFF diff --git a/game/scripts/auras/CastTimeReductionAura.gd b/game/scripts/auras/CastTimeReductionAura.gd new file mode 100644 index 0000000..eabbf6e --- /dev/null +++ b/game/scripts/auras/CastTimeReductionAura.gd @@ -0,0 +1,9 @@ +extends SpellGD + +export(String) var spell_name : String +export(float) var reduction_value : float + +func _notification_aura_ccasta(what : int, data : AuraData, info: SpellCastInfo): + if SpellEnums.NOTIFICATION_CAST_STARTED: + if info.spell.get_name() == spell_name: + info.cast_time -= reduction_value diff --git a/game/scripts/auras/SpeedModAura.gd b/game/scripts/auras/SpeedModAura.gd new file mode 100644 index 0000000..98f9963 --- /dev/null +++ b/game/scripts/auras/SpeedModAura.gd @@ -0,0 +1,26 @@ +extends SpellGD + +export(bool) var does_stack : bool = true +export(float) var mod_speed : float = 0 + +func apply_mods(ad : AuraData): + #slows never stack + if mod_speed < 0: + ad.owner.gets_speed().add_non_stacking_mod(mod_speed) + return + + if does_stack: + ad.owner.gets_speed().add_stacking_mod(mod_speed) + else: + ad.owner.gets_speed().add_non_stacking_mod(mod_speed) + +func deapply_mods(ad : AuraData): + #slows never stack + if mod_speed < 0: + ad.owner.gets_speed().remove_non_stacking_mod(mod_speed) + return + + if does_stack: + ad.owner.gets_speed().remove_stacking_mod(mod_speed) + else: + ad.owner.gets_speed().remove_non_stacking_mod(mod_speed) diff --git a/game/scripts/auras/SpellDamageModAura.gd b/game/scripts/auras/SpellDamageModAura.gd new file mode 100644 index 0000000..84f1de3 --- /dev/null +++ b/game/scripts/auras/SpellDamageModAura.gd @@ -0,0 +1,14 @@ +extends SpellGD + +export(String) var spell_name : String +export(float) var mod_value : float + +func _sapply_passives_damage_deal(data : SpellDamageInfo): + var spell : Spell = data.spell_source_get() + + if !spell: + return + + if spell.get_name() == spell_name: + data.damage *= (100.0 + mod_value) / 100.0 + diff --git a/game/scripts/entities/EntityClassDataGD.gd b/game/scripts/entities/EntityClassDataGD.gd new file mode 100644 index 0000000..b4938f3 --- /dev/null +++ b/game/scripts/entities/EntityClassDataGD.gd @@ -0,0 +1,117 @@ +extends EntityClassData + +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019-2020 Péter Magyar + +# 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. + +var _data : Dictionary = { + "target_aura_spells": {}, + "spells": [] +} + +func _init(): + for i in range(get_num_spells()): + var spell : Spell = get_spell(i) + + if spell.spells_cast_on_target_num_get() > 0: + var aura : Spell = spell.spell_cast_on_target_get(0) + + if not _data["target_aura_spells"].has(aura.aura_group): + _data["target_aura_spells"][aura.aura_group] = [] + + _data["target_aura_spells"][aura.aura_group].append({ "aura_id": aura.id, "spell_id": spell.id, "rank": spell.rank }) + + continue + + _data["spells"].append(spell.id) + + for key in _data["target_aura_spells"]: + var arr : Array = _data["target_aura_spells"][key] + + arr.sort_custom(self, "sort_spells_by_rank") + + +func _sai_attack(entity): + var mob : Entity = entity as Entity + + var target : Entity = entity.starget + + if mob != null and target == null: + mob.ai_state = EntityEnums.AI_STATE_REGENERATE + mob.target_movement_direction = Vector2() + return + + var cast : bool = false + if not entity.gcd_hass(): + var taspellsdict : Dictionary = _data["target_aura_spells"] + + for taskey in taspellsdict.keys(): + for tas in taspellsdict[taskey]: + var spell_id : int = tas["spell_id"] + + if not entity.spell_hass_id(spell_id): + continue + + if taskey == null: + if target.aura_gets_by(entity, tas["aura_id"]) == null and not entity.cooldown_hass(spell_id): + entity.spell_crequest_cast(spell_id) + cast = true + break + else: + if target.aura_gets_with_group_by(entity, taskey) == null and not entity.cooldown_hass(spell_id): + entity.spell_crequest_cast(spell_id) + cast = true + break + if cast: + break + + if not cast: + var sps : Array = _data["spells"] + + for spell_id in sps: + if not entity.spell_hass_id(spell_id): + continue + + if not entity.cooldown_hass(spell_id): + entity.spell_crequest_cast(spell_id) + cast = true + break + + + if entity.cast_is_castings(): + mob.target_movement_direction = Vector2() + return + + var dir : Vector3 = target.translation - entity.translation + + mob.target_movement_direction = Vector2(dir.x, dir.z) + +#func _setup_resources(entity): +# var p : EntityResource = ManaResource.new() +# +# entity.resource_adds(p) + +func sort_spells_by_rank(a, b): + if a == null or b == null: + return true + + return a["rank"] > b["rank"] diff --git a/game/scripts/entities/EntityDataGD.gd b/game/scripts/entities/EntityDataGD.gd new file mode 100644 index 0000000..6a1c16d --- /dev/null +++ b/game/scripts/entities/EntityDataGD.gd @@ -0,0 +1,65 @@ +extends EntityData +class_name EntityDataGD + +# Copyright Péter Magyar relintai@gmail.com +# MIT License, functionality from this class needs to be protable to the entity spell system + +# Copyright (c) 2019-2020 Péter Magyar + +# 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. + +func _sinteract(entity: Entity) -> void: + var target : Entity = entity.gets_target() + + if target == null or not is_instance_valid(target): + return + + if target.sentity_interaction_type == EntityEnums.ENITIY_INTERACTION_TYPE_LOOT: + if target.gets_entity_data().loot_db != null and target.sbag == null: + var ldb : LootDataBase = target.gets_entity_data().loot_db + + var loot : Array = Array() + + ldb.get_loot() + + var bag : Bag = Bag.new() + bag.set_size(loot.size()) + + for item in loot: + var it : ItemTemplate = item as ItemTemplate + + bag.add_item(it.create_item_instance()) + + target.sbag = bag + + entity.starget_bag = target.sbag + + entity.ssend_open_window(EntityEnums.ENTITY_WINDOW_LOOT) + elif target.sentity_interaction_type == EntityEnums.ENITIY_INTERACTION_TYPE_TRAIN: + entity.ssend_open_window(EntityEnums.ENTITY_WINDOW_TRAINER) + elif target.sentity_interaction_type == EntityEnums.ENITIY_INTERACTION_TYPE_VENDOR: + entity.ssend_open_window(EntityEnums.ENTITY_WINDOW_VENDOR) + +func _cans_interact(entity): + var target : Entity = entity.gets_target() + + if target == null or not is_instance_valid(target): + return false + + return true diff --git a/game/scripts/game_modules/DataManager.gd b/game/scripts/game_modules/DataManager.gd new file mode 100644 index 0000000..ff6f7f7 --- /dev/null +++ b/game/scripts/game_modules/DataManager.gd @@ -0,0 +1,78 @@ +extends Node + +const PLAYER_UI_INSTANCE : int = 0 + +export(PackedScene) var player_ui : PackedScene + +var _modules : Array + +func _ready() -> void: + ProfileManager.load() +# ESS.resource_db = ESSResourceDBMap.new() + ESS.resource_db = ESSResourceDBStatic.new() + ESS.resource_db.remap_ids = true +# ESS.load_all() + + initialize_modules() + +func initialize_modules() -> void: + _modules.clear() + + load_modules_at("res://") + + _modules.sort_custom(ModulePathSorter, "sort_ascending") + + for module in _modules: + if module.has_method("load_module"): + module.load_module() + +func load_modules_at(path : String) -> void: + var dir = Directory.new() + if dir.open(path) == OK: + dir.list_dir_begin() + var file_name = dir.get_next() + while file_name != "": + if file_name == "." or file_name == "..": + file_name = dir.get_next() + continue + + if dir.current_is_dir(): + if path == "res://": + load_modules_at(path + file_name) + else: + load_modules_at(path + "/" + file_name) + else: + if file_name == "game_module.tres": + var res : Resource = null + + if path == "res://": + res = ResourceLoader.load(path + file_name) + else: + res = ResourceLoader.load(path + "/" + file_name) + + if res.enabled: + _modules.append(res) + + file_name = dir.get_next() + else: + print("An error occurred when trying to access the path: " + path) + + +func request_instance(what : int) -> Node: + var inst : Node = null + + if what == PLAYER_UI_INSTANCE: + inst = player_ui.instance() + inst.initialize() + + for module in _modules: +# if module.has_method("on_request_instance"): + module.on_request_instance(what, inst) + + return inst + +class ModulePathSorter: + static func sort_ascending(a, b): + if a.resource_path < b.resource_path: + return true + return false diff --git a/game/scripts/game_modules/DataManager.tscn b/game/scripts/game_modules/DataManager.tscn new file mode 100644 index 0000000..bd79578 --- /dev/null +++ b/game/scripts/game_modules/DataManager.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://scripts/game_modules/DataManager.gd" type="Script" id=1] +[ext_resource path="res://ui/player_ui/player_ui.tscn" type="PackedScene" id=2] + +[node name="DataManager" type="Node"] +script = ExtResource( 1 ) +player_ui = ExtResource( 2 ) diff --git a/game/scripts/game_modules/GameModule.gd b/game/scripts/game_modules/GameModule.gd new file mode 100644 index 0000000..d6b0629 --- /dev/null +++ b/game/scripts/game_modules/GameModule.gd @@ -0,0 +1,25 @@ +extends Resource +class_name GameModule + +export(bool) var enabled : bool = true + +export(ESSResourceDB) var resource_db : ESSResourceDB + +func load_module(): + if resource_db != null: + resource_db.initialize() + + ESS.resource_db.add_entity_resource_db(resource_db) + +# var r : ESSResourceDB = ESS.resource_db +# +# for e in r.get_entity_datas(): +# print(e.resource_path) +# print(e.get_id()) + +# for s in r.get_spells(): +# print(s.resource_name) +# print(s.get_id()) + +func on_request_instance(what : int, node : Node) -> void: + return diff --git a/game/scripts/game_modules/ui_gui_child_module.gd b/game/scripts/game_modules/ui_gui_child_module.gd new file mode 100644 index 0000000..4bb3d33 --- /dev/null +++ b/game/scripts/game_modules/ui_gui_child_module.gd @@ -0,0 +1,15 @@ +extends GameModule +class_name UIGuiChildModule + +export(PackedScene) var scene : PackedScene +export(bool) var hide : bool = false + +func on_request_instance(what : int, node : Node) -> void: + if what == DataManager.PLAYER_UI_INSTANCE: + var sc = scene.instance() + + node.gui_base.add_child(sc) + + if hide: + sc.hide() + diff --git a/game/scripts/game_modules/ui_window_module.gd b/game/scripts/game_modules/ui_window_module.gd new file mode 100644 index 0000000..43a7e66 --- /dev/null +++ b/game/scripts/game_modules/ui_window_module.gd @@ -0,0 +1,22 @@ +extends GameModule +class_name UIWindowModule + +export(PackedScene) var scene : PackedScene +export(Texture) var opener_button_texture : Texture +export(int) var index : int = -1 +export(bool) var add_button : bool = true + +func on_request_instance(what : int, node : Node) -> void: + if what == DataManager.PLAYER_UI_INSTANCE: + var sc = scene.instance() + + node.windows.add_child(sc) + + if add_button: + var b = node.buttons.add_image_button(opener_button_texture, index) + + b.connect("toggled", sc, "_on_button_toggled") + sc.opener_button = b + + sc.hide() + diff --git a/game/scripts/item_visuals/CharacterAtlas2D.gd b/game/scripts/item_visuals/CharacterAtlas2D.gd new file mode 100644 index 0000000..8479f2d --- /dev/null +++ b/game/scripts/item_visuals/CharacterAtlas2D.gd @@ -0,0 +1,27 @@ +extends CharacterAtlas +class_name CharacterAtlas2D + +# Copyright (c) 2019 Péter Magyar +# +# 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. + +export(String, MULTILINE) var comments : String + +export(Texture) var texture : Texture +export(Array, CharacterAtlasEntry) var slots : Array diff --git a/game/scripts/item_visuals/CharacterAtlasEntry2D.gd b/game/scripts/item_visuals/CharacterAtlasEntry2D.gd new file mode 100644 index 0000000..cd0cf99 --- /dev/null +++ b/game/scripts/item_visuals/CharacterAtlasEntry2D.gd @@ -0,0 +1,39 @@ +extends CharacterAtlasEntry +class_name CharacterAtlasEntry2D + +# Copyright (c) 2019 Péter Magyar +# +# 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. + +export(Rect2) var front_rect : Rect2 +export(Rect2) var back_rect : Rect2 +export(Rect2) var right_rect : Rect2 +export(Rect2) var left_rect : Rect2 + +func get_index(facing : int) -> Rect2: + if facing == CharacterSkeleton2DGD.CharacterFacing.FACING_FRONT: + return front_rect + if facing == CharacterSkeleton2DGD.CharacterFacing.FACING_BACK: + return back_rect + if facing == CharacterSkeleton2DGD.CharacterFacing.FACING_RIGHT: + return right_rect + if facing == CharacterSkeleton2DGD.CharacterFacing.FACING_LEFT: + return left_rect + + return front_rect diff --git a/game/scripts/item_visuals/ItemVisual2D.gd b/game/scripts/item_visuals/ItemVisual2D.gd new file mode 100644 index 0000000..3e41808 --- /dev/null +++ b/game/scripts/item_visuals/ItemVisual2D.gd @@ -0,0 +1,24 @@ +extends SkeletonModelEntry +class_name ItemVisual2D + +# Copyright (c) 2019 Péter Magyar +# +# 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. + +export(Array, ModelVisualEntry) var entries : Array diff --git a/game/scripts/item_visuals/ItemVisualEntry2D.gd b/game/scripts/item_visuals/ItemVisualEntry2D.gd new file mode 100644 index 0000000..5c7af61 --- /dev/null +++ b/game/scripts/item_visuals/ItemVisualEntry2D.gd @@ -0,0 +1,28 @@ +tool +extends SkeletonModelEntry +class_name ItemVisualEntry2D + +# Copyright (c) 2019 Péter Magyar +# +# 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. + +export (Texture) var front_texture : Texture +export (Texture) var back_texture : Texture +export (Texture) var left_texture : Texture +export (Texture) var right_texture : Texture diff --git a/game/scripts/items/ItemTemplateGD.gd b/game/scripts/items/ItemTemplateGD.gd new file mode 100644 index 0000000..e96fb07 --- /dev/null +++ b/game/scripts/items/ItemTemplateGD.gd @@ -0,0 +1,29 @@ +extends ItemTemplate +class_name ItemTemplateGD + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +func _create_item_instance(): + var ii : ItemInstance = ItemInstance.new() + + ii.item_template = self + + return ii diff --git a/game/scripts/networking/PlayerMaster.gd b/game/scripts/networking/PlayerMaster.gd new file mode 100644 index 0000000..e23069a --- /dev/null +++ b/game/scripts/networking/PlayerMaster.gd @@ -0,0 +1,40 @@ +extends Resource +class_name PlayerMaster + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +# Player info, associate ID to data +var player_info = {} +# Info we send to other players +var my_info = { name = "Testname", selected_class = 1 } +var sid : int + +var player : Entity + +func _init(): + pass + +func _notification(what : int) -> void: + if what == NOTIFICATION_PREDELETE: + #save + #cleanup + pass + diff --git a/game/scripts/networking/SpawnPoint.gd b/game/scripts/networking/SpawnPoint.gd new file mode 100644 index 0000000..7dc512d --- /dev/null +++ b/game/scripts/networking/SpawnPoint.gd @@ -0,0 +1,135 @@ +extends Spatial + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export (bool) var use_gui : bool = false +export (bool) var multi_player : bool = false +export (NodePath) var gui_path : NodePath +export (NodePath) var host_button_path : NodePath + +export (NodePath) var address_line_edit_path : NodePath +export (NodePath) var port_line_edit_path : NodePath + +export (NodePath) var connect_button_path : NodePath +export (NodePath) var naturalist_button_path : NodePath + +export (NodePath) var terrarin_path : NodePath + +var gui : Node +var host_button : Button +var address_line_edit : LineEdit +var port_line_edit : LineEdit +var connect_button : Button +var naturalist_button : Button + +var player : Entity +#var terrarin : VoxelWorld + +var spawned : bool = false + +var player_master : PlayerMaster + +func _ready(): + gui = get_node(gui_path) + host_button = get_node(host_button_path) + host_button.connect("pressed", self, "_on_host_button_clicked") + + address_line_edit = get_node(address_line_edit_path) + port_line_edit = get_node(port_line_edit_path) + + connect_button = get_node(connect_button_path) + connect_button.connect("pressed", self, "_on_client_button_clicked") + + naturalist_button = get_node(naturalist_button_path) + naturalist_button.connect("pressed", self, "_on_client_naturalist_button_clicked") + +# terrarin = get_node(terrarin_path) as VoxelWorld + + Server.connect("cplayer_master_created", self, "_cplayer_master_created") + + if not multi_player: + set_process(true) + else: + set_process(false) + + if use_gui: + gui.visible = true + +func _process(delta): + set_process(false) + + spawn() + +func spawn(): + if not spawned: + spawned = true + + if get_tree().network_peer == null: + player = ESS.entity_spawner.spawn_player(1, Vector3(10, 20, 10), "Player", "1", 1) + call_deferred("set_terrarin_player") +# +# ESS.entity_spawner.spawn_mob(1, 50, Vector3(20, 6, 20)) +# ESS.entity_spawner.spawn_mob(1, 50, Vector3(54, 6, 22)) +# ESS.entity_spawner.spawn_mob(1, 50, Vector3(76, 6, 54)) + +func set_terrarin_player(): + pass +# terrarin.set_player(player.get_body() as Spatial) + +func _on_host_button_clicked(): + get_tree().connect("network_peer_connected", self, "_network_peer_connected") + get_tree().connect("network_peer_disconnected", self, "_network_peer_disconnected") + + Server.start_hosting() + + spawn() + +func _on_client_button_clicked(): + + var addr : String = "127.0.0.1" if address_line_edit.text == "" else address_line_edit.text + var port : int = 0 if port_line_edit.text == "" else int(port_line_edit.text) + + Server.connect_to_server(addr, port) + + + +func _network_peer_connected(id : int): + print(id) + +func _network_peer_disconnected(id : int): + print(id) + +func _cplayer_master_created(pplayer_master): + player_master = pplayer_master as PlayerMaster + +func _on_client_naturalist_button_clicked(): + #Network.is + #set_class + + gui.visible = false + + if get_tree().network_peer != null: + Server.set_class() + else: + spawn() + + + diff --git a/game/scripts/resources/HealthResource.gd b/game/scripts/resources/HealthResource.gd new file mode 100644 index 0000000..20b2479 --- /dev/null +++ b/game/scripts/resources/HealthResource.gd @@ -0,0 +1,47 @@ +extends EntityResource +class_name HealthResource + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +var stamina_stat_id : int = 0 +var health_stat_id = 0 + +func _init(): + current_value = 100 + stamina_stat_id = ESS.stat_get_id("Stamina") + health_stat_id = ESS.stat_get_id("Health") + +func _ons_added(entity): + refresh() + +func _notification_sstat_changed(stat_id : int, value : float): + if stat_id == stamina_stat_id || stat_id == health_stat_id: + refresh() + +func refresh(): + var stamina : int = owner.stat_gets_current(stamina_stat_id) + var health : int = owner.stat_gets_current(health_stat_id) + + max_value = int(stamina) * 10 + int(health) + #todo fix this if this solution works well + current_value = max_value + + diff --git a/game/scripts/resources/ManaResource.gd b/game/scripts/resources/ManaResource.gd new file mode 100644 index 0000000..383f6f8 --- /dev/null +++ b/game/scripts/resources/ManaResource.gd @@ -0,0 +1,71 @@ +extends EntityResource +class_name ManaResource + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +var mana_regen : int = 10 +var tickrate : float = 2 +var timer : float = 0 + +var int_id : int = 0 +var spirit_id = 0 + +func _init(): + should_process = true + int_id = ESS.stat_get_id("Intellect") + spirit_id = ESS.stat_get_id("Spirit") + +func _ons_added(entity): + refresh() + +func _notification_sstat_changed(stat_id : int, value : float): + if stat_id == int_id || stat_id == spirit_id: + refresh() + +func refresh(): + var intellect : int = owner.stat_gets_current(int_id) + var spirit : int = owner.stat_gets_current(spirit_id) + + var m : bool = false + + if max_value == current_value: + m = true + + var nv : int = int(intellect) * 10 + + max_value = nv + + if m: + current_value = nv + + mana_regen = int(spirit) + +func _process_server(delta): + timer += delta + + if timer > tickrate: + timer -= tickrate + + if current_value < max_value: + current_value += mana_regen + + if current_value > max_value: + current_value = max_value diff --git a/game/scripts/resources/SpeedResource.gd b/game/scripts/resources/SpeedResource.gd new file mode 100644 index 0000000..6cecc29 --- /dev/null +++ b/game/scripts/resources/SpeedResource.gd @@ -0,0 +1,44 @@ +extends EntityResource +class_name SpeedResource + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + + +var speed_stat_id : int = 0 + +var base_value = 100 + +func _init(): + current_value = base_value + speed_stat_id = ESS.stat_get_id("Speed") + +func _ons_added(entity): + refresh() + +func _notification_sstat_changed(stat_id : int, value : float): + if stat_id == speed_stat_id: + refresh() + +func refresh(): + var speed_stat : int = owner.stat_gets_current(speed_stat_id) + + current_value = base_value + speed_stat * 0.01 + diff --git a/game/scripts/resources/spell_effect_visual_basic.gd b/game/scripts/resources/spell_effect_visual_basic.gd new file mode 100644 index 0000000..da00e7f --- /dev/null +++ b/game/scripts/resources/spell_effect_visual_basic.gd @@ -0,0 +1,37 @@ +extends SpellEffectVisual +class_name SpellEffectVisualBasic + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export (PackedScene) var spell_cast_effect_left_hand : PackedScene +export (PackedScene) var spell_cast_effect_right_hand : PackedScene + +export (PackedScene) var torso_aura_effect : PackedScene +export (float) var torso_aura_effect_time : float + +export (PackedScene) var root_aura_effect : PackedScene +export (float) var root_aura_effect_time : float + +export (PackedScene) var torso_spell_cast_finish_effect : PackedScene +export (float) var torso_spell_cast_finish_effect_time : float = 1 + +export (PackedScene) var root_spell_cast_finish_effect : PackedScene +export (float) var root_spell_cast_finish_effect_time : float = 1 diff --git a/game/scripts/settings/DirectionalLightSettings.gd b/game/scripts/settings/DirectionalLightSettings.gd new file mode 100644 index 0000000..078ccb7 --- /dev/null +++ b/game/scripts/settings/DirectionalLightSettings.gd @@ -0,0 +1,25 @@ +extends DirectionalLight + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +func _ready(): + shadow_enabled = ProjectSettings.get("rendering/quality/shadows/enabled") + diff --git a/game/scripts/spells/amplify_pain.gd b/game/scripts/spells/amplify_pain.gd new file mode 100644 index 0000000..d2842bf --- /dev/null +++ b/game/scripts/spells/amplify_pain.gd @@ -0,0 +1,37 @@ +extends SpellGD + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +func _cast_finishs(info : SpellCastInfo) -> void: + var target : Entity = info.target + + if not is_instance_valid(target): + return + + for i in range(target.aura_gets_count()): + + var ad : AuraData = target.aura_gets(i) + + if ad.caster == info.caster: + var aura : Spell = ad.aura + + if aura.aura_type & SpellEnums.AURA_TYPE_MAGIC != 0: + ad.time_since_last_tick += ad.tick diff --git a/game/scripts/spells/gd_spell_script.gd b/game/scripts/spells/gd_spell_script.gd new file mode 100644 index 0000000..8354ac1 --- /dev/null +++ b/game/scripts/spells/gd_spell_script.gd @@ -0,0 +1,359 @@ +extends Spell +class_name SpellGD + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +var gcd_id : int = 0 + +func _init(): + gcd_id = ESS.stat_get_id("Global Cooldown") + +func _cast_starts(info : SpellCastInfo) -> void: + if needs_target and info.target == null: + return + + if info.caster.cast_is_castings(): + return + + if cooldown_global_cooldown_enabled and info.caster.gcd_hass() or info.caster.category_cooldown_hass(spell_type) or info.caster.cooldown_hass(id): + return + + # Todo Add source info to SpellCastInfo (player, item, spell, etc) + #if !info.caster.spell_hass_id(id): + # return + + var entity_relation_type = info.caster.gets_relation_to(info.target) + + var ok = false + + if target_relation_type & TARGET_FRIENDLY or target_relation_type & TARGET_SELF: + if entity_relation_type == EntityEnums.ENTITY_RELATION_TYPE_FRIENDLY or entity_relation_type == EntityEnums.ENTITY_RELATION_TYPE_NEUTRAL: + ok = true + else: + if entity_relation_type == EntityEnums.ENTITY_RELATION_TYPE_HOSTILE: + info.target = info.caster + ok = true + + if target_relation_type & TARGET_ENEMY: + if entity_relation_type == EntityEnums.ENTITY_RELATION_TYPE_HOSTILE: + ok = true + + if !ok: + return + + if range_enabled: + if info.caster != info.target: + var c : Vector2 = info.caster.get_body().position + var t : Vector2 = info.target.get_body().position + + if (c - t).length() > range_range: + return + + if resource_cost != null and resource_cost.entity_resource_data != null: + var r : EntityResource = info.caster.resource_gets_id(resource_cost.entity_resource_data.id) + + if r == null: + return + + if r.current_value < resource_cost.cost: + return + + if cast_enabled: + info.caster.cast_starts(info) + return + + if resource_cost != null and resource_cost.entity_resource_data != null: + var r : EntityResource = info.caster.resource_gets_id(resource_cost.entity_resource_data.id) + + r.current_value -= resource_cost.cost + + info.caster.notification_scast(SpellEnums.NOTIFICATION_CAST_FINISHED, info) + info.caster.notification_scast(SpellEnums.NOTIFICATION_CAST_SUCCESS, info) + + info.caster.notification_ccast(SpellEnums.NOTIFICATION_CAST_FINISHED, info) + + if info.target: + info.target.notification_scast(SpellEnums.NOTIFICATION_CAST_FINISHED_TARGET, info) + + handle_cooldown(info) + +# if projectile != null: +# handle_projectile(info) +# else: + handle_effect(info) + + handle_gcd(info) + +func _cast_finishs(info : SpellCastInfo) -> void: + if resource_cost != null and resource_cost.entity_resource_data != null: + var r : EntityResource = info.caster.resource_gets_id(resource_cost.entity_resource_data.id) + + if r.current_value < resource_cost.cost: + info.caster.son_cast_failed(info) + return + + r.current_value -= resource_cost.cost + + info.caster.notification_scast(SpellEnums.NOTIFICATION_CAST_FINISHED, info) + info.caster.notification_scast(SpellEnums.NOTIFICATION_CAST_SUCCESS, info) + + info.caster.notification_ccast(SpellEnums.NOTIFICATION_CAST_FINISHED, info) + + if is_instance_valid(info.target): + info.target.notification_scast(SpellEnums.NOTIFICATION_CAST_FINISHED_TARGET, info) + + if projectile_scene != null: + handle_projectile(info) + else: + handle_effect(info) + + handle_cooldown(info) + handle_gcd(info) + + +func _son_cast_player_moved(info): + if !cast_can_move_while_casting: + info.caster.cast_fails() + + +func handle_effect(info : SpellCastInfo) -> void: + if target_type == SPELL_TARGET_TYPE_TARGET: + if info.target == null: + return + +# var ok : bool = false + +# if (target_relation_type & TARGET_SELF): +# ok = true + +# if not ok and (target_relation_type & TARGET_ENEMY and info.target is Entity): +# ok = true +# +# if not ok and (target_relation_type & TARGET_FRIENDLY and info.target is Player): +# ok = true + +# if not ok: +# return + + #elif target_type == SPELL_TARGET_TYPE_SELF: + # info.target = info.caster + + if damage_enabled and info.target: + var sdi : SpellDamageInfo = SpellDamageInfo.new() + + sdi.spell_source = self + sdi.dealer = info.caster + sdi.receiver = info.target + + handle_spell_damage(sdi) + + if heal_enabled and info.target: + var shi : SpellHealInfo = SpellHealInfo.new() + + shi.spell_source = self + shi.dealer = info.caster + shi.receiver = info.target + + handle_spell_heal(shi) + + if is_aura(): + var ad : AuraData = AuraData.new() + + if aura_get_aura_group(): + ad = info.target.aura_gets_with_group_by(info.caster, aura_get_aura_group()) + else: + ad = info.target.aura_gets_by(info.caster, id) + + if ad: + info.target.aura_removes_exact(ad) + + var aai : AuraApplyInfo = AuraApplyInfo.new() + + aai.caster_set(info.caster) + aai.target_set(info.target) + aai.spell_scale_set(info.spell_scale) + aai.set_aura(self) + + aura_sapply(aai) + + for spell in spells_cast_on_caster: + if !spell: + continue + + var sci : SpellCastInfo = SpellCastInfo.new() + + sci.caster = info.caster + sci.target = info.caster + sci.has_cast_time = spell.cast_enabled + sci.cast_time = spell.cast_cast_time + sci.spell_scale = info.spell_scale + sci.set_spell(spell) + + spell.cast_starts(sci) + + if info.target != null: + for spell in spells_cast_on_target: + if !spell: + continue + + var sci : SpellCastInfo = SpellCastInfo.new() + + sci.caster = info.caster + sci.target = info.target + sci.has_cast_time = spell.cast_enabled + sci.cast_time = spell.cast_cast_time + sci.spell_scale = info.spell_scale + sci.set_spell(spell) + + spell.cast_starts(sci) + +func handle_cooldown(info : SpellCastInfo) -> void: + if cooldown_cooldown > 0: + info.caster.cooldown_adds(id, cooldown_cooldown) + +func handle_gcd(info : SpellCastInfo) -> void: + if cooldown_global_cooldown_enabled and not cast_enabled: + info.caster.gcd_starts(info.caster.stat_gets_current(gcd_id)) + +func add_spell_cast_effect(info : SpellCastInfo) -> void: + var basic_spell_effect : SpellEffectVisualBasic = visual_spell_effects as SpellEffectVisualBasic + + if basic_spell_effect != null: + if basic_spell_effect.spell_cast_effect_left_hand != null: + info.caster.get_character_skeleton().common_attach_point_add(EntityEnums.COMMON_SKELETON_POINT_LEFT_HAND, basic_spell_effect.spell_cast_effect_left_hand) + + if basic_spell_effect.spell_cast_effect_right_hand != null: + info.caster.get_character_skeleton().common_attach_point_add(EntityEnums.COMMON_SKELETON_POINT_RIGHT_HAND, basic_spell_effect.spell_cast_effect_right_hand) + +func remove_spell_cast_effect(info : SpellCastInfo) -> void: + var basic_spell_effect : SpellEffectVisualBasic = visual_spell_effects as SpellEffectVisualBasic + + if basic_spell_effect != null: + if basic_spell_effect.spell_cast_effect_left_hand != null: + info.caster.get_character_skeleton().common_attach_point_remove(EntityEnums.COMMON_SKELETON_POINT_LEFT_HAND, basic_spell_effect.spell_cast_effect_left_hand) + + if basic_spell_effect.spell_cast_effect_right_hand != null: + info.caster.get_character_skeleton().common_attach_point_remove(EntityEnums.COMMON_SKELETON_POINT_RIGHT_HAND, basic_spell_effect.spell_cast_effect_right_hand) + +func _notification_ccast(what, info): + if what == SpellEnums.NOTIFICATION_CAST_STARTED: + add_spell_cast_effect(info) + elif what == SpellEnums.NOTIFICATION_CAST_FAILED: + remove_spell_cast_effect(info) + elif what == SpellEnums.NOTIFICATION_CAST_FINISHED: + remove_spell_cast_effect(info) + elif what == SpellEnums.NOTIFICATION_CAST_INTERRUPTED: + remove_spell_cast_effect(info) + elif what == SpellEnums.NOTIFICATION_CAST_SUCCESS: + remove_spell_cast_effect(info) + + if not is_instance_valid(info.target): + return + + var bse : SpellEffectVisualBasic = visual_spell_effects as SpellEffectVisualBasic + + if bse != null: + if bse.torso_spell_cast_finish_effect != null: + info.target.get_character_skeleton().common_attach_point_add_timed(EntityEnums.COMMON_SKELETON_POINT_TORSO, bse.torso_spell_cast_finish_effect_time) + + if bse.root_spell_cast_finish_effect != null: + info.target.get_character_skeleton().common_attach_point_add_timed(EntityEnums.COMMON_SKELETON_POINT_ROOT, bse.root_spell_cast_finish_effect_time) + + +func _son_spell_hit(info): + handle_effect(info) + +func _aura_sapply(info : AuraApplyInfo) -> void: +# var add : bool = false + var ad : AuraData = info.target.aura_gets_by(info.caster, info.aura.id) + + if ad == null: +# add = true + ad = AuraData.new() + + setup_aura_data(ad, info); + + for i in range(aura_stat_attribute_get_count()): + info.target.stat_mod(aura_stat_attribute_get_stat(id), aura_stat_attribute_get_base_mod(i), aura_stat_attribute_get_bonus_mod(i), aura_stat_attribute_get_percent_mod(i)) + + if aura_states_add != 0: + for i in range(EntityEnums.ENTITY_STATE_TYPE_INDEX_MAX): + var t : int = 1 << i + + if aura_states_add & t != 0: + info.target.adds_state_ref(i) + + info.target.aura_adds(ad); + + apply_mods(ad) + else: + ad.remaining_time = aura_time + + +func _aura_sdeapply(data : AuraData) -> void: + for i in range(aura_stat_attribute_get_count()): + data.owner.stat_mod(aura_stat_attribute_get_stat(id), -aura_stat_attribute_get_base_mod(i), -aura_stat_attribute_get_bonus_mod(i), -aura_stat_attribute_get_percent_mod(i)) + + if aura_states_add != 0: + for i in range(EntityEnums.ENTITY_STATE_TYPE_INDEX_MAX): + var t : int = 1 << i + + if aura_states_add & t != 0: + data.owner.removes_state_ref(i) + + deapply_mods(data) + +func apply_mods(ad : AuraData): + pass + +func deapply_mods(ad : AuraData): + pass + + +func _con_aura_added(data : AuraData) -> void: + if data.owner.get_character_skeleton() == null or data.owner.get_character_skeleton().root_attach_point == null: + return + + var bse : SpellEffectVisualBasic = visual_spell_effects as SpellEffectVisualBasic + + if bse != null: + if bse.root_aura_effect != null: + if bse.root_aura_effect_time < 0.00001: + data.owner.get_character_skeleton().root_attach_point.add_effect(bse.root_aura_effect) + else: + data.owner.get_character_skeleton().root_attach_point.add_effect_timed(bse.root_aura_effect, bse.root_aura_effect_time) + + if bse.torso_aura_effect != null: + if bse.torso_aura_effect_time < 0.00001: + data.owner.get_character_skeleton().torso_attach_point.add_effect(bse.torso_aura_effect) + else: + data.owner.get_character_skeleton().torso_attach_point.add_effect_timed(bse.torso_aura_effect, bse.torso_aura_effect_time) + +func _con_aura_removed(data : AuraData) -> void: + var bse : SpellEffectVisualBasic = visual_spell_effects as SpellEffectVisualBasic + + if bse != null: + if bse.root_aura_effect != null and bse.root_aura_effect_time < 0.00001: + data.owner.get_character_skeleton().root_attach_point.remove_effect(bse.root_aura_effect) + + if bse.torso_aura_effect != null and bse.torso_aura_effect_time < 0.00001: + data.owner.get_character_skeleton().torso_attach_point.remove_effect(bse.torso_aura_effect) + diff --git a/game/scripts/ui/AdaptiveTheme.gd b/game/scripts/ui/AdaptiveTheme.gd new file mode 100644 index 0000000..c7665c1 --- /dev/null +++ b/game/scripts/ui/AdaptiveTheme.gd @@ -0,0 +1,50 @@ +extends Theme + +export(float) var content_margin_vertical_normal : float = 6 +export(float) var content_margin_vertical_touch : float = 10 + +export(float) var content_margin_horizontal_normal : float = 5 +export(float) var content_margin_horizontal_touch : float = 20 + +func _init(): + Settings.connect("setting_changed", self, "setting_changed") + Settings.connect("settings_loaded", self, "settings_loaded") + + if Settings.loaded: + adapt(Settings.get_value("ui", "touchscreen_mode")) + + +func setting_changed(section, key, value): + if section == "ui" and key == "touchscreen_mode": + adapt(value) + +func settings_loaded(): + adapt(Settings.get_value("ui", "touchscreen_mode")) + +func adapt(touchscreen_mode : bool) -> void: + var content_martgin_vert : float = 0 + var content_margin_horiz : float = 0 + + if touchscreen_mode: + content_martgin_vert = content_margin_vertical_touch + content_margin_horiz = content_margin_horizontal_touch + else: + content_martgin_vert = content_margin_vertical_normal + content_margin_horiz = content_margin_horizontal_normal + + for sbs in get_stylebox_list("Button"): + var sb : StyleBoxTexture = get_stylebox(sbs, "Button") as StyleBoxTexture + + if sb == null: + continue + + sb.content_margin_top = content_martgin_vert + sb.content_margin_bottom = content_martgin_vert + + sb.content_margin_left = content_margin_horiz + sb.content_margin_right = content_margin_horiz + + + + + diff --git a/game/spritesheet_generator/SSGen.tres b/game/spritesheet_generator/SSGen.tres new file mode 100644 index 0000000..f5fc475 --- /dev/null +++ b/game/spritesheet_generator/SSGen.tres @@ -0,0 +1,11 @@ +[gd_resource type="Image" format=2] + +[resource] +data = { +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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": 32, +"mipmaps": false, +"width": 512 +} + diff --git a/game/spritesheet_generator/SSGen.tscn b/game/spritesheet_generator/SSGen.tscn new file mode 100644 index 0000000..c66528e --- /dev/null +++ b/game/spritesheet_generator/SSGen.tscn @@ -0,0 +1,113 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://characters/CharacterFrontModel.tscn" type="PackedScene" id=1] +[ext_resource path="res://characters/CharacterSideModel.tscn" type="PackedScene" id=2] +[ext_resource path="res://spritesheet_generator/SheetGen.gd" type="Script" id=3] +[ext_resource path="res://testsave.png" type="Texture" id=4] +[ext_resource path="res://spritesheet_generator/SpriteMover.gd" type="Script" id=5] +[ext_resource path="res://characters/naturalist_characteratlas.tres" type="CharacterAtlas" id=6] +[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/nature2d/NatureCast.tscn" type="PackedScene" id=7] + +[sub_resource type="Environment" id=1] +ssao_enabled = true + +[sub_resource type="World" id=2] +environment = SubResource( 1 ) + +[node name="TextureAtlasGenerator" type="Node2D"] +script = ExtResource( 3 ) +_sprite_size = 38 +_sprite_num = 16 +_show_atlas = true +save_texture = true +animations = [ "run", "idle", "casting", "rest" ] +z_index_paths = [ NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/remote_arm_r/remote_hand_r"), NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l/hand_l") ] +instant_preview_path = NodePath("InstantPreview") +sprite_preview_path = NodePath("SpritePreview") +viewport_path = NodePath("Viewport") +atlas_preview_path = NodePath("AtlasPreview") +model_front_path = NodePath("Viewport/Node2D/CharacterFrontModel") +model_front_animation_player_path = NodePath("Viewport/Node2D/CharacterFrontModel/AnimationPlayer") +model_front_animation_tree_player_path = NodePath("Viewport/Node2D/CharacterFrontModel/AnimationTree") +model_side_path = NodePath("Viewport/Node2D/CharacterSideModel") +model_side_animation_player_path = NodePath("Viewport/Node2D/CharacterSideModel/AnimationPlayer") +model_side_animation_tree_player_path = NodePath("Viewport/Node2D/CharacterSideModel/AnimationTree") +cast_animation_index = 2 +cast_animation_scene = ExtResource( 7 ) +cast_animation_paths = [ NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l/hand_l/end"), NodePath("Viewport/Node2D/CharacterSideModel/Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Viewport/Node2D/CharacterSideModel/Hip/Torso/arm_l/hand_l/end") ] + +[node name="Viewport" type="Viewport" parent="."] +size = Vector2( 64, 64 ) +own_world = true +world = SubResource( 2 ) +transparent_bg = true +handle_input_locally = false +hdr = false +usage = 0 +render_target_v_flip = true +render_target_update_mode = 3 + +[node name="Camera" type="Camera2D" parent="Viewport"] +position = Vector2( 0, -15.726 ) +z_index = 2 +current = true + +[node name="Node2D" type="Node2D" parent="Viewport"] + +[node name="CharacterFrontModel" parent="Viewport/Node2D" instance=ExtResource( 1 )] +_atlas = ExtResource( 6 ) + +[node name="Torso" parent="Viewport/Node2D/CharacterFrontModel/Hip" index="1"] +position = Vector2( 0, -2.289 ) + +[node name="hand_l" parent="Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l" index="0"] +z_index = 1 + +[node name="AnimationTree" parent="Viewport/Node2D/CharacterFrontModel" index="2"] +active = false + +[node name="CharacterSideModel" parent="Viewport/Node2D" instance=ExtResource( 2 )] +visible = false +rotation = 3.14147 +scale = Vector2( 1, -1 ) +_atlas = ExtResource( 6 ) + +[node name="arm_r" parent="Viewport/Node2D/CharacterSideModel" index="0"] +position = Vector2( -3.50004, -24.6155 ) + +[node name="hand_r" parent="Viewport/Node2D/CharacterSideModel" index="1"] +position = Vector2( -3.50004, -19.1155 ) +z_index = 1 + +[node name="Torso" parent="Viewport/Node2D/CharacterSideModel/Hip" index="3"] +position = Vector2( 0, -2 ) + +[node name="AnimationTree" parent="Viewport/Node2D/CharacterSideModel" index="4"] +active = false + +[node name="InstantPreview" type="Sprite" parent="."] + +[node name="SpritePreview" type="Sprite" parent="."] + +[node name="AtlasPreview" type="Sprite" parent="."] +position = Vector2( 603.531, 254.594 ) + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 101.579, 162.161 ) +texture = ExtResource( 4 ) +hframes = 16 +vframes = 16 +frame = 9 +script = ExtResource( 5 ) + +[node name="Test" type="Sprite" parent="."] +position = Vector2( -91.0568, 21.4517 ) +texture = ExtResource( 4 ) +hframes = 16 +vframes = 16 + +[node name="Camera2D" type="Camera2D" parent="."] +current = true + +[editable path="Viewport/Node2D/CharacterFrontModel"] +[editable path="Viewport/Node2D/CharacterSideModel"] diff --git a/game/spritesheet_generator/SSGenv2.tscn b/game/spritesheet_generator/SSGenv2.tscn new file mode 100644 index 0000000..a0fcff6 --- /dev/null +++ b/game/spritesheet_generator/SSGenv2.tscn @@ -0,0 +1,138 @@ +[gd_scene load_steps=12 format=2] + +[ext_resource path="res://characters/CharacterFrontModel.tscn" type="PackedScene" id=1] +[ext_resource path="res://characters/CharacterSideModel.tscn" type="PackedScene" id=2] +[ext_resource path="res://spritesheet_generator/SheetGenv2.gd" type="Script" id=3] +[ext_resource path="res://testsave.png" type="Texture" id=4] +[ext_resource path="res://spritesheet_generator/SpriteMover.gd" type="Script" id=5] +[ext_resource path="res://characters/naturalist_characteratlas.tres" type="CharacterAtlas" id=6] +[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/nature2d/NatureCast.tscn" type="PackedScene" id=7] + +[sub_resource type="Environment" id=1] +ssao_enabled = true + +[sub_resource type="World" id=2] +environment = SubResource( 1 ) + +[sub_resource type="Environment" id=3] + +[sub_resource type="World" id=4] +environment = SubResource( 3 ) + +[node name="TextureAtlasGenerator" type="Node2D"] +script = ExtResource( 3 ) +_sprite_size = 26 +_sprite_num = 16 +outline_color = Color( 0.027451, 0.027451, 0.027451, 1 ) +_show_atlas = true +save_texture = true +animations = [ "run", "idle", "casting", "rest" ] +z_index_paths = [ NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/remote_arm_r/remote_hand_r"), NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l/hand_l") ] +wp2_sprite3d_path = NodePath("Viewport2/Sprite3D") +instant_preview_path = NodePath("InstantPreview") +sprite_preview_path = NodePath("SpritePreview") +viewport_path = NodePath("Viewport") +viewport2_path = NodePath("Viewport2") +atlas_preview_path = NodePath("AtlasPreview") +model_front_path = NodePath("Viewport/Node2D/CharacterFrontModel") +model_front_animation_player_path = NodePath("Viewport/Node2D/CharacterFrontModel/AnimationPlayer") +model_front_animation_tree_player_path = NodePath("Viewport/Node2D/CharacterFrontModel/AnimationTree") +model_side_path = NodePath("Viewport/Node2D/CharacterSideModel") +model_side_animation_player_path = NodePath("Viewport/Node2D/CharacterSideModel/AnimationPlayer") +model_side_animation_tree_player_path = NodePath("Viewport/Node2D/CharacterSideModel/AnimationTree") +cast_animation_index = 2 +cast_animation_scene = ExtResource( 7 ) +cast_animation_paths = [ NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l/hand_l/end"), NodePath("Viewport/Node2D/CharacterSideModel/Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Viewport/Node2D/CharacterSideModel/Hip/Torso/arm_l/hand_l/end") ] + +[node name="Viewport" type="Viewport" parent="."] +size = Vector2( 64, 64 ) +own_world = true +world = SubResource( 2 ) +transparent_bg = true +handle_input_locally = false +hdr = false +usage = 0 +render_target_v_flip = true +render_target_update_mode = 3 + +[node name="Camera" type="Camera2D" parent="Viewport"] +position = Vector2( 0, -15.726 ) +z_index = 2 +current = true + +[node name="Node2D" type="Node2D" parent="Viewport"] + +[node name="CharacterFrontModel" parent="Viewport/Node2D" instance=ExtResource( 1 )] +_atlas = ExtResource( 6 ) + +[node name="Torso" parent="Viewport/Node2D/CharacterFrontModel/Hip" index="1"] +position = Vector2( 0, -2.289 ) + +[node name="hand_l" parent="Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l" index="0"] +z_index = 1 + +[node name="AnimationTree" parent="Viewport/Node2D/CharacterFrontModel" index="2"] +active = false + +[node name="CharacterSideModel" parent="Viewport/Node2D" instance=ExtResource( 2 )] +visible = false +rotation = 3.14147 +scale = Vector2( 1, -1 ) +_atlas = ExtResource( 6 ) + +[node name="arm_r" parent="Viewport/Node2D/CharacterSideModel" index="0"] +position = Vector2( -3.50004, -24.6155 ) + +[node name="hand_r" parent="Viewport/Node2D/CharacterSideModel" index="1"] +position = Vector2( -3.50004, -19.1155 ) +z_index = 1 + +[node name="Torso" parent="Viewport/Node2D/CharacterSideModel/Hip" index="3"] +position = Vector2( 0, -2 ) + +[node name="AnimationTree" parent="Viewport/Node2D/CharacterSideModel" index="4"] +active = false + +[node name="Viewport2" type="Viewport" parent="."] +size = Vector2( 64, 64 ) +own_world = true +world = SubResource( 4 ) +transparent_bg = true +handle_input_locally = false +keep_3d_linear = true +render_target_v_flip = true +render_target_update_mode = 3 + +[node name="Camera" type="Camera" parent="Viewport2"] +transform = Transform( 1, 0, 0, 0, 0.889783, 0.456384, 0, -0.456384, 0.889783, 0, 0.154229, 0.172536 ) +projection = 1 +current = true + +[node name="Sprite3D" type="Sprite3D" parent="Viewport2"] + +[node name="InstantPreview" type="Sprite" parent="."] + +[node name="SpritePreview" type="Sprite" parent="."] + +[node name="AtlasPreview" type="Sprite" parent="."] +position = Vector2( 603.531, 254.594 ) + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 101.579, 162.161 ) +texture = ExtResource( 4 ) +hframes = 16 +vframes = 16 +frame = 9 +script = ExtResource( 5 ) + +[node name="Test" type="Sprite" parent="."] +position = Vector2( -91.0568, 21.4517 ) +texture = ExtResource( 4 ) +hframes = 16 +vframes = 16 + +[node name="Camera2D" type="Camera2D" parent="."] +current = true + +[editable path="Viewport/Node2D/CharacterFrontModel"] +[editable path="Viewport/Node2D/CharacterSideModel"] diff --git a/game/spritesheet_generator/SheetGen.gd b/game/spritesheet_generator/SheetGen.gd new file mode 100644 index 0000000..c03d007 --- /dev/null +++ b/game/spritesheet_generator/SheetGen.gd @@ -0,0 +1,314 @@ +extends Node + +export (int) var _sprite_size +export (int) var _sprite_num +var _directions : int = 4 + +export (bool) var _show_atlas = false + +export (bool) var save_texture = false + +export (bool) var generate : bool = false setget set_generate, get_generate + +export (String) var output_file_name : String = "res://testsave.png" + +export(bool) var outline_image : bool = true +export(Color) var outline_color : Color = Color(0, 0, 0, 1) + +export(bool) var modulate_image_color : bool = true +export(Color) var modulate_color : Color = Color(1, 1, 1, 1) + +export (Array, String) var animations : Array +export (Array, NodePath) var z_index_paths : Array + +export (NodePath) var instant_preview_path +export (NodePath) var sprite_preview_path +export (NodePath) var viewport_path +export (NodePath) var atlas_preview_path + +export (NodePath) var model_front_path +export (NodePath) var model_front_animation_player_path +export (NodePath) var model_front_animation_tree_player_path +export (NodePath) var model_side_path +export (NodePath) var model_side_animation_player_path +export (NodePath) var model_side_animation_tree_player_path + +export(int) var cast_animation_index : int = 0 +export(PackedScene) var cast_animation_scene : PackedScene = null +export (Array, NodePath) var cast_animation_paths : Array +var cast_animations : Array + +var _viewport +var _viewport_texture +var _atlas +var _image_texture +var _atlas_texture + +var _instant_preview +var _sprite_preview +var _atlas_preview + +var _time = 0 +var _frame = 0 +var _index = 0 +var _direction = 0 +var _current_animation_index = 0 +var _current_animation_player = null + +var _running = false + +var _model_front +var _model_front_animation_player +var _model_front_animation_tree_player +var _model_side +var _model_side_animation_player +var _model_side_animation_tree_player + +var _texture + +var _first = true + +func _ready(): + _viewport = get_node(viewport_path) + + _instant_preview = get_node(instant_preview_path) + _sprite_preview = get_node(sprite_preview_path) + _atlas_preview = get_node(atlas_preview_path) + + var img = ImageTexture.new() + img.flags = 0 + img.create(_sprite_size, _sprite_size, 5, 0) + _sprite_preview.texture = img + + _model_front = get_node(model_front_path) + _model_front_animation_player = get_node(model_front_animation_player_path) + _model_front_animation_tree_player = get_node(model_front_animation_tree_player_path) + + if _model_side_animation_tree_player: + _model_front_animation_tree_player.active = false + + _model_side = get_node(model_side_path) + _model_side_animation_player = get_node(model_side_animation_player_path) + _model_side_animation_tree_player = get_node(model_side_animation_tree_player_path) + + if _model_side_animation_tree_player: + _model_side_animation_tree_player.active = false + + _model_front.hide() + _model_side.show() + + _viewport_texture = _viewport.get_texture() + + _texture = Image.new() + var frame = _viewport.get_texture().get_data() + _texture.create(_sprite_size * _sprite_num, _sprite_size * _directions * animations.size(), false, frame.get_format()) + + _running = true + set_process(true) + +func _process(delta): + #todo remove, only to make development easier + if !_viewport: + _ready() + + if _first: + _first = false + + setup_direction() + + setup_animation() + + return + + var frame = _viewport.get_texture().get_data() + + if modulate_image_color: + apply_modulate(frame) + + if outline_image: + generate_outline(frame) + + + _sprite_preview.get_texture().set_data(frame) + + if not _running: + return + + if _frame >= _sprite_num: + _frame = 0 + _index += 1 + _direction += 1 + + if _direction >= _directions: + _direction = 0 + + _current_animation_index += 1 + + setup_direction() + + if (_index >= _directions * animations.size()): + _running = false + create_atlas() + return + + setup_animation() + + return + + var ur = frame.get_used_rect() + var xx : float = 0 + xx = (_sprite_size - ur.size.x) / 2 + + _texture.blend_rect(frame, ur, Vector2((_frame * _sprite_size) + xx, (_index * _sprite_size))) + + _current_animation_player.seek(_frame * (_current_animation_player.current_animation_length / (_sprite_num)), true) + + _frame += 1 + +func setup_animation(): + _current_animation_player.play(animations[_current_animation_index]) + _current_animation_player.seek(0, true) + + if !cast_animation_scene: + return + + if _current_animation_index == cast_animation_index: + for cap in cast_animation_paths: + var n = get_node(cap) + + if !n: + continue + + var pa = cast_animation_scene.instance() + + cast_animations.push_back(pa) + + n.add_child(pa) + else: + for n in cast_animations: + n.queue_free() + + cast_animations.clear() + +#enum CharacterFacing +# FACING_FRONT = 0, +# FACING_BACK = 1, +# FACING_RIGHT = 2, +# FACING_LEFT = 3, + +func setup_direction(): + for a in cast_animations: + if a.has_method("get_z_index"): + a.z_index = 0 + + if _direction == 0: + _current_animation_player = _model_side_animation_player + _model_side.set_facing(2) + _model_side.transform.x.x = -1 + + _model_side.show() + _model_front.hide() + + for np in z_index_paths: + get_node(np).z_index = 0 + if _direction == 1: + _current_animation_player = _model_side_animation_player + _model_side.set_facing(3) + _model_side.transform.x.x = 1 + + _model_side.show() + _model_front.hide() + + for np in z_index_paths: + get_node(np).z_index = 0 + if _direction == 2: + _current_animation_player = _model_front_animation_player + _model_front.set_facing(0) + + _model_side.hide() + _model_front.show() + + for np in z_index_paths: + get_node(np).z_index = 0 + if _direction == 3: + _current_animation_player = _model_front_animation_player + _model_front.set_facing(1) + + _model_side.hide() + _model_front.show() + + for np in z_index_paths: + get_node(np).z_index = -1 + + for a in cast_animations: + if a.has_method("get_z_index"): + a.z_index = -1 + + +func generate_outline(img : Image): + img.lock() + + for x in range(1, img.get_size().x - 1): + for y in range(1, img.get_size().y - 1): + var c : Color = img.get_pixel(x, y) + + if is_zero_approx(c.a): + var cxn : Color = img.get_pixel(x - 1, y) + var cxp : Color = img.get_pixel(x + 1, y) + var cyn : Color = img.get_pixel(x, y - 1) + var cyp : Color = img.get_pixel(x, y + 1) + + if cxn.is_equal_approx(outline_color): + cxn.a = 0 + + if cxp.is_equal_approx(outline_color): + cxp.a = 0 + + if cyn.is_equal_approx(outline_color): + cyn.a = 0 + + if cyp.is_equal_approx(outline_color): + cyp.a = 0 + + if !is_zero_approx(cxn.a) || !is_zero_approx(cxp.a) || !is_zero_approx(cyn.a) || !is_zero_approx(cyp.a): + img.set_pixel(x, y, outline_color) + + img.unlock() + +func apply_modulate(img : Image): + img.lock() + + for x in range(1, img.get_width()): + for y in range(1, img.get_height()): + var c : Color = img.get_pixel(x, y) + + c *= modulate_color + + img.set_pixel(x, y, c) + + img.unlock() + +func create_atlas(): + _image_texture = ImageTexture.new() + _image_texture.create_from_image(_texture, 0) + + _image_texture.get_data().save_png(output_file_name) + + if save_texture: + _sprite_preview.set_texture(_image_texture) + + if _show_atlas: + _atlas_preview.set_texture(_image_texture) + + +func set_generate(v : bool) -> void: + if !v: + return + + #for easier development + _ready() + _running = true + #set_process(true) + +func get_generate() -> bool: + return false diff --git a/game/spritesheet_generator/SheetGenv2.gd b/game/spritesheet_generator/SheetGenv2.gd new file mode 100644 index 0000000..66e4a86 --- /dev/null +++ b/game/spritesheet_generator/SheetGenv2.gd @@ -0,0 +1,331 @@ +extends Node + +export (int) var _sprite_size +export (int) var _sprite_num +var _directions : int = 4 + +export(bool) var outline_image : bool = true +export(Color) var outline_color : Color = Color(0, 0, 0, 1) + +export (bool) var _show_atlas = false + +export (bool) var save_texture = false + +export (bool) var generate : bool = false setget set_generate, get_generate + +export (String) var output_file_name : String = "res://testsave.png" + +export (Array, String) var animations : Array +export (Array, NodePath) var z_index_paths : Array + +export (NodePath) var wp2_sprite3d_path + +export (NodePath) var instant_preview_path +export (NodePath) var sprite_preview_path +export (NodePath) var viewport_path +export (NodePath) var viewport2_path +export (NodePath) var atlas_preview_path + +export (NodePath) var model_front_path +export (NodePath) var model_front_animation_player_path +export (NodePath) var model_front_animation_tree_player_path +export (NodePath) var model_side_path +export (NodePath) var model_side_animation_player_path +export (NodePath) var model_side_animation_tree_player_path + +export(int) var cast_animation_index : int = 0 +export(PackedScene) var cast_animation_scene : PackedScene = null +export (Array, NodePath) var cast_animation_paths : Array +var cast_animations : Array + +var _wp2_sprite3d + +var _viewport +var _viewport_texture +var _viewport2 +var _viewport2_texture +var _atlas +var _image_texture +var _atlas_texture + +var _instant_preview +var _sprite_preview +var _atlas_preview + +var _time = 0 +var _frame = 0 +var _index = 0 +var _frame_atlas = 0 +var _index_atlas = 0 +var _direction = 0 +var _current_animation_index = 0 +var _current_animation_player = null + +var _running = false + +var _model_front +var _model_front_animation_player +var _model_front_animation_tree_player +var _model_side +var _model_side_animation_player +var _model_side_animation_tree_player + +var _texture +var _texture2 + +var _first = true +var _first_frame = true + +func _ready(): + _viewport = get_node(viewport_path) + _viewport2 = get_node(viewport2_path) + _wp2_sprite3d = get_node(wp2_sprite3d_path) + + _instant_preview = get_node(instant_preview_path) + _sprite_preview = get_node(sprite_preview_path) + _atlas_preview = get_node(atlas_preview_path) + + var img = ImageTexture.new() + img.flags = 0 + img.create(_sprite_size, _sprite_size, 5, 0) + _sprite_preview.texture = img + + var img2 = ImageTexture.new() + img2.flags = 0 + img2.create(64, 64, 5, 0) + _wp2_sprite3d.texture = img2 + + _model_front = get_node(model_front_path) + _model_front_animation_player = get_node(model_front_animation_player_path) + _model_front_animation_tree_player = get_node(model_front_animation_tree_player_path) + + if _model_side_animation_tree_player: + _model_front_animation_tree_player.active = false + + _model_side = get_node(model_side_path) + _model_side_animation_player = get_node(model_side_animation_player_path) + _model_side_animation_tree_player = get_node(model_side_animation_tree_player_path) + + if _model_side_animation_tree_player: + _model_side_animation_tree_player.active = false + + _model_front.hide() + _model_side.show() + + _viewport_texture = _viewport.get_texture() + + _texture = Image.new() + var frame = _viewport.get_texture().get_data() + _texture.create(64, 64, false, frame.get_format()) + + _texture2 = Image.new() + var frame2 = _viewport2.get_texture().get_data() + _texture2.create(_sprite_size * _sprite_num, _sprite_size * _directions * animations.size(), false, frame2.get_format()) + + + _running = true + set_process(true) + +func _process(delta): + if not _running: + return + + #todo remove, only to make development easier + if !_viewport || !_viewport2: + _ready() + + if _first: + _first = false + + setup_direction() + setup_animation() + + return + + var frame = _viewport.get_texture().get_data() + + _wp2_sprite3d.get_texture().set_data(frame) + + if _first_frame: + _first_frame = false + #we need to let the second step render the first image from the prev step + return + + var frame2 = _viewport2.get_texture().get_data() + + if outline_image: + generate_outline(frame2) + + var ur = frame2.get_used_rect() + var xx : float = 0 + xx = (_sprite_size - ur.size.x) / 2 + _texture2.blend_rect(frame2, ur, Vector2((_frame_atlas * _sprite_size) + xx, (_index_atlas * _sprite_size))) + _current_animation_player.seek(_frame_atlas * (_current_animation_player.current_animation_length / (_sprite_num)), true) + + if (_index >= _directions * animations.size()): + _running = false + create_atlas() + return + + _frame_atlas = _frame + _index_atlas = _index + + _sprite_preview.get_texture().set_data(frame2) + + if _frame >= _sprite_num: + _frame = 0 + _index += 1 + _direction += 1 + + if _direction >= _directions: + _direction = 0 + + _current_animation_index += 1 + + setup_direction() + + if (_index >= _directions * animations.size()): +# _running = false +# create_atlas() + return + + setup_animation() + + return + + _frame += 1 + +func setup_animation(): + _current_animation_player.play(animations[_current_animation_index]) + _current_animation_player.seek(0, true) + + if !cast_animation_scene: + return + + if _current_animation_index == cast_animation_index: + for cap in cast_animation_paths: + var n = get_node(cap) + + if !n: + continue + + var pa = cast_animation_scene.instance() + + cast_animations.push_back(pa) + + n.add_child(pa) + else: + for n in cast_animations: + n.queue_free() + + cast_animations.clear() + +#enum CharacterFacing +# FACING_FRONT = 0, +# FACING_BACK = 1, +# FACING_RIGHT = 2, +# FACING_LEFT = 3, + +func setup_direction(): + for a in cast_animations: + if a.has_method("get_z_index"): + a.z_index = 0 + + if _direction == 0: + _current_animation_player = _model_side_animation_player + _model_side.set_facing(2) + _model_side.transform.x.x = -1 + + _model_side.show() + _model_front.hide() + + for np in z_index_paths: + get_node(np).z_index = 0 + if _direction == 1: + _current_animation_player = _model_side_animation_player + _model_side.set_facing(3) + _model_side.transform.x.x = 1 + + _model_side.show() + _model_front.hide() + + for np in z_index_paths: + get_node(np).z_index = 0 + if _direction == 2: + _current_animation_player = _model_front_animation_player + _model_front.set_facing(0) + + _model_side.hide() + _model_front.show() + + for np in z_index_paths: + get_node(np).z_index = 0 + if _direction == 3: + _current_animation_player = _model_front_animation_player + _model_front.set_facing(1) + + _model_side.hide() + _model_front.show() + + for np in z_index_paths: + get_node(np).z_index = -1 + + for a in cast_animations: + if a.has_method("get_z_index"): + a.z_index = -1 + + +func generate_outline(img : Image): + img.lock() + + for x in range(1, img.get_size().x - 1): + for y in range(1, img.get_size().y - 1): + var c : Color = img.get_pixel(x, y) + + if is_zero_approx(c.a): + var cxn : Color = img.get_pixel(x - 1, y) + var cxp : Color = img.get_pixel(x + 1, y) + var cyn : Color = img.get_pixel(x, y - 1) + var cyp : Color = img.get_pixel(x, y + 1) + + if cxn.is_equal_approx(outline_color): + cxn.a = 0 + + if cxp.is_equal_approx(outline_color): + cxp.a = 0 + + if cyn.is_equal_approx(outline_color): + cyn.a = 0 + + if cyp.is_equal_approx(outline_color): + cyp.a = 0 + + if !is_zero_approx(cxn.a) || !is_zero_approx(cxp.a) || !is_zero_approx(cyn.a) || !is_zero_approx(cyp.a): + img.set_pixel(x, y, outline_color) + + img.unlock() + +func create_atlas(): + _image_texture = ImageTexture.new() + _image_texture.create_from_image(_texture2, 0) + + _image_texture.get_data().save_png(output_file_name) + + if save_texture: + _sprite_preview.set_texture(_image_texture) + + if _show_atlas: + _atlas_preview.set_texture(_image_texture) + + +func set_generate(v : bool) -> void: + if !v: + return + + #for easier development + _ready() + _running = true + #set_process(true) + +func get_generate() -> bool: + return false diff --git a/game/spritesheet_generator/Sprite3Ds.tscn b/game/spritesheet_generator/Sprite3Ds.tscn new file mode 100644 index 0000000..64c09ca --- /dev/null +++ b/game/spritesheet_generator/Sprite3Ds.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://icon.png" type="Texture" id=1] +[ext_resource path="res://spritesheet_generator/SpriteMover.gd" type="Script" id=2] + + + +[sub_resource type="SpatialMaterial" id=1] +flags_transparent = true +params_billboard_mode = 1 + +[node name="Sprite3D" type="Sprite3D"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.39352, 0 ) +material_override = SubResource( 1 ) +cast_shadow = 0 +flip_v = true +pixel_size = 0.064 +texture = ExtResource( 1 ) +vframes = 16 +hframes = 16 +script = ExtResource( 2 ) + diff --git a/game/spritesheet_generator/SpriteMover.gd b/game/spritesheet_generator/SpriteMover.gd new file mode 100644 index 0000000..06fc5a5 --- /dev/null +++ b/game/spritesheet_generator/SpriteMover.gd @@ -0,0 +1,82 @@ +extends Node + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + +var _sprite + +export (bool) var enabled = true +export(int) var _animset = 0 +export(int) var _animset_size = 16 +export(int) var _animset_count = 16 +var _min_frame = 0 +var _max_frame = 16 * 16 + +var x = 0 +var y = 0 +var timer = 0 +var _frame = 1 + +# Called when the node enters the scene tree for the first time. +func _ready(): + _sprite = get_node(".") + _sprite.set_frame(_min_frame) + #_sprite.set_position(Vector2(x, y)) + +func set_movement_vector(vector): + var a = Vector2(vector.x, vector.z) + a = a.normalized() + + var base = Vector2(0, -1) + + var angle = a.angle_to(base) + PI + + var slice = (2*PI) / _animset_count + + var num_slice = int(angle / slice) + + set_animset(num_slice) + +func set_animset(animest_id): + if (animest_id >= _animset_count): + _animset = _animset_count - 1 + + if (animest_id < 0): + _animset = 0 + + _animset = animest_id + + + #_min_frame = _animset * _animset_size + #_max_frame = _animset * _animset_size + _animset_size + +func _process(delta): + #set_animset(_animset) + + if not enabled: + set_process(false) + return + + timer += delta + + if (timer > 0.05): + timer -= 0.05 + _frame += 1 + + if _frame > _animset_size - 1: + _frame = 0 + + _sprite.set_frame(_frame + (_animset * _animset_size)) + + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func a_process(delta): + #x += int(delta * 300) + y += int(delta * 200) + + if y > 700: + y = -50 + + _sprite.set_position(Vector2(x, y)) diff --git a/game/spritesheet_generator_3d/SSGen.tres b/game/spritesheet_generator_3d/SSGen.tres new file mode 100644 index 0000000..f5fc475 --- /dev/null +++ b/game/spritesheet_generator_3d/SSGen.tres @@ -0,0 +1,11 @@ +[gd_resource type="Image" format=2] + +[resource] +data = { +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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": 32, +"mipmaps": false, +"width": 512 +} + diff --git a/game/spritesheet_generator_3d/SSGen.tscn b/game/spritesheet_generator_3d/SSGen.tscn new file mode 100644 index 0000000..dd9115a --- /dev/null +++ b/game/spritesheet_generator_3d/SSGen.tscn @@ -0,0 +1,137 @@ +[gd_scene load_steps=12 format=2] + +[ext_resource path="res://spritesheet_generator/SheetGen.gd" type="Script" id=3] +[ext_resource path="res://spritesheet_generator_3d/Spatial.tscn" type="PackedScene" id=4] +[ext_resource path="res://spritesheet_generator/SpriteMover.gd" type="Script" id=5] +[ext_resource path="res://spritesheet_generator/Sprite3Ds.tscn" type="PackedScene" id=6] + +[sub_resource type="ProceduralSky" id=1] + +[sub_resource type="Environment" id=2] +background_mode = 2 +background_sky = SubResource( 1 ) +background_color = Color( 0.364706, 0.364706, 0.364706, 1 ) +background_energy = 0.69 +ambient_light_color = Color( 1, 1, 1, 1 ) +ambient_light_energy = 0.68 +ambient_light_sky_contribution = 0.0 + +[sub_resource type="Environment" id=3] +background_mode = 1 +background_energy = 0.57 +ambient_light_color = Color( 0.113725, 0.113725, 0.113725, 1 ) +ambient_light_energy = 0.68 +ssao_enabled = true + +[sub_resource type="World" id=4] +environment = SubResource( 3 ) + +[sub_resource type="Environment" id=5] +background_mode = 1 +background_energy = 0.26 +ambient_light_color = Color( 0.113725, 0.113725, 0.113725, 1 ) +ambient_light_energy = 0.58 +ambient_light_sky_contribution = 0.1 +tonemap_exposure = 0.36 +tonemap_white = 0.47 + +[sub_resource type="ViewportTexture" id=6] +viewport_path = NodePath("Viewport") + +[sub_resource type="SpatialMaterial" id=7] +flags_transparent = true +params_billboard_mode = 1 + +[node name="Node" type="Node"] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource( 2 ) + +[node name="player2" parent="." instance=ExtResource( 4 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -34.2601 ) +visible = false + +[node name="player" parent="." instance=ExtResource( 4 )] +visible = false + +[node name="MicamoChar" parent="." instance=ExtResource( 4 )] + +[node name="Viewport" type="Viewport" parent="."] +size = Vector2( 32, 32 ) +own_world = true +world = SubResource( 4 ) +transparent_bg = true +handle_input_locally = false +hdr = false +render_target_v_flip = true +render_target_update_mode = 3 +script = ExtResource( 3 ) +_sprite_size = 32 +_sprite_num = 16 +save_texture = true + +[node name="MicamoChar" parent="Viewport" instance=ExtResource( 4 )] + +[node name="Camera" type="Camera" parent="Viewport"] +transform = Transform( 0.707107, -0.353553, 0.612372, 0, 0.866025, 0.5, -0.707107, -0.353553, 0.612372, 2.95796, 3.39896, 2.92486 ) +environment = SubResource( 5 ) +projection = 1 +current = true +size = 2.2 +near = 0.01 +far = 240.8 + +[node name="OmniLight" type="OmniLight" parent="Viewport"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 3.05496, 1.55159, 3.33238 ) +layers = 3 +light_color = Color( 0.952941, 0.929412, 0.807843, 1 ) +light_energy = 0.74 +light_indirect_energy = 1.27 +light_specular = 0.15 +omni_range = 6.4 +omni_attenuation = 1.1487 + +[node name="OmniLight2" type="OmniLight" parent="Viewport"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1.4893, 3.88558, -2.30035 ) +light_color = Color( 0.898039, 0.898039, 0.729412, 1 ) +light_energy = 0.58 +light_indirect_energy = 2.95 +omni_range = 4.3 + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 837.448, 475.588 ) +centered = false +flip_v = true +hframes = 16 +vframes = 16 +script = ExtResource( 5 ) + +[node name="Camera" type="Camera" parent="."] +transform = Transform( 0.707107, -0.353553, 0.612372, 0, 0.866026, 0.5, -0.707107, -0.353553, 0.612372, 13.5879, 9.78323, 18.7533 ) +projection = 1 +current = true +size = 10.0 + +[node name="Sprite2" type="Sprite" parent="."] +position = Vector2( 179.55, 160.55 ) +texture = SubResource( 6 ) +flip_v = true + +[node name="Sprite3" type="Sprite" parent="."] +position = Vector2( 603.531, 254.594 ) +flip_v = true + +[node name="Sprite3D" type="Sprite3D" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 8.18889, 0, 14.9987 ) +material_override = SubResource( 7 ) +cast_shadow = 0 +flip_v = true +pixel_size = 0.0156 +hframes = 16 +vframes = 16 +script = ExtResource( 5 ) + +[node name="Sprite3D2" parent="." instance=ExtResource( 6 )] +visible = false + +[editable path="Viewport/MicamoChar"] diff --git a/game/spritesheet_generator_3d/SheetGen.gd b/game/spritesheet_generator_3d/SheetGen.gd new file mode 100644 index 0000000..909e1c3 --- /dev/null +++ b/game/spritesheet_generator_3d/SheetGen.gd @@ -0,0 +1,129 @@ +extends Node + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" +export (int) var _sprite_size +export (int) var _sprite_num +export (int) var _directions + +export (bool) var _show_atlas = false + +export (bool) var save_texture = false + +export (NodePath) var _atlas_show_sprite_path +export (NodePath) var _sprite_path +export (NodePath) var _animation_player_path +export (NodePath) var _player_path +export (NodePath) var _animation_tree_player_path + +var _viewport +var _viewport_texture +var _sprite +var _animation_player +var _time = 0 +var _animation_tree_player +var _frame = 0 +var _rotcount = 0 +var _rotation = 0 +var _atlas +var _image_texture +var _running = false +var _atlas_sprite_show_node +var _atlas_texture +var _player + +var _texture + +# Called when the node enters the scene tree for the first time. +func _ready(): + _viewport = get_node(".") + #_viewport.set + _sprite = get_node(_sprite_path) + _atlas_sprite_show_node = get_node(_atlas_show_sprite_path) + _animation_player = get_node(_animation_player_path) + _player = get_node(_player_path) + _animation_tree_player = get_node(_animation_tree_player_path) + _viewport_texture = _viewport.get_texture() + + _texture = Image.new() + var frame = _viewport.get_texture().get_data() + _texture.create(_sprite_size * _sprite_num, _sprite_size * _directions, false, frame.get_format()) + + yield(get_tree(), "idle_frame") + yield(get_tree(), "idle_frame") + + _running = true + + #_generated_image = Image.new() + #_generated_image. + #_sprite.set_texture(_viewport_texture) + + + #_frame_data.clear() + + #_generated_image.create_from_data(64, 64, false, Image.FORMAT_RGBA4444, texture.get_data().get_data()) + #texture = _viewport.get_texture() + #_sprite.set_texture(texture) + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + + #if not _running and Input.is_key_pressed(KEY_K): + # _running = true + + if not _running: + return + + #_viewport.update_worlds() + + var frame = _viewport.get_texture().get_data() + + + #if _frame == 0 and _rotcount == 0: + + _texture.blend_rect(frame, frame.get_used_rect(), Vector2((_frame * _sprite_size), (_rotcount * _sprite_size))) + + #_time += 0.3 + #_animation_player.seek (_time , true ) + _frame += 1 + + if _frame > _sprite_num - 1: + _frame = 0 + + _rotcount += 1 + + if (_rotcount > _sprite_num - 1): + _running = false + create_atlas() + return + + #var m3 = Basis() + #m3 = m3.rotated( Vector3(0,1,0), 0.19625 ) + _player.rotate_y((PI*2)/float(_directions)) + + _animation_player.play("default") + #_rotation = _rotcount * 22.5 + #_player.tra + + + #return + + #0.83 + _animation_player.seek(_frame * (_animation_player.current_animation_length / (_sprite_num - 1)), true) + #_animation_tree_player.advance(0.05) + + +func create_atlas(): + _image_texture = ImageTexture.new() + _image_texture.create_from_image(_texture, 0) + + _image_texture.get_data().save_png("res://testsave.png") + + if save_texture: + _sprite.set_texture(_image_texture) + + if _show_atlas: + _atlas_sprite_show_node.set_texture(_image_texture) + + pass diff --git a/game/spritesheet_generator_3d/Spatial.tscn b/game/spritesheet_generator_3d/Spatial.tscn new file mode 100644 index 0000000..19bd56d --- /dev/null +++ b/game/spritesheet_generator_3d/Spatial.tscn @@ -0,0 +1,3 @@ +[gd_scene format=2] + +[node name="Spatial" type="Spatial"] diff --git a/game/spritesheet_generator_3d/Sprite3Ds.tscn b/game/spritesheet_generator_3d/Sprite3Ds.tscn new file mode 100644 index 0000000..ae62d54 --- /dev/null +++ b/game/spritesheet_generator_3d/Sprite3Ds.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://testsave.png" type="Texture" id=1] +[ext_resource path="res://spritesheet_generator/SpriteMover.gd" type="Script" id=2] + +[sub_resource type="SpatialMaterial" id=1] +flags_transparent = true +params_billboard_mode = 1 + +[node name="Sprite3D" type="Sprite3D"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.39352, 0 ) +material_override = SubResource( 1 ) +cast_shadow = 0 +flip_v = true +pixel_size = 0.064 +texture = ExtResource( 1 ) +hframes = 16 +vframes = 16 +script = ExtResource( 2 ) diff --git a/game/spritesheet_generator_3d/SpriteMover.gd b/game/spritesheet_generator_3d/SpriteMover.gd new file mode 100644 index 0000000..06fc5a5 --- /dev/null +++ b/game/spritesheet_generator_3d/SpriteMover.gd @@ -0,0 +1,82 @@ +extends Node + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + +var _sprite + +export (bool) var enabled = true +export(int) var _animset = 0 +export(int) var _animset_size = 16 +export(int) var _animset_count = 16 +var _min_frame = 0 +var _max_frame = 16 * 16 + +var x = 0 +var y = 0 +var timer = 0 +var _frame = 1 + +# Called when the node enters the scene tree for the first time. +func _ready(): + _sprite = get_node(".") + _sprite.set_frame(_min_frame) + #_sprite.set_position(Vector2(x, y)) + +func set_movement_vector(vector): + var a = Vector2(vector.x, vector.z) + a = a.normalized() + + var base = Vector2(0, -1) + + var angle = a.angle_to(base) + PI + + var slice = (2*PI) / _animset_count + + var num_slice = int(angle / slice) + + set_animset(num_slice) + +func set_animset(animest_id): + if (animest_id >= _animset_count): + _animset = _animset_count - 1 + + if (animest_id < 0): + _animset = 0 + + _animset = animest_id + + + #_min_frame = _animset * _animset_size + #_max_frame = _animset * _animset_size + _animset_size + +func _process(delta): + #set_animset(_animset) + + if not enabled: + set_process(false) + return + + timer += delta + + if (timer > 0.05): + timer -= 0.05 + _frame += 1 + + if _frame > _animset_size - 1: + _frame = 0 + + _sprite.set_frame(_frame + (_animset * _animset_size)) + + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func a_process(delta): + #x += int(delta * 300) + y += int(delta * 200) + + if y > 700: + y = -50 + + _sprite.set_position(Vector2(x, y)) diff --git a/game/steering_ai_framework/Agents/GSAIKinematicBody2DAgent.gd b/game/steering_ai_framework/Agents/GSAIKinematicBody2DAgent.gd new file mode 100644 index 0000000..006fb8e --- /dev/null +++ b/game/steering_ai_framework/Agents/GSAIKinematicBody2DAgent.gd @@ -0,0 +1,120 @@ +# A specialized steering agent that updates itself every frame so the user does +# not have to using a KinematicBody2D +extends GSAISpecializedAgent +class_name GSAIKinematicBody2DAgent + +# SLIDE uses `move_and_slide` +# COLLIDE uses `move_and_collide` +# POSITION changes the `global_position` directly +enum MovementType { SLIDE, COLLIDE, POSITION } + +# The KinematicBody2D to keep track of +var body: KinematicBody2D setget _set_body + +# The type of movement the body executes +var movement_type: int + +var _last_position: Vector2 + + +func _init(_body: KinematicBody2D, _movement_type: int = MovementType.SLIDE) -> void: + if not _body.is_inside_tree(): + yield(_body, "ready") + + self.body = _body + self.movement_type = _movement_type + + # warning-ignore:return_value_discarded + body.get_tree().connect("physics_frame", self, "_on_SceneTree_physics_frame") + + +# Moves the agent's `body` by target `acceleration`. +# tags: virtual +func _apply_steering(acceleration: GSAITargetAcceleration, delta: float) -> void: + _applied_steering = true + match movement_type: + MovementType.COLLIDE: + _apply_collide_steering(acceleration.linear, delta) + MovementType.SLIDE: + _apply_sliding_steering(acceleration.linear) + _: + _apply_position_steering(acceleration.linear, delta) + + _apply_orientation_steering(acceleration.angular, delta) + + +func _apply_sliding_steering(accel: Vector3) -> void: + var velocity := GSAIUtils.to_vector2(linear_velocity + accel).clamped(linear_speed_max) + if apply_linear_drag: + velocity = velocity.linear_interpolate(Vector2.ZERO, linear_drag_percentage) + velocity = body.move_and_slide(velocity) + if calculate_velocities: + linear_velocity = GSAIUtils.to_vector3(velocity) + + +func _apply_collide_steering(accel: Vector3, delta: float) -> void: + var velocity := GSAIUtils.clampedv3(linear_velocity + accel, linear_speed_max) + if apply_linear_drag: + velocity = velocity.linear_interpolate(Vector3.ZERO, linear_drag_percentage) + # warning-ignore:return_value_discarded + body.move_and_collide(GSAIUtils.to_vector2(velocity) * delta) + if calculate_velocities: + linear_velocity = velocity + + +func _apply_position_steering(accel: Vector3, delta: float) -> void: + var velocity := GSAIUtils.clampedv3(linear_velocity + accel, linear_speed_max) + if apply_linear_drag: + velocity = velocity.linear_interpolate(Vector3.ZERO, linear_drag_percentage) + body.global_position += GSAIUtils.to_vector2(velocity) * delta + if calculate_velocities: + linear_velocity = velocity + + +func _apply_orientation_steering(angular_acceleration: float, delta: float) -> void: + var velocity = angular_velocity + angular_acceleration + if apply_angular_drag: + velocity = lerp(velocity, 0, angular_drag_percentage) + body.rotation += velocity * delta + if calculate_velocities: + angular_velocity = velocity + + +func _set_body(value: KinematicBody2D) -> void: + body = value + + _last_position = body.global_position + _last_orientation = body.rotation + + position = GSAIUtils.to_vector3(_last_position) + orientation = _last_orientation + + +func _on_SceneTree_physics_frame() -> void: + var current_position := body.global_position + var current_orientation := body.rotation + + position = GSAIUtils.to_vector3(current_position) + orientation = current_orientation + + if calculate_velocities: + if _applied_steering: + _applied_steering = false + else: + linear_velocity = GSAIUtils.clampedv3( + GSAIUtils.to_vector3(_last_position - current_position), linear_speed_max + ) + if apply_linear_drag: + linear_velocity = linear_velocity.linear_interpolate( + Vector3.ZERO, linear_drag_percentage + ) + + angular_velocity = clamp( + _last_orientation - current_orientation, -angular_speed_max, angular_speed_max + ) + + if apply_angular_drag: + angular_velocity = lerp(angular_velocity, 0, angular_drag_percentage) + + _last_position = current_position + _last_orientation = current_orientation diff --git a/game/steering_ai_framework/Agents/GSAIKinematicBody3DAgent.gd b/game/steering_ai_framework/Agents/GSAIKinematicBody3DAgent.gd new file mode 100644 index 0000000..d12f9e8 --- /dev/null +++ b/game/steering_ai_framework/Agents/GSAIKinematicBody3DAgent.gd @@ -0,0 +1,120 @@ +# A specialized steering agent that updates itself every frame so the user does +# not have to using a KinematicBody +extends GSAISpecializedAgent +class_name GSAIKinematicBody3DAgent + +# SLIDE uses `move_and_slide` +# COLLIDE uses `move_and_collide` +# POSITION changes the global_position directly +enum MovementType { SLIDE, COLLIDE, POSITION } + +# The KinematicBody to keep track of +var body: KinematicBody setget _set_body + +# The type of movement the body executes +var movement_type: int + +var _last_position: Vector3 + + +func _init(_body: KinematicBody, _movement_type: int = MovementType.SLIDE) -> void: + if not _body.is_inside_tree(): + yield(_body, "ready") + + self.body = _body + self.movement_type = _movement_type + + # warning-ignore:return_value_discarded + self.body.get_tree().connect("physics_frame", self, "_on_SceneTree_physics_frame") + + +# Moves the agent's `body` by target `acceleration`. +# tags: virtual +func _apply_steering(acceleration: GSAITargetAcceleration, delta: float) -> void: + _applied_steering = true + match movement_type: + MovementType.COLLIDE: + _apply_collide_steering(acceleration.linear, delta) + MovementType.SLIDE: + _apply_sliding_steering(acceleration.linear) + _: + _apply_position_steering(acceleration.linear, delta) + + _apply_orientation_steering(acceleration.angular, delta) + + +func _apply_sliding_steering(accel: Vector3) -> void: + var velocity := GSAIUtils.clampedv3(linear_velocity + accel, linear_speed_max) + if apply_linear_drag: + velocity = velocity.linear_interpolate(Vector3.ZERO, linear_drag_percentage) + velocity = body.move_and_slide(velocity) + if calculate_velocities: + linear_velocity = velocity + + +func _apply_collide_steering(accel: Vector3, delta: float) -> void: + var velocity := GSAIUtils.clampedv3(linear_velocity + accel, linear_speed_max) + if apply_linear_drag: + velocity = velocity.linear_interpolate(Vector3.ZERO, linear_drag_percentage) + # warning-ignore:return_value_discarded + body.move_and_collide(velocity * delta) + if calculate_velocities: + linear_velocity = velocity + + +func _apply_position_steering(accel: Vector3, delta: float) -> void: + var velocity := GSAIUtils.clampedv3(linear_velocity + accel, linear_speed_max) + if apply_linear_drag: + velocity = velocity.linear_interpolate(Vector3.ZERO, linear_drag_percentage) + body.global_position += velocity * delta + if calculate_velocities: + linear_velocity = velocity + + +func _apply_orientation_steering(angular_acceleration: float, delta: float) -> void: + var velocity = angular_velocity + angular_acceleration + if apply_angular_drag: + velocity = lerp(velocity, 0, angular_drag_percentage) + body.rotation.y += velocity * delta + if calculate_velocities: + angular_velocity = velocity + + +func _set_body(value: KinematicBody) -> void: + body = value + + _last_position = body.transform.origin + _last_orientation = body.rotation.y + + position = _last_position + orientation = _last_orientation + + +func _on_SceneTree_physics_frame() -> void: + var current_position := body.transform.origin + var current_orientation := body.rotation.y + + position = current_position + orientation = current_orientation + + if calculate_velocities: + if _applied_steering: + _applied_steering = false + else: + linear_velocity = GSAIUtils.clampedv3( + _last_position - current_position, linear_speed_max + ) + if apply_linear_drag: + linear_velocity = linear_velocity.linear_interpolate( + Vector3.ZERO, linear_drag_percentage + ) + + angular_velocity = clamp( + _last_orientation - current_orientation, -angular_speed_max, angular_speed_max + ) + + if apply_angular_drag: + angular_velocity = lerp(angular_velocity, 0, angular_drag_percentage) + + _last_position = current_position + _last_orientation = current_orientation diff --git a/game/steering_ai_framework/Agents/GSAIRigidBody2DAgent.gd b/game/steering_ai_framework/Agents/GSAIRigidBody2DAgent.gd new file mode 100644 index 0000000..f8d814f --- /dev/null +++ b/game/steering_ai_framework/Agents/GSAIRigidBody2DAgent.gd @@ -0,0 +1,58 @@ +# A specialized steering agent that updates itself every frame so the user does +# not have to using a RigidBody2D +extends GSAISpecializedAgent +class_name GSAIRigidBody2DAgent + +# The RigidBody2D to keep track of +var body: RigidBody2D setget _set_body + +var _last_position: Vector2 + + +func _init(_body: RigidBody2D) -> void: + if not _body.is_inside_tree(): + yield(_body, "ready") + + self.body = _body + + +# Moves the agent's `body` by target `acceleration`. +# tags: virtual +func _apply_steering(acceleration: GSAITargetAcceleration, _delta: float) -> void: + _applied_steering = true + body.apply_central_impulse(GSAIUtils.to_vector2(acceleration.linear)) + body.apply_torque_impulse(acceleration.angular) + if calculate_velocities: + linear_velocity = GSAIUtils.to_vector3(body.linear_velocity) + angular_velocity = body.angular_velocity + + +func _set_body(value: RigidBody2D) -> void: + body = value + + _last_position = body.global_position + _last_orientation = body.rotation + + position = GSAIUtils.to_vector3(_last_position) + orientation = _last_orientation + + +func _on_body_ready() -> void: + # warning-ignore:return_value_discarded + body.get_tree().connect("physics_frame", self, "_on_SceneTree_frame") + _set_body(body) + + +func _on_SceneTree_frame() -> void: + var current_position := body.global_position + var current_orientation := body.rotation + + position = GSAIUtils.to_vector3(current_position) + orientation = current_orientation + + if calculate_velocities: + if _applied_steering: + _applied_steering = false + else: + linear_velocity = GSAIUtils.to_vector3(body.linear_velocity) + angular_velocity = body.angular_velocity diff --git a/game/steering_ai_framework/Agents/GSAIRigidBody3DAgent.gd b/game/steering_ai_framework/Agents/GSAIRigidBody3DAgent.gd new file mode 100644 index 0000000..78bc462 --- /dev/null +++ b/game/steering_ai_framework/Agents/GSAIRigidBody3DAgent.gd @@ -0,0 +1,60 @@ +# A specialized steering agent that updates itself every frame so the user does +# not have to using a RigidBody +extends GSAISpecializedAgent +class_name GSAIRigidBody3DAgent + +# The RigidBody to keep track of +var body: RigidBody setget _set_body + +var _last_position: Vector3 + + +func _init(_body: RigidBody) -> void: + if not _body.is_inside_tree(): + yield(_body, "ready") + + self.body = _body + # warning-ignore:return_value_discarded + self.body.get_tree().connect("physics_frame", self, "_on_SceneTree_frame") + + +# Moves the agent's `body` by target `acceleration`. +# tags: virtual +func _apply_steering(acceleration: GSAITargetAcceleration, _delta: float) -> void: + _applied_steering = true + body.apply_central_impulse(acceleration.linear) + body.apply_torque_impulse(Vector3.UP * acceleration.angular) + if calculate_velocities: + linear_velocity = body.linear_velocity + angular_velocity = body.angular_velocity.y + + +func _set_body(value: RigidBody) -> void: + body = value + + _last_position = body.transform.origin + _last_orientation = body.rotation.y + + position = _last_position + orientation = _last_orientation + + +func _on_body_ready() -> void: + # warning-ignore:return_value_discarded + body.get_tree().connect("physics_frame", self, "_on_SceneTree_frame") + _set_body(body) + + +func _on_SceneTree_frame() -> void: + var current_position := body.transform.origin + var current_orientation := body.rotation.y + + position = current_position + orientation = current_orientation + + if calculate_velocities: + if _applied_steering: + _applied_steering = false + else: + linear_velocity = body.linear_velocity + angular_velocity = body.angular_velocity.y diff --git a/game/steering_ai_framework/Agents/GSAISpecializedAgent.gd b/game/steering_ai_framework/Agents/GSAISpecializedAgent.gd new file mode 100644 index 0000000..18be399 --- /dev/null +++ b/game/steering_ai_framework/Agents/GSAISpecializedAgent.gd @@ -0,0 +1,39 @@ +# A base class for a specialized steering agent that updates itself every frame +# so the user does not have to. All other specialized agents derive from this. +# tags: abstract +extends GSAISteeringAgent +class_name GSAISpecializedAgent + +# If `true`, calculates linear and angular velocities based on the previous +# frame. When `false`, the user must keep those values updated. +var calculate_velocities := true + +# If `true`, interpolates the current linear velocity towards 0 by the +# `linear_drag_percentage` value. +# Does not apply to `RigidBody` and `RigidBody2D` nodes. +var apply_linear_drag := true + +# If `true`, interpolates the current angular velocity towards 0 by the +# `angular_drag_percentage` value. +# Does not apply to `RigidBody` and `RigidBody2D` nodes. +var apply_angular_drag := true + +# The percentage between the current linear velocity and 0 to interpolate by if +# `apply_linear_drag` is true. +# Does not apply to `RigidBody` and `RigidBody2D` nodes. +var linear_drag_percentage := 0.0 + +# The percentage between the current angular velocity and 0 to interpolate by if +# `apply_angular_drag` is true. +# Does not apply to `RigidBody` and `RigidBody2D` nodes. +var angular_drag_percentage := 0.0 + +var _last_orientation: float +var _body_type: int +var _applied_steering := false + + +# Moves the agent's body by target `acceleration`. +# tags: virtual +func _apply_steering(_acceleration: GSAITargetAcceleration, _delta: float) -> void: + pass diff --git a/game/steering_ai_framework/Behaviors/GSAIArrive.gd b/game/steering_ai_framework/Behaviors/GSAIArrive.gd new file mode 100644 index 0000000..972cea1 --- /dev/null +++ b/game/steering_ai_framework/Behaviors/GSAIArrive.gd @@ -0,0 +1,42 @@ +# Calculates acceleration to take an agent to its target's location. The +# calculation attempts to arrive with zero remaining velocity. +class_name GSAIArrive +extends GSAISteeringBehavior + +# Target agent to arrive to. +var target: GSAIAgentLocation +# Distance from the target for the agent to be considered successfully +# arrived. +var arrival_tolerance: float +# Distance from the target for the agent to begin slowing down. +var deceleration_radius: float +# Represents the time it takes to change acceleration. +var time_to_reach := 0.1 + + +func _init(agent: GSAISteeringAgent, _target: GSAIAgentLocation).(agent) -> void: + self.target = _target + + +func _arrive(acceleration: GSAITargetAcceleration, target_position: Vector3) -> void: + var to_target := target_position - agent.position + var distance := to_target.length() + + if distance <= arrival_tolerance: + acceleration.set_zero() + else: + var desired_speed := agent.linear_speed_max + + if distance <= deceleration_radius: + desired_speed *= distance / deceleration_radius + + var desired_velocity := to_target * desired_speed / distance + + desired_velocity = ((desired_velocity - agent.linear_velocity) * 1.0 / time_to_reach) + + acceleration.linear = GSAIUtils.clampedv3(desired_velocity, agent.linear_acceleration_max) + acceleration.angular = 0 + + +func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: + _arrive(acceleration, target.position) diff --git a/game/steering_ai_framework/Behaviors/GSAIAvoidCollisions.gd b/game/steering_ai_framework/Behaviors/GSAIAvoidCollisions.gd new file mode 100644 index 0000000..613f5c8 --- /dev/null +++ b/game/steering_ai_framework/Behaviors/GSAIAvoidCollisions.gd @@ -0,0 +1,74 @@ +# Steers the agent to avoid obstacles in its path. Approximates obstacles as +# spheres. +class_name GSAIAvoidCollisions +extends GSAIGroupBehavior + +var _first_neighbor: GSAISteeringAgent +var _shortest_time: float +var _first_minimum_separation: float +var _first_distance: float +var _first_relative_position: Vector3 +var _first_relative_velocity: Vector3 + + +func _init(agent: GSAISteeringAgent, proximity: GSAIProximity).(agent, proximity) -> void: + pass + + +func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: + _shortest_time = INF + _first_neighbor = null + _first_minimum_separation = 0 + _first_distance = 0 + + var neighbor_count := proximity._find_neighbors(_callback) + + if neighbor_count == 0 or not _first_neighbor: + acceleration.set_zero() + else: + if ( + _first_minimum_separation <= 0 + or _first_distance < agent.bounding_radius + _first_neighbor.bounding_radius + ): + acceleration.linear = _first_neighbor.position - agent.position + else: + acceleration.linear = ( + _first_relative_position + + (_first_relative_velocity * _shortest_time) + ) + + acceleration.linear = (acceleration.linear.normalized() * -agent.linear_acceleration_max) + acceleration.angular = 0 + + +# Callback for the proximity to call when finding neighbors. Keeps track of every `neighbor` +# that was found but only keeps the one the owning agent will most likely collide with. +# tags: virtual +func _report_neighbor(neighbor: GSAISteeringAgent) -> bool: + var relative_position := neighbor.position - agent.position + var relative_velocity := neighbor.linear_velocity - agent.linear_velocity + var relative_speed_squared := relative_velocity.length_squared() + + if relative_speed_squared == 0: + return false + else: + var time_to_collision = -relative_position.dot(relative_velocity) / relative_speed_squared + + if time_to_collision <= 0 or time_to_collision >= _shortest_time: + return false + else: + var distance = relative_position.length() + var minimum_separation: float = ( + distance + - sqrt(relative_speed_squared) * time_to_collision + ) + if minimum_separation > agent.bounding_radius + neighbor.bounding_radius: + return false + else: + _shortest_time = time_to_collision + _first_neighbor = neighbor + _first_minimum_separation = minimum_separation + _first_distance = distance + _first_relative_position = relative_position + _first_relative_velocity = relative_velocity + return true diff --git a/game/steering_ai_framework/Behaviors/GSAIBlend.gd b/game/steering_ai_framework/Behaviors/GSAIBlend.gd new file mode 100644 index 0000000..0bfbfff --- /dev/null +++ b/game/steering_ai_framework/Behaviors/GSAIBlend.gd @@ -0,0 +1,47 @@ +# Blends multiple steering behaviors into one, and returns a weighted +# acceleration from their calculations. +# +# Stores the behaviors internally as dictionaries of the form +# { +# behavior : GSAISteeringBehavior, +# weight : float +# } +class_name GSAIBlend +extends GSAISteeringBehavior + +var _behaviors := [] +var _accel := GSAITargetAcceleration.new() + + +func _init(agent: GSAISteeringAgent).(agent) -> void: + pass + + +# Appends a behavior to the internal array along with its `weight`. +func add(behavior: GSAISteeringBehavior, weight: float) -> void: + behavior.agent = agent + _behaviors.append({behavior = behavior, weight = weight}) + + +# Returns the behavior at the specified `index`, or an empty `Dictionary` if +# none was found. +func get_behavior_at(index: int) -> Dictionary: + if _behaviors.size() > index: + return _behaviors[index] + printerr("Tried to get index " + str(index) + " in array of size " + str(_behaviors.size())) + return {} + + +func _calculate_steering(blended_accel: GSAITargetAcceleration) -> void: + blended_accel.set_zero() + + for i in range(_behaviors.size()): + var bw: Dictionary = _behaviors[i] + bw.behavior.calculate_steering(_accel) + + blended_accel.add_scaled_accel(_accel, bw.weight) + + blended_accel.linear = GSAIUtils.clampedv3(blended_accel.linear, agent.linear_acceleration_max) + blended_accel.angular = clamp( + blended_accel.angular, -agent.angular_acceleration_max, agent.angular_acceleration_max + ) diff --git a/game/steering_ai_framework/Behaviors/GSAICohesion.gd b/game/steering_ai_framework/Behaviors/GSAICohesion.gd new file mode 100644 index 0000000..c3202ad --- /dev/null +++ b/game/steering_ai_framework/Behaviors/GSAICohesion.gd @@ -0,0 +1,30 @@ +# Calculates an acceleration that attempts to move the agent towards the center +# of mass of the agents in the area defined by the `GSAIProximity`. +class_name GSAICohesion +extends GSAIGroupBehavior + +var _center_of_mass: Vector3 + + +func _init(agent: GSAISteeringAgent, proximity: GSAIProximity).(agent, proximity) -> void: + pass + + +func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: + acceleration.set_zero() + _center_of_mass = Vector3.ZERO + var neighbor_count = proximity._find_neighbors(_callback) + if neighbor_count > 0: + _center_of_mass *= 1.0 / neighbor_count + acceleration.linear = ( + (_center_of_mass - agent.position).normalized() + * agent.linear_acceleration_max + ) + + +# Callback for the proximity to call when finding neighbors. Adds `neighbor`'s position +# to the center of mass of the group. +# tags: virtual +func _report_neighbor(neighbor: GSAISteeringAgent) -> bool: + _center_of_mass += neighbor.position + return true diff --git a/game/steering_ai_framework/Behaviors/GSAIEvade.gd b/game/steering_ai_framework/Behaviors/GSAIEvade.gd new file mode 100644 index 0000000..61c9551 --- /dev/null +++ b/game/steering_ai_framework/Behaviors/GSAIEvade.gd @@ -0,0 +1,14 @@ +# Calculates acceleration to take an agent away from where a target agent is +# moving. +class_name GSAIEvade +extends GSAIPursue + + +func _init(agent: GSAISteeringAgent, target: GSAISteeringAgent, predict_time_max := 1.0).( + agent, target, predict_time_max +): + pass + + +func _get_modified_acceleration() -> float: + return -agent.linear_acceleration_max diff --git a/game/steering_ai_framework/Behaviors/GSAIFace.gd b/game/steering_ai_framework/Behaviors/GSAIFace.gd new file mode 100644 index 0000000..9b5d908 --- /dev/null +++ b/game/steering_ai_framework/Behaviors/GSAIFace.gd @@ -0,0 +1,29 @@ +# Calculates angular acceleration to rotate a target to face its target's +# position. The behavior attemps to arrive with zero remaining angular velocity. +class_name GSAIFace +extends GSAIMatchOrientation + + +func _init(agent: GSAISteeringAgent, target: GSAIAgentLocation, use_z := false).( + agent, target, use_z +) -> void: + pass + + +func _face(acceleration: GSAITargetAcceleration, target_position: Vector3) -> void: + var to_target := target_position - agent.position + var distance_squared := to_target.length_squared() + + if distance_squared < agent.zero_linear_speed_threshold: + acceleration.set_zero() + else: + var orientation = ( + GSAIUtils.vector3_to_angle(to_target) + if use_z + else GSAIUtils.vector2_to_angle(GSAIUtils.to_vector2(to_target)) + ) + _match_orientation(acceleration, orientation) + + +func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: + _face(acceleration, target.position) diff --git a/game/steering_ai_framework/Behaviors/GSAIFlee.gd b/game/steering_ai_framework/Behaviors/GSAIFlee.gd new file mode 100644 index 0000000..765448b --- /dev/null +++ b/game/steering_ai_framework/Behaviors/GSAIFlee.gd @@ -0,0 +1,15 @@ +# Calculates acceleration to take an agent directly away from a target agent. +class_name GSAIFlee +extends GSAISeek + + +func _init(agent: GSAISteeringAgent, target: GSAIAgentLocation).(agent, target) -> void: + pass + + +func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: + acceleration.linear = ( + (agent.position - target.position).normalized() + * agent.linear_acceleration_max + ) + acceleration.angular = 0 diff --git a/game/steering_ai_framework/Behaviors/GSAIFollowPath.gd b/game/steering_ai_framework/Behaviors/GSAIFollowPath.gd new file mode 100644 index 0000000..42c0e66 --- /dev/null +++ b/game/steering_ai_framework/Behaviors/GSAIFollowPath.gd @@ -0,0 +1,53 @@ +# Produces a linear acceleration that moves the agent along the specified path. +class_name GSAIFollowPath +extends GSAIArrive + +# The path to follow and travel along. +var path: GSAIPath +# The distance along the path to generate the next target position. +var path_offset := 0.0 + +# Whether to use `GSAIArrive` behavior on an open path. +var is_arrive_enabled := true +# The amount of time in the future to predict the owning agent's position along +# the path. Setting it to 0.0 will force non-predictive path following. +var prediction_time := 0.0 + + +func _init(agent: GSAISteeringAgent, _path: GSAIPath, _path_offset := 0.0, _prediction_time := 0.0).( + agent, null +) -> void: + self.path = _path + self.path_offset = _path_offset + self.prediction_time = _prediction_time + + +func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: + var location := ( + agent.position + if prediction_time == 0 + else agent.position + (agent.linear_velocity * prediction_time) + ) + + var distance := path.calculate_distance(location) + var target_distance := distance + path_offset + + if prediction_time > 0 and path.is_open: + if target_distance < path.calculate_distance(agent.position): + target_distance = path.length + + var target_position := path.calculate_target_position(target_distance) + + if is_arrive_enabled and path.is_open: + if path_offset >= 0: + if target_distance > path.length - deceleration_radius: + _arrive(acceleration, target_position) + return + else: + if target_distance < deceleration_radius: + _arrive(acceleration, target_position) + return + + acceleration.linear = (target_position - agent.position).normalized() + acceleration.linear *= agent.linear_acceleration_max + acceleration.angular = 0 diff --git a/game/steering_ai_framework/Behaviors/GSAILookWhereYouGo.gd b/game/steering_ai_framework/Behaviors/GSAILookWhereYouGo.gd new file mode 100644 index 0000000..e0ed6fd --- /dev/null +++ b/game/steering_ai_framework/Behaviors/GSAILookWhereYouGo.gd @@ -0,0 +1,20 @@ +# Calculates an angular acceleration to match an agent's orientation to its +# direction of travel. +class_name GSAILookWhereYouGo +extends GSAIMatchOrientation + + +func _init(agent: GSAISteeringAgent, use_z := false).(agent, null, use_z) -> void: + pass + + +func _calculate_steering(accel: GSAITargetAcceleration) -> void: + if agent.linear_velocity.length_squared() < agent.zero_linear_speed_threshold: + accel.set_zero() + else: + var orientation := ( + GSAIUtils.vector3_to_angle(agent.linear_velocity) + if use_z + else GSAIUtils.vector2_to_angle(GSAIUtils.to_vector2(agent.linear_velocity)) + ) + _match_orientation(accel, orientation) diff --git a/game/steering_ai_framework/Behaviors/GSAIMatchOrientation.gd b/game/steering_ai_framework/Behaviors/GSAIMatchOrientation.gd new file mode 100644 index 0000000..3b8c97d --- /dev/null +++ b/game/steering_ai_framework/Behaviors/GSAIMatchOrientation.gd @@ -0,0 +1,51 @@ +# Calculates an angular acceleration to match an agent's orientation to that of +# its target. Attempts to make the agent arrive with zero remaining angular +# velocity. +class_name GSAIMatchOrientation +extends GSAISteeringBehavior + +# The target orientation for the behavior to try and match rotations to. +var target: GSAIAgentLocation +# The amount of distance in radians for the behavior to consider itself close +# enough to be matching the target agent's rotation. +var alignment_tolerance: float +# The amount of distance in radians from the goal to start slowing down. +var deceleration_radius: float +# The amount of time to reach the target velocity +var time_to_reach: float = 0.1 +# Whether to use the X and Z components instead of X and Y components when +# determining angles. X and Z should be used in 3D. +var use_z: bool + + +func _init(agent: GSAISteeringAgent, _target: GSAIAgentLocation, _use_z := false).(agent) -> void: + self.use_z = _use_z + self.target = _target + + +func _match_orientation(acceleration: GSAITargetAcceleration, desired_orientation: float) -> void: + var rotation := wrapf(desired_orientation - agent.orientation, -PI, PI) + + var rotation_size := abs(rotation) + + if rotation_size <= alignment_tolerance: + acceleration.set_zero() + else: + var desired_rotation := agent.angular_speed_max + + if rotation_size <= deceleration_radius: + desired_rotation *= rotation_size / deceleration_radius + + desired_rotation *= rotation / rotation_size + + acceleration.angular = ((desired_rotation - agent.angular_velocity) / time_to_reach) + + var limited_acceleration := abs(acceleration.angular) + if limited_acceleration > agent.angular_acceleration_max: + acceleration.angular *= (agent.angular_acceleration_max / limited_acceleration) + + acceleration.linear = Vector3.ZERO + + +func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: + _match_orientation(acceleration, target.orientation) diff --git a/game/steering_ai_framework/Behaviors/GSAIPriority.gd b/game/steering_ai_framework/Behaviors/GSAIPriority.gd new file mode 100644 index 0000000..55df59a --- /dev/null +++ b/game/steering_ai_framework/Behaviors/GSAIPriority.gd @@ -0,0 +1,49 @@ +# Container for multiple behaviors that returns the result of the first child +# behavior with non-zero acceleration. +class_name GSAIPriority +extends GSAISteeringBehavior + +var _behaviors := [] + +# The index of the last behavior the container prioritized. +var last_selected_index: int +# If a behavior's acceleration is lower than this threshold, the container +# considers it has an acceleration of zero. +var zero_threshold: float + + +func _init(agent: GSAISteeringAgent, _zero_threshold := 0.001).(agent) -> void: + self.zero_threshold = _zero_threshold + + +# Appends a steering behavior as a child of this container. +func add(behavior: GSAISteeringBehavior) -> void: + _behaviors.append(behavior) + + +# Returns the behavior at the position in the pool referred to by `index`, or +# `null` if no behavior was found. +func get_behavior_at(index: int) -> GSAISteeringBehavior: + if _behaviors.size() > index: + return _behaviors[index] + printerr("Tried to get index " + str(index) + " in array of size " + str(_behaviors.size())) + return null + + +func _calculate_steering(accel: GSAITargetAcceleration) -> void: + var threshold_squared := zero_threshold * zero_threshold + + last_selected_index = -1 + + var size := _behaviors.size() + + if size > 0: + for i in range(size): + last_selected_index = i + var behavior: GSAISteeringBehavior = _behaviors[i] + behavior.calculate_steering(accel) + + if accel.get_magnitude_squared() > threshold_squared: + break + else: + accel.set_zero() diff --git a/game/steering_ai_framework/Behaviors/GSAIPursue.gd b/game/steering_ai_framework/Behaviors/GSAIPursue.gd new file mode 100644 index 0000000..de685c3 --- /dev/null +++ b/game/steering_ai_framework/Behaviors/GSAIPursue.gd @@ -0,0 +1,37 @@ +# Calculates an acceleration to make an agent intercept another based on the +# target agent's movement. +class_name GSAIPursue +extends GSAISteeringBehavior + +# The target agent that the behavior is trying to intercept. +var target: GSAISteeringAgent +# The maximum amount of time in the future the behavior predicts the target's +# location. +var predict_time_max: float + + +func _init(agent: GSAISteeringAgent, _target: GSAISteeringAgent, _predict_time_max := 1.0).(agent) -> void: + self.target = _target + self.predict_time_max = _predict_time_max + + +func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: + var target_position := target.position + var distance_squared := (target_position - agent.position).length_squared() + + var speed_squared := agent.linear_velocity.length_squared() + var predict_time := predict_time_max + + if speed_squared > 0: + var predict_time_squared := distance_squared / speed_squared + if predict_time_squared < predict_time_max * predict_time_max: + predict_time = sqrt(predict_time_squared) + + acceleration.linear = ((target_position + (target.linear_velocity * predict_time)) - agent.position).normalized() + acceleration.linear *= _get_modified_acceleration() + + acceleration.angular = 0 + + +func _get_modified_acceleration() -> float: + return agent.linear_acceleration_max diff --git a/game/steering_ai_framework/Behaviors/GSAISeek.gd b/game/steering_ai_framework/Behaviors/GSAISeek.gd new file mode 100644 index 0000000..f5c85f5 --- /dev/null +++ b/game/steering_ai_framework/Behaviors/GSAISeek.gd @@ -0,0 +1,19 @@ +# Calculates an acceleration to take an agent to a target agent's position +# directly. +class_name GSAISeek +extends GSAISteeringBehavior + +# The target that the behavior aims to move the agent to. +var target: GSAIAgentLocation + + +func _init(agent: GSAISteeringAgent, _target: GSAIAgentLocation).(agent) -> void: + self.target = _target + + +func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: + acceleration.linear = ( + (target.position - agent.position).normalized() + * agent.linear_acceleration_max + ) + acceleration.angular = 0 diff --git a/game/steering_ai_framework/Behaviors/GSAISeparation.gd b/game/steering_ai_framework/Behaviors/GSAISeparation.gd new file mode 100644 index 0000000..4b532f3 --- /dev/null +++ b/game/steering_ai_framework/Behaviors/GSAISeparation.gd @@ -0,0 +1,42 @@ +# Calculates an acceleration that repels the agent from its neighbors in the +# given `GSAIProximity`. +# +# The acceleration is an average based on all neighbors, multiplied by a +# strength decreasing by the inverse square law in relation to distance, and it +# accumulates. +class_name GSAISeparation +extends GSAIGroupBehavior + +# The coefficient to calculate how fast the separation strength decays with distance. +var decay_coefficient := 1.0 + +var _acceleration: GSAITargetAcceleration + + +func _init(agent: GSAISteeringAgent, proximity: GSAIProximity).(agent, proximity) -> void: + pass + + +func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: + acceleration.set_zero() + self._acceleration = acceleration + # warning-ignore:return_value_discarded + proximity._find_neighbors(_callback) + + +# Callback for the proximity to call when finding neighbors. Determines the amount of +# acceleration that `neighbor` imposes based on its distance from the owner agent. +# tags: virtual +func _report_neighbor(neighbor: GSAISteeringAgent) -> bool: + var to_agent := agent.position - neighbor.position + + var distance_squared := to_agent.length_squared() + var acceleration_max := agent.linear_acceleration_max + + var strength := decay_coefficient / distance_squared + if strength > acceleration_max: + strength = acceleration_max + + _acceleration.linear += to_agent * (strength / sqrt(distance_squared)) + + return true diff --git a/game/steering_ai_framework/CHANGELOG.md b/game/steering_ai_framework/CHANGELOG.md new file mode 100644 index 0000000..4124ad6 --- /dev/null +++ b/game/steering_ai_framework/CHANGELOG.md @@ -0,0 +1,80 @@ +# Changelog # + +This document lists new features, improvements, changes, and bug fixes in every release of the add-on. + +## Godot Steering AI Framework 2.1.0 ## + +### Features ### + +- There is now an `Arrive3d` demo to showcase 3D movement. + +### Improvements ### + +- All the demos got a bit of attention to improve their feel. + +### Changes ### + +- `GSAIUtils.vector3_to_angle` now uses the vector's X and Z components to determine angle. Use `GSAIUtils.vector2_to_angle` for 2D use cases. +- `GSAIMatchOrientation` and its subclasses like `GSAIFace` and `GSAILookWhereYouGo` now include a `use_z` property. It should be `true` when using 3D so that facing will be done with the X and Z components. +- The README now mentions a simple way to install the framework. +- Exposed `agent_count` inside the `AvoidCollisionsDemo`. + +### Bug fixes ### + +- Fixed `GSAIKinematicBody3DAgent` and `GSAIRigidBody3DAgent` trying to use `global_position` instead of `transform.origin`. +- The `SeekFleeDemo`'s boundaries will now match the size of the screen. +- Fixed error when double clicking an item in the DemoPicker. +- Fixed the background sometimes not covering the entire viewport in demos. + +## Godot Steering AI Framework 2.0.0 ## + +This release brings one new feature and bug fix, and breaking changes to the framework as we renamed all the classes. + +**Important**: we renamed all classes from GST\* to GSAI\* (Godot Steering AI). When you upgrade the framework in your project, use the project search and replace feature in Godot (Ctrl Shift F) to find and replace `GST` with `GSAI`. + +If you were using `GSTKinematicBodyAgent` or `GSTRigidBodyAgent`, search and replace them respectively with `GSAIKinematicBody3DAgent` and `GSAIRigidBody3DAgent`. + +We decided to make this change as soon as possible, as the framework was released a few days ago. + +### Features ### + +- There is now a main scene with a demo picker, so you can select and play any demo on the fly. +- The demo projects now support resizing and toggling fullscreen with F11. + +### Improvements ### + +- We handled all warnings in the framework, so using it won't add warnings to your projects. + +### Changes ### + +- Renamed all classes from `GST*` (Godot Steering Toolkit) to `GSAI*` (Godot Steering AI). +- Removed `GSTNode2DAgent`, `GSTNodeAgent`, and `GSTSpatialAgent` classes. + - For specialized steering agents, `GSAIKinematicBody2DAgent`, `GSAIRigidBody2DAgent`, or their 3D equivalent. + - If you intend to write your own movement system instead of using Godot's, the base class `GSTSpecializedAgent` is there to help you. +- Renamed `GSAIRigidBodyAgent` and `GSAIRigidBodyAgent` to `GSAIRigidBody3DAgent` and `GSAIRigidBody3DAgent` respectively. + - 3D nodes like `Sprite`, `KinematicBody`, etc. are being renamed to `Sprite3D`, `KinematicBody3D`, etc. in the upcoming Godot 4.0 release, to be consistent with 2D nodes. We decided to rename them now instead of breaking compatibility in a future release. + +### Bug fixes ### + +- GSTFollowPath no longer loops back around itself on open paths when `predict_time` is non-zero. + +## Godot Steering AI Framework 1.0.0 ## + +This is the first major release of the framework. It comes with: + +- All the essential steering behaviors: `Arrive`, `AvoidCollisions`, `Blend`, `Cohesion`, `Evade`, `Face`, `Flee`, `FollowPath`, `LookWhereYouGo`, `MatchOrientation`, `Priority`, `Pursue`, `Seek`, `Separation`. +- Group behaviors and detecting neighbors. +- Blending and prioritized behaviors. +- Specialized types to code agents based on physics bodies: + - For 2D games, `KinematicBody2DAgent` and `RigidBody2DAgent`. + - For 3D games, `KinematicBody3DAgent` and `RigidBody3DAgent`. +- 9 Godot demos to learn straight from the code. + +### Manual ### + +To get started, check out the framework's [manual](https://www.gdquest.com/docs/godot-steering-toolkit/). + +There, you can also find the full [code reference](https://www.gdquest.com/docs/godot-steering-toolkit/reference/). + +*Note*: we generate the code reference from docstrings in the source code with [GDScript Docs Maker](https://github.com/GDQuest/gdscript-docs-maker). + diff --git a/game/steering_ai_framework/GSAIAgentLocation.gd b/game/steering_ai_framework/GSAIAgentLocation.gd new file mode 100644 index 0000000..b772020 --- /dev/null +++ b/game/steering_ai_framework/GSAIAgentLocation.gd @@ -0,0 +1,7 @@ +# Represents an agent with only a location and an orientation. +class_name GSAIAgentLocation + +# The agent's position in space. +var position := Vector3.ZERO +# The agent's orientation on its Y axis rotation. +var orientation := 0.0 diff --git a/game/steering_ai_framework/GSAIGroupBehavior.gd b/game/steering_ai_framework/GSAIGroupBehavior.gd new file mode 100644 index 0000000..6c58708 --- /dev/null +++ b/game/steering_ai_framework/GSAIGroupBehavior.gd @@ -0,0 +1,19 @@ +# Base type for group-based steering behaviors. +class_name GSAIGroupBehavior +extends GSAISteeringBehavior + +# Container to find neighbors of the agent and calculate group behavior. +var proximity: GSAIProximity + +var _callback := funcref(self, "_report_neighbor") + + +func _init(agent: GSAISteeringAgent, _proximity: GSAIProximity).(agent) -> void: + self.proximity = _proximity + + +# Internal callback for the behavior to define whether or not a member is +# relevant +# tags: virtual +func _report_neighbor(_neighbor: GSAISteeringAgent) -> bool: + return false diff --git a/game/steering_ai_framework/GSAIPath.gd b/game/steering_ai_framework/GSAIPath.gd new file mode 100644 index 0000000..b8f0f6a --- /dev/null +++ b/game/steering_ai_framework/GSAIPath.gd @@ -0,0 +1,132 @@ +# Represents a path made up of Vector3 waypoints, split into segments path +# follow behaviors can use. +class_name GSAIPath +extends Reference + +# If `false`, the path loops. +var is_open: bool +# Total length of the path. +var length: float + +var _segments: Array + +var _nearest_point_on_segment: Vector3 +var _nearest_point_on_path: Vector3 + + +func _init(waypoints: Array, _is_open := false) -> void: + self.is_open = _is_open + create_path(waypoints) + _nearest_point_on_segment = waypoints[0] + _nearest_point_on_path = waypoints[0] + + +# Creates a path from a list of waypoints. +func create_path(waypoints: Array) -> void: + if not waypoints or waypoints.size() < 2: + printerr("Waypoints cannot be null and must contain at least two (2) waypoints.") + return + + _segments = [] + length = 0 + var current: Vector3 = waypoints.front() + var previous: Vector3 + + for i in range(1, waypoints.size(), 1): + previous = current + if i < waypoints.size(): + current = waypoints[i] + elif is_open: + break + else: + current = waypoints[0] + var segment := GSAISegment.new(previous, current) + length += segment.length + segment.cumulative_length = length + _segments.append(segment) + + +# Returns the distance from `agent_current_position` to the next waypoint. +func calculate_distance(agent_current_position: Vector3) -> float: + if _segments.size() == 0: + return 0.0 + var smallest_distance_squared: float = INF + var nearest_segment: GSAISegment + for i in range(_segments.size()): + var segment: GSAISegment = _segments[i] + var distance_squared := _calculate_point_segment_distance_squared( + segment.begin, segment.end, agent_current_position + ) + + if distance_squared < smallest_distance_squared: + _nearest_point_on_path = _nearest_point_on_segment + smallest_distance_squared = distance_squared + nearest_segment = segment + + var length_on_path := ( + nearest_segment.cumulative_length + - _nearest_point_on_path.distance_to(nearest_segment.end) + ) + + return length_on_path + + +# Calculates a target position from the path's starting point based on the `target_distance`. +func calculate_target_position(target_distance: float) -> Vector3: + if is_open: + target_distance = clamp(target_distance, 0, length) + else: + if target_distance < 0: + target_distance = length + fmod(target_distance, length) + elif target_distance > length: + target_distance = fmod(target_distance, length) + + var desired_segment: GSAISegment + for i in range(_segments.size()): + var segment: GSAISegment = _segments[i] + if segment.cumulative_length >= target_distance: + desired_segment = segment + break + + if not desired_segment: + desired_segment = _segments.back() + + var distance := desired_segment.cumulative_length - target_distance + + return ( + ((desired_segment.begin - desired_segment.end) * (distance / desired_segment.length)) + + desired_segment.end + ) + + +# Returns the position of the first point on the path. +func get_start_point() -> Vector3: + return _segments.front().begin + + +# Returns the position of the last point on the path. +func get_end_point() -> Vector3: + return _segments.back().end + + +func _calculate_point_segment_distance_squared(start: Vector3, end: Vector3, position: Vector3) -> float: + _nearest_point_on_segment = start + var start_end := end - start + var start_end_length_squared := start_end.length_squared() + if start_end_length_squared != 0: + var t = (position - start).dot(start_end) / start_end_length_squared + _nearest_point_on_segment += start_end * clamp(t, 0, 1) + + return _nearest_point_on_segment.distance_squared_to(position) + + +class GSAISegment: + var begin: Vector3 + var end: Vector3 + var length: float + var cumulative_length: float + + func _init(_begin: Vector3, _end: Vector3) -> void: + self.begin = _begin + self.end = _end + length = _begin.distance_to(_end) diff --git a/game/steering_ai_framework/GSAISteeringAgent.gd b/game/steering_ai_framework/GSAISteeringAgent.gd new file mode 100644 index 0000000..0fc7f6f --- /dev/null +++ b/game/steering_ai_framework/GSAISteeringAgent.gd @@ -0,0 +1,27 @@ +# Adds velocity, speed, and size data to `GSAIAgentLocation`. +# +# It is the character's responsibility to keep this information up to date for +# the steering toolkit to work correctly. +extends GSAIAgentLocation +class_name GSAISteeringAgent + +# The amount of velocity to be considered effectively not moving. +var zero_linear_speed_threshold := 0.01 +# The maximum speed at which the agent can move. +var linear_speed_max := 0.0 +# The maximum amount of acceleration that any behavior can apply to the agent. +var linear_acceleration_max := 0.0 +# The maximum amount of angular speed at which the agent can rotate. +var angular_speed_max := 0.0 +# The maximum amount of angular acceleration that any behavior can apply to an +# agent. +var angular_acceleration_max := 0.0 +# Current velocity of the agent. +var linear_velocity := Vector3.ZERO +# Current angular velocity of the agent. +var angular_velocity := 0.0 +# The radius of the sphere that approximates the agent's size in space. +var bounding_radius := 0.0 +# Used internally by group behaviors and proximities to mark the agent as already +# considered. +var is_tagged := false diff --git a/game/steering_ai_framework/GSAISteeringBehavior.gd b/game/steering_ai_framework/GSAISteeringBehavior.gd new file mode 100644 index 0000000..675cf58 --- /dev/null +++ b/game/steering_ai_framework/GSAISteeringBehavior.gd @@ -0,0 +1,29 @@ +# Base class for all steering behaviors. +# +# Steering behaviors calculate the linear and the angular acceleration to be +# to the agent that owns them. +# +# The `calculate_steering` function is the entry point for all behaviors. +# Individual steering behaviors encapsulate the steering logic. +class_name GSAISteeringBehavior + +# If `false`, all calculations return zero amounts of acceleration. +var is_enabled := true +# The AI agent on which the steering behavior bases its calculations. +var agent: GSAISteeringAgent + + +func _init(_agent: GSAISteeringAgent) -> void: + self.agent = _agent + + +# Sets the `acceleration` with the behavior's desired amount of acceleration. +func calculate_steering(acceleration: GSAITargetAcceleration) -> void: + if is_enabled: + _calculate_steering(acceleration) + else: + acceleration.set_zero() + + +func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: + acceleration.set_zero() diff --git a/game/steering_ai_framework/GSAITargetAcceleration.gd b/game/steering_ai_framework/GSAITargetAcceleration.gd new file mode 100644 index 0000000..a32d3ee --- /dev/null +++ b/game/steering_ai_framework/GSAITargetAcceleration.gd @@ -0,0 +1,32 @@ +# A desired linear and angular amount of acceleration requested by the steering +# system. +class_name GSAITargetAcceleration + +# Linear acceleration +var linear := Vector3.ZERO +# Angular acceleration +var angular := 0.0 + + +# Sets the linear and angular components to 0. +func set_zero() -> void: + linear.x = 0.0 + linear.y = 0.0 + linear.z = 0.0 + angular = 0.0 + + +# Adds `accel`'s components, multiplied by `scalar`, to this one. +func add_scaled_accel(accel: GSAITargetAcceleration, scalar: float) -> void: + linear += accel.linear * scalar + angular += accel.angular * scalar + + +# Returns the squared magnitude of the linear and angular components. +func get_magnitude_squared() -> float: + return linear.length_squared() + angular * angular + + +# Returns the magnitude of the linear and angular components. +func get_magnitude() -> float: + return sqrt(get_magnitude_squared()) diff --git a/game/steering_ai_framework/GSAIUtils.gd b/game/steering_ai_framework/GSAIUtils.gd new file mode 100644 index 0000000..a5ab38b --- /dev/null +++ b/game/steering_ai_framework/GSAIUtils.gd @@ -0,0 +1,36 @@ +# Math and vector utility functions. +class_name GSAIUtils + +# Returns the `vector` with its length capped to `limit`. +static func clampedv3(vector: Vector3, limit: float) -> Vector3: + var length_squared := vector.length_squared() + var limit_squared := limit * limit + if length_squared > limit_squared: + vector *= sqrt(limit_squared / length_squared) + return vector + +# Returns an angle in radians between the positive X axis and the `vector`. +# +# This assumes orientation for 3D agents that are upright and rotate +# around the Y axis. +static func vector3_to_angle(vector: Vector3) -> float: + return atan2(vector.x, vector.z) + +# Returns an angle in radians between the positive X axis and the `vector`. +static func vector2_to_angle(vector: Vector2) -> float: + return atan2(vector.x, -vector.y) + +# Returns a directional vector from the given orientation angle. +# +# This assumes orientation for 2D agents or 3D agents that are upright and +# rotate around the Y axis. +static func angle_to_vector2(angle: float) -> Vector2: + return Vector2(sin(-angle), cos(angle)) + +# Returns a vector2 with `vector`'s x and y components. +static func to_vector2(vector: Vector3) -> Vector2: + return Vector2(vector.x, vector.y) + +# Returns a vector3 with `vector`'s x and y components and 0 in z. +static func to_vector3(vector: Vector2) -> Vector3: + return Vector3(vector.x, vector.y, 0) diff --git a/game/steering_ai_framework/LICENSE b/game/steering_ai_framework/LICENSE new file mode 100644 index 0000000..f3e861c --- /dev/null +++ b/game/steering_ai_framework/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 GDQuest + +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/game/steering_ai_framework/Proximities/GSAIInfiniteProximity.gd b/game/steering_ai_framework/Proximities/GSAIInfiniteProximity.gd new file mode 100644 index 0000000..5c93bf2 --- /dev/null +++ b/game/steering_ai_framework/Proximities/GSAIInfiniteProximity.gd @@ -0,0 +1,26 @@ +# Determines any agent that is in the specified list as being neighbors with the +# owner agent, regardless of distance. +extends GSAIProximity +class_name GSAIInfiniteProximity + + +func _init(agent: GSAISteeringAgent, agents: Array).(agent, agents) -> void: + pass + + +# Returns a number of neighbors based on a `callback` function. +# +# `_find_neighbors` calls `callback` for each agent in the `agents` array and +# adds one to the count if its `callback` returns true. +# tags: virtual +func _find_neighbors(callback: FuncRef) -> int: + var neighbor_count := 0 + var agent_count := agents.size() + for i in range(agent_count): + var current_agent := agents[i] as GSAISteeringAgent + + if current_agent != agent: + if callback.call_func(current_agent): + neighbor_count += 1 + + return neighbor_count diff --git a/game/steering_ai_framework/Proximities/GSAIProximity.gd b/game/steering_ai_framework/Proximities/GSAIProximity.gd new file mode 100644 index 0000000..69e6541 --- /dev/null +++ b/game/steering_ai_framework/Proximities/GSAIProximity.gd @@ -0,0 +1,22 @@ +# Base container type that stores data to find the neighbors of an agent. +extends Reference +class_name GSAIProximity + +# The owning agent whose neighbors are found in the group +var agent: GSAISteeringAgent +# The agents who are part of this group and could be potential neighbors +var agents := [] + + +func _init(_agent: GSAISteeringAgent, _agents: Array) -> void: + self.agent = _agent + self.agents = _agents + + +# Returns a number of neighbors based on a `callback` function. +# +# `_find_neighbors` calls `callback` for each agent in the `agents` array and +# adds one to the count if its `callback` returns true. +# tags: virtual +func _find_neighbors(_callback: FuncRef) -> int: + return 0 diff --git a/game/steering_ai_framework/Proximities/GSAIRadiusProximity.gd b/game/steering_ai_framework/Proximities/GSAIRadiusProximity.gd new file mode 100644 index 0000000..bfce22c --- /dev/null +++ b/game/steering_ai_framework/Proximities/GSAIRadiusProximity.gd @@ -0,0 +1,56 @@ +# Determines any agent that is in the specified list as being neighbors with the owner agent if +# they lie within the specified radius. +extends GSAIProximity +class_name GSAIRadiusProximity + +# The radius around the owning agent to find neighbors in +var radius := 0.0 + +var _last_frame := 0 +var _scene_tree: SceneTree + + +func _init(agent: GSAISteeringAgent, agents: Array, _radius: float).(agent, agents) -> void: + self.radius = _radius + _scene_tree = Engine.get_main_loop() + + +# Returns a number of neighbors based on a `callback` function. +# +# `_find_neighbors` calls `callback` for each agent in the `agents` array that lie within +# the radius around the owning agent and adds one to the count if its `callback` returns true. +# tags: virtual +func _find_neighbors(callback: FuncRef) -> int: + var agent_count := agents.size() + var neighbor_count := 0 + + var current_frame := _scene_tree.get_frame() if _scene_tree else -_last_frame + if current_frame != _last_frame: + _last_frame = current_frame + + var owner_position := agent.position + + for i in range(agent_count): + var current_agent := agents[i] as GSAISteeringAgent + + if current_agent != agent: + var distance_squared := owner_position.distance_squared_to(current_agent.position) + + var range_to := radius + current_agent.bounding_radius + + if distance_squared < range_to * range_to: + if callback.call_func(current_agent): + current_agent.is_tagged = true + neighbor_count += 1 + continue + + current_agent.is_tagged = false + else: + for i in range(agent_count): + var current_agent = agents[i] as GSAISteeringAgent + + if current_agent != agent and current_agent.is_tagged: + if callback.call_func(current_agent): + neighbor_count += 1 + + return neighbor_count diff --git a/game/steering_ai_framework/README.md b/game/steering_ai_framework/README.md new file mode 100644 index 0000000..df55149 --- /dev/null +++ b/game/steering_ai_framework/README.md @@ -0,0 +1,69 @@ +# Godot Steering AI Framework # + +![Project banner](./assets/banner.svg) + +This project is a framework to code complex and smooth AI movement in GDScript, using steering behaviors. It works in both 2D and 3D games. + +It supports all essential steering behaviors like flee, follow, look at, but also blended behaviors, group behaviors, avoiding neighbors, following a path, following the leader, and much more. + + +**Table of Contents** +- [Introduction](#introduction) +- [The framework](#the-framework) +- [Installation](#installation) +- [Getting Started](#getting-started) + - [More information and resources](#more-information-and-resources) +- [Example usage](#example-usage) + + + +## Introduction ## + +In the 1990s, [Craig Reynolds](http://www.red3d.com/cwr/) developed algorithms for common AI behaviors. They allowed AI agents to seek out or flee from a target, follow a pre-defined path, or face in a particular direction. They were simple, repeatable tasks that could be broken down into programming algorithms, which made them easy to reuse, maintain, combine, and extend. + +While an AI agent's next action is based on decision making and planning algorithms, steering behaviors dictate how it will move from one frame to the next. They use available information and calculate where to move at that moment. + +Joining these systems together can give sophisticated and graceful movement while also being more efficient than complex pathfinding algorithms like A\*. + +## The framework ## + +This project is a framework for the [Godot game engine](https://godotengine.org/). It takes inspiration from the excellent [GDX-AI](https://github.com/libgdx/gdx-ai) framework for the [LibGDX](https://libgdx.badlogicgames.com/) java-based framework. + +Every class in the framework extends Godot's [Reference](https://docs.godotengine.org/en/latest/classes/class_reference.html) type. There is no need to have a complex scene tree; you can contain that has to do with the AI's movement inside GDScript classes. + +### How it works ### + +In GSAI, a steering agent represents a character or a vehicle. The agent stores its position, orientation, maximum speeds, and current velocity. The agent stores a steering behavior that calculates a linear or angular change in velocity based on its information. + +The coder then applies that acceleration in whatever ways is appropriate to the character to change its velocities, like RigidBody's `apply_impulse`, or a KinematicBody's `move_and_slide`. + +## Documentation ## + +The framework's documentation and code reference are both available on the [GDQuest](https://www.gdquest.com/docs/godot-steering-ai-framework/getting-started) website. + +Here are some guides to get you started: + +1. [How to install the framework](https://www.gdquest.com/docs/godot-steering-ai-framework/how-to-install/) +1. [Getting Started](https://www.gdquest.com/docs/godot-steering-ai-framework/getting-started/) +1. [Code reference](https://www.gdquest.com/docs/godot-steering-ai-framework/reference/) + +## Contributing ## + +If you encounter a bug or you have an idea to improve the tool, please [open an issue](https://github.com/GDQuest/gdscript-docs-maker/issues/new). + +If you want to contribute to the project, for instance by fixing a bug or adding a feature, check out our: + +1. [Contributor's guidelines](https://www.gdquest.com/docs/guidelines/contributing-to/gdquest-projects/). +1. [GDScript style guide](https://www.gdquest.com/docs/guidelines/best-practices/godot-gdscript/) + +## Support us ## + +Our work on Free Software is sponsored by our [Godot game creation courses](https://gdquest.mavenseed.com/). Consider getting one to support us! + +*If you like our work, please star the repository! This helps more people find it.* + +## Join the community ## + +- You can join the GDQuest community and come chat with us on [Discord](https://discord.gg/CHYVgar) +- For quick news, follow us on [Twitter](https://twitter.com/nathangdquest) +- We release video tutorials and major updates on [YouTube](https://youtube.com/c/gdquest) diff --git a/game/test_iso_tileset/TileMap32x16.tscn b/game/test_iso_tileset/TileMap32x16.tscn new file mode 100644 index 0000000..214a7fa --- /dev/null +++ b/game/test_iso_tileset/TileMap32x16.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://test_iso_tileset/new_tileset.tres" type="TileSet" id=1] + +[node name="TileMap" type="TileMap"] +mode = 1 +tile_set = ExtResource( 1 ) +cell_size = Vector2( 32, 16 ) +cell_y_sort = true +format = 1 +tile_data = PoolIntArray( -3801106, 2, 0, -3670043, 2, 0, -3473452, 2, 0, -3473451, 2, 0, -3473450, 2, 0, -3407917, 2, 0, -3407916, 2, 0, -3407915, 2, 0, -3407914, 2, 0, -3407913, 2, 0, -3407912, 2, 0, -3407911, 2, 0, -3407910, 2, 0, -3407909, 2, 0, -3342381, 2, 0, -3342380, 2, 0, -3342379, 2, 0, -3342378, 2, 0, -3342377, 2, 0, -3342376, 2, 0, -3342375, 2, 0, -3342374, 2, 0, -3342373, 2, 0, -3342372, 2, 0, -3342371, 2, 0, -3342370, 2, 0, -3342369, 2, 0, -3342368, 2, 0, -3342367, 2, 0, -3342366, 2, 0, -3276845, 2, 0, -3276844, 2, 0, -3276843, 2, 0, -3276842, 2, 0, -3276841, 2, 0, -3276840, 2, 0, -3276839, 2, 0, -3276838, 2, 0, -3276837, 2, 0, -3276836, 2, 0, -3276835, 2, 0, -3276834, 2, 0, -3276833, 2, 0, -3276832, 2, 0, -3276831, 2, 0, -3276830, 2, 0, -3276829, 2, 0, -3276828, 2, 0, -3276827, 2, 0, -3276826, 2, 0, -3211309, 2, 0, -3211308, 2, 0, -3211307, 2, 0, -3211306, 2, 0, -3211305, 2, 0, -3211304, 2, 0, -3211303, 2, 0, -3211302, 2, 0, -3211301, 2, 0, -3211300, 2, 0, -3211299, 2, 0, -3211298, 2, 0, -3211297, 2, 0, -3211296, 2, 0, -3211295, 2, 0, -3211294, 2, 0, -3211293, 2, 0, -3211292, 2, 0, -3211291, 2, 0, -3211290, 2, 0, -3211289, 2, 0, -3211288, 2, 0, -3211287, 2, 0, -3211286, 2, 0, -3211285, 2, 0, -3211284, 2, 0, -3211283, 2, 0, -3211282, 2, 0, -3145773, 2, 0, -3145772, 2, 0, -3145771, 2, 0, -3145770, 2, 0, -3145769, 2, 0, -3145768, 2, 0, -3145767, 2, 0, -3145766, 2, 0, -3145765, 2, 0, -3145764, 2, 0, -3145763, 2, 0, -3145762, 2, 0, -3145761, 2, 0, -3145760, 2, 0, -3145759, 2, 0, -3145758, 2, 0, -3145757, 2, 0, -3145756, 2, 0, -3145755, 2, 0, -3145754, 2, 0, -3145753, 2, 0, -3145752, 2, 0, -3145751, 2, 0, -3145750, 2, 0, -3145749, 2, 0, -3145748, 2, 0, -3145747, 2, 0, -3145746, 2, 0, -3145745, 2, 0, -3145744, 2, 0, -3145743, 2, 0, -3145742, 2, 0, -3145741, 2, 0, -3145740, 2, 0, -3145739, 2, 0, -3145738, 2, 0, -3145737, 2, 0, -3080237, 2, 0, -3080236, 2, 0, -3080235, 2, 0, -3080234, 2, 0, -3080233, 2, 0, -3080232, 2, 0, -3080231, 2, 0, -3080230, 2, 0, -3080229, 2, 0, -3080228, 2, 0, -3080227, 2, 0, -3080226, 2, 0, -3080225, 2, 0, -3080224, 2, 0, -3080223, 2, 0, -3080222, 2, 0, -3080221, 2, 0, -3080220, 2, 0, -3080219, 2, 0, -3080218, 2, 0, -3080217, 2, 0, -3080216, 2, 0, -3080215, 2, 0, -3080214, 2, 0, -3080213, 2, 0, -3080212, 2, 0, -3080211, 2, 0, -3080210, 2, 0, -3080209, 2, 0, -3080208, 2, 0, -3080207, 2, 0, -3080206, 2, 0, -3080205, 2, 0, -3080204, 2, 0, -3080203, 2, 0, -3080202, 2, 0, -3080201, 2, 0, -3080200, 2, 0, -3080199, 2, 0, -3080198, 2, 0, -3014701, 2, 0, -3014700, 2, 0, -3014699, 2, 0, -3014698, 2, 0, -3014697, 2, 0, -3014696, 2, 0, -3014695, 2, 0, -3014694, 2, 0, -3014693, 2, 0, -3014692, 2, 0, -3014691, 2, 0, -3014690, 2, 0, -3014689, 2, 0, -3014688, 2, 0, -3014687, 2, 0, -3014686, 2, 0, -3014685, 2, 0, -3014684, 2, 0, -3014683, 2, 0, -3014682, 2, 0, -3014681, 2, 0, -3014680, 2, 0, -3014679, 2, 0, -3014678, 2, 0, -3014677, 2, 0, -3014676, 2, 0, -3014675, 2, 0, -3014674, 2, 0, -3014673, 2, 0, -3014672, 2, 0, -3014671, 2, 0, -3014670, 2, 0, -3014669, 2, 0, -3014668, 2, 0, -3014667, 2, 0, -3014666, 2, 0, -3014665, 2, 0, -3014664, 2, 0, -3014663, 2, 0, -3014662, 2, 0, -3014661, 2, 0, -3014660, 2, 0, -3014659, 2, 0, -3014658, 2, 0, -2949165, 2, 0, -2949164, 2, 0, -2949163, 2, 0, -2949162, 2, 0, -2949161, 2, 0, -2949160, 2, 0, -2949159, 2, 0, -2949158, 2, 0, -2949157, 2, 0, -2949156, 2, 0, -2949155, 2, 0, -2949154, 2, 0, -2949153, 2, 0, -2949152, 2, 0, -2949151, 2, 0, -2949150, 2, 0, -2949149, 2, 0, -2949148, 2, 0, -2949147, 2, 0, -2949146, 2, 0, -2949145, 2, 0, -2949144, 2, 0, -2949143, 2, 0, -2949142, 2, 0, -2949141, 2, 0, -2949140, 2, 0, -2949139, 2, 0, -2949138, 2, 0, -2949137, 2, 0, -2949136, 2, 0, -2949135, 2, 0, -2949134, 2, 0, -2949133, 2, 0, -2949132, 2, 0, -2949131, 2, 0, -2949130, 2, 0, -2949129, 2, 0, -2949128, 2, 0, -2949127, 2, 0, -2949126, 2, 0, -2949125, 2, 0, -2949124, 2, 0, -2949123, 2, 0, -2949122, 2, 0, -2949121, 2, 0, -3014656, 2, 0, -3014655, 2, 0, -3014654, 2, 0, -2883628, 2, 0, -2883627, 2, 0, -2883626, 2, 0, -2883625, 2, 0, -2883624, 2, 0, -2883623, 2, 0, -2883622, 2, 0, -2883621, 2, 0, -2883620, 2, 0, -2883619, 2, 0, -2883618, 2, 0, -2883617, 2, 0, -2883616, 2, 0, -2883615, 2, 0, -2883614, 2, 0, -2883613, 2, 0, -2883612, 2, 0, -2883611, 2, 0, -2883610, 2, 0, -2883609, 2, 0, -2883608, 2, 0, -2883607, 2, 0, -2883606, 2, 0, -2883605, 2, 0, -2883604, 2, 0, -2883603, 2, 0, -2883602, 2, 0, -2883601, 2, 0, -2883600, 2, 0, -2883599, 2, 0, -2883598, 2, 0, -2883597, 2, 0, -2883596, 2, 0, -2883595, 2, 0, -2883594, 2, 0, -2883593, 2, 0, -2883592, 2, 0, -2883591, 2, 0, -2883590, 2, 0, -2883589, 2, 0, -2883588, 2, 0, -2883587, 2, 0, -2883586, 2, 0, -2883585, 2, 0, -2949120, 2, 0, -2949119, 2, 0, -2949118, 2, 0, -2949117, 2, 0, -2949116, 2, 0, -2949115, 2, 0, -2949114, 2, 0, -2818092, 2, 0, -2818091, 2, 0, -2818090, 2, 0, -2818089, 2, 0, -2818088, 2, 0, -2818087, 2, 0, -2818086, 2, 0, -2818085, 2, 0, -2818084, 2, 0, -2818083, 2, 0, -2818082, 2, 0, -2818081, 2, 0, -2818080, 2, 0, -2818079, 2, 0, -2818078, 2, 0, -2818077, 2, 0, -2818076, 2, 0, -2818075, 2, 0, -2818074, 2, 0, -2818073, 2, 0, -2818072, 2, 0, -2818071, 2, 0, -2818070, 2, 0, -2818069, 2, 0, -2818068, 2, 0, -2818067, 2, 0, -2818066, 2, 0, -2818065, 2, 0, -2818064, 2, 0, -2818063, 2, 0, -2818062, 2, 0, -2818061, 2, 0, -2818060, 2, 0, -2818059, 2, 0, -2818058, 2, 0, -2818057, 2, 0, -2818056, 2, 0, -2818055, 2, 0, -2818054, 2, 0, -2818053, 2, 0, -2818052, 2, 0, -2818051, 2, 0, -2818050, 2, 0, -2818049, 2, 0, -2883584, 2, 0, -2883583, 2, 0, -2883582, 2, 0, -2883581, 2, 0, -2883580, 2, 0, -2883579, 2, 0, -2883578, 2, 0, -2883577, 2, 0, -2883576, 2, 0, -2752556, 2, 0, -2752555, 2, 0, -2752554, 2, 0, -2752553, 2, 0, -2752552, 2, 0, -2752551, 2, 0, -2752550, 2, 0, -2752549, 2, 0, -2752548, 2, 0, -2752547, 2, 0, -2752546, 2, 0, -2752545, 2, 0, -2752544, 2, 0, -2752543, 2, 0, -2752542, 2, 0, -2752541, 2, 0, -2752540, 2, 0, -2752539, 2, 0, -2752538, 2, 0, -2752537, 2, 0, -2752536, 2, 0, -2752535, 2, 0, -2752534, 2, 0, -2752533, 2, 0, -2752532, 2, 0, -2752531, 2, 0, -2752530, 2, 0, -2752529, 2, 0, -2752528, 2, 0, -2752527, 2, 0, -2752526, 2, 0, -2752525, 2, 0, -2752524, 2, 0, -2752523, 2, 0, -2752522, 2, 0, -2752521, 2, 0, -2752520, 2, 0, -2752519, 2, 0, -2752518, 2, 0, -2752517, 2, 0, -2752516, 2, 0, -2752515, 2, 0, -2752514, 2, 0, -2752513, 2, 0, -2818048, 2, 0, -2818047, 2, 0, -2818046, 2, 0, -2818045, 2, 0, -2818044, 2, 0, -2818043, 2, 0, -2818042, 2, 0, -2818041, 2, 0, -2818040, 2, 0, -2818039, 2, 0, -2818038, 2, 0, -2818037, 2, 0, -2818036, 2, 0, -2687020, 2, 0, -2687019, 2, 0, -2687018, 2, 0, -2687017, 2, 0, -2687016, 2, 0, -2687015, 2, 0, -2687014, 2, 0, -2687013, 2, 0, -2687012, 2, 0, -2687011, 2, 0, -2687010, 2, 0, -2687009, 2, 0, -2687008, 2, 0, -2687007, 2, 0, -2687006, 2, 0, -2687005, 2, 0, -2687004, 2, 0, -2687003, 2, 0, -2687002, 2, 0, -2687001, 2, 0, -2687000, 2, 0, -2686999, 2, 0, -2686998, 2, 0, -2686997, 2, 0, -2686996, 2, 0, -2686995, 2, 0, -2686994, 2, 0, -2686993, 2, 0, -2686992, 2, 0, -2686991, 2, 0, -2686990, 2, 0, -2686989, 2, 0, -2686988, 2, 0, -2686987, 2, 0, -2686986, 2, 0, -2686985, 2, 0, -2686984, 2, 0, -2686983, 2, 0, -2686982, 2, 0, -2686981, 2, 0, -2686980, 2, 0, -2686979, 2, 0, -2686978, 2, 0, -2686977, 2, 0, -2752512, 2, 0, -2752511, 2, 0, -2752510, 2, 0, -2752509, 2, 0, -2752508, 2, 0, -2752507, 2, 0, -2752506, 2, 0, -2752505, 2, 0, -2752504, 2, 0, -2752503, 2, 0, -2752502, 2, 0, -2752501, 2, 0, -2752500, 2, 0, -2752499, 2, 0, -2752498, 2, 0, -2752497, 2, 0, -2621484, 2, 0, -2621483, 2, 0, -2621482, 2, 0, -2621481, 2, 0, -2621480, 2, 0, -2621479, 2, 0, -2621478, 2, 0, -2621477, 2, 0, -2621476, 2, 0, -2621475, 2, 0, -2621474, 2, 0, -2621473, 2, 0, -2621472, 2, 0, -2621471, 2, 0, -2621470, 2, 0, -2621469, 2, 0, -2621468, 2, 0, -2621467, 2, 0, -2621466, 2, 0, -2621465, 2, 0, -2621464, 2, 0, -2621463, 2, 0, -2621462, 2, 0, -2621461, 2, 0, -2621460, 2, 0, -2621459, 2, 0, -2621458, 2, 0, -2621457, 2, 0, -2621456, 2, 0, -2621455, 2, 0, -2621454, 2, 0, -2621453, 2, 0, -2621452, 2, 0, -2621451, 2, 0, -2621450, 2, 0, -2621449, 2, 0, -2621448, 2, 0, -2621447, 2, 0, -2621446, 2, 0, -2621445, 2, 0, -2621444, 2, 0, -2621443, 2, 0, -2621442, 2, 0, -2621441, 2, 0, -2686976, 2, 0, -2686975, 2, 0, -2686974, 2, 0, -2686973, 2, 0, -2686972, 2, 0, -2686971, 2, 0, -2686970, 2, 0, -2686969, 2, 0, -2686968, 2, 0, -2686967, 2, 0, -2686966, 2, 0, -2686965, 2, 0, -2686964, 2, 0, -2686963, 2, 0, -2686962, 2, 0, -2686961, 2, 0, -2686960, 2, 0, -2686959, 2, 0, -2555948, 2, 0, -2555947, 2, 0, -2555946, 2, 0, -2555945, 2, 0, -2555944, 2, 0, -2555943, 2, 0, -2555942, 2, 0, -2555941, 2, 0, -2555940, 2, 0, -2555939, 2, 0, -2555938, 2, 0, -2555937, 2, 0, -2555936, 2, 0, -2555935, 2, 0, -2555934, 2, 0, -2555933, 2, 0, -2555932, 2, 0, -2555931, 2, 0, -2555930, 2, 0, -2555929, 2, 0, -2555928, 2, 0, -2555927, 2, 0, -2555926, 2, 0, -2555925, 2, 0, -2555924, 2, 0, -2555923, 2, 0, -2555922, 2, 0, -2555921, 2, 0, -2555920, 2, 0, -2555919, 2, 0, -2555918, 2, 0, -2555917, 2, 0, -2555916, 2, 0, -2555915, 2, 0, -2555914, 2, 0, -2555913, 2, 0, -2555912, 2, 0, -2555911, 2, 0, -2555910, 2, 0, -2555909, 2, 0, -2555908, 2, 0, -2555907, 2, 0, -2555906, 2, 0, -2555905, 2, 0, -2621440, 2, 0, -2621439, 2, 0, -2621438, 2, 0, -2621437, 2, 0, -2621436, 2, 0, -2621435, 2, 0, -2621434, 2, 0, -2621433, 2, 0, -2621432, 2, 0, -2621431, 2, 0, -2621430, 2, 0, -2621429, 2, 0, -2621428, 2, 0, -2621427, 2, 0, -2621426, 2, 0, -2621425, 2, 0, -2621424, 2, 0, -2621423, 2, 0, -2621422, 2, 0, -2621421, 2, 0, -2490412, 2, 0, -2490411, 2, 0, -2490410, 2, 0, -2490409, 2, 0, -2490408, 2, 0, -2490407, 2, 0, -2490406, 2, 0, -2490405, 2, 0, -2490404, 2, 0, -2490403, 2, 0, -2490402, 2, 0, -2490401, 2, 0, -2490400, 2, 0, -2490399, 2, 0, -2490398, 2, 0, -2490397, 2, 0, -2490396, 2, 0, -2490395, 2, 0, -2490394, 2, 0, -2490393, 2, 0, -2490392, 2, 0, -2490391, 2, 0, -2490390, 2, 0, -2490389, 2, 0, -2490388, 2, 0, -2490387, 2, 0, -2490386, 2, 0, -2490385, 2, 0, -2490384, 2, 0, -2490383, 2, 0, -2490382, 2, 0, -2490381, 2, 0, -2490380, 2, 0, -2490379, 2, 0, -2490378, 2, 0, -2490377, 2, 0, -2490376, 2, 0, -2490375, 2, 0, -2490374, 2, 0, -2490373, 2, 0, -2490372, 2, 0, -2490371, 2, 0, -2490370, 2, 0, -2490369, 2, 0, -2555904, 2, 0, -2555903, 2, 0, -2555902, 2, 0, -2555901, 2, 0, -2555900, 2, 0, -2555899, 2, 0, -2555898, 2, 0, -2555897, 2, 0, -2555896, 2, 0, -2555895, 2, 0, -2555894, 2, 0, -2555893, 2, 0, -2555892, 2, 0, -2555891, 2, 0, -2555890, 2, 0, -2555889, 2, 0, -2555888, 2, 0, -2555887, 2, 0, -2555886, 2, 0, -2555885, 2, 0, -2555884, 2, 0, -2555883, 2, 0, -2424876, 2, 0, -2424875, 2, 0, -2424874, 2, 0, -2424873, 2, 0, -2424872, 2, 0, -2424871, 2, 0, -2424870, 2, 0, -2424869, 2, 0, -2424868, 2, 0, -2424867, 2, 0, -2424866, 2, 0, -2424865, 2, 0, -2424864, 2, 0, -2424863, 2, 0, -2424862, 2, 0, -2424861, 2, 0, -2424860, 2, 0, -2424859, 2, 0, -2424858, 2, 0, -2424857, 2, 0, -2424856, 2, 0, -2424855, 2, 0, -2424854, 2, 0, -2424853, 2, 0, -2424852, 2, 0, -2424851, 2, 0, -2424850, 2, 0, -2424849, 2, 0, -2424848, 2, 0, -2424847, 2, 0, -2424846, 2, 0, -2424845, 2, 0, -2424844, 2, 0, -2424843, 2, 0, -2424842, 2, 0, -2424841, 2, 0, -2424840, 2, 0, -2424839, 2, 0, -2424838, 2, 0, -2424837, 2, 0, -2424836, 2, 0, -2424835, 2, 0, -2424834, 2, 0, -2424833, 2, 0, -2490368, 2, 0, -2490367, 2, 0, -2490366, 2, 0, -2490365, 2, 0, -2490364, 2, 0, -2490363, 2, 0, -2490362, 2, 0, -2490361, 2, 0, -2490360, 2, 0, -2490359, 2, 0, -2490358, 2, 0, -2490357, 2, 0, -2490356, 2, 0, -2490355, 2, 0, -2490354, 2, 0, -2490353, 2, 0, -2490352, 2, 0, -2490351, 2, 0, -2490350, 2, 0, -2490349, 2, 0, -2490348, 2, 0, -2490347, 2, 0, -2490346, 2, 0, -2490345, 2, 0, -2359339, 2, 0, -2359338, 2, 0, -2359337, 2, 0, -2359336, 2, 0, -2359335, 2, 0, -2359334, 2, 0, -2359333, 2, 0, -2359332, 2, 0, -2359331, 2, 0, -2359330, 2, 0, -2359329, 2, 0, -2359328, 2, 0, -2359327, 2, 0, -2359326, 2, 0, -2359325, 2, 0, -2359324, 2, 0, -2359323, 2, 0, -2359322, 2, 0, -2359321, 2, 0, -2359320, 2, 0, -2359319, 2, 0, -2359318, 2, 0, -2359317, 2, 0, -2359316, 2, 0, -2359315, 2, 0, -2359314, 2, 0, -2359313, 2, 0, -2359312, 2, 0, -2359311, 2, 0, -2359310, 2, 0, -2359309, 2, 0, -2359308, 2, 0, -2359307, 2, 0, -2359306, 2, 0, -2359305, 2, 0, -2359304, 2, 0, -2359303, 2, 0, -2359302, 2, 0, -2359301, 2, 0, -2359300, 2, 0, -2359299, 2, 0, -2359298, 2, 0, -2359297, 2, 0, -2424832, 2, 0, -2424831, 2, 0, -2424830, 2, 0, -2424829, 2, 0, -2424828, 2, 0, -2424827, 2, 0, -2424826, 2, 0, -2424825, 2, 0, -2424824, 2, 0, -2424823, 2, 0, -2424822, 2, 0, -2424821, 2, 0, -2424820, 2, 0, -2424819, 2, 0, -2424818, 2, 0, -2424817, 2, 0, -2424816, 2, 0, -2424815, 2, 0, -2424814, 2, 0, -2424813, 2, 0, -2424812, 2, 0, -2424811, 2, 0, -2424810, 2, 0, -2424809, 2, 0, -2424808, 2, 0, -2424807, 2, 0, -2424806, 2, 0, -2293803, 2, 0, -2293802, 2, 0, -2293801, 2, 0, -2293800, 2, 0, -2293799, 2, 0, -2293798, 2, 0, -2293797, 2, 0, -2293796, 2, 0, -2293795, 2, 0, -2293794, 2, 0, -2293793, 2, 0, -2293792, 2, 0, -2293791, 2, 0, -2293790, 2, 0, -2293789, 2, 0, -2293788, 2, 0, -2293787, 2, 0, -2293786, 2, 0, -2293785, 2, 0, -2293784, 2, 0, -2293783, 2, 0, -2293782, 2, 0, -2293781, 2, 0, -2293780, 2, 0, -2293779, 2, 0, -2293778, 2, 0, -2293777, 2, 0, -2293776, 2, 0, -2293775, 2, 0, -2293774, 2, 0, -2293773, 2, 0, -2293772, 2, 0, -2293771, 2, 0, -2293770, 2, 0, -2293769, 2, 0, -2293768, 2, 0, -2293767, 2, 0, -2293766, 2, 0, -2293765, 2, 0, -2293764, 2, 0, -2293763, 2, 0, -2293762, 2, 0, -2293761, 2, 0, -2359296, 2, 0, -2359295, 2, 0, -2359294, 2, 0, -2359293, 2, 0, -2359292, 2, 0, -2359291, 2, 0, -2359290, 2, 0, -2359289, 2, 0, -2359288, 2, 0, -2359287, 2, 0, -2359286, 2, 0, -2359285, 2, 0, -2359284, 2, 0, -2359283, 2, 0, -2359282, 2, 0, -2359281, 2, 0, -2359280, 2, 0, -2359279, 2, 0, -2359278, 2, 0, -2359277, 2, 0, -2359276, 2, 0, -2359275, 2, 0, -2359274, 2, 0, -2359273, 2, 0, -2359272, 2, 0, -2359271, 2, 0, -2359270, 2, 0, -2359269, 2, 0, -2359268, 2, 0, -2228267, 2, 0, -2228266, 2, 0, -2228265, 2, 0, -2228264, 2, 0, -2228263, 2, 0, -2228262, 2, 0, -2228261, 2, 0, -2228260, 2, 0, -2228259, 2, 0, -2228258, 2, 0, -2228257, 2, 0, -2228256, 2, 0, -2228255, 2, 0, -2228254, 2, 0, -2228253, 2, 0, -2228252, 2, 0, -2228251, 2, 0, -2228250, 2, 0, -2228249, 2, 0, -2228248, 2, 0, -2228247, 2, 0, -2228246, 2, 0, -2228245, 2, 0, -2228244, 2, 0, -2228243, 2, 0, -2228242, 2, 0, -2228241, 2, 0, -2228240, 2, 0, -2228239, 2, 0, -2228238, 2, 0, -2228237, 2, 0, -2228236, 2, 0, -2228235, 2, 0, -2228234, 2, 0, -2228233, 2, 0, -2228232, 2, 0, -2228231, 2, 0, -2228230, 2, 0, -2228229, 2, 0, -2228228, 2, 0, -2228227, 2, 0, -2228226, 2, 0, -2228225, 2, 0, -2293760, 2, 0, -2293759, 2, 0, -2293758, 2, 0, -2293757, 2, 0, -2293756, 2, 0, -2293755, 2, 0, -2293754, 2, 0, -2293753, 2, 0, -2293752, 2, 0, -2293751, 2, 0, -2293750, 2, 0, -2293749, 2, 0, -2293748, 2, 0, -2293747, 2, 0, -2293746, 2, 0, -2293745, 2, 0, -2293744, 2, 0, -2293743, 2, 0, -2293742, 2, 0, -2293741, 2, 0, -2293740, 2, 0, -2293739, 2, 0, -2293738, 2, 0, -2293737, 2, 0, -2293736, 2, 0, -2293735, 2, 0, -2293734, 2, 0, -2293733, 2, 0, -2293732, 2, 0, -2293731, 2, 0, -2293730, 2, 0, -2162731, 2, 0, -2162730, 2, 0, -2162729, 2, 0, -2162728, 2, 0, -2162727, 2, 0, -2162726, 2, 0, -2162725, 2, 0, -2162724, 2, 0, -2162723, 2, 0, -2162722, 2, 0, -2162721, 2, 0, -2162720, 2, 0, -2162719, 2, 0, -2162718, 2, 0, -2162717, 2, 0, -2162716, 2, 0, -2162715, 2, 0, -2162714, 2, 0, -2162713, 2, 0, -2162712, 2, 0, -2162711, 2, 0, -2162710, 2, 0, -2162709, 2, 0, -2162708, 2, 0, -2162707, 2, 0, -2162706, 2, 0, -2162705, 2, 0, -2162704, 2, 0, -2162703, 2, 0, -2162702, 2, 0, -2162701, 2, 0, -2162700, 2, 0, -2162699, 2, 0, -2162698, 2, 0, -2162697, 2, 0, -2162696, 2, 0, -2162695, 2, 0, -2162694, 2, 0, -2162693, 2, 0, -2162692, 2, 0, -2162691, 2, 0, -2162690, 2, 0, -2162689, 2, 0, -2228224, 2, 0, -2228223, 2, 0, -2228222, 2, 0, -2228221, 2, 0, -2228220, 2, 0, -2228219, 2, 0, -2228218, 2, 0, -2228217, 2, 0, -2228216, 2, 0, -2228215, 2, 0, -2228214, 2, 0, -2228213, 2, 0, -2228212, 2, 0, -2228211, 2, 0, -2228210, 2, 0, -2228209, 2, 0, -2228208, 2, 0, -2228207, 2, 0, -2228206, 2, 0, -2228205, 2, 0, -2228204, 2, 0, -2228203, 2, 0, -2228202, 2, 0, -2228201, 2, 0, -2228200, 2, 0, -2228199, 2, 0, -2228198, 2, 0, -2228197, 2, 0, -2228196, 2, 0, -2228195, 2, 0, -2228194, 2, 0, -2228193, 2, 0, -2228192, 2, 0, -2097194, 2, 0, -2097193, 2, 0, -2097192, 2, 0, -2097191, 2, 0, -2097190, 2, 0, -2097189, 2, 0, -2097188, 2, 0, -2097187, 2, 0, -2097186, 2, 0, -2097185, 2, 0, -2097184, 2, 0, -2097183, 2, 0, -2097182, 2, 0, -2097181, 2, 0, -2097180, 2, 0, -2097179, 2, 0, -2097178, 2, 0, -2097177, 2, 0, -2097176, 2, 0, -2097175, 2, 0, -2097174, 2, 0, -2097173, 2, 0, -2097172, 2, 0, -2097171, 2, 0, -2097170, 2, 0, -2097169, 2, 0, -2097168, 2, 0, -2097167, 2, 0, -2097166, 2, 0, -2097165, 2, 0, -2097164, 2, 0, -2097163, 2, 0, -2097162, 2, 0, -2097161, 2, 0, -2097160, 2, 0, -2097159, 2, 0, -2097158, 2, 0, -2097157, 2, 0, -2097156, 2, 0, -2097155, 2, 0, -2097154, 2, 0, -2097153, 2, 0, -2162688, 2, 0, -2162687, 2, 0, -2162686, 2, 0, -2162685, 2, 0, -2162684, 2, 0, -2162683, 2, 0, -2162682, 2, 0, -2162681, 2, 0, -2162680, 2, 0, -2162679, 2, 0, -2162678, 2, 0, -2162677, 2, 0, -2162676, 2, 0, -2162675, 2, 0, -2162674, 2, 0, -2162673, 2, 0, -2162672, 2, 0, -2162671, 2, 0, -2162670, 2, 0, -2162669, 2, 0, -2162668, 2, 0, -2162667, 2, 0, -2162666, 2, 0, -2162665, 2, 0, -2162664, 2, 0, -2162663, 2, 0, -2162662, 2, 0, -2162661, 2, 0, -2162660, 2, 0, -2162659, 2, 0, -2162658, 2, 0, -2162657, 2, 0, -2162656, 2, 0, -2162655, 2, 0, -2162654, 2, 0, -2031658, 2, 0, -2031657, 2, 0, -2031656, 2, 0, -2031655, 2, 0, -2031654, 2, 0, -2031653, 2, 0, -2031652, 2, 0, -2031651, 2, 0, -2031650, 2, 0, -2031649, 2, 0, -2031648, 2, 0, -2031647, 2, 0, -2031646, 2, 0, -2031645, 2, 0, -2031644, 2, 0, -2031643, 2, 0, -2031642, 2, 0, -2031641, 2, 0, -2031640, 2, 0, -2031639, 2, 0, -2031638, 2, 0, -2031637, 2, 0, -2031636, 2, 0, -2031635, 2, 0, -2031634, 2, 0, -2031633, 2, 0, -2031632, 2, 0, -2031631, 2, 0, -2031630, 2, 0, -2031629, 2, 0, -2031628, 2, 0, -2031627, 2, 0, -2031626, 2, 0, -2031625, 2, 0, -2031624, 2, 0, -2031623, 2, 0, -2031622, 2, 0, -2031621, 2, 0, -2031620, 2, 0, -2031619, 2, 0, -2031618, 2, 0, -2031617, 2, 0, -2097152, 2, 0, -2097151, 2, 0, -2097150, 2, 0, -2097149, 2, 0, -2097148, 2, 0, -2097147, 2, 0, -2097146, 2, 0, -2097145, 2, 0, -2097144, 2, 0, -2097143, 2, 0, -2097142, 2, 0, -2097141, 2, 0, -2097140, 2, 0, -2097139, 2, 0, -2097138, 2, 0, -2097137, 2, 0, -2097136, 2, 0, -2097135, 2, 0, -2097134, 2, 0, -2097133, 2, 0, -2097132, 2, 0, -2097131, 2, 0, -2097130, 2, 0, -2097129, 2, 0, -2097128, 2, 0, -2097127, 2, 0, -2097126, 2, 0, -2097125, 2, 0, -2097124, 2, 0, -2097123, 2, 0, -2097122, 2, 0, -2097121, 2, 0, -2097120, 2, 0, -2097119, 2, 0, -2097118, 2, 0, -2097117, 2, 0, -2097116, 2, 0, -1966122, 2, 0, -1966121, 2, 0, -1966120, 2, 0, -1966119, 2, 0, -1966118, 2, 0, -1966117, 2, 0, -1966116, 2, 0, -1966115, 2, 0, -1966114, 2, 0, -1966113, 2, 0, -1966112, 2, 0, -1966111, 2, 0, -1966110, 2, 0, -1966109, 2, 0, -1966108, 2, 0, -1966107, 2, 0, -1966106, 2, 0, -1966105, 2, 0, -1966104, 2, 0, -1966103, 2, 0, -1966102, 2, 0, -1966101, 2, 0, -1966100, 2, 0, -1966099, 2, 0, -1966098, 2, 0, -1966097, 2, 0, -1966096, 2, 0, -1966095, 2, 0, -1966094, 2, 0, -1966093, 2, 0, -1966092, 2, 0, -1966091, 2, 0, -1966090, 2, 0, -1966089, 2, 0, -1966088, 2, 0, -1966087, 2, 0, -1966086, 2, 0, -1966085, 2, 0, -1966084, 2, 0, -1966083, 2, 0, -1966082, 2, 0, -1966081, 2, 0, -2031616, 2, 0, -2031615, 2, 0, -2031614, 2, 0, -2031613, 2, 0, -2031612, 2, 0, -2031611, 2, 0, -2031610, 2, 0, -2031609, 2, 0, -2031608, 2, 0, -2031607, 2, 0, -2031606, 2, 0, -2031605, 2, 0, -2031604, 2, 0, -2031603, 2, 0, -2031602, 2, 0, -2031601, 2, 0, -2031600, 2, 0, -2031599, 2, 0, -2031598, 2, 0, -2031597, 2, 0, -2031596, 2, 0, -2031595, 2, 0, -2031594, 2, 0, -2031593, 2, 0, -2031592, 2, 0, -2031591, 2, 0, -2031590, 2, 0, -2031589, 2, 0, -2031588, 2, 0, -2031587, 2, 0, -2031586, 2, 0, -2031585, 2, 0, -2031584, 2, 0, -2031583, 2, 0, -2031582, 2, 0, -2031581, 2, 0, -2031580, 2, 0, -2031579, 2, 0, -2031578, 2, 0, -1900586, 2, 0, -1900585, 2, 0, -1900584, 2, 0, -1900583, 2, 0, -1900582, 2, 0, -1900581, 2, 0, -1900580, 2, 0, -1900579, 2, 0, -1900578, 2, 0, -1900577, 2, 0, -1900576, 2, 0, -1900575, 2, 0, -1900574, 2, 0, -1900573, 2, 0, -1900572, 2, 0, -1900571, 2, 0, -1900570, 2, 0, -1900569, 2, 0, -1900568, 2, 0, -1900567, 2, 0, -1900566, 2, 0, -1900565, 2, 0, -1900564, 2, 0, -1900563, 2, 0, -1900562, 2, 0, -1900561, 2, 0, -1900560, 2, 0, -1900559, 2, 0, -1900558, 2, 0, -1900557, 2, 0, -1900556, 2, 0, -1900555, 2, 0, -1900554, 2, 0, -1900553, 2, 0, -1900552, 2, 0, -1900551, 2, 0, -1900550, 2, 0, -1900549, 2, 0, -1900548, 2, 0, -1900547, 2, 0, -1900546, 2, 0, -1900545, 2, 0, -1966080, 2, 0, -1966079, 2, 0, -1966078, 2, 0, -1966077, 2, 0, -1966076, 2, 0, -1966075, 2, 0, -1966074, 2, 0, -1966073, 2, 0, -1966072, 2, 0, -1966071, 2, 0, -1966070, 2, 0, -1966069, 2, 0, -1966068, 2, 0, -1966067, 2, 0, -1966066, 2, 0, -1966065, 2, 0, -1966064, 2, 0, -1966063, 2, 0, -1966062, 2, 0, -1966061, 2, 0, -1966060, 2, 0, -1966059, 2, 0, -1966058, 2, 0, -1966057, 2, 0, -1966056, 2, 0, -1966055, 2, 0, -1966054, 2, 0, -1966053, 2, 0, -1966052, 2, 0, -1966051, 2, 0, -1966050, 2, 0, -1966049, 2, 0, -1966048, 2, 0, -1966047, 2, 0, -1966046, 2, 0, -1966045, 2, 0, -1966044, 2, 0, -1966043, 2, 0, -1966042, 2, 0, -1966041, 2, 0, -1966040, 2, 0, -1835050, 2, 0, -1835049, 2, 0, -1835048, 2, 0, -1835047, 2, 0, -1835046, 2, 0, -1835045, 2, 0, -1835044, 2, 0, -1835043, 2, 0, -1835042, 2, 0, -1835041, 2, 0, -1835040, 2, 0, -1835039, 2, 0, -1835038, 2, 0, -1835037, 2, 0, -1835036, 2, 0, -1835035, 2, 0, -1835034, 2, 0, -1835033, 2, 0, -1835032, 2, 0, -1835031, 2, 0, -1835030, 2, 0, -1835029, 2, 0, -1835028, 2, 0, -1835027, 2, 0, -1835026, 2, 0, -1835025, 2, 0, -1835024, 2, 0, -1835023, 2, 0, -1835022, 2, 0, -1835021, 2, 0, -1835020, 2, 0, -1835019, 2, 0, -1835018, 2, 0, -1835017, 2, 0, -1835016, 2, 0, -1835015, 2, 0, -1835014, 2, 0, -1835013, 2, 0, -1835012, 2, 0, -1835011, 2, 0, -1835010, 2, 0, -1835009, 2, 0, -1900544, 2, 0, -1900543, 2, 0, -1900542, 2, 0, -1900541, 2, 0, -1900540, 2, 0, -1900539, 2, 0, -1900538, 2, 0, -1900537, 2, 0, -1900536, 2, 0, -1900535, 2, 0, -1900534, 2, 0, -1900533, 2, 0, -1900532, 2, 0, -1900531, 2, 0, -1900530, 2, 0, -1900529, 2, 0, -1900528, 2, 0, -1900527, 2, 0, -1900526, 2, 0, -1900525, 2, 0, -1900524, 2, 0, -1900523, 2, 0, -1900522, 2, 0, -1900521, 2, 0, -1900520, 2, 0, -1900519, 2, 0, -1900518, 2, 0, -1900517, 2, 0, -1900516, 2, 0, -1900515, 2, 0, -1900514, 2, 0, -1900513, 2, 0, -1900512, 2, 0, -1900511, 2, 0, -1900510, 2, 0, -1900509, 2, 0, -1900508, 2, 0, -1900507, 2, 0, -1900506, 2, 0, -1900505, 2, 0, -1900504, 2, 0, -1900503, 2, 0, -1769514, 2, 0, -1769513, 2, 0, -1769512, 2, 0, -1769511, 2, 0, -1769510, 2, 0, -1769509, 2, 0, -1769508, 2, 0, -1769507, 2, 0, -1769506, 2, 0, -1769505, 2, 0, -1769504, 2, 0, -1769503, 2, 0, -1769502, 2, 0, -1769501, 2, 0, -1769500, 2, 0, -1769499, 2, 0, -1769498, 2, 0, -1769497, 2, 0, -1769496, 2, 0, -1769495, 2, 0, -1769494, 2, 0, -1769493, 2, 0, -1769492, 2, 0, -1769491, 2, 0, -1769490, 2, 0, -1769489, 2, 0, -1769488, 2, 0, -1769487, 2, 0, -1769486, 2, 0, -1769485, 2, 0, -1769484, 2, 0, -1769483, 2, 0, -1769482, 2, 0, -1769481, 2, 0, -1769480, 2, 0, -1769479, 2, 0, -1769478, 2, 0, -1769477, 2, 0, -1769476, 2, 0, -1769475, 2, 0, -1769474, 2, 0, -1769473, 2, 0, -1835008, 2, 0, -1835007, 2, 0, -1835006, 2, 0, -1835005, 2, 0, -1835004, 2, 0, -1835003, 2, 0, -1835002, 2, 0, -1835001, 2, 0, -1835000, 2, 0, -1834999, 2, 0, -1834998, 2, 0, -1834997, 2, 0, -1834996, 2, 0, -1834995, 2, 0, -1834994, 2, 0, -1834993, 2, 0, -1834992, 2, 0, -1834991, 2, 0, -1834990, 2, 0, -1834989, 2, 0, -1834988, 2, 0, -1834987, 2, 0, -1834986, 2, 0, -1834985, 2, 0, -1834984, 2, 0, -1834983, 2, 0, -1834982, 2, 0, -1834981, 2, 0, -1834980, 2, 0, -1834979, 2, 0, -1834978, 2, 0, -1834977, 2, 0, -1834976, 2, 0, -1834975, 2, 0, -1834974, 2, 0, -1834973, 2, 0, -1834972, 2, 0, -1834971, 2, 0, -1834970, 2, 0, -1834969, 2, 0, -1834968, 2, 0, -1834967, 2, 0, -1834966, 2, 0, -1703977, 2, 0, -1703976, 2, 0, -1703975, 2, 0, -1703974, 2, 0, -1703973, 2, 0, -1703972, 2, 0, -1703971, 2, 0, -1703970, 2, 0, -1703969, 2, 0, -1703968, 2, 0, -1703967, 2, 0, -1703966, 2, 0, -1703965, 2, 0, -1703964, 2, 0, -1703963, 2, 0, -1703962, 2, 0, -1703961, 2, 0, -1703960, 2, 0, -1703959, 2, 0, -1703958, 2, 0, -1703957, 2, 0, -1703956, 2, 0, -1703955, 2, 0, -1703954, 2, 0, -1703953, 2, 0, -1703952, 2, 0, -1703951, 2, 0, -1703950, 2, 0, -1703949, 2, 0, -1703948, 2, 0, -1703947, 2, 0, -1703946, 2, 0, -1703945, 2, 0, -1703944, 2, 0, -1703943, 2, 0, -1703942, 2, 0, -1703941, 2, 0, -1703940, 2, 0, -1703939, 2, 0, -1703938, 2, 0, -1703937, 2, 0, -1769472, 2, 0, -1769471, 2, 0, -1769470, 2, 0, -1769469, 2, 0, -1769468, 2, 0, -1769467, 2, 0, -1769466, 2, 0, -1769465, 2, 0, -1769464, 2, 0, -1769463, 2, 0, -1769462, 2, 0, -1769461, 2, 0, -1769460, 2, 0, -1769459, 2, 0, -1769458, 2, 0, -1769457, 2, 0, -1769456, 2, 0, -1769455, 2, 0, -1769454, 2, 0, -1769453, 2, 0, -1769452, 2, 0, -1769451, 2, 0, -1769450, 2, 0, -1769449, 2, 0, -1769448, 2, 0, -1769447, 2, 0, -1769446, 2, 0, -1769445, 2, 0, -1769444, 2, 0, -1769443, 2, 0, -1769442, 2, 0, -1769441, 2, 0, -1769440, 2, 0, -1769439, 2, 0, -1769438, 2, 0, -1769437, 2, 0, -1769436, 2, 0, -1769435, 2, 0, -1769434, 2, 0, -1769433, 2, 0, -1769432, 2, 0, -1769431, 2, 0, -1769430, 2, 0, -1769429, 2, 0, -1769428, 2, 0, -1638441, 2, 0, -1638440, 2, 0, -1638439, 2, 0, -1638438, 2, 0, -1638437, 2, 0, -1638436, 2, 0, -1638435, 2, 0, -1638434, 2, 0, -1638433, 2, 0, -1638432, 2, 0, -1638431, 2, 0, -1638430, 2, 0, -1638429, 2, 0, -1638428, 2, 0, -1638427, 2, 0, -1638426, 2, 0, -1638425, 2, 0, -1638424, 2, 0, -1638423, 2, 0, -1638422, 2, 0, -1638421, 2, 0, -1638420, 2, 0, -1638419, 2, 0, -1638418, 2, 0, -1638417, 2, 0, -1638416, 2, 0, -1638415, 2, 0, -1638414, 2, 0, -1638413, 2, 0, -1638412, 2, 0, -1638411, 2, 0, -1638410, 2, 0, -1638409, 2, 0, -1638408, 2, 0, -1638407, 2, 0, -1638406, 2, 0, -1638405, 2, 0, -1638404, 2, 0, -1638403, 2, 0, -1638402, 2, 0, -1638401, 2, 0, -1703936, 2, 0, -1703935, 2, 0, -1703934, 2, 0, -1703933, 2, 0, -1703932, 2, 0, -1703931, 2, 0, -1703930, 2, 0, -1703929, 2, 0, -1703928, 2, 0, -1703927, 2, 0, -1703926, 2, 0, -1703925, 2, 0, -1703924, 2, 0, -1703923, 2, 0, -1703922, 2, 0, -1703921, 2, 0, -1703920, 2, 0, -1703919, 2, 0, -1703918, 2, 0, -1703917, 2, 0, -1703916, 2, 0, -1703915, 2, 0, -1703914, 2, 0, -1703913, 2, 0, -1703912, 2, 0, -1703911, 2, 0, -1703910, 2, 0, -1703909, 2, 0, -1703908, 2, 0, -1703907, 2, 0, -1703906, 2, 0, -1703905, 2, 0, -1703904, 2, 0, -1703903, 2, 0, -1703902, 2, 0, -1703901, 2, 0, -1703900, 2, 0, -1703899, 2, 0, -1703898, 2, 0, -1703897, 2, 0, -1703896, 2, 0, -1703895, 2, 0, -1703894, 2, 0, -1703893, 2, 0, -1703892, 2, 0, -1703891, 2, 0, -1572905, 2, 0, -1572904, 2, 0, -1572903, 2, 0, -1572902, 2, 0, -1572901, 2, 0, -1572900, 2, 0, -1572899, 2, 0, -1572898, 2, 0, -1572897, 2, 0, -1572896, 2, 0, -1572895, 2, 0, -1572894, 2, 0, -1572893, 2, 0, -1572892, 2, 0, -1572891, 2, 0, -1572890, 2, 0, -1572889, 2, 0, -1572888, 2, 0, -1572887, 2, 0, -1572886, 2, 0, -1572885, 2, 0, -1572884, 2, 0, -1572883, 2, 0, -1572882, 2, 0, -1572881, 2, 0, -1572880, 2, 0, -1572879, 2, 0, -1572878, 2, 0, -1572877, 2, 0, -1572876, 2, 0, -1572875, 2, 0, -1572874, 2, 0, -1572873, 2, 0, -1572872, 2, 0, -1572871, 2, 0, -1572870, 2, 0, -1572869, 2, 0, -1572868, 2, 0, -1572867, 2, 0, -1572866, 2, 0, -1572865, 2, 0, -1638400, 2, 0, -1638399, 2, 0, -1638398, 2, 0, -1638397, 2, 0, -1638396, 2, 0, -1638395, 2, 0, -1638394, 2, 0, -1638393, 2, 0, -1638392, 2, 0, -1638391, 2, 0, -1638390, 2, 0, -1638389, 2, 0, -1638388, 2, 0, -1638387, 2, 0, -1638386, 2, 0, -1638385, 2, 0, -1638384, 2, 0, -1638383, 2, 0, -1638382, 2, 0, -1638381, 2, 0, -1638380, 2, 0, -1638379, 2, 0, -1638378, 2, 0, -1638377, 2, 0, -1638376, 2, 0, -1638375, 2, 0, -1638374, 2, 0, -1638373, 2, 0, -1638372, 2, 0, -1638371, 2, 0, -1638370, 2, 0, -1638369, 2, 0, -1638368, 2, 0, -1638367, 2, 0, -1638366, 2, 0, -1638365, 2, 0, -1638364, 2, 0, -1638363, 2, 0, -1638362, 2, 0, -1638361, 2, 0, -1638360, 2, 0, -1638359, 2, 0, -1638358, 2, 0, -1638357, 2, 0, -1638356, 2, 0, -1638355, 2, 0, -1638354, 2, 0, -1507369, 2, 0, -1507368, 2, 0, -1507367, 2, 0, -1507366, 2, 0, -1507365, 2, 0, -1507364, 2, 0, -1507363, 2, 0, -1507362, 2, 0, -1507361, 2, 0, -1507360, 2, 0, -1507359, 2, 0, -1507358, 2, 0, -1507357, 2, 0, -1507356, 2, 0, -1507355, 2, 0, -1507354, 2, 0, -1507353, 2, 0, -1507352, 2, 0, -1507351, 2, 0, -1507350, 2, 0, -1507349, 2, 0, -1507348, 2, 0, -1507347, 2, 0, -1507346, 2, 0, -1507345, 2, 0, -1507344, 2, 0, -1507343, 2, 0, -1507342, 2, 0, -1507341, 2, 0, -1507340, 2, 0, -1507339, 2, 0, -1507338, 2, 0, -1507337, 2, 0, -1507336, 2, 0, -1507335, 2, 0, -1507334, 2, 0, -1507333, 2, 0, -1507332, 2, 0, -1507331, 2, 0, -1507330, 2, 0, -1507329, 2, 0, -1572864, 2, 0, -1572863, 2, 0, -1572862, 2, 0, -1572861, 2, 0, -1572860, 2, 0, -1572859, 2, 0, -1572858, 2, 0, -1572857, 2, 0, -1572856, 2, 0, -1572855, 2, 0, -1572854, 2, 0, -1572853, 2, 0, -1572852, 2, 0, -1572851, 2, 0, -1572850, 2, 0, -1572849, 2, 0, -1572848, 2, 0, -1572847, 2, 0, -1572846, 2, 0, -1572845, 2, 0, -1572844, 2, 0, -1572843, 2, 0, -1572842, 2, 0, -1572841, 2, 0, -1572840, 2, 0, -1572839, 2, 0, -1572838, 2, 0, -1572837, 2, 0, -1572836, 2, 0, -1572835, 2, 0, -1572834, 2, 0, -1572833, 2, 0, -1572832, 2, 0, -1572831, 2, 0, -1572830, 2, 0, -1572829, 2, 0, -1572828, 2, 0, -1572827, 2, 0, -1572826, 2, 0, -1572825, 2, 0, -1572824, 2, 0, -1572823, 2, 0, -1572822, 2, 0, -1572821, 2, 0, -1572820, 2, 0, -1572819, 2, 0, -1572818, 2, 0, -1572817, 2, 0, -1441833, 2, 0, -1441832, 2, 0, -1441831, 2, 0, -1441830, 2, 0, -1441829, 2, 0, -1441828, 2, 0, -1441827, 2, 0, -1441826, 2, 0, -1441825, 2, 0, -1441824, 2, 0, -1441823, 2, 0, -1441822, 2, 0, -1441821, 2, 0, -1441820, 2, 0, -1441819, 2, 0, -1441818, 2, 0, -1441817, 2, 0, -1441816, 2, 0, -1441815, 2, 0, -1441814, 2, 0, -1441813, 2, 0, -1441812, 2, 0, -1441811, 2, 0, -1441810, 2, 0, -1441809, 2, 0, -1441808, 2, 0, -1441807, 2, 0, -1441806, 2, 0, -1441805, 2, 0, -1441804, 2, 0, -1441803, 2, 0, -1441802, 2, 0, -1441801, 2, 0, -1441800, 2, 0, -1441799, 2, 0, -1441798, 2, 0, -1441797, 2, 0, -1441796, 2, 0, -1441795, 2, 0, -1441794, 2, 0, -1441793, 2, 0, -1507328, 2, 0, -1507327, 2, 0, -1507326, 2, 0, -1507325, 2, 0, -1507324, 2, 0, -1507323, 2, 0, -1507322, 2, 0, -1507321, 2, 0, -1507320, 2, 0, -1507319, 2, 0, -1507318, 2, 0, -1507317, 2, 0, -1507316, 2, 0, -1507315, 2, 0, -1507314, 2, 0, -1507313, 2, 0, -1507312, 2, 0, -1507311, 2, 0, -1507310, 2, 0, -1507309, 2, 0, -1507308, 2, 0, -1507307, 2, 0, -1507306, 2, 0, -1507305, 2, 0, -1507304, 2, 0, -1507303, 2, 0, -1507302, 2, 0, -1507301, 2, 0, -1507300, 2, 0, -1507299, 2, 0, -1507298, 2, 0, -1507297, 2, 0, -1507296, 2, 0, -1507295, 2, 0, -1507294, 2, 0, -1507293, 2, 0, -1507292, 2, 0, -1507291, 2, 0, -1507290, 2, 0, -1507289, 2, 0, -1507288, 2, 0, -1507287, 2, 0, -1507286, 2, 0, -1507285, 2, 0, -1507284, 2, 0, -1507283, 2, 0, -1507282, 2, 0, -1507281, 2, 0, -1507280, 2, 0, -1376297, 2, 0, -1376296, 2, 0, -1376295, 2, 0, -1376294, 2, 0, -1376293, 2, 0, -1376292, 2, 0, -1376291, 2, 0, -1376290, 2, 0, -1376289, 2, 0, -1376288, 2, 0, -1376287, 2, 0, -1376286, 2, 0, -1376285, 2, 0, -1376284, 2, 0, -1376283, 2, 0, -1376282, 2, 0, -1376281, 2, 0, -1376280, 2, 0, -1376279, 2, 0, -1376278, 2, 0, -1376277, 2, 0, -1376276, 2, 0, -1376275, 2, 0, -1376274, 2, 0, -1376273, 2, 0, -1376272, 2, 0, -1376271, 2, 0, -1376270, 2, 0, -1376269, 2, 0, -1376268, 2, 0, -1376267, 2, 0, -1376266, 2, 0, -1376265, 2, 0, -1376264, 2, 0, -1376263, 2, 0, -1376262, 2, 0, -1376261, 2, 0, -1376260, 2, 0, -1376259, 2, 0, -1376258, 2, 0, -1376257, 2, 0, -1441792, 2, 0, -1441791, 2, 0, -1441790, 2, 0, -1441789, 2, 0, -1441788, 2, 0, -1441787, 2, 0, -1441786, 2, 0, -1441785, 2, 0, -1441784, 2, 0, -1441783, 2, 0, -1441782, 2, 0, -1441781, 2, 0, -1441780, 2, 0, -1441779, 2, 0, -1441778, 2, 0, -1441777, 2, 0, -1441776, 2, 0, -1441775, 2, 0, -1441774, 2, 0, -1441773, 2, 0, -1441772, 2, 0, -1441771, 2, 0, -1441770, 2, 0, -1441769, 2, 0, -1441768, 2, 0, -1441767, 2, 0, -1441766, 2, 0, -1441765, 2, 0, -1441764, 2, 0, -1441763, 2, 0, -1441762, 2, 0, -1441761, 2, 0, -1441760, 2, 0, -1441759, 2, 0, -1441758, 2, 0, -1441757, 2, 0, -1441756, 2, 0, -1441755, 2, 0, -1441754, 2, 0, -1441753, 2, 0, -1441752, 2, 0, -1441751, 2, 0, -1441750, 2, 0, -1441749, 2, 0, -1441748, 2, 0, -1441747, 2, 0, -1441746, 2, 0, -1441745, 2, 0, -1441744, 2, 0, -1310760, 2, 0, -1310759, 2, 0, -1310758, 2, 0, -1310757, 2, 0, -1310756, 2, 0, -1310755, 2, 0, -1310754, 2, 0, -1310753, 2, 0, -1310752, 2, 0, -1310751, 2, 0, -1310750, 2, 0, -1310749, 2, 0, -1310748, 2, 0, -1310747, 2, 0, -1310746, 2, 0, -1310745, 2, 0, -1310744, 2, 0, -1310743, 2, 0, -1310742, 2, 0, -1310741, 2, 0, -1310740, 2, 0, -1310739, 2, 0, -1310738, 2, 0, -1310737, 2, 0, -1310736, 2, 0, -1310735, 2, 0, -1310734, 2, 0, -1310733, 2, 0, -1310732, 2, 0, -1310731, 2, 0, -1310730, 2, 0, -1310729, 2, 0, -1310728, 2, 0, -1310727, 2, 0, -1310726, 2, 0, -1310725, 2, 0, -1310724, 2, 0, -1310723, 2, 0, -1310722, 2, 0, -1310721, 2, 0, -1376256, 2, 0, -1376255, 2, 0, -1376254, 2, 0, -1376253, 2, 0, -1376252, 2, 0, -1376251, 2, 0, -1376250, 2, 0, -1376249, 2, 0, -1376248, 2, 0, -1376247, 2, 0, -1376246, 2, 0, -1376245, 2, 0, -1376244, 2, 0, -1376243, 2, 0, -1376242, 2, 0, -1376241, 2, 0, -1376240, 2, 0, -1376239, 2, 0, -1376238, 2, 0, -1376237, 2, 0, -1376236, 2, 0, -1376235, 2, 0, -1376234, 2, 0, -1376233, 2, 0, -1376232, 2, 0, -1376231, 2, 0, -1376230, 2, 0, -1376229, 2, 0, -1376228, 2, 0, -1376227, 2, 0, -1376226, 2, 0, -1376225, 2, 0, -1376224, 2, 0, -1376223, 2, 0, -1376222, 2, 0, -1376221, 2, 0, -1376220, 2, 0, -1376219, 2, 0, -1376218, 2, 0, -1376217, 2, 0, -1376216, 2, 0, -1376215, 2, 0, -1376214, 2, 0, -1376213, 2, 0, -1376212, 2, 0, -1376211, 2, 0, -1376210, 2, 0, -1376209, 2, 0, -1376208, 2, 0, -1376207, 2, 0, -1245224, 2, 0, -1245223, 2, 0, -1245222, 2, 0, -1245221, 2, 0, -1245220, 2, 0, -1245219, 2, 0, -1245218, 2, 0, -1245217, 2, 0, -1245216, 2, 0, -1245215, 2, 0, -1245214, 2, 0, -1245213, 2, 0, -1245212, 2, 0, -1245211, 2, 0, -1245210, 2, 0, -1245209, 2, 0, -1245208, 2, 0, -1245207, 2, 0, -1245206, 2, 0, -1245205, 2, 0, -1245204, 2, 0, -1245203, 2, 0, -1245202, 2, 0, -1245201, 2, 0, -1245200, 2, 0, -1245199, 2, 0, -1245198, 2, 0, -1245197, 2, 0, -1245196, 2, 0, -1245195, 2, 0, -1245194, 2, 0, -1245193, 2, 0, -1245192, 2, 0, -1245191, 2, 0, -1245190, 2, 0, -1245189, 2, 0, -1245188, 2, 0, -1245187, 2, 0, -1245186, 2, 0, -1245185, 2, 0, -1310720, 2, 0, -1310719, 2, 0, -1310718, 2, 0, -1310717, 2, 0, -1310716, 2, 0, -1310715, 2, 0, -1310714, 2, 0, -1310713, 2, 0, -1310712, 2, 0, -1310711, 2, 0, -1310710, 2, 0, -1310709, 2, 0, -1310708, 2, 0, -1310707, 2, 0, -1310706, 2, 0, -1310705, 2, 0, -1310704, 2, 0, -1310703, 2, 0, -1310702, 2, 0, -1310701, 2, 0, -1310700, 2, 0, -1310699, 2, 0, -1310698, 2, 0, -1310697, 2, 0, -1310696, 2, 0, -1310695, 2, 0, -1310694, 2, 0, -1310693, 2, 0, -1310692, 2, 0, -1310691, 2, 0, -1310690, 2, 0, -1310689, 2, 0, -1310688, 2, 0, -1310687, 2, 0, -1310686, 2, 0, -1310685, 2, 0, -1310684, 2, 0, -1310683, 2, 0, -1310682, 2, 0, -1310681, 2, 0, -1310680, 2, 0, -1310679, 2, 0, -1310678, 2, 0, -1310677, 2, 0, -1310676, 2, 0, -1310675, 2, 0, -1310674, 2, 0, -1310673, 2, 0, -1310672, 2, 0, -1310671, 2, 0, -1310670, 2, 0, -1310669, 2, 0, -1179688, 2, 0, -1179687, 2, 0, -1179686, 2, 0, -1179685, 2, 0, -1179684, 2, 0, -1179683, 2, 0, -1179682, 2, 0, -1179681, 2, 0, -1179680, 2, 0, -1179679, 2, 0, -1179678, 2, 0, -1179677, 2, 0, -1179676, 2, 0, -1179675, 2, 0, -1179674, 2, 0, -1179673, 2, 0, -1179672, 2, 0, -1179671, 2, 0, -1179670, 2, 0, -1179669, 2, 0, -1179668, 2, 0, -1179667, 2, 0, -1179666, 2, 0, -1179665, 2, 0, -1179664, 2, 0, -1179663, 2, 0, -1179662, 2, 0, -1179661, 2, 0, -1179660, 2, 0, -1179659, 2, 0, -1179658, 2, 0, -1179657, 2, 0, -1179656, 2, 0, -1179655, 2, 0, -1179654, 2, 0, -1179653, 2, 0, -1179652, 2, 0, -1179651, 2, 0, -1179650, 2, 0, -1179649, 2, 0, -1245184, 2, 0, -1245183, 2, 0, -1245182, 2, 0, -1245181, 2, 0, -1245180, 2, 0, -1245179, 2, 0, -1245178, 2, 0, -1245177, 2, 0, -1245176, 2, 0, -1245175, 2, 0, -1245174, 2, 0, -1245173, 2, 0, -1245172, 2, 0, -1245171, 2, 0, -1245170, 2, 0, -1245169, 2, 0, -1245168, 2, 0, -1245167, 2, 0, -1245166, 2, 0, -1245165, 2, 0, -1245164, 2, 0, -1245163, 2, 0, -1245162, 2, 0, -1245161, 2, 0, -1245160, 2, 0, -1245159, 2, 0, -1245158, 2, 0, -1245157, 2, 0, -1245156, 2, 0, -1245155, 2, 0, -1245154, 2, 0, -1245153, 2, 0, -1245152, 2, 0, -1245151, 2, 0, -1245150, 2, 0, -1245149, 2, 0, -1245148, 2, 0, -1245147, 2, 0, -1245146, 2, 0, -1245145, 2, 0, -1245144, 2, 0, -1245143, 2, 0, -1245142, 2, 0, -1245141, 2, 0, -1245140, 2, 0, -1245139, 2, 0, -1245138, 2, 0, -1245137, 2, 0, -1245136, 2, 0, -1245135, 2, 0, -1245134, 2, 0, -1245133, 2, 0, -1245132, 2, 0, -1114152, 2, 0, -1114151, 2, 0, -1114150, 2, 0, -1114149, 2, 0, -1114148, 2, 0, -1114147, 2, 0, -1114146, 2, 0, -1114145, 2, 0, -1114144, 2, 0, -1114143, 2, 0, -1114142, 2, 0, -1114141, 2, 0, -1114140, 2, 0, -1114139, 2, 0, -1114138, 2, 0, -1114137, 2, 0, -1114136, 2, 0, -1114135, 2, 0, -1114134, 2, 0, -1114133, 2, 0, -1114132, 2, 0, -1114131, 2, 0, -1114130, 2, 0, -1114129, 2, 0, -1114128, 2, 0, -1114127, 2, 0, -1114126, 2, 0, -1114125, 2, 0, -1114124, 2, 0, -1114123, 2, 0, -1114122, 2, 0, -1114121, 2, 0, -1114120, 2, 0, -1114119, 2, 0, -1114118, 2, 0, -1114117, 2, 0, -1114116, 2, 0, -1114115, 2, 0, -1114114, 2, 0, -1114113, 2, 0, -1179648, 2, 0, -1179647, 2, 0, -1179646, 2, 0, -1179645, 2, 0, -1179644, 2, 0, -1179643, 2, 0, -1179642, 2, 0, -1179641, 2, 0, -1179640, 2, 0, -1179639, 2, 0, -1179638, 2, 0, -1179637, 2, 0, -1179636, 2, 0, -1179635, 2, 0, -1179634, 2, 0, -1179633, 2, 0, -1179632, 2, 0, -1179631, 2, 0, -1179630, 2, 0, -1179629, 2, 0, -1179628, 2, 0, -1179627, 2, 0, -1179626, 2, 0, -1179625, 2, 0, -1179624, 2, 0, -1179623, 2, 0, -1179622, 2, 0, -1179621, 2, 0, -1179620, 2, 0, -1179619, 2, 0, -1179618, 2, 0, -1179617, 2, 0, -1179616, 2, 0, -1179615, 2, 0, -1179614, 2, 0, -1179613, 2, 0, -1179612, 2, 0, -1179611, 2, 0, -1179610, 2, 0, -1179609, 2, 0, -1179608, 2, 0, -1179607, 2, 0, -1179606, 2, 0, -1179605, 2, 0, -1179604, 2, 0, -1179603, 2, 0, -1179602, 2, 0, -1179601, 2, 0, -1179600, 2, 0, -1179599, 2, 0, -1179598, 2, 0, -1179597, 2, 0, -1179596, 2, 0, -1048615, 2, 0, -1048614, 2, 0, -1048613, 2, 0, -1048612, 2, 0, -1048611, 2, 0, -1048610, 2, 0, -1048609, 2, 0, -1048608, 2, 0, -1048607, 2, 0, -1048606, 2, 0, -1048605, 2, 0, -1048604, 2, 0, -1048603, 2, 0, -1048602, 2, 0, -1048601, 2, 0, -1048600, 2, 0, -1048599, 2, 0, -1048598, 2, 0, -1048597, 2, 0, -1048596, 2, 0, -1048595, 2, 0, -1048594, 2, 0, -1048593, 2, 0, -1048592, 2, 0, -1048591, 2, 0, -1048590, 2, 0, -1048589, 2, 0, -1048588, 2, 0, -1048587, 2, 0, -1048586, 2, 0, -1048585, 2, 0, -1048584, 2, 0, -1048583, 2, 0, -1048582, 2, 0, -1048581, 2, 0, -1048580, 2, 0, -1048579, 2, 0, -1048578, 2, 0, -1048577, 2, 0, -1114112, 2, 0, -1114111, 2, 0, -1114110, 2, 0, -1114109, 2, 0, -1114108, 2, 0, -1114107, 2, 0, -1114106, 2, 0, -1114105, 2, 0, -1114104, 2, 0, -1114103, 2, 0, -1114102, 2, 0, -1114101, 2, 0, -1114100, 2, 0, -1114099, 2, 0, -1114098, 2, 0, -1114097, 2, 0, -1114096, 2, 0, -1114095, 2, 0, -1114094, 2, 0, -1114093, 2, 0, -1114092, 2, 0, -1114091, 2, 0, -1114090, 2, 0, -1114089, 2, 0, -1114088, 2, 0, -1114087, 2, 0, -1114086, 2, 0, -1114085, 2, 0, -1114084, 2, 0, -1114083, 2, 0, -1114082, 2, 0, -1114081, 2, 0, -1114080, 2, 0, -1114079, 2, 0, -1114078, 2, 0, -1114077, 2, 0, -1114076, 2, 0, -1114075, 2, 0, -1114074, 2, 0, -1114073, 2, 0, -1114072, 2, 0, -1114071, 2, 0, -1114070, 2, 0, -1114069, 2, 0, -1114068, 2, 0, -1114067, 2, 0, -1114066, 2, 0, -1114065, 2, 0, -1114064, 2, 0, -1114063, 2, 0, -1114062, 2, 0, -1114061, 2, 0, -1114060, 2, 0, -1114059, 2, 0, -983079, 2, 0, -983078, 2, 0, -983077, 2, 0, -983076, 2, 0, -983075, 2, 0, -983074, 2, 0, -983073, 2, 0, -983072, 2, 0, -983071, 2, 0, -983070, 2, 0, -983069, 2, 0, -983068, 2, 0, -983067, 2, 0, -983066, 2, 0, -983065, 2, 0, -983064, 2, 0, -983063, 2, 0, -983062, 2, 0, -983061, 2, 0, -983060, 2, 0, -983059, 2, 0, -983058, 2, 0, -983057, 2, 0, -983056, 2, 0, -983055, 2, 0, -983054, 2, 0, -983053, 2, 0, -983052, 2, 0, -983051, 2, 0, -983050, 2, 0, -983049, 2, 0, -983048, 2, 0, -983047, 2, 0, -983046, 2, 0, -983045, 2, 0, -983044, 2, 0, -983043, 2, 0, -983042, 2, 0, -983041, 2, 0, -1048576, 2, 0, -1048575, 2, 0, -1048574, 2, 0, -1048573, 2, 0, -1048572, 2, 0, -1048571, 2, 0, -1048570, 2, 0, -1048569, 2, 0, -1048568, 2, 0, -1048567, 2, 0, -1048566, 2, 0, -1048565, 2, 0, -1048564, 2, 0, -1048563, 2, 0, -1048562, 2, 0, -1048561, 2, 0, -1048560, 2, 0, -1048559, 2, 0, -1048558, 2, 0, -1048557, 2, 0, -1048556, 2, 0, -1048555, 2, 0, -1048554, 2, 0, -1048553, 2, 0, -1048552, 2, 0, -1048551, 2, 0, -1048550, 2, 0, -1048549, 2, 0, -1048548, 2, 0, -1048547, 2, 0, -1048546, 2, 0, -1048545, 2, 0, -1048544, 2, 0, -1048543, 2, 0, -1048542, 2, 0, -1048541, 2, 0, -1048540, 2, 0, -1048539, 2, 0, -1048538, 2, 0, -1048537, 2, 0, -1048536, 2, 0, -1048535, 2, 0, -1048534, 2, 0, -1048533, 2, 0, -1048532, 2, 0, -1048531, 2, 0, -1048530, 2, 0, -1048529, 2, 0, -1048528, 2, 0, -1048527, 2, 0, -1048526, 2, 0, -1048525, 2, 0, -1048524, 2, 0, -1048523, 2, 0, -917543, 2, 0, -917542, 2, 0, -917541, 2, 0, -917540, 2, 0, -917539, 2, 0, -917538, 2, 0, -917537, 2, 0, -917536, 2, 0, -917535, 2, 0, -917534, 2, 0, -917533, 2, 0, -917532, 2, 0, -917531, 2, 0, -917530, 2, 0, -917529, 2, 0, -917528, 2, 0, -917527, 2, 0, -917526, 2, 0, -917525, 2, 0, -917524, 2, 0, -917523, 2, 0, -917522, 2, 0, -917521, 2, 0, -917520, 2, 0, -917519, 2, 0, -917518, 2, 0, -917517, 2, 0, -917516, 2, 0, -917515, 2, 0, -917514, 2, 0, -917513, 2, 0, -917512, 2, 0, -917511, 2, 0, -917510, 2, 0, -917509, 2, 0, -917508, 2, 0, -917507, 2, 0, -917506, 2, 0, -917505, 2, 0, -983040, 2, 0, -983039, 2, 0, -983038, 2, 0, -983037, 2, 0, -983036, 2, 0, -983035, 2, 0, -983034, 2, 0, -983033, 2, 0, -983032, 2, 0, -983031, 2, 0, -983030, 2, 0, -983029, 2, 0, -983028, 2, 0, -983027, 2, 0, -983026, 2, 0, -983025, 2, 0, -983024, 2, 0, -983023, 2, 0, -983022, 2, 0, -983021, 2, 0, -983020, 2, 0, -983019, 2, 0, -983018, 2, 0, -983017, 2, 0, -983016, 2, 0, -983015, 2, 0, -983014, 2, 0, -983013, 2, 0, -983012, 2, 0, -983011, 2, 0, -983010, 2, 0, -983009, 2, 0, -983008, 2, 0, -983007, 2, 0, -983006, 2, 0, -983005, 2, 0, -983004, 2, 0, -983003, 2, 0, -983002, 2, 0, -983001, 2, 0, -983000, 2, 0, -982999, 2, 0, -982998, 2, 0, -982997, 2, 0, -982996, 2, 0, -982995, 2, 0, -982994, 2, 0, -982993, 2, 0, -982992, 2, 0, -982991, 2, 0, -982990, 2, 0, -982989, 2, 0, -982988, 2, 0, -982987, 2, 0, -982986, 2, 0, -852007, 2, 0, -852006, 2, 0, -852005, 2, 0, -852004, 2, 0, -852003, 2, 0, -852002, 2, 0, -852001, 2, 0, -852000, 2, 0, -851999, 2, 0, -851998, 2, 0, -851997, 2, 0, -851996, 2, 0, -851995, 2, 0, -851994, 2, 0, -851993, 2, 0, -851992, 2, 0, -851991, 2, 0, -851990, 2, 0, -851989, 2, 0, -851988, 2, 0, -851987, 2, 0, -851986, 2, 0, -851985, 2, 0, -851984, 2, 0, -851983, 2, 0, -851982, 2, 0, -851981, 2, 0, -851980, 2, 0, -851979, 2, 0, -851978, 2, 0, -851977, 2, 0, -851976, 2, 0, -851975, 2, 0, -851974, 2, 0, -851973, 2, 0, -851972, 2, 0, -851971, 2, 0, -851970, 2, 0, -851969, 2, 0, -917504, 2, 0, -917503, 2, 0, -917502, 2, 0, -917501, 2, 0, -917500, 2, 0, -917499, 2, 0, -917498, 2, 0, -917497, 2, 0, -917496, 2, 0, -917495, 2, 0, -917494, 2, 0, -917493, 2, 0, -917492, 2, 0, -917491, 2, 0, -917490, 2, 0, -917489, 2, 0, -917488, 2, 0, -917487, 2, 0, -917486, 2, 0, -917485, 2, 0, -917484, 2, 0, -917483, 2, 0, -917482, 2, 0, -917481, 2, 0, -917480, 2, 0, -917479, 2, 0, -917478, 2, 0, -917477, 2, 0, -917476, 2, 0, -917475, 2, 0, -917474, 2, 0, -917473, 2, 0, -917472, 2, 0, -917471, 2, 0, -917470, 2, 0, -917469, 2, 0, -917468, 2, 0, -917467, 2, 0, -917466, 2, 0, -917465, 2, 0, -917464, 2, 0, -917463, 2, 0, -917462, 2, 0, -917461, 2, 0, -917460, 2, 0, -917459, 2, 0, -917458, 2, 0, -917457, 2, 0, -917456, 2, 0, -917455, 2, 0, -917454, 2, 0, -917453, 2, 0, -917452, 2, 0, -917451, 2, 0, -917450, 2, 0, -786471, 2, 0, -786470, 2, 0, -786469, 2, 0, -786468, 2, 0, -786467, 2, 0, -786466, 2, 0, -786465, 2, 0, -786464, 2, 0, -786463, 2, 0, -786462, 2, 0, -786461, 2, 0, -786460, 2, 0, -786459, 2, 0, -786458, 2, 0, -786457, 2, 0, -786456, 2, 0, -786455, 2, 0, -786454, 2, 0, -786453, 2, 0, -786452, 2, 0, -786451, 2, 0, -786450, 2, 0, -786449, 2, 0, -786448, 2, 0, -786447, 2, 0, -786446, 2, 0, -786445, 2, 0, -786444, 2, 0, -786443, 2, 0, -786442, 2, 0, -786441, 2, 0, -786440, 2, 0, -786439, 2, 0, -786438, 2, 0, -786437, 2, 0, -786436, 2, 0, -786435, 2, 0, -786434, 2, 0, -786433, 2, 0, -851968, 2, 0, -851967, 2, 0, -851966, 2, 0, -851965, 2, 0, -851964, 2, 0, -851963, 2, 0, -851962, 2, 0, -851961, 2, 0, -851960, 2, 0, -851959, 2, 0, -851958, 2, 0, -851957, 2, 0, -851956, 2, 0, -851955, 2, 0, -851954, 2, 0, -851953, 2, 0, -851952, 2, 0, -851951, 2, 0, -851950, 2, 0, -851949, 2, 0, -851948, 2, 0, -851947, 2, 0, -851946, 2, 0, -851945, 2, 0, -851944, 2, 0, -851943, 2, 0, -851942, 2, 0, -851941, 2, 0, -851940, 2, 0, -851939, 2, 0, -851938, 2, 0, -851937, 2, 0, -851936, 2, 0, -851935, 2, 0, -851934, 2, 0, -851933, 2, 0, -851932, 2, 0, -851931, 2, 0, -851930, 2, 0, -851929, 2, 0, -851928, 2, 0, -851927, 2, 0, -851926, 2, 0, -851925, 2, 0, -851924, 2, 0, -851923, 2, 0, -851922, 2, 0, -851921, 2, 0, -851920, 2, 0, -851919, 2, 0, -851918, 2, 0, -851917, 2, 0, -851916, 2, 0, -851915, 2, 0, -851914, 2, 0, -851913, 2, 0, -720934, 2, 0, -720933, 2, 0, -720932, 2, 0, -720931, 2, 0, -720930, 2, 0, -720929, 2, 0, -720928, 2, 0, -720927, 2, 0, -720926, 2, 0, -720925, 2, 0, -720924, 2, 0, -720923, 2, 0, -720922, 2, 0, -720921, 2, 0, -720920, 2, 0, -720919, 2, 0, -720918, 2, 0, -720917, 2, 0, -720916, 2, 0, -720915, 2, 0, -720914, 2, 0, -720913, 2, 0, -720912, 2, 0, -720911, 2, 0, -720910, 2, 0, -720909, 2, 0, -720908, 2, 0, -720907, 2, 0, -720906, 2, 0, -720905, 2, 0, -720904, 2, 0, -720903, 2, 0, -720902, 2, 0, -720901, 2, 0, -720900, 2, 0, -720899, 2, 0, -720898, 2, 0, -720897, 2, 0, -786432, 2, 0, -786431, 2, 0, -786430, 2, 0, -786429, 2, 0, -786428, 2, 0, -786427, 2, 0, -786426, 2, 0, -786425, 2, 0, -786424, 2, 0, -786423, 2, 0, -786422, 2, 0, -786421, 2, 0, -786420, 2, 0, -786419, 2, 0, -786418, 2, 0, -786417, 2, 0, -786416, 2, 0, -786415, 2, 0, -786414, 2, 0, -786413, 2, 0, -786412, 2, 0, -786411, 2, 0, -786410, 2, 0, -786409, 2, 0, -786408, 2, 0, -786407, 2, 0, -786406, 2, 0, -786405, 2, 0, -786404, 2, 0, -786403, 2, 0, -786402, 2, 0, -786401, 2, 0, -786400, 2, 0, -786399, 2, 0, -786398, 2, 0, -786397, 2, 0, -786396, 2, 0, -786395, 2, 0, -786394, 2, 0, -786393, 2, 0, -786392, 2, 0, -786391, 2, 0, -786390, 2, 0, -786389, 2, 0, -786388, 2, 0, -786387, 2, 0, -786386, 2, 0, -786385, 2, 0, -786384, 2, 0, -786383, 2, 0, -786382, 2, 0, -786381, 2, 0, -786380, 2, 0, -786379, 2, 0, -786378, 2, 0, -786377, 2, 0, -655398, 2, 0, -655397, 2, 0, -655396, 2, 0, -655395, 2, 0, -655394, 2, 0, -655393, 2, 0, -655392, 2, 0, -655391, 2, 0, -655390, 2, 0, -655389, 2, 0, -655388, 2, 0, -655387, 2, 0, -655386, 2, 0, -655385, 2, 0, -655384, 2, 0, -655383, 2, 0, -655382, 2, 0, -655381, 2, 0, -655380, 2, 0, -655379, 2, 0, -655378, 2, 0, -655377, 2, 0, -655376, 2, 0, -655375, 2, 0, -655374, 2, 0, -655373, 2, 0, -655372, 2, 0, -655371, 2, 0, -655370, 2, 0, -655369, 2, 0, -655368, 2, 0, -655367, 2, 0, -655366, 2, 0, -655365, 2, 0, -655364, 2, 0, -655363, 2, 0, -655362, 2, 0, -655361, 2, 0, -720896, 2, 0, -720895, 2, 0, -720894, 2, 0, -720893, 2, 0, -720892, 2, 0, -720891, 2, 0, -720890, 2, 0, -720889, 2, 0, -720888, 2, 0, -720887, 2, 0, -720886, 2, 0, -720885, 2, 0, -720884, 2, 0, -720883, 2, 0, -720882, 2, 0, -720881, 2, 0, -720880, 2, 0, -720879, 2, 0, -720878, 2, 0, -720877, 2, 0, -720876, 2, 0, -720875, 2, 0, -720874, 2, 0, -720873, 2, 0, -720872, 2, 0, -720871, 2, 0, -720870, 2, 0, -720869, 2, 0, -720868, 2, 0, -720867, 2, 0, -720866, 2, 0, -720865, 2, 0, -720864, 2, 0, -720863, 2, 0, -720862, 2, 0, -720861, 2, 0, -720860, 2, 0, -720859, 2, 0, -720858, 2, 0, -720857, 2, 0, -720856, 2, 0, -720855, 2, 0, -720854, 2, 0, -720853, 2, 0, -720852, 2, 0, -720851, 2, 0, -720850, 2, 0, -720849, 2, 0, -720848, 2, 0, -720847, 2, 0, -720846, 2, 0, -720845, 2, 0, -720844, 2, 0, -720843, 2, 0, -720842, 2, 0, -720841, 2, 0, -720840, 2, 0, -589862, 2, 0, -589861, 2, 0, -589860, 2, 0, -589859, 2, 0, -589858, 2, 0, -589857, 2, 0, -589856, 2, 0, -589855, 2, 0, -589854, 2, 0, -589853, 2, 0, -589852, 2, 0, -589851, 2, 0, -589850, 2, 0, -589849, 2, 0, -589848, 2, 0, -589847, 2, 0, -589846, 2, 0, -589845, 2, 0, -589844, 2, 0, -589843, 2, 0, -589842, 2, 0, -589841, 2, 0, -589840, 2, 0, -589839, 2, 0, -589838, 2, 0, -589837, 2, 0, -589836, 2, 0, -589835, 2, 0, -589834, 2, 0, -589833, 2, 0, -589832, 2, 0, -589831, 2, 0, -589830, 2, 0, -589829, 2, 0, -589828, 2, 0, -589827, 2, 0, -589826, 2, 0, -589825, 2, 0, -655360, 2, 0, -655359, 2, 0, -655358, 2, 0, -655357, 2, 0, -655356, 2, 0, -655355, 2, 0, -655354, 2, 0, -655353, 2, 0, -655352, 2, 0, -655351, 2, 0, -655350, 2, 0, -655349, 2, 0, -655348, 2, 0, -655347, 2, 0, -655346, 2, 0, -655345, 2, 0, -655344, 2, 0, -655343, 2, 0, -655342, 2, 0, -655341, 2, 0, -655340, 2, 0, -655339, 2, 0, -655338, 2, 0, -655337, 2, 0, -655336, 2, 0, -655335, 2, 0, -655334, 2, 0, -655333, 2, 0, -655332, 2, 0, -655331, 2, 0, -655330, 2, 0, -655329, 2, 0, -655328, 2, 0, -655327, 2, 0, -655326, 2, 0, -655325, 2, 0, -655324, 2, 0, -655323, 2, 0, -655322, 2, 0, -655321, 2, 0, -655320, 2, 0, -655319, 2, 0, -655318, 2, 0, -655317, 2, 0, -655316, 2, 0, -655315, 2, 0, -655314, 2, 0, -655313, 2, 0, -655312, 2, 0, -655311, 2, 0, -655310, 2, 0, -655309, 2, 0, -655308, 2, 0, -655307, 2, 0, -655306, 2, 0, -655305, 2, 0, -655304, 2, 0, -524326, 2, 0, -524325, 2, 0, -524324, 2, 0, -524323, 2, 0, -524322, 2, 0, -524321, 2, 0, -524320, 2, 0, -524319, 2, 0, -524318, 2, 0, -524317, 2, 0, -524316, 2, 0, -524315, 2, 0, -524314, 2, 0, -524313, 2, 0, -524312, 2, 0, -524311, 2, 0, -524310, 2, 0, -524309, 2, 0, -524308, 2, 0, -524307, 2, 0, -524306, 2, 0, -524305, 2, 0, -524304, 2, 0, -524303, 2, 0, -524302, 2, 0, -524301, 2, 0, -524300, 2, 0, -524299, 2, 0, -524298, 2, 0, -524297, 2, 0, -524296, 2, 0, -524295, 2, 0, -524294, 2, 0, -524293, 2, 0, -524292, 2, 0, -524291, 2, 0, -524290, 2, 0, -524289, 2, 0, -589824, 2, 0, -589823, 2, 0, -589822, 2, 0, -589821, 2, 0, -589820, 2, 0, -589819, 2, 0, -589818, 2, 0, -589817, 2, 0, -589816, 2, 0, -589815, 2, 0, -589814, 2, 0, -589813, 2, 0, -589812, 2, 0, -589811, 2, 0, -589810, 2, 0, -589809, 2, 0, -589808, 2, 0, -589807, 2, 0, -589806, 2, 0, -589805, 2, 0, -589804, 2, 0, -589803, 2, 0, -589802, 2, 0, -589801, 2, 0, -589800, 2, 0, -589799, 2, 0, -589798, 2, 0, -589797, 2, 0, -589796, 2, 0, -589795, 2, 0, -589794, 2, 0, -589793, 2, 0, -589792, 2, 0, -589791, 2, 0, -589790, 2, 0, -589789, 2, 0, -589788, 2, 0, -589787, 2, 0, -589786, 2, 0, -589785, 2, 0, -589784, 2, 0, -589783, 2, 0, -589782, 2, 0, -589781, 2, 0, -589780, 2, 0, -589779, 2, 0, -589778, 2, 0, -589777, 2, 0, -589776, 2, 0, -589775, 2, 0, -589774, 2, 0, -589773, 2, 0, -589772, 2, 0, -589771, 2, 0, -589770, 2, 0, -589769, 2, 0, -589768, 2, 0, -458789, 2, 0, -458788, 2, 0, -458787, 2, 0, -458786, 2, 0, -458785, 2, 0, -458784, 2, 0, -458783, 2, 0, -458782, 2, 0, -458781, 2, 0, -458780, 2, 0, -458779, 2, 0, -458778, 2, 0, -458777, 2, 0, -458776, 2, 0, -458775, 2, 0, -458774, 2, 0, -458773, 2, 0, -458772, 2, 0, -458771, 2, 0, -458770, 2, 0, -458769, 2, 0, -458768, 2, 0, -458767, 2, 0, -458766, 2, 0, -458765, 2, 0, -458764, 2, 0, -458763, 2, 0, -458762, 2, 0, -458761, 2, 0, -458760, 2, 0, -458759, 2, 0, -458758, 2, 0, -458757, 2, 0, -458756, 2, 0, -458755, 2, 0, -458754, 2, 0, -458753, 2, 0, -524288, 2, 0, -524287, 2, 0, -524286, 2, 0, -524285, 2, 0, -524284, 2, 0, -524283, 2, 0, -524282, 2, 0, -524281, 2, 0, -524280, 2, 0, -524279, 2, 0, -524278, 2, 0, -524277, 2, 0, -524276, 2, 0, -524275, 2, 0, -524274, 2, 0, -524273, 2, 0, -524272, 2, 0, -524271, 2, 0, -524270, 2, 0, -524269, 2, 0, -524268, 2, 0, -524267, 2, 0, -524266, 2, 0, -524265, 2, 0, -524264, 2, 0, -524263, 2, 0, -524262, 2, 0, -524261, 2, 0, -524260, 2, 0, -524259, 2, 0, -524258, 2, 0, -524257, 2, 0, -524256, 2, 0, -524255, 2, 0, -524254, 2, 0, -524253, 2, 0, -524252, 2, 0, -524251, 2, 0, -524250, 2, 0, -524249, 2, 0, -524248, 2, 0, -524247, 2, 0, -524246, 2, 0, -524245, 2, 0, -524244, 2, 0, -524243, 2, 0, -524242, 2, 0, -524241, 2, 0, -524240, 2, 0, -524239, 2, 0, -524238, 2, 0, -524237, 2, 0, -524236, 2, 0, -524235, 2, 0, -524234, 2, 0, -524233, 2, 0, -524232, 2, 0, -393253, 2, 0, -393252, 2, 0, -393251, 2, 0, -393250, 2, 0, -393249, 2, 0, -393248, 2, 0, -393247, 2, 0, -393246, 2, 0, -393245, 2, 0, -393244, 2, 0, -393243, 2, 0, -393242, 2, 0, -393241, 2, 0, -393240, 2, 0, -393239, 2, 0, -393238, 2, 0, -393237, 2, 0, -393236, 2, 0, -393235, 2, 0, -393234, 2, 0, -393233, 2, 0, -393232, 2, 0, -393231, 2, 0, -393230, 2, 0, -393229, 2, 0, -393228, 2, 0, -393227, 2, 0, -393226, 2, 0, -393225, 2, 0, -393224, 2, 0, -393223, 2, 0, -393222, 2, 0, -393221, 2, 0, -393220, 2, 0, -393219, 2, 0, -393218, 2, 0, -393217, 2, 0, -458752, 2, 0, -458751, 2, 0, -458750, 2, 0, -458749, 2, 0, -458748, 2, 0, -458747, 2, 0, -458746, 2, 0, -458745, 2, 0, -458744, 2, 0, -458743, 2, 0, -458742, 2, 0, -458741, 2, 0, -458740, 2, 0, -458739, 2, 0, -458738, 2, 0, -458737, 2, 0, -458736, 2, 0, -458735, 2, 0, -458734, 2, 0, -458733, 2, 0, -458732, 2, 0, -458731, 2, 0, -458730, 2, 0, -458729, 2, 0, -458728, 2, 0, -458727, 2, 0, -458726, 2, 0, -458725, 2, 0, -458724, 2, 0, -458723, 2, 0, -458722, 2, 0, -458721, 2, 0, -458720, 2, 0, -458719, 2, 0, -458718, 2, 0, -458717, 2, 0, -458716, 2, 0, -458715, 2, 0, -458714, 2, 0, -458713, 2, 0, -458712, 2, 0, -458711, 2, 0, -458710, 2, 0, -458709, 2, 0, -458708, 2, 0, -458707, 2, 0, -458706, 2, 0, -458705, 2, 0, -458704, 2, 0, -458703, 2, 0, -458702, 2, 0, -458701, 2, 0, -458700, 2, 0, -458699, 2, 0, -458698, 2, 0, -458697, 2, 0, -458696, 2, 0, -327717, 2, 0, -327716, 2, 0, -327715, 2, 0, -327714, 2, 0, -327713, 2, 0, -327712, 2, 0, -327711, 2, 0, -327710, 2, 0, -327709, 2, 0, -327708, 2, 0, -327707, 2, 0, -327706, 2, 0, -327705, 2, 0, -327704, 2, 0, -327703, 2, 0, -327702, 2, 0, -327701, 2, 0, -327700, 2, 0, -327699, 2, 0, -327698, 2, 0, -327697, 2, 0, -327696, 2, 0, -327695, 2, 0, -327694, 2, 0, -327693, 2, 0, -327692, 2, 0, -327691, 2, 0, -327690, 2, 0, -327689, 2, 0, -327688, 2, 0, -327687, 2, 0, -327686, 2, 0, -327685, 2, 0, -327684, 2, 0, -327683, 2, 0, -327682, 2, 0, -327681, 2, 0, -393216, 2, 0, -393215, 2, 0, -393214, 2, 0, -393213, 2, 0, -393212, 2, 0, -393211, 2, 0, -393210, 2, 0, -393209, 2, 0, -393208, 2, 0, -393207, 2, 0, -393206, 2, 0, -393205, 2, 0, -393204, 2, 0, -393203, 2, 0, -393202, 2, 0, -393201, 2, 0, -393200, 2, 0, -393199, 2, 0, -393198, 2, 0, -393197, 2, 0, -393196, 2, 0, -393195, 2, 0, -393194, 2, 0, -393193, 2, 0, -393192, 2, 0, -393191, 2, 0, -393190, 2, 0, -393189, 2, 0, -393188, 2, 0, -393187, 2, 0, -393186, 2, 0, -393185, 2, 0, -393184, 2, 0, -393183, 2, 0, -393182, 2, 0, -393181, 2, 0, -393180, 2, 0, -393179, 2, 0, -393178, 2, 0, -393177, 2, 0, -393176, 2, 0, -393175, 2, 0, -393174, 2, 0, -393173, 2, 0, -393172, 2, 0, -393171, 2, 0, -393170, 2, 0, -393169, 2, 0, -393168, 2, 0, -393167, 2, 0, -393166, 2, 0, -393165, 2, 0, -393164, 2, 0, -393163, 2, 0, -393162, 2, 0, -393161, 2, 0, -393160, 2, 0, -393159, 2, 0, -262181, 2, 0, -262180, 2, 0, -262179, 2, 0, -262178, 2, 0, -262177, 2, 0, -262176, 2, 0, -262175, 2, 0, -262174, 2, 0, -262173, 2, 0, -262172, 2, 0, -262171, 2, 0, -262170, 2, 0, -262169, 2, 0, -262168, 2, 0, -262167, 2, 0, -262166, 2, 0, -262165, 2, 0, -262164, 2, 0, -262163, 2, 0, -262162, 2, 0, -262161, 2, 0, -262160, 2, 0, -262159, 2, 0, -262158, 2, 0, -262157, 2, 0, -262156, 2, 0, -262155, 2, 0, -262154, 2, 0, -262153, 2, 0, -262152, 2, 0, -262151, 2, 0, -262150, 2, 0, -262149, 2, 0, -262148, 2, 0, -262147, 2, 0, -262146, 2, 0, -262145, 2, 0, -327680, 2, 0, -327679, 2, 0, -327678, 2, 0, -327677, 2, 0, -327676, 2, 0, -327675, 2, 0, -327674, 2, 0, -327673, 2, 0, -327672, 2, 0, -327671, 2, 0, -327670, 2, 0, -327669, 2, 0, -327668, 2, 0, -327667, 2, 0, -327666, 2, 0, -327665, 2, 0, -327664, 2, 0, -327663, 2, 0, -327662, 2, 0, -327661, 2, 0, -327660, 2, 0, -327659, 2, 0, -327658, 2, 0, -327657, 2, 0, -327656, 2, 0, -327655, 2, 0, -327654, 2, 0, -327653, 2, 0, -327652, 2, 0, -327651, 2, 0, -327650, 2, 0, -327649, 2, 0, -327648, 2, 0, -327647, 2, 0, -327646, 2, 0, -327645, 2, 0, -327644, 2, 0, -327643, 2, 0, -327642, 2, 0, -327641, 2, 0, -327640, 2, 0, -327639, 2, 0, -327638, 2, 0, -327637, 2, 0, -327636, 2, 0, -327635, 2, 0, -327634, 2, 0, -327633, 2, 0, -327632, 2, 0, -327631, 2, 0, -327630, 2, 0, -327629, 2, 0, -327628, 2, 0, -327627, 2, 0, -327626, 2, 0, -327625, 2, 0, -327624, 2, 0, -327623, 2, 0, -196645, 2, 0, -196644, 2, 0, -196643, 2, 0, -196642, 2, 0, -196641, 2, 0, -196640, 2, 0, -196639, 2, 0, -196638, 2, 0, -196637, 2, 0, -196636, 2, 0, -196635, 2, 0, -196634, 2, 0, -196633, 2, 0, -196632, 2, 0, -196631, 2, 0, -196630, 2, 0, -196629, 2, 0, -196628, 2, 0, -196627, 2, 0, -196626, 2, 0, -196625, 2, 0, -196624, 2, 0, -196623, 2, 0, -196622, 2, 0, -196621, 2, 0, -196620, 2, 0, -196619, 2, 0, -196618, 2, 0, -196617, 2, 0, -196616, 2, 0, -196615, 2, 0, -196614, 2, 0, -196613, 2, 0, -196612, 2, 0, -196611, 2, 0, -196610, 2, 0, -196609, 2, 0, -262144, 2, 0, -262143, 2, 0, -262142, 2, 0, -262141, 2, 0, -262140, 2, 0, -262139, 2, 0, -262138, 2, 0, -262137, 2, 0, -262136, 2, 0, -262135, 2, 0, -262134, 2, 0, -262133, 2, 0, -262132, 2, 0, -262131, 2, 0, -262130, 2, 0, -262129, 2, 0, -262128, 2, 0, -262127, 2, 0, -262126, 2, 0, -262125, 2, 0, -262124, 2, 0, -262123, 2, 0, -262122, 2, 0, -262121, 2, 0, -262120, 2, 0, -262119, 2, 0, -262118, 2, 0, -262117, 2, 0, -262116, 2, 0, -262115, 2, 0, -262114, 2, 0, -262113, 2, 0, -262112, 2, 0, -262111, 2, 0, -262110, 2, 0, -262109, 2, 0, -262108, 2, 0, -262107, 2, 0, -262106, 2, 0, -262105, 2, 0, -262104, 2, 0, -262103, 2, 0, -262102, 2, 0, -262101, 2, 0, -262100, 2, 0, -262099, 2, 0, -262098, 2, 0, -262097, 2, 0, -262096, 2, 0, -262095, 2, 0, -262094, 2, 0, -262093, 2, 0, -262092, 2, 0, -262091, 2, 0, -262090, 2, 0, -262089, 2, 0, -262088, 2, 0, -262087, 2, 0, -131108, 2, 0, -131107, 2, 0, -131106, 2, 0, -131105, 2, 0, -131104, 2, 0, -131103, 2, 0, -131102, 2, 0, -131101, 2, 0, -131100, 2, 0, -131099, 2, 0, -131098, 2, 0, -131097, 2, 0, -131096, 2, 0, -131095, 2, 0, -131094, 2, 0, -131093, 2, 0, -131092, 2, 0, -131091, 2, 0, -131090, 2, 0, -131089, 2, 0, -131088, 2, 0, -131087, 2, 0, -131086, 2, 0, -131085, 2, 0, -131084, 2, 0, -131083, 2, 0, -131082, 2, 0, -131081, 2, 0, -131080, 2, 0, -131079, 2, 0, -131078, 2, 0, -131077, 2, 0, -131076, 2, 0, -131075, 2, 0, -131074, 2, 0, -131073, 2, 0, -196608, 2, 0, -196607, 2, 0, -196606, 2, 0, -196605, 2, 0, -196604, 2, 0, -196603, 2, 0, -196602, 2, 0, -196601, 2, 0, -196600, 2, 0, -196599, 2, 0, -196598, 2, 0, -196597, 2, 0, -196596, 2, 0, -196595, 2, 0, -196594, 2, 0, -196593, 2, 0, -196592, 2, 0, -196591, 2, 0, -196590, 2, 0, -196589, 2, 0, -196588, 2, 0, -196587, 2, 0, -196586, 2, 0, -196585, 2, 0, -196584, 2, 0, -196583, 2, 0, -196582, 2, 0, -196581, 2, 0, -196580, 2, 0, -196579, 2, 0, -196578, 2, 0, -196577, 2, 0, -196576, 2, 0, -196575, 2, 0, -196574, 2, 0, -196573, 2, 0, -196572, 2, 0, -196571, 2, 0, -196570, 2, 0, -196569, 2, 0, -196568, 2, 0, -196567, 2, 0, -196566, 2, 0, -196565, 2, 0, -196564, 2, 0, -196563, 2, 0, -196562, 2, 0, -196561, 2, 0, -196560, 2, 0, -196559, 2, 0, -196558, 2, 0, -196557, 2, 0, -196556, 2, 0, -196555, 2, 0, -196554, 2, 0, -196553, 2, 0, -196552, 2, 0, -196551, 2, 0, -65572, 2, 0, -65571, 2, 0, -65570, 2, 0, -65569, 2, 0, -65568, 2, 0, -65567, 2, 0, -65566, 2, 0, -65565, 2, 0, -65564, 2, 0, -65563, 2, 0, -65562, 2, 0, -65561, 2, 0, -65560, 2, 0, -65559, 2, 0, -65558, 2, 0, -65557, 2, 0, -65556, 2, 0, -65555, 2, 0, -65554, 2, 0, -65553, 2, 0, -65552, 2, 0, -65551, 2, 0, -65550, 2, 0, -65549, 2, 0, -65548, 2, 0, -65547, 2, 0, -65546, 2, 0, -65545, 2, 0, -65544, 2, 0, -65543, 2, 0, -65542, 2, 0, -65541, 2, 0, -65540, 2, 0, -65539, 2, 0, -65538, 2, 0, -65537, 2, 0, -131072, 2, 0, -131071, 2, 0, -131070, 2, 0, -131069, 2, 0, -131068, 2, 0, -131067, 2, 0, -131066, 2, 0, -131065, 2, 0, -131064, 2, 0, -131063, 2, 0, -131062, 2, 0, -131061, 2, 0, -131060, 2, 0, -131059, 2, 0, -131058, 2, 0, -131057, 2, 0, -131056, 2, 0, -131055, 2, 0, -131054, 2, 0, -131053, 2, 0, -131052, 2, 0, -131051, 2, 0, -131050, 2, 0, -131049, 2, 0, -131048, 2, 0, -131047, 2, 0, -131046, 2, 0, -131045, 2, 0, -131044, 2, 0, -131043, 2, 0, -131042, 2, 0, -131041, 2, 0, -131040, 2, 0, -131039, 2, 0, -131038, 2, 0, -131037, 2, 0, -131036, 2, 0, -131035, 2, 0, -131034, 2, 0, -131033, 2, 0, -131032, 2, 0, -131031, 2, 0, -131030, 2, 0, -131029, 2, 0, -131028, 2, 0, -131027, 2, 0, -131026, 2, 0, -131025, 2, 0, -131024, 2, 0, -131023, 2, 0, -131022, 2, 0, -131021, 2, 0, -131020, 2, 0, -131019, 2, 0, -131018, 2, 0, -131017, 2, 0, -131016, 2, 0, -131015, 2, 0, -36, 2, 0, -35, 2, 0, -34, 2, 0, -33, 2, 0, -32, 2, 0, -31, 2, 0, -30, 2, 0, -29, 2, 0, -28, 2, 0, -27, 2, 0, -26, 2, 0, -25, 2, 0, -24, 2, 0, -23, 2, 0, -22, 2, 0, -21, 2, 0, -20, 2, 0, -19, 2, 0, -18, 2, 0, -17, 2, 0, -16, 2, 0, -15, 2, 0, -14, 2, 0, -13, 2, 0, -12, 2, 0, -11, 2, 0, -10, 2, 0, -9, 2, 0, -8, 2, 0, -7, 2, 0, -6, 2, 0, -5, 2, 0, -4, 2, 0, -3, 2, 0, -2, 2, 0, -1, 2, 0, -65536, 2, 0, -65535, 2, 0, -65534, 2, 0, -65533, 2, 0, -65532, 2, 0, -65531, 2, 0, -65530, 2, 0, -65529, 2, 0, -65528, 2, 0, -65527, 2, 0, -65526, 2, 0, -65525, 2, 0, -65524, 2, 0, -65523, 2, 0, -65522, 2, 0, -65521, 2, 0, -65520, 2, 0, -65519, 2, 0, -65518, 2, 0, -65517, 2, 0, -65516, 2, 0, -65515, 2, 0, -65514, 2, 0, -65513, 2, 0, -65512, 2, 0, -65511, 2, 0, -65510, 2, 0, -65509, 2, 0, -65508, 2, 0, -65507, 2, 0, -65506, 2, 0, -65505, 2, 0, -65504, 2, 0, -65503, 2, 0, -65502, 2, 0, -65501, 2, 0, -65500, 2, 0, -65499, 2, 0, -65498, 2, 0, -65497, 2, 0, -65496, 2, 0, -65495, 2, 0, -65494, 2, 0, -65493, 2, 0, -65492, 2, 0, -65491, 2, 0, -65490, 2, 0, -65489, 2, 0, -65488, 2, 0, -65487, 2, 0, -65486, 2, 0, -65485, 2, 0, -65484, 2, 0, -65483, 2, 0, -65482, 2, 0, -65481, 2, 0, -65480, 2, 0, -65479, 2, 0, 65500, 2, 0, 65501, 2, 0, 65502, 2, 0, 65503, 2, 0, 65504, 2, 0, 65505, 2, 0, 65506, 2, 0, 65507, 2, 0, 65508, 2, 0, 65509, 2, 0, 65510, 2, 0, 65511, 2, 0, 65512, 2, 0, 65513, 2, 0, 65514, 2, 0, 65515, 2, 0, 65516, 2, 0, 65517, 2, 0, 65518, 2, 0, 65519, 2, 0, 65520, 2, 0, 65521, 2, 0, 65522, 2, 0, 65523, 2, 0, 65524, 2, 0, 65525, 2, 0, 65526, 2, 0, 65527, 2, 0, 65528, 2, 0, 65529, 2, 0, 65530, 2, 0, 65531, 2, 0, 65532, 2, 0, 65533, 2, 0, 65534, 2, 0, 65535, 2, 0, 0, 2, 0, 1, 2, 0, 2, 2, 0, 3, 2, 0, 4, 2, 0, 5, 2, 0, 6, 2, 0, 7, 2, 0, 8, 2, 0, 9, 2, 0, 10, 2, 0, 11, 2, 0, 12, 2, 0, 13, 2, 0, 14, 2, 0, 15, 2, 0, 16, 2, 0, 17, 2, 0, 18, 2, 0, 19, 2, 0, 20, 2, 0, 21, 2, 0, 22, 2, 0, 23, 2, 0, 24, 2, 0, 25, 2, 0, 26, 2, 0, 27, 2, 0, 28, 2, 0, 29, 2, 0, 30, 2, 0, 31, 2, 0, 32, 2, 0, 33, 2, 0, 34, 2, 0, 35, 2, 0, 36, 2, 0, 37, 2, 0, 38, 2, 0, 39, 2, 0, 40, 2, 0, 41, 2, 0, 42, 2, 0, 43, 2, 0, 44, 2, 0, 45, 2, 0, 46, 2, 0, 47, 2, 0, 48, 2, 0, 49, 2, 0, 50, 2, 0, 51, 2, 0, 52, 2, 0, 53, 2, 0, 54, 2, 0, 55, 2, 0, 56, 2, 0, 57, 2, 0, 131037, 2, 0, 131038, 2, 0, 131039, 2, 0, 131040, 2, 0, 131041, 2, 0, 131042, 2, 0, 131043, 2, 0, 131044, 2, 0, 131045, 2, 0, 131046, 2, 0, 131047, 2, 0, 131048, 2, 0, 131049, 2, 0, 131050, 2, 0, 131051, 2, 0, 131052, 2, 0, 131053, 2, 0, 131054, 2, 0, 131055, 2, 0, 131056, 2, 0, 131057, 2, 0, 131058, 2, 0, 131059, 2, 0, 131060, 2, 0, 131061, 2, 0, 131062, 2, 0, 131063, 2, 0, 131064, 2, 0, 131065, 2, 0, 131066, 2, 0, 131067, 2, 0, 131068, 2, 0, 131069, 2, 0, 131070, 2, 0, 131071, 2, 0, 65536, 2, 0, 65537, 2, 0, 65538, 2, 0, 65539, 2, 0, 65540, 2, 0, 65541, 2, 0, 65542, 2, 0, 65543, 2, 0, 65544, 2, 0, 65545, 2, 0, 65546, 2, 0, 65547, 2, 0, 65548, 2, 0, 65549, 2, 0, 65550, 2, 0, 65551, 2, 0, 65552, 2, 0, 65553, 2, 0, 65554, 2, 0, 65555, 2, 0, 65556, 2, 0, 65557, 2, 0, 65558, 2, 0, 65559, 2, 0, 65560, 2, 0, 65561, 2, 0, 65562, 2, 0, 65563, 2, 0, 65564, 2, 0, 65565, 2, 0, 65566, 2, 0, 65567, 2, 0, 65568, 2, 0, 65569, 2, 0, 65570, 2, 0, 65571, 2, 0, 65572, 2, 0, 65573, 2, 0, 65574, 2, 0, 65575, 2, 0, 65576, 2, 0, 65577, 2, 0, 65578, 2, 0, 65579, 2, 0, 65580, 2, 0, 65581, 2, 0, 65582, 2, 0, 65583, 2, 0, 65584, 2, 0, 65585, 2, 0, 65586, 2, 0, 65587, 2, 0, 65588, 2, 0, 65589, 2, 0, 65590, 2, 0, 65591, 2, 0, 65592, 2, 0, 65593, 2, 0, 196573, 2, 0, 196574, 2, 0, 196575, 2, 0, 196576, 2, 0, 196577, 2, 0, 196578, 2, 0, 196579, 2, 0, 196580, 2, 0, 196581, 2, 0, 196582, 2, 0, 196583, 2, 0, 196584, 2, 0, 196585, 2, 0, 196586, 2, 0, 196587, 2, 0, 196588, 2, 0, 196589, 2, 0, 196590, 2, 0, 196591, 2, 0, 196592, 2, 0, 196593, 2, 0, 196594, 2, 0, 196595, 2, 0, 196596, 2, 0, 196597, 2, 0, 196598, 2, 0, 196599, 2, 0, 196600, 2, 0, 196601, 2, 0, 196602, 2, 0, 196603, 2, 0, 196604, 2, 0, 196605, 2, 0, 196606, 2, 0, 196607, 2, 0, 131072, 2, 0, 131073, 2, 0, 131074, 2, 0, 131075, 2, 0, 131076, 2, 0, 131077, 2, 0, 131078, 2, 0, 131079, 2, 0, 131080, 2, 0, 131081, 2, 0, 131082, 2, 0, 131083, 2, 0, 131084, 2, 0, 131085, 2, 0, 131086, 2, 0, 131087, 2, 0, 131088, 2, 0, 131089, 2, 0, 131090, 2, 0, 131091, 2, 0, 131092, 2, 0, 131093, 2, 0, 131094, 2, 0, 131095, 2, 0, 131096, 2, 0, 131097, 2, 0, 131098, 2, 0, 131099, 2, 0, 131100, 2, 0, 131101, 2, 0, 131102, 2, 0, 131103, 2, 0, 131104, 2, 0, 131105, 2, 0, 131106, 2, 0, 131107, 2, 0, 131108, 2, 0, 131109, 2, 0, 131110, 2, 0, 131111, 2, 0, 131112, 2, 0, 131113, 2, 0, 131114, 2, 0, 131115, 2, 0, 131116, 2, 0, 131117, 2, 0, 131118, 2, 0, 131119, 2, 0, 131120, 2, 0, 131121, 2, 0, 131122, 2, 0, 131123, 2, 0, 131124, 2, 0, 131125, 2, 0, 131126, 2, 0, 131127, 2, 0, 131128, 2, 0, 131129, 2, 0, 262109, 2, 0, 262110, 2, 0, 262111, 2, 0, 262112, 2, 0, 262113, 2, 0, 262114, 2, 0, 262115, 2, 0, 262116, 2, 0, 262117, 2, 0, 262118, 2, 0, 262119, 2, 0, 262120, 2, 0, 262121, 2, 0, 262122, 2, 0, 262123, 2, 0, 262124, 2, 0, 262125, 2, 0, 262126, 2, 0, 262127, 2, 0, 262128, 2, 0, 262129, 2, 0, 262130, 2, 0, 262131, 2, 0, 262132, 2, 0, 262133, 2, 0, 262134, 2, 0, 262135, 2, 0, 262136, 2, 0, 262137, 2, 0, 262138, 2, 0, 262139, 2, 0, 262140, 2, 0, 262141, 2, 0, 262142, 2, 0, 262143, 2, 0, 196608, 2, 0, 196609, 2, 0, 196610, 2, 0, 196611, 2, 0, 196612, 2, 0, 196613, 2, 0, 196614, 2, 0, 196615, 2, 0, 196616, 2, 0, 196617, 2, 0, 196618, 2, 0, 196619, 2, 0, 196620, 2, 0, 196621, 2, 0, 196622, 2, 0, 196623, 2, 0, 196624, 2, 0, 196625, 2, 0, 196626, 2, 0, 196627, 2, 0, 196628, 2, 0, 196629, 2, 0, 196630, 2, 0, 196631, 2, 0, 196632, 2, 0, 196633, 2, 0, 196634, 2, 0, 196635, 2, 0, 196636, 2, 0, 196637, 2, 0, 196638, 2, 0, 196639, 2, 0, 196640, 2, 0, 196641, 2, 0, 196642, 2, 0, 196643, 2, 0, 196644, 2, 0, 196645, 2, 0, 196646, 2, 0, 196647, 2, 0, 196648, 2, 0, 196649, 2, 0, 196650, 2, 0, 196651, 2, 0, 196652, 2, 0, 196653, 2, 0, 196654, 2, 0, 196655, 2, 0, 196656, 2, 0, 196657, 2, 0, 196658, 2, 0, 196659, 2, 0, 196660, 2, 0, 196661, 2, 0, 196662, 2, 0, 196663, 2, 0, 196664, 2, 0, 196665, 2, 0, 327645, 2, 0, 327646, 2, 0, 327647, 2, 0, 327648, 2, 0, 327649, 2, 0, 327650, 2, 0, 327651, 2, 0, 327652, 2, 0, 327653, 2, 0, 327654, 2, 0, 327655, 2, 0, 327656, 2, 0, 327657, 2, 0, 327658, 2, 0, 327659, 2, 0, 327660, 2, 0, 327661, 2, 0, 327662, 2, 0, 327663, 2, 0, 327664, 2, 0, 327665, 2, 0, 327666, 2, 0, 327667, 2, 0, 327668, 2, 0, 327669, 2, 0, 327670, 2, 0, 327671, 2, 0, 327672, 2, 0, 327673, 2, 0, 327674, 2, 0, 327675, 2, 0, 327676, 2, 0, 327677, 2, 0, 327678, 2, 0, 327679, 2, 0, 262144, 2, 0, 262145, 2, 0, 262146, 2, 0, 262147, 2, 0, 262148, 2, 0, 262149, 2, 0, 262150, 2, 0, 262151, 2, 0, 262152, 2, 0, 262153, 2, 0, 262154, 2, 0, 262155, 2, 0, 262156, 2, 0, 262157, 2, 0, 262158, 2, 0, 262159, 2, 0, 262160, 2, 0, 262161, 2, 0, 262162, 2, 0, 262163, 2, 0, 262164, 2, 0, 262165, 2, 0, 262166, 2, 0, 262167, 2, 0, 262168, 2, 0, 262169, 2, 0, 262170, 2, 0, 262171, 2, 0, 262172, 2, 0, 262173, 2, 0, 262174, 2, 0, 262175, 2, 0, 262176, 2, 0, 262177, 2, 0, 262178, 2, 0, 262179, 2, 0, 262180, 2, 0, 262181, 2, 0, 262182, 2, 0, 262183, 2, 0, 262184, 2, 0, 262185, 2, 0, 262186, 2, 0, 262187, 2, 0, 262188, 2, 0, 262189, 2, 0, 262190, 2, 0, 262191, 2, 0, 262192, 2, 0, 262193, 2, 0, 262194, 2, 0, 262195, 2, 0, 262196, 2, 0, 262197, 2, 0, 262198, 2, 0, 262199, 2, 0, 262200, 2, 0, 262201, 2, 0, 393182, 2, 0, 393183, 2, 0, 393184, 2, 0, 393185, 2, 0, 393186, 2, 0, 393187, 2, 0, 393188, 2, 0, 393189, 2, 0, 393190, 2, 0, 393191, 2, 0, 393192, 2, 0, 393193, 2, 0, 393194, 2, 0, 393195, 2, 0, 393196, 2, 0, 393197, 2, 0, 393198, 2, 0, 393199, 2, 0, 393200, 2, 0, 393201, 2, 0, 393202, 2, 0, 393203, 2, 0, 393204, 2, 0, 393205, 2, 0, 393206, 2, 0, 393207, 2, 0, 393208, 2, 0, 393209, 2, 0, 393210, 2, 0, 393211, 2, 0, 393212, 2, 0, 393213, 2, 0, 393214, 2, 0, 393215, 2, 0, 327680, 2, 0, 327681, 2, 0, 327682, 2, 0, 327683, 2, 0, 327684, 2, 0, 327685, 2, 0, 327686, 2, 0, 327687, 2, 0, 327688, 2, 0, 327689, 2, 0, 327690, 2, 0, 327691, 2, 0, 327692, 2, 0, 327693, 2, 0, 327694, 2, 0, 327695, 2, 0, 327696, 2, 0, 327697, 2, 0, 327698, 2, 0, 327699, 2, 0, 327700, 2, 0, 327701, 2, 0, 327702, 2, 0, 327703, 2, 0, 327704, 2, 0, 327705, 2, 0, 327706, 2, 0, 327707, 2, 0, 327708, 2, 0, 327709, 2, 0, 327710, 2, 0, 327711, 2, 0, 327712, 2, 0, 327713, 2, 0, 327714, 2, 0, 327715, 2, 0, 327716, 2, 0, 327717, 2, 0, 327718, 2, 0, 327719, 2, 0, 327720, 2, 0, 327721, 2, 0, 327722, 2, 0, 327723, 2, 0, 327724, 2, 0, 327725, 2, 0, 327726, 2, 0, 327727, 2, 0, 327728, 2, 0, 327729, 2, 0, 327730, 2, 0, 327731, 2, 0, 327732, 2, 0, 327733, 2, 0, 327734, 2, 0, 327735, 2, 0, 327736, 2, 0, 458718, 2, 0, 458719, 2, 0, 458720, 2, 0, 458721, 2, 0, 458722, 2, 0, 458723, 2, 0, 458724, 2, 0, 458725, 2, 0, 458726, 2, 0, 458727, 2, 0, 458728, 2, 0, 458729, 2, 0, 458730, 2, 0, 458731, 2, 0, 458732, 2, 0, 458733, 2, 0, 458734, 2, 0, 458735, 2, 0, 458736, 2, 0, 458737, 2, 0, 458738, 2, 0, 458739, 2, 0, 458740, 2, 0, 458741, 2, 0, 458742, 2, 0, 458743, 2, 0, 458744, 2, 0, 458745, 2, 0, 458746, 2, 0, 458747, 2, 0, 458748, 2, 0, 458749, 2, 0, 458750, 2, 0, 458751, 2, 0, 393216, 2, 0, 393217, 2, 0, 393218, 2, 0, 393219, 2, 0, 393220, 2, 0, 393221, 2, 0, 393222, 2, 0, 393223, 2, 0, 393224, 2, 0, 393225, 2, 0, 393226, 2, 0, 393227, 2, 0, 393228, 2, 0, 393229, 2, 0, 393230, 2, 0, 393231, 2, 0, 393232, 2, 0, 393233, 2, 0, 393234, 2, 0, 393235, 2, 0, 393236, 2, 0, 393237, 2, 0, 393238, 2, 0, 393239, 2, 0, 393240, 2, 0, 393241, 2, 0, 393242, 2, 0, 393243, 2, 0, 393244, 2, 0, 393245, 2, 0, 393246, 2, 0, 393247, 2, 0, 393248, 2, 0, 393249, 2, 0, 393250, 2, 0, 393251, 2, 0, 393252, 2, 0, 393253, 2, 0, 393254, 2, 0, 393255, 2, 0, 393256, 2, 0, 393257, 2, 0, 393258, 2, 0, 393259, 2, 0, 393260, 2, 0, 393261, 2, 0, 393262, 2, 0, 393263, 2, 0, 393264, 2, 0, 393265, 2, 0, 393266, 2, 0, 393267, 2, 0, 393268, 2, 0, 393269, 2, 0, 393270, 2, 0, 393271, 2, 0, 393272, 2, 0, 524254, 2, 0, 524255, 2, 0, 524256, 2, 0, 524257, 2, 0, 524258, 2, 0, 524259, 2, 0, 524260, 2, 0, 524261, 2, 0, 524262, 2, 0, 524263, 2, 0, 524264, 2, 0, 524265, 2, 0, 524266, 2, 0, 524267, 2, 0, 524268, 2, 0, 524269, 2, 0, 524270, 2, 0, 524271, 2, 0, 524272, 2, 0, 524273, 2, 0, 524274, 2, 0, 524275, 2, 0, 524276, 2, 0, 524277, 2, 0, 524278, 2, 0, 524279, 2, 0, 524280, 2, 0, 524281, 2, 0, 524282, 2, 0, 524283, 2, 0, 524284, 2, 0, 524285, 2, 0, 524286, 2, 0, 524287, 2, 0, 458752, 2, 0, 458753, 2, 0, 458754, 2, 0, 458755, 2, 0, 458756, 2, 0, 458757, 2, 0, 458758, 2, 0, 458759, 2, 0, 458760, 2, 0, 458761, 2, 0, 458762, 2, 0, 458763, 2, 0, 458764, 2, 0, 458765, 2, 0, 458766, 2, 0, 458767, 2, 0, 458768, 2, 0, 458769, 2, 0, 458770, 2, 0, 458771, 2, 0, 458772, 2, 0, 458773, 2, 0, 458774, 2, 0, 458775, 2, 0, 458776, 2, 0, 458777, 2, 0, 458778, 2, 0, 458779, 2, 0, 458780, 2, 0, 458781, 2, 0, 458782, 2, 0, 458783, 2, 0, 458784, 2, 0, 458785, 2, 0, 458786, 2, 0, 458787, 2, 0, 458788, 2, 0, 458789, 2, 0, 458790, 2, 0, 458791, 2, 0, 458792, 2, 0, 458793, 2, 0, 458794, 2, 0, 458795, 2, 0, 458796, 2, 0, 458797, 2, 0, 458798, 2, 0, 458799, 2, 0, 458800, 2, 0, 458801, 2, 0, 458802, 2, 0, 458803, 2, 0, 458804, 2, 0, 458805, 2, 0, 458806, 2, 0, 458807, 2, 0, 458808, 2, 0, 589790, 2, 0, 589791, 2, 0, 589792, 2, 0, 589793, 2, 0, 589794, 2, 0, 589795, 2, 0, 589796, 2, 0, 589797, 2, 0, 589798, 2, 0, 589799, 2, 0, 589800, 2, 0, 589801, 2, 0, 589802, 2, 0, 589803, 2, 0, 589804, 2, 0, 589805, 2, 0, 589806, 2, 0, 589807, 2, 0, 589808, 2, 0, 589809, 2, 0, 589810, 2, 0, 589811, 2, 0, 589812, 2, 0, 589813, 2, 0, 589814, 2, 0, 589815, 2, 0, 589816, 2, 0, 589817, 2, 0, 589818, 2, 0, 589819, 2, 0, 589820, 2, 0, 589821, 2, 0, 589822, 2, 0, 589823, 2, 0, 524288, 2, 0, 524289, 2, 0, 524290, 2, 0, 524291, 2, 0, 524292, 2, 0, 524293, 2, 0, 524294, 2, 0, 524295, 2, 0, 524296, 2, 0, 524297, 2, 0, 524298, 2, 0, 524299, 2, 0, 524300, 2, 0, 524301, 2, 0, 524302, 2, 0, 524303, 2, 0, 524304, 2, 0, 524305, 2, 0, 524306, 2, 0, 524307, 2, 0, 524308, 2, 0, 524309, 2, 0, 524310, 2, 0, 524311, 2, 0, 524312, 2, 0, 524313, 2, 0, 524314, 2, 0, 524315, 2, 0, 524316, 2, 0, 524317, 2, 0, 524318, 2, 0, 524319, 2, 0, 524320, 2, 0, 524321, 2, 0, 524322, 2, 0, 524323, 2, 0, 524324, 2, 0, 524325, 2, 0, 524326, 2, 0, 524327, 2, 0, 524328, 2, 0, 524329, 2, 0, 524330, 2, 0, 524331, 2, 0, 524332, 2, 0, 524333, 2, 0, 524334, 2, 0, 524335, 2, 0, 524336, 2, 0, 524337, 2, 0, 524338, 2, 0, 524339, 2, 0, 524340, 2, 0, 524341, 2, 0, 524342, 2, 0, 524343, 2, 0, 524344, 2, 0, 655327, 2, 0, 655328, 2, 0, 655329, 2, 0, 655330, 2, 0, 655331, 2, 0, 655332, 2, 0, 655333, 2, 0, 655334, 2, 0, 655335, 2, 0, 655336, 2, 0, 655337, 2, 0, 655338, 2, 0, 655339, 2, 0, 655340, 2, 0, 655341, 2, 0, 655342, 2, 0, 655343, 2, 0, 655344, 2, 0, 655345, 2, 0, 655346, 2, 0, 655347, 2, 0, 655348, 2, 0, 655349, 2, 0, 655350, 2, 0, 655351, 2, 0, 655352, 2, 0, 655353, 2, 0, 655354, 2, 0, 655355, 2, 0, 655356, 2, 0, 655357, 2, 0, 655358, 2, 0, 655359, 2, 0, 589824, 2, 0, 589825, 2, 0, 589826, 2, 0, 589827, 2, 0, 589828, 2, 0, 589829, 2, 0, 589830, 2, 0, 589831, 2, 0, 589832, 2, 0, 589833, 2, 0, 589834, 2, 0, 589835, 2, 0, 589836, 2, 0, 589837, 2, 0, 589838, 2, 0, 589839, 2, 0, 589840, 2, 0, 589841, 2, 0, 589842, 2, 0, 589843, 2, 0, 589844, 2, 0, 589845, 2, 0, 589846, 2, 0, 589847, 2, 0, 589848, 2, 0, 589849, 2, 0, 589850, 2, 0, 589851, 2, 0, 589852, 2, 0, 589853, 2, 0, 589854, 2, 0, 589855, 2, 0, 589856, 2, 0, 589857, 2, 0, 589858, 2, 0, 589859, 2, 0, 589860, 2, 0, 589861, 2, 0, 589862, 2, 0, 589863, 2, 0, 589864, 2, 0, 589865, 2, 0, 589866, 2, 0, 589867, 2, 0, 589868, 2, 0, 589869, 2, 0, 589870, 2, 0, 589871, 2, 0, 589872, 2, 0, 589873, 2, 0, 589874, 2, 0, 589875, 2, 0, 589876, 2, 0, 589877, 2, 0, 589878, 2, 0, 589879, 2, 0, 720863, 2, 0, 720864, 2, 0, 720865, 2, 0, 720866, 2, 0, 720867, 2, 0, 720868, 2, 0, 720869, 2, 0, 720870, 2, 0, 720871, 2, 0, 720872, 2, 0, 720873, 2, 0, 720874, 2, 0, 720875, 2, 0, 720876, 2, 0, 720877, 2, 0, 720878, 2, 0, 720879, 2, 0, 720880, 2, 0, 720881, 2, 0, 720882, 2, 0, 720883, 2, 0, 720884, 2, 0, 720885, 2, 0, 720886, 2, 0, 720887, 2, 0, 720888, 2, 0, 720889, 2, 0, 720890, 2, 0, 720891, 2, 0, 720892, 2, 0, 720893, 2, 0, 720894, 2, 0, 720895, 2, 0, 655360, 2, 0, 655361, 2, 0, 655362, 2, 0, 655363, 2, 0, 655364, 2, 0, 655365, 2, 0, 655366, 2, 0, 655367, 2, 0, 655368, 2, 0, 655369, 2, 0, 655370, 2, 0, 655371, 2, 0, 655372, 2, 0, 655373, 2, 0, 655374, 2, 0, 655375, 2, 0, 655376, 2, 0, 655377, 2, 0, 655378, 2, 0, 655379, 2, 0, 655380, 2, 0, 655381, 2, 0, 655382, 2, 0, 655383, 2, 0, 655384, 2, 0, 655385, 2, 0, 655386, 2, 0, 655387, 2, 0, 655388, 2, 0, 655389, 2, 0, 655390, 2, 0, 655391, 2, 0, 655392, 2, 0, 655393, 2, 0, 655394, 2, 0, 655395, 2, 0, 655396, 2, 0, 655397, 2, 0, 655398, 2, 0, 655399, 2, 0, 655400, 2, 0, 655401, 2, 0, 655402, 2, 0, 655403, 2, 0, 655404, 2, 0, 655405, 2, 0, 655406, 2, 0, 655407, 2, 0, 655408, 2, 0, 655409, 2, 0, 655410, 2, 0, 655411, 2, 0, 655412, 2, 0, 655413, 2, 0, 655414, 2, 0, 655415, 2, 0, 786399, 2, 0, 786400, 2, 0, 786401, 2, 0, 786402, 2, 0, 786403, 2, 0, 786404, 2, 0, 786405, 2, 0, 786406, 2, 0, 786407, 2, 0, 786408, 2, 0, 786409, 2, 0, 786410, 2, 0, 786411, 2, 0, 786412, 2, 0, 786413, 2, 0, 786414, 2, 0, 786415, 2, 0, 786416, 2, 0, 786417, 2, 0, 786418, 2, 0, 786419, 2, 0, 786420, 2, 0, 786421, 2, 0, 786422, 2, 0, 786423, 2, 0, 786424, 2, 0, 786425, 2, 0, 786426, 2, 0, 786427, 2, 0, 786428, 2, 0, 786429, 2, 0, 786430, 2, 0, 786431, 2, 0, 720896, 2, 0, 720897, 2, 0, 720898, 2, 0, 720899, 2, 0, 720900, 2, 0, 720901, 2, 0, 720902, 2, 0, 720903, 2, 0, 720904, 2, 0, 720905, 2, 0, 720906, 2, 0, 720907, 2, 0, 720908, 2, 0, 720909, 2, 0, 720910, 2, 0, 720911, 2, 0, 720912, 2, 0, 720913, 2, 0, 720914, 2, 0, 720915, 2, 0, 720916, 2, 0, 720917, 2, 0, 720918, 2, 0, 720919, 2, 0, 720920, 2, 0, 720921, 2, 0, 720922, 2, 0, 720923, 2, 0, 720924, 2, 0, 720925, 2, 0, 720926, 2, 0, 720927, 2, 0, 720928, 2, 0, 720929, 2, 0, 720930, 2, 0, 720931, 2, 0, 720932, 2, 0, 720933, 2, 0, 720934, 2, 0, 720935, 2, 0, 720936, 2, 0, 720937, 2, 0, 720938, 2, 0, 720939, 2, 0, 720940, 2, 0, 720941, 2, 0, 720942, 2, 0, 720943, 2, 0, 720944, 2, 0, 720945, 2, 0, 720946, 2, 0, 720947, 2, 0, 720948, 2, 0, 720949, 2, 0, 720950, 2, 0, 720951, 2, 0, 851934, 2, 0, 851935, 2, 0, 851936, 2, 0, 851942, 2, 0, 851943, 2, 0, 851944, 2, 0, 851945, 2, 0, 851946, 2, 0, 851947, 2, 0, 851948, 2, 0, 851949, 2, 0, 851950, 2, 0, 851951, 2, 0, 851952, 2, 0, 851953, 2, 0, 851954, 2, 0, 851955, 2, 0, 851956, 2, 0, 851957, 2, 0, 851958, 2, 0, 851959, 2, 0, 851960, 2, 0, 851961, 2, 0, 851962, 2, 0, 851963, 2, 0, 851964, 2, 0, 851965, 2, 0, 851966, 2, 0, 851967, 2, 0, 786432, 2, 0, 786433, 2, 0, 786434, 2, 0, 786435, 2, 0, 786436, 2, 0, 786437, 2, 0, 786438, 2, 0, 786439, 2, 0, 786440, 2, 0, 786441, 2, 0, 786442, 2, 0, 786443, 2, 0, 786444, 2, 0, 786445, 2, 0, 786446, 2, 0, 786447, 2, 0, 786448, 2, 0, 786449, 2, 0, 786450, 2, 0, 786451, 2, 0, 786452, 2, 0, 786453, 2, 0, 786454, 2, 0, 786455, 2, 0, 786456, 2, 0, 786457, 2, 0, 786458, 2, 0, 786459, 2, 0, 786460, 2, 0, 786461, 2, 0, 786462, 2, 0, 786463, 2, 0, 786464, 2, 0, 786465, 2, 0, 786466, 2, 0, 786467, 2, 0, 786468, 2, 0, 786469, 2, 0, 786470, 2, 0, 786471, 2, 0, 786472, 2, 0, 786473, 2, 0, 786474, 2, 0, 786475, 2, 0, 786476, 2, 0, 786477, 2, 0, 786478, 2, 0, 786479, 2, 0, 786480, 2, 0, 786481, 2, 0, 786482, 2, 0, 786483, 2, 0, 786484, 2, 0, 786485, 2, 0, 786486, 2, 0, 917472, 2, 0, 917479, 2, 0, 917480, 2, 0, 917481, 2, 0, 917482, 2, 0, 917483, 2, 0, 917484, 2, 0, 917485, 2, 0, 917486, 2, 0, 917487, 2, 0, 917488, 2, 0, 917489, 2, 0, 917490, 2, 0, 917491, 2, 0, 917492, 2, 0, 917493, 2, 0, 917494, 2, 0, 917495, 2, 0, 917496, 2, 0, 917497, 2, 0, 917498, 2, 0, 917499, 2, 0, 917500, 2, 0, 917501, 2, 0, 917502, 2, 0, 917503, 2, 0, 851968, 2, 0, 851969, 2, 0, 851970, 2, 0, 851971, 2, 0, 851972, 2, 0, 851973, 2, 0, 851974, 2, 0, 851975, 2, 0, 851976, 2, 0, 851977, 2, 0, 851978, 2, 0, 851979, 2, 0, 851980, 2, 0, 851981, 2, 0, 851982, 2, 0, 851983, 2, 0, 851984, 2, 0, 851985, 2, 0, 851986, 2, 0, 851987, 2, 0, 851988, 2, 0, 851989, 2, 0, 851990, 2, 0, 851991, 2, 0, 851992, 2, 0, 851993, 2, 0, 851994, 2, 0, 851995, 2, 0, 851996, 2, 0, 851997, 2, 0, 851998, 2, 0, 851999, 2, 0, 852000, 2, 0, 852001, 2, 0, 852002, 2, 0, 852003, 2, 0, 852004, 2, 0, 852005, 2, 0, 852006, 2, 0, 852007, 2, 0, 852008, 2, 0, 852009, 2, 0, 852010, 2, 0, 852011, 2, 0, 852012, 2, 0, 852013, 2, 0, 852014, 2, 0, 852015, 2, 0, 852016, 2, 0, 852017, 2, 0, 852018, 2, 0, 852019, 2, 0, 852020, 2, 0, 852021, 2, 0, 852022, 2, 0, 983008, 2, 0, 983016, 2, 0, 983017, 2, 0, 983018, 2, 0, 983019, 2, 0, 983020, 2, 0, 983021, 2, 0, 983022, 2, 0, 983023, 2, 0, 983024, 2, 0, 983025, 2, 0, 983026, 2, 0, 983027, 2, 0, 983028, 2, 0, 983029, 2, 0, 983030, 2, 0, 983031, 2, 0, 983032, 2, 0, 983033, 2, 0, 983034, 2, 0, 983035, 2, 0, 983036, 2, 0, 983037, 2, 0, 983038, 2, 0, 983039, 2, 0, 917504, 2, 0, 917505, 2, 0, 917506, 2, 0, 917507, 2, 0, 917508, 2, 0, 917509, 2, 0, 917510, 2, 0, 917511, 2, 0, 917512, 2, 0, 917513, 2, 0, 917514, 2, 0, 917515, 2, 0, 917516, 2, 0, 917517, 2, 0, 917518, 2, 0, 917519, 2, 0, 917520, 2, 0, 917521, 2, 0, 917522, 2, 0, 917523, 2, 0, 917524, 2, 0, 917525, 2, 0, 917526, 2, 0, 917527, 2, 0, 917528, 2, 0, 917529, 2, 0, 917530, 2, 0, 917531, 2, 0, 917532, 2, 0, 917533, 2, 0, 917534, 2, 0, 917535, 2, 0, 917536, 2, 0, 917537, 2, 0, 917538, 2, 0, 917539, 2, 0, 917540, 2, 0, 917541, 2, 0, 917542, 2, 0, 917543, 2, 0, 917544, 2, 0, 917545, 2, 0, 917546, 2, 0, 917547, 2, 0, 917548, 2, 0, 917549, 2, 0, 917550, 2, 0, 917551, 2, 0, 917552, 2, 0, 917553, 2, 0, 917554, 2, 0, 917555, 2, 0, 917556, 2, 0, 917557, 2, 0, 917558, 2, 0, 1048545, 2, 0, 1048553, 2, 0, 1048554, 2, 0, 1048555, 2, 0, 1048556, 2, 0, 1048557, 2, 0, 1048558, 2, 0, 1048559, 2, 0, 1048560, 2, 0, 1048561, 2, 0, 1048562, 2, 0, 1048563, 2, 0, 1048564, 2, 0, 1048565, 2, 0, 1048566, 2, 0, 1048567, 2, 0, 1048568, 2, 0, 1048569, 2, 0, 1048570, 2, 0, 1048571, 2, 0, 1048572, 2, 0, 1048573, 2, 0, 1048574, 2, 0, 1048575, 2, 0, 983040, 2, 0, 983041, 2, 0, 983042, 2, 0, 983043, 2, 0, 983044, 2, 0, 983045, 2, 0, 983046, 2, 0, 983047, 2, 0, 983048, 2, 0, 983049, 2, 0, 983050, 2, 0, 983051, 2, 0, 983052, 2, 0, 983053, 2, 0, 983054, 2, 0, 983055, 2, 0, 983056, 2, 0, 983057, 2, 0, 983058, 2, 0, 983059, 2, 0, 983060, 2, 0, 983061, 2, 0, 983062, 2, 0, 983063, 2, 0, 983064, 2, 0, 983065, 2, 0, 983066, 2, 0, 983067, 2, 0, 983068, 2, 0, 983069, 2, 0, 983070, 2, 0, 983071, 2, 0, 983072, 2, 0, 983073, 2, 0, 983074, 2, 0, 983075, 2, 0, 983076, 2, 0, 983077, 2, 0, 983078, 2, 0, 983079, 2, 0, 983080, 2, 0, 983081, 2, 0, 983082, 2, 0, 983083, 2, 0, 983084, 2, 0, 983085, 2, 0, 983086, 2, 0, 983087, 2, 0, 983088, 2, 0, 983089, 2, 0, 983090, 2, 0, 983091, 2, 0, 983092, 2, 0, 983093, 2, 0, 1114081, 2, 0, 1114090, 2, 0, 1114091, 2, 0, 1114092, 2, 0, 1114093, 2, 0, 1114094, 2, 0, 1114095, 2, 0, 1114096, 2, 0, 1114097, 2, 0, 1114098, 2, 0, 1114099, 2, 0, 1114100, 2, 0, 1114101, 2, 0, 1114102, 2, 0, 1114103, 2, 0, 1114104, 2, 0, 1114105, 2, 0, 1114106, 2, 0, 1114107, 2, 0, 1114108, 2, 0, 1114109, 2, 0, 1114110, 2, 0, 1114111, 2, 0, 1048576, 2, 0, 1048577, 2, 0, 1048578, 2, 0, 1048579, 2, 0, 1048580, 2, 0, 1048581, 2, 0, 1048582, 2, 0, 1048583, 2, 0, 1048584, 2, 0, 1048585, 2, 0, 1048586, 2, 0, 1048587, 2, 0, 1048588, 2, 0, 1048589, 2, 0, 1048590, 2, 0, 1048591, 2, 0, 1048592, 2, 0, 1048593, 2, 0, 1048594, 2, 0, 1048595, 2, 0, 1048596, 2, 0, 1048597, 2, 0, 1048598, 2, 0, 1048599, 2, 0, 1048600, 2, 0, 1048601, 2, 0, 1048602, 2, 0, 1048603, 2, 0, 1048604, 2, 0, 1048605, 2, 0, 1048606, 2, 0, 1048607, 2, 0, 1048608, 2, 0, 1048609, 2, 0, 1048610, 2, 0, 1048611, 2, 0, 1048612, 2, 0, 1048613, 2, 0, 1048614, 2, 0, 1048615, 2, 0, 1048616, 2, 0, 1048617, 2, 0, 1048618, 2, 0, 1048619, 2, 0, 1048620, 2, 0, 1048621, 2, 0, 1048622, 2, 0, 1048623, 2, 0, 1048624, 2, 0, 1048625, 2, 0, 1048626, 2, 0, 1048627, 2, 0, 1048628, 2, 0, 1048629, 2, 0, 1179618, 2, 0, 1179627, 2, 0, 1179628, 2, 0, 1179629, 2, 0, 1179630, 2, 0, 1179631, 2, 0, 1179632, 2, 0, 1179633, 2, 0, 1179634, 2, 0, 1179635, 2, 0, 1179636, 2, 0, 1179637, 2, 0, 1179638, 2, 0, 1179639, 2, 0, 1179640, 2, 0, 1179641, 2, 0, 1179642, 2, 0, 1179643, 2, 0, 1179644, 2, 0, 1179645, 2, 0, 1179646, 2, 0, 1179647, 2, 0, 1114112, 2, 0, 1114113, 2, 0, 1114114, 2, 0, 1114115, 2, 0, 1114116, 2, 0, 1114117, 2, 0, 1114118, 2, 0, 1114119, 2, 0, 1114120, 2, 0, 1114121, 2, 0, 1114122, 2, 0, 1114123, 2, 0, 1114124, 2, 0, 1114125, 2, 0, 1114126, 2, 0, 1114127, 2, 0, 1114128, 2, 0, 1114129, 2, 0, 1114130, 2, 0, 1114131, 2, 0, 1114132, 2, 0, 1114133, 2, 0, 1114134, 2, 0, 1114135, 2, 0, 1114136, 2, 0, 1114137, 2, 0, 1114138, 2, 0, 1114139, 2, 0, 1114140, 2, 0, 1114141, 2, 0, 1114142, 2, 0, 1114143, 2, 0, 1114144, 2, 0, 1114145, 2, 0, 1114146, 2, 0, 1114147, 2, 0, 1114148, 2, 0, 1114149, 2, 0, 1114150, 2, 0, 1114151, 2, 0, 1114152, 2, 0, 1114153, 2, 0, 1114154, 2, 0, 1114155, 2, 0, 1114156, 2, 0, 1114157, 2, 0, 1114158, 2, 0, 1114159, 2, 0, 1114160, 2, 0, 1114161, 2, 0, 1114162, 2, 0, 1114163, 2, 0, 1114164, 2, 0, 1114165, 2, 0, 1245154, 2, 0, 1245164, 2, 0, 1245165, 2, 0, 1245166, 2, 0, 1245167, 2, 0, 1245168, 2, 0, 1245169, 2, 0, 1245170, 2, 0, 1245171, 2, 0, 1245172, 2, 0, 1245173, 2, 0, 1245174, 2, 0, 1245175, 2, 0, 1245176, 2, 0, 1245177, 2, 0, 1245178, 2, 0, 1245179, 2, 0, 1245180, 2, 0, 1245181, 2, 0, 1245182, 2, 0, 1245183, 2, 0, 1179648, 2, 0, 1179649, 2, 0, 1179650, 2, 0, 1179651, 2, 0, 1179652, 2, 0, 1179653, 2, 0, 1179654, 2, 0, 1179655, 2, 0, 1179656, 2, 0, 1179657, 2, 0, 1179658, 2, 0, 1179659, 2, 0, 1179660, 2, 0, 1179661, 2, 0, 1179662, 2, 0, 1179663, 2, 0, 1179664, 2, 0, 1179665, 2, 0, 1179666, 2, 0, 1179667, 2, 0, 1179668, 2, 0, 1179669, 2, 0, 1179670, 2, 0, 1179671, 2, 0, 1179672, 2, 0, 1179673, 2, 0, 1179674, 2, 0, 1179675, 2, 0, 1179676, 2, 0, 1179677, 2, 0, 1179678, 2, 0, 1179679, 2, 0, 1179680, 2, 0, 1179681, 2, 0, 1179682, 2, 0, 1179683, 2, 0, 1179684, 2, 0, 1179685, 2, 0, 1179686, 2, 0, 1179687, 2, 0, 1179688, 2, 0, 1179689, 2, 0, 1179690, 2, 0, 1179691, 2, 0, 1179692, 2, 0, 1179693, 2, 0, 1179694, 2, 0, 1179695, 2, 0, 1179696, 2, 0, 1179697, 2, 0, 1179698, 2, 0, 1179699, 2, 0, 1179700, 2, 0, 1179701, 2, 0, 1310690, 2, 0, 1310701, 2, 0, 1310702, 2, 0, 1310703, 2, 0, 1310704, 2, 0, 1310705, 2, 0, 1310706, 2, 0, 1310707, 2, 0, 1310708, 2, 0, 1310709, 2, 0, 1310710, 2, 0, 1310711, 2, 0, 1310712, 2, 0, 1310713, 2, 0, 1310714, 2, 0, 1310715, 2, 0, 1310716, 2, 0, 1310717, 2, 0, 1310718, 2, 0, 1310719, 2, 0, 1245184, 2, 0, 1245185, 2, 0, 1245186, 2, 0, 1245187, 2, 0, 1245188, 2, 0, 1245189, 2, 0, 1245190, 2, 0, 1245191, 2, 0, 1245192, 2, 0, 1245193, 2, 0, 1245194, 2, 0, 1245195, 2, 0, 1245196, 2, 0, 1245197, 2, 0, 1245198, 2, 0, 1245199, 2, 0, 1245200, 2, 0, 1245201, 2, 0, 1245202, 2, 0, 1245203, 2, 0, 1245204, 2, 0, 1245205, 2, 0, 1245206, 2, 0, 1245207, 2, 0, 1245208, 2, 0, 1245209, 2, 0, 1245210, 2, 0, 1245211, 2, 0, 1245212, 2, 0, 1245213, 2, 0, 1245214, 2, 0, 1245215, 2, 0, 1245216, 2, 0, 1245217, 2, 0, 1245218, 2, 0, 1245219, 2, 0, 1245220, 2, 0, 1245221, 2, 0, 1245222, 2, 0, 1245223, 2, 0, 1245224, 2, 0, 1245225, 2, 0, 1245226, 2, 0, 1245227, 2, 0, 1245228, 2, 0, 1245229, 2, 0, 1245230, 2, 0, 1245231, 2, 0, 1245232, 2, 0, 1245233, 2, 0, 1245234, 2, 0, 1245235, 2, 0, 1245236, 2, 0, 1376238, 2, 0, 1376239, 2, 0, 1376240, 2, 0, 1376241, 2, 0, 1376242, 2, 0, 1376243, 2, 0, 1376244, 2, 0, 1376245, 2, 0, 1376246, 2, 0, 1376247, 2, 0, 1376248, 2, 0, 1376249, 2, 0, 1376250, 2, 0, 1376251, 2, 0, 1376252, 2, 0, 1376253, 2, 0, 1376254, 2, 0, 1376255, 2, 0, 1310720, 2, 0, 1310721, 2, 0, 1310722, 2, 0, 1310723, 2, 0, 1310724, 2, 0, 1310725, 2, 0, 1310726, 2, 0, 1310727, 2, 0, 1310728, 2, 0, 1310729, 2, 0, 1310730, 2, 0, 1310731, 2, 0, 1310732, 2, 0, 1310733, 2, 0, 1310734, 2, 0, 1310735, 2, 0, 1310736, 2, 0, 1310737, 2, 0, 1310738, 2, 0, 1310739, 2, 0, 1310740, 2, 0, 1310741, 2, 0, 1310742, 2, 0, 1310743, 2, 0, 1310744, 2, 0, 1310745, 2, 0, 1310746, 2, 0, 1310747, 2, 0, 1310748, 2, 0, 1310749, 2, 0, 1310750, 2, 0, 1310751, 2, 0, 1310752, 2, 0, 1310753, 2, 0, 1310754, 2, 0, 1310755, 2, 0, 1310756, 2, 0, 1310757, 2, 0, 1310758, 2, 0, 1310759, 2, 0, 1310760, 2, 0, 1310761, 2, 0, 1310762, 2, 0, 1310763, 2, 0, 1310764, 2, 0, 1310765, 2, 0, 1310766, 2, 0, 1310767, 2, 0, 1310768, 2, 0, 1310769, 2, 0, 1310770, 2, 0, 1310771, 2, 0, 1310772, 2, 0, 1441775, 2, 0, 1441776, 2, 0, 1441777, 2, 0, 1441778, 2, 0, 1441779, 2, 0, 1441780, 2, 0, 1441781, 2, 0, 1441782, 2, 0, 1441783, 2, 0, 1441784, 2, 0, 1441785, 2, 0, 1441786, 2, 0, 1441787, 2, 0, 1441788, 2, 0, 1441789, 2, 0, 1441790, 2, 0, 1441791, 2, 0, 1376256, 2, 0, 1376257, 2, 0, 1376258, 2, 0, 1376259, 2, 0, 1376260, 2, 0, 1376261, 2, 0, 1376262, 2, 0, 1376263, 2, 0, 1376264, 2, 0, 1376265, 2, 0, 1376266, 2, 0, 1376267, 2, 0, 1376268, 2, 0, 1376269, 2, 0, 1376270, 2, 0, 1376271, 2, 0, 1376272, 2, 0, 1376273, 2, 0, 1376274, 2, 0, 1376275, 2, 0, 1376276, 2, 0, 1376277, 2, 0, 1376278, 2, 0, 1376279, 2, 0, 1376280, 2, 0, 1376281, 2, 0, 1376282, 2, 0, 1376283, 2, 0, 1376284, 2, 0, 1376285, 2, 0, 1376286, 2, 0, 1376287, 2, 0, 1376288, 2, 0, 1376289, 2, 0, 1376290, 2, 0, 1376291, 2, 0, 1376292, 2, 0, 1376293, 2, 0, 1376294, 2, 0, 1376295, 2, 0, 1376296, 2, 0, 1376297, 2, 0, 1376298, 2, 0, 1376299, 2, 0, 1376300, 2, 0, 1376301, 2, 0, 1376302, 2, 0, 1376303, 2, 0, 1376304, 2, 0, 1376305, 2, 0, 1376306, 2, 0, 1376307, 2, 0, 1376308, 2, 0, 1507312, 2, 0, 1507313, 2, 0, 1507314, 2, 0, 1507315, 2, 0, 1507316, 2, 0, 1507317, 2, 0, 1507318, 2, 0, 1507319, 2, 0, 1507320, 2, 0, 1507321, 2, 0, 1507322, 2, 0, 1507323, 2, 0, 1507324, 2, 0, 1507325, 2, 0, 1507326, 2, 0, 1507327, 2, 0, 1441792, 2, 0, 1441793, 2, 0, 1441794, 2, 0, 1441795, 2, 0, 1441796, 2, 0, 1441797, 2, 0, 1441798, 2, 0, 1441799, 2, 0, 1441800, 2, 0, 1441801, 2, 0, 1441802, 2, 0, 1441803, 2, 0, 1441804, 2, 0, 1441805, 2, 0, 1441806, 2, 0, 1441807, 2, 0, 1441808, 2, 0, 1441809, 2, 0, 1441810, 2, 0, 1441811, 2, 0, 1441812, 2, 0, 1441813, 2, 0, 1441814, 2, 0, 1441815, 2, 0, 1441816, 2, 0, 1441817, 2, 0, 1441818, 2, 0, 1441819, 2, 0, 1441820, 2, 0, 1441821, 2, 0, 1441822, 2, 0, 1441823, 2, 0, 1441824, 2, 0, 1441825, 2, 0, 1441826, 2, 0, 1441827, 2, 0, 1441828, 2, 0, 1441829, 2, 0, 1441830, 2, 0, 1441831, 2, 0, 1441832, 2, 0, 1441833, 2, 0, 1441834, 2, 0, 1441835, 2, 0, 1441836, 2, 0, 1441837, 2, 0, 1441838, 2, 0, 1441839, 2, 0, 1441840, 2, 0, 1441841, 2, 0, 1441842, 2, 0, 1441843, 2, 0, 1572849, 2, 0, 1572850, 2, 0, 1572851, 2, 0, 1572852, 2, 0, 1572853, 2, 0, 1572854, 2, 0, 1572855, 2, 0, 1572856, 2, 0, 1572857, 2, 0, 1572858, 2, 0, 1572859, 2, 0, 1572860, 2, 0, 1572861, 2, 0, 1572862, 2, 0, 1572863, 2, 0, 1507328, 2, 0, 1507329, 2, 0, 1507330, 2, 0, 1507331, 2, 0, 1507332, 2, 0, 1507333, 2, 0, 1507334, 2, 0, 1507335, 2, 0, 1507336, 2, 0, 1507337, 2, 0, 1507338, 2, 0, 1507339, 2, 0, 1507340, 2, 0, 1507341, 2, 0, 1507342, 2, 0, 1507343, 2, 0, 1507344, 2, 0, 1507345, 2, 0, 1507346, 2, 0, 1507347, 2, 0, 1507348, 2, 0, 1507349, 2, 0, 1507350, 2, 0, 1507351, 2, 0, 1507352, 2, 0, 1507353, 2, 0, 1507354, 2, 0, 1507355, 2, 0, 1507356, 2, 0, 1507357, 2, 0, 1507358, 2, 0, 1507359, 2, 0, 1507360, 2, 0, 1507361, 2, 0, 1507362, 2, 0, 1507363, 2, 0, 1507364, 2, 0, 1507365, 2, 0, 1507366, 2, 0, 1507367, 2, 0, 1507368, 2, 0, 1507369, 2, 0, 1507370, 2, 0, 1507371, 2, 0, 1507372, 2, 0, 1507373, 2, 0, 1507374, 2, 0, 1507375, 2, 0, 1507376, 2, 0, 1507377, 2, 0, 1507378, 2, 0, 1507379, 2, 0, 1638385, 2, 0, 1638386, 2, 0, 1638387, 2, 0, 1638388, 2, 0, 1638389, 2, 0, 1638390, 2, 0, 1638391, 2, 0, 1638392, 2, 0, 1638393, 2, 0, 1638394, 2, 0, 1638395, 2, 0, 1638396, 2, 0, 1638397, 2, 0, 1638398, 2, 0, 1638399, 2, 0, 1572864, 2, 0, 1572865, 2, 0, 1572866, 2, 0, 1572867, 2, 0, 1572868, 2, 0, 1572869, 2, 0, 1572870, 2, 0, 1572871, 2, 0, 1572872, 2, 0, 1572873, 2, 0, 1572874, 2, 0, 1572875, 2, 0, 1572876, 2, 0, 1572877, 2, 0, 1572878, 2, 0, 1572879, 2, 0, 1572880, 2, 0, 1572881, 2, 0, 1572882, 2, 0, 1572883, 2, 0, 1572884, 2, 0, 1572885, 2, 0, 1572886, 2, 0, 1572887, 2, 0, 1572888, 2, 0, 1572889, 2, 0, 1572890, 2, 0, 1572891, 2, 0, 1572892, 2, 0, 1572893, 2, 0, 1572894, 2, 0, 1572895, 2, 0, 1572896, 2, 0, 1572897, 2, 0, 1572898, 2, 0, 1572899, 2, 0, 1572900, 2, 0, 1572901, 2, 0, 1572902, 2, 0, 1572903, 2, 0, 1572904, 2, 0, 1572905, 2, 0, 1572906, 2, 0, 1572907, 2, 0, 1572908, 2, 0, 1572909, 2, 0, 1572910, 2, 0, 1572911, 2, 0, 1572912, 2, 0, 1572913, 2, 0, 1572914, 2, 0, 1703922, 2, 0, 1703923, 2, 0, 1703924, 2, 0, 1703925, 2, 0, 1703926, 2, 0, 1703927, 2, 0, 1703928, 2, 0, 1703929, 2, 0, 1703930, 2, 0, 1703931, 2, 0, 1703932, 2, 0, 1703933, 2, 0, 1703934, 2, 0, 1703935, 2, 0, 1638400, 2, 0, 1638401, 2, 0, 1638402, 2, 0, 1638403, 2, 0, 1638404, 2, 0, 1638405, 2, 0, 1638406, 2, 0, 1638407, 2, 0, 1638408, 2, 0, 1638409, 2, 0, 1638410, 2, 0, 1638411, 2, 0, 1638412, 2, 0, 1638413, 2, 0, 1638414, 2, 0, 1638415, 2, 0, 1638416, 2, 0, 1638417, 2, 0, 1638418, 2, 0, 1638419, 2, 0, 1638420, 2, 0, 1638421, 2, 0, 1638422, 2, 0, 1638423, 2, 0, 1638424, 2, 0, 1638425, 2, 0, 1638426, 2, 0, 1638427, 2, 0, 1638428, 2, 0, 1638429, 2, 0, 1638430, 2, 0, 1638431, 2, 0, 1638432, 2, 0, 1638433, 2, 0, 1638434, 2, 0, 1638435, 2, 0, 1638436, 2, 0, 1638437, 2, 0, 1638438, 2, 0, 1638439, 2, 0, 1638440, 2, 0, 1638441, 2, 0, 1638442, 2, 0, 1638443, 2, 0, 1638444, 2, 0, 1638445, 2, 0, 1638446, 2, 0, 1638447, 2, 0, 1638448, 2, 0, 1638449, 2, 0, 1638450, 2, 0, 1769459, 2, 0, 1769460, 2, 0, 1769461, 2, 0, 1769462, 2, 0, 1769463, 2, 0, 1769464, 2, 0, 1769465, 2, 0, 1769466, 2, 0, 1769467, 2, 0, 1769468, 2, 0, 1769469, 2, 0, 1769470, 2, 0, 1769471, 2, 0, 1703936, 2, 0, 1703937, 2, 0, 1703938, 2, 0, 1703939, 2, 0, 1703940, 2, 0, 1703941, 2, 0, 1703942, 2, 0, 1703943, 2, 0, 1703944, 2, 0, 1703945, 2, 0, 1703946, 2, 0, 1703947, 2, 0, 1703948, 2, 0, 1703949, 2, 0, 1703950, 2, 0, 1703951, 2, 0, 1703952, 2, 0, 1703953, 2, 0, 1703954, 2, 0, 1703955, 2, 0, 1703956, 2, 0, 1703957, 2, 0, 1703958, 2, 0, 1703959, 2, 0, 1703960, 2, 0, 1703961, 2, 0, 1703962, 2, 0, 1703963, 2, 0, 1703964, 2, 0, 1703965, 2, 0, 1703966, 2, 0, 1703967, 2, 0, 1703968, 2, 0, 1703969, 2, 0, 1703970, 2, 0, 1703971, 2, 0, 1703972, 2, 0, 1703973, 2, 0, 1703974, 2, 0, 1703975, 2, 0, 1703976, 2, 0, 1703977, 2, 0, 1703978, 2, 0, 1703979, 2, 0, 1703980, 2, 0, 1703981, 2, 0, 1703982, 2, 0, 1703983, 2, 0, 1703984, 2, 0, 1703985, 2, 0, 1834996, 2, 0, 1834997, 2, 0, 1834998, 2, 0, 1834999, 2, 0, 1835000, 2, 0, 1835001, 2, 0, 1835002, 2, 0, 1835003, 2, 0, 1835004, 2, 0, 1835005, 2, 0, 1835006, 2, 0, 1835007, 2, 0, 1769472, 2, 0, 1769473, 2, 0, 1769474, 2, 0, 1769475, 2, 0, 1769476, 2, 0, 1769477, 2, 0, 1769478, 2, 0, 1769479, 2, 0, 1769480, 2, 0, 1769481, 2, 0, 1769482, 2, 0, 1769483, 2, 0, 1769484, 2, 0, 1769485, 2, 0, 1769486, 2, 0, 1769487, 2, 0, 1769488, 2, 0, 1769489, 2, 0, 1769490, 2, 0, 1769491, 2, 0, 1769492, 2, 0, 1769493, 2, 0, 1769494, 2, 0, 1769495, 2, 0, 1769496, 2, 0, 1769497, 2, 0, 1769498, 2, 0, 1769499, 2, 0, 1769500, 2, 0, 1769501, 2, 0, 1769502, 2, 0, 1769503, 2, 0, 1769504, 2, 0, 1769505, 2, 0, 1769506, 2, 0, 1769507, 2, 0, 1769508, 2, 0, 1769509, 2, 0, 1769510, 2, 0, 1769511, 2, 0, 1769512, 2, 0, 1769513, 2, 0, 1769514, 2, 0, 1769515, 2, 0, 1769516, 2, 0, 1769517, 2, 0, 1769518, 2, 0, 1769519, 2, 0, 1769520, 2, 0, 1769521, 2, 0, 1900533, 2, 0, 1900534, 2, 0, 1900535, 2, 0, 1900536, 2, 0, 1900537, 2, 0, 1900538, 2, 0, 1900539, 2, 0, 1900540, 2, 0, 1900541, 2, 0, 1900542, 2, 0, 1900543, 2, 0, 1835008, 2, 0, 1835009, 2, 0, 1835010, 2, 0, 1835011, 2, 0, 1835012, 2, 0, 1835013, 2, 0, 1835014, 2, 0, 1835015, 2, 0, 1835016, 2, 0, 1835017, 2, 0, 1835018, 2, 0, 1835019, 2, 0, 1835020, 2, 0, 1835021, 2, 0, 1835022, 2, 0, 1835023, 2, 0, 1835024, 2, 0, 1835025, 2, 0, 1835026, 2, 0, 1835027, 2, 0, 1835028, 2, 0, 1835029, 2, 0, 1835030, 2, 0, 1835031, 2, 0, 1835032, 2, 0, 1835033, 2, 0, 1835034, 2, 0, 1835035, 2, 0, 1835036, 2, 0, 1835037, 2, 0, 1835038, 2, 0, 1835039, 2, 0, 1835040, 2, 0, 1835041, 2, 0, 1835042, 2, 0, 1835043, 2, 0, 1835044, 2, 0, 1835045, 2, 0, 1835046, 2, 0, 1835047, 2, 0, 1835048, 2, 0, 1835049, 2, 0, 1835050, 2, 0, 1835051, 2, 0, 1835052, 2, 0, 1835053, 2, 0, 1835054, 2, 0, 1835055, 2, 0, 1835056, 2, 0, 1966070, 2, 0, 1966071, 2, 0, 1966072, 2, 0, 1966073, 2, 0, 1966074, 2, 0, 1966075, 2, 0, 1966076, 2, 0, 1966077, 2, 0, 1966078, 2, 0, 1966079, 2, 0, 1900544, 2, 0, 1900545, 2, 0, 1900546, 2, 0, 1900547, 2, 0, 1900548, 2, 0, 1900549, 2, 0, 1900550, 2, 0, 1900551, 2, 0, 1900552, 2, 0, 1900553, 2, 0, 1900554, 2, 0, 1900555, 2, 0, 1900556, 2, 0, 1900557, 2, 0, 1900558, 2, 0, 1900559, 2, 0, 1900560, 2, 0, 1900561, 2, 0, 1900562, 2, 0, 1900563, 2, 0, 1900564, 2, 0, 1900565, 2, 0, 1900566, 2, 0, 1900567, 2, 0, 1900568, 2, 0, 1900569, 2, 0, 1900570, 2, 0, 1900571, 2, 0, 1900572, 2, 0, 1900573, 2, 0, 1900574, 2, 0, 1900575, 2, 0, 1900576, 2, 0, 1900577, 2, 0, 1900578, 2, 0, 1900579, 2, 0, 1900580, 2, 0, 1900581, 2, 0, 1900582, 2, 0, 1900583, 2, 0, 1900584, 2, 0, 1900585, 2, 0, 1900586, 2, 0, 1900587, 2, 0, 1900588, 2, 0, 1900589, 2, 0, 1900590, 2, 0, 1900591, 2, 0, 1900592, 2, 0, 2031607, 2, 0, 2031608, 2, 0, 2031609, 2, 0, 2031610, 2, 0, 2031611, 2, 0, 2031612, 2, 0, 2031613, 2, 0, 2031614, 2, 0, 2031615, 2, 0, 1966080, 2, 0, 1966081, 2, 0, 1966082, 2, 0, 1966083, 2, 0, 1966084, 2, 0, 1966085, 2, 0, 1966086, 2, 0, 1966087, 2, 0, 1966088, 2, 0, 1966089, 2, 0, 1966090, 2, 0, 1966091, 2, 0, 1966092, 2, 0, 1966093, 2, 0, 1966094, 2, 0, 1966095, 2, 0, 1966096, 2, 0, 1966097, 2, 0, 1966098, 2, 0, 1966099, 2, 0, 1966100, 2, 0, 1966101, 2, 0, 1966102, 2, 0, 1966103, 2, 0, 1966104, 2, 0, 1966105, 2, 0, 1966106, 2, 0, 1966107, 2, 0, 1966108, 2, 0, 1966109, 2, 0, 1966110, 2, 0, 1966111, 2, 0, 1966112, 2, 0, 1966113, 2, 0, 1966114, 2, 0, 1966115, 2, 0, 1966116, 2, 0, 1966117, 2, 0, 1966118, 2, 0, 1966119, 2, 0, 1966120, 2, 0, 1966121, 2, 0, 1966122, 2, 0, 1966123, 2, 0, 1966124, 2, 0, 1966125, 2, 0, 1966126, 2, 0, 1966127, 2, 0, 2097144, 2, 0, 2097145, 2, 0, 2097146, 2, 0, 2097147, 2, 0, 2097148, 2, 0, 2097149, 2, 0, 2097150, 2, 0, 2097151, 2, 0, 2031616, 2, 0, 2031617, 2, 0, 2031618, 2, 0, 2031619, 2, 0, 2031620, 2, 0, 2031621, 2, 0, 2031622, 2, 0, 2031623, 2, 0, 2031624, 2, 0, 2031625, 2, 0, 2031626, 2, 0, 2031627, 2, 0, 2031628, 2, 0, 2031629, 2, 0, 2031630, 2, 0, 2031631, 2, 0, 2031632, 2, 0, 2031633, 2, 0, 2031634, 2, 0, 2031635, 2, 0, 2031636, 2, 0, 2031637, 2, 0, 2031638, 2, 0, 2031639, 2, 0, 2031640, 2, 0, 2031641, 2, 0, 2031642, 2, 0, 2031643, 2, 0, 2031644, 2, 0, 2031645, 2, 0, 2031646, 2, 0, 2031647, 2, 0, 2031648, 2, 0, 2031649, 2, 0, 2031650, 2, 0, 2031651, 2, 0, 2031652, 2, 0, 2031653, 2, 0, 2031654, 2, 0, 2031655, 2, 0, 2031656, 2, 0, 2031657, 2, 0, 2031658, 2, 0, 2031659, 2, 0, 2031660, 2, 0, 2031661, 2, 0, 2031662, 2, 0, 2031663, 2, 0, 2162681, 2, 0, 2162682, 2, 0, 2162683, 2, 0, 2162684, 2, 0, 2162685, 2, 0, 2162686, 2, 0, 2162687, 2, 0, 2097152, 2, 0, 2097153, 2, 0, 2097154, 2, 0, 2097155, 2, 0, 2097156, 2, 0, 2097157, 2, 0, 2097158, 2, 0, 2097159, 2, 0, 2097160, 2, 0, 2097161, 2, 0, 2097162, 2, 0, 2097163, 2, 0, 2097164, 2, 0, 2097165, 2, 0, 2097166, 2, 0, 2097167, 2, 0, 2097168, 2, 0, 2097169, 2, 0, 2097170, 2, 0, 2097171, 2, 0, 2097172, 2, 0, 2097173, 2, 0, 2097174, 2, 0, 2097175, 2, 0, 2097176, 2, 0, 2097177, 2, 0, 2097178, 2, 0, 2097179, 2, 0, 2097180, 2, 0, 2097181, 2, 0, 2097182, 2, 0, 2097183, 2, 0, 2097184, 2, 0, 2097185, 2, 0, 2097186, 2, 0, 2097187, 2, 0, 2097188, 2, 0, 2097189, 2, 0, 2097190, 2, 0, 2097191, 2, 0, 2097192, 2, 0, 2097193, 2, 0, 2097194, 2, 0, 2097195, 2, 0, 2097196, 2, 0, 2097197, 2, 0, 2097198, 2, 0, 2097199, 2, 0, 2228218, 2, 0, 2228219, 2, 0, 2228220, 2, 0, 2228221, 2, 0, 2228222, 2, 0, 2228223, 2, 0, 2162688, 2, 0, 2162689, 2, 0, 2162690, 2, 0, 2162691, 2, 0, 2162692, 2, 0, 2162693, 2, 0, 2162694, 2, 0, 2162695, 2, 0, 2162696, 2, 0, 2162697, 2, 0, 2162698, 2, 0, 2162699, 2, 0, 2162700, 2, 0, 2162701, 2, 0, 2162702, 2, 0, 2162703, 2, 0, 2162704, 2, 0, 2162705, 2, 0, 2162706, 2, 0, 2162707, 2, 0, 2162708, 2, 0, 2162709, 2, 0, 2162710, 2, 0, 2162711, 2, 0, 2162712, 2, 0, 2162713, 2, 0, 2162714, 2, 0, 2162715, 2, 0, 2162716, 2, 0, 2162717, 2, 0, 2162718, 2, 0, 2162719, 2, 0, 2162720, 2, 0, 2162721, 2, 0, 2162722, 2, 0, 2162723, 2, 0, 2162724, 2, 0, 2162725, 2, 0, 2162726, 2, 0, 2162727, 2, 0, 2162728, 2, 0, 2162729, 2, 0, 2162730, 2, 0, 2162731, 2, 0, 2162732, 2, 0, 2162733, 2, 0, 2162734, 2, 0, 2293754, 2, 0, 2293755, 2, 0, 2293756, 2, 0, 2293757, 2, 0, 2293758, 2, 0, 2293759, 2, 0, 2228224, 2, 0, 2228225, 2, 0, 2228226, 2, 0, 2228227, 2, 0, 2228228, 2, 0, 2228229, 2, 0, 2228230, 2, 0, 2228231, 2, 0, 2228232, 2, 0, 2228233, 2, 0, 2228234, 2, 0, 2228235, 2, 0, 2228236, 2, 0, 2228237, 2, 0, 2228238, 2, 0, 2228239, 2, 0, 2228240, 2, 0, 2228241, 2, 0, 2228242, 2, 0, 2228243, 2, 0, 2228244, 2, 0, 2228245, 2, 0, 2228246, 2, 0, 2228247, 2, 0, 2228248, 2, 0, 2228249, 2, 0, 2228250, 2, 0, 2228251, 2, 0, 2228252, 2, 0, 2228253, 2, 0, 2228254, 2, 0, 2228255, 2, 0, 2228256, 2, 0, 2228257, 2, 0, 2228258, 2, 0, 2228259, 2, 0, 2228260, 2, 0, 2228261, 2, 0, 2228262, 2, 0, 2228263, 2, 0, 2228264, 2, 0, 2228265, 2, 0, 2228266, 2, 0, 2228267, 2, 0, 2228268, 2, 0, 2228269, 2, 0, 2228270, 2, 0, 2359291, 2, 0, 2359292, 2, 0, 2359293, 2, 0, 2359294, 2, 0, 2359295, 2, 0, 2293760, 2, 0, 2293761, 2, 0, 2293762, 2, 0, 2293763, 2, 0, 2293764, 2, 0, 2293765, 2, 0, 2293766, 2, 0, 2293767, 2, 0, 2293768, 2, 0, 2293769, 2, 0, 2293770, 2, 0, 2293771, 2, 0, 2293772, 2, 0, 2293773, 2, 0, 2293774, 2, 0, 2293775, 2, 0, 2293776, 2, 0, 2293777, 2, 0, 2293778, 2, 0, 2293779, 2, 0, 2293780, 2, 0, 2293781, 2, 0, 2293782, 2, 0, 2293783, 2, 0, 2293784, 2, 0, 2293785, 2, 0, 2293786, 2, 0, 2293787, 2, 0, 2293788, 2, 0, 2293789, 2, 0, 2293790, 2, 0, 2293791, 2, 0, 2293792, 2, 0, 2293793, 2, 0, 2293794, 2, 0, 2293795, 2, 0, 2293796, 2, 0, 2293797, 2, 0, 2293798, 2, 0, 2293799, 2, 0, 2293800, 2, 0, 2293801, 2, 0, 2293802, 2, 0, 2293803, 2, 0, 2293804, 2, 0, 2293805, 2, 0, 2424828, 2, 0, 2424829, 2, 0, 2424830, 2, 0, 2424831, 2, 0, 2359296, 2, 0, 2359297, 2, 0, 2359298, 2, 0, 2359299, 2, 0, 2359300, 2, 0, 2359301, 2, 0, 2359302, 2, 0, 2359303, 2, 0, 2359304, 2, 0, 2359305, 2, 0, 2359306, 2, 0, 2359307, 2, 0, 2359308, 2, 0, 2359309, 2, 0, 2359310, 2, 0, 2359311, 2, 0, 2359312, 2, 0, 2359313, 2, 0, 2359314, 2, 0, 2359315, 2, 0, 2359316, 2, 0, 2359317, 2, 0, 2359318, 2, 0, 2359319, 2, 0, 2359320, 2, 0, 2359321, 2, 0, 2359322, 2, 0, 2359323, 2, 0, 2359324, 2, 0, 2359325, 2, 0, 2359326, 2, 0, 2359327, 2, 0, 2359328, 2, 0, 2359329, 2, 0, 2359330, 2, 0, 2359331, 2, 0, 2359332, 2, 0, 2359333, 2, 0, 2359334, 2, 0, 2359335, 2, 0, 2359336, 2, 0, 2359337, 2, 0, 2359338, 2, 0, 2359339, 2, 0, 2359340, 2, 0, 2490365, 2, 0, 2490366, 2, 0, 2490367, 2, 0, 2424832, 2, 0, 2424833, 2, 0, 2424834, 2, 0, 2424835, 2, 0, 2424836, 2, 0, 2424837, 2, 0, 2424838, 2, 0, 2424839, 2, 0, 2424840, 2, 0, 2424841, 2, 0, 2424842, 2, 0, 2424843, 2, 0, 2424844, 2, 0, 2424845, 2, 0, 2424846, 2, 0, 2424847, 2, 0, 2424848, 2, 0, 2424849, 2, 0, 2424850, 2, 0, 2424851, 2, 0, 2424852, 2, 0, 2424853, 2, 0, 2424854, 2, 0, 2424855, 2, 0, 2424856, 2, 0, 2424857, 2, 0, 2424858, 2, 0, 2424859, 2, 0, 2424860, 2, 0, 2424861, 2, 0, 2424862, 2, 0, 2424863, 2, 0, 2424864, 2, 0, 2424865, 2, 0, 2424866, 2, 0, 2424867, 2, 0, 2424868, 2, 0, 2424869, 2, 0, 2424870, 2, 0, 2424871, 2, 0, 2424872, 2, 0, 2424873, 2, 0, 2424874, 2, 0, 2424875, 2, 0, 2424876, 2, 0, 2555903, 2, 0, 2490368, 2, 0, 2490369, 2, 0, 2490370, 2, 0, 2490371, 2, 0, 2490372, 2, 0, 2490373, 2, 0, 2490374, 2, 0, 2490375, 2, 0, 2490376, 2, 0, 2490377, 2, 0, 2490378, 2, 0, 2490379, 2, 0, 2490380, 2, 0, 2490381, 2, 0, 2490382, 2, 0, 2490383, 2, 0, 2490384, 2, 0, 2490385, 2, 0, 2490386, 2, 0, 2490387, 2, 0, 2490388, 2, 0, 2490389, 2, 0, 2490390, 2, 0, 2490391, 2, 0, 2490392, 2, 0, 2490393, 2, 0, 2490394, 2, 0, 2490395, 2, 0, 2490396, 2, 0, 2490397, 2, 0, 2490398, 2, 0, 2490399, 2, 0, 2490400, 2, 0, 2490401, 2, 0, 2490402, 2, 0, 2490403, 2, 0, 2490404, 2, 0, 2490405, 2, 0, 2490406, 2, 0, 2490407, 2, 0, 2490408, 2, 0, 2490409, 2, 0, 2490410, 2, 0, 2490411, 2, 0, 2555904, 2, 0, 2555905, 2, 0, 2555906, 2, 0, 2555907, 2, 0, 2555908, 2, 0, 2555909, 2, 0, 2555910, 2, 0, 2555911, 2, 0, 2555912, 2, 0, 2555913, 2, 0, 2555914, 2, 0, 2555915, 2, 0, 2555916, 2, 0, 2555917, 2, 0, 2555918, 2, 0, 2555919, 2, 0, 2555920, 2, 0, 2555921, 2, 0, 2555922, 2, 0, 2555923, 2, 0, 2555924, 2, 0, 2555925, 2, 0, 2555926, 2, 0, 2555927, 2, 0, 2555928, 2, 0, 2555929, 2, 0, 2555930, 2, 0, 2555931, 2, 0, 2555932, 2, 0, 2555933, 2, 0, 2555934, 2, 0, 2555935, 2, 0, 2555936, 2, 0, 2555937, 2, 0, 2555938, 2, 0, 2555939, 2, 0, 2555940, 2, 0, 2555941, 2, 0, 2555942, 2, 0, 2555943, 2, 0, 2555944, 2, 0, 2555945, 2, 0, 2555946, 2, 0, 2555947, 2, 0, 2621441, 2, 0, 2621442, 2, 0, 2621443, 2, 0, 2621444, 2, 0, 2621445, 2, 0, 2621446, 2, 0, 2621447, 2, 0, 2621448, 2, 0, 2621449, 2, 0, 2621450, 2, 0, 2621451, 2, 0, 2621452, 2, 0, 2621453, 2, 0, 2621454, 2, 0, 2621455, 2, 0, 2621456, 2, 0, 2621457, 2, 0, 2621458, 2, 0, 2621459, 2, 0, 2621460, 2, 0, 2621461, 2, 0, 2621462, 2, 0, 2621463, 2, 0, 2621464, 2, 0, 2621465, 2, 0, 2621466, 2, 0, 2621467, 2, 0, 2621468, 2, 0, 2621469, 2, 0, 2621470, 2, 0, 2621471, 2, 0, 2621472, 2, 0, 2621473, 2, 0, 2621474, 2, 0, 2621475, 2, 0, 2621476, 2, 0, 2621477, 2, 0, 2621478, 2, 0, 2621479, 2, 0, 2621480, 2, 0, 2621481, 2, 0, 2621482, 2, 0, 2686979, 2, 0, 2686980, 2, 0, 2686981, 2, 0, 2686982, 2, 0, 2686983, 2, 0, 2686984, 2, 0, 2686985, 2, 0, 2686986, 2, 0, 2686987, 2, 0, 2686988, 2, 0, 2686989, 2, 0, 2686990, 2, 0, 2686991, 2, 0, 2686992, 2, 0, 2686993, 2, 0, 2686994, 2, 0, 2686995, 2, 0, 2686996, 2, 0, 2686997, 2, 0, 2686998, 2, 0, 2686999, 2, 0, 2687000, 2, 0, 2687001, 2, 0, 2687002, 2, 0, 2687003, 2, 0, 2687004, 2, 0, 2687005, 2, 0, 2687006, 2, 0, 2687007, 2, 0, 2687008, 2, 0, 2687009, 2, 0, 2687010, 2, 0, 2687011, 2, 0, 2687012, 2, 0, 2687013, 2, 0, 2687014, 2, 0, 2687015, 2, 0, 2687016, 2, 0, 2687017, 2, 0, 2687018, 2, 0, 2752516, 2, 0, 2752517, 2, 0, 2752518, 2, 0, 2752519, 2, 0, 2752520, 2, 0, 2752521, 2, 0, 2752522, 2, 0, 2752523, 2, 0, 2752524, 2, 0, 2752525, 2, 0, 2752526, 2, 0, 2752527, 2, 0, 2752528, 2, 0, 2752529, 2, 0, 2752530, 2, 0, 2752531, 2, 0, 2752532, 2, 0, 2752533, 2, 0, 2752534, 2, 0, 2752535, 2, 0, 2752536, 2, 0, 2752537, 2, 0, 2752538, 2, 0, 2752539, 2, 0, 2752540, 2, 0, 2752541, 2, 0, 2752542, 2, 0, 2752543, 2, 0, 2752544, 2, 0, 2752545, 2, 0, 2752546, 2, 0, 2752547, 2, 0, 2752548, 2, 0, 2752549, 2, 0, 2752550, 2, 0, 2752551, 2, 0, 2752552, 2, 0, 2752553, 2, 0, 2818053, 2, 0, 2818054, 2, 0, 2818055, 2, 0, 2818056, 2, 0, 2818057, 2, 0, 2818058, 2, 0, 2818059, 2, 0, 2818060, 2, 0, 2818061, 2, 0, 2818062, 2, 0, 2818063, 2, 0, 2818064, 2, 0, 2818065, 2, 0, 2818066, 2, 0, 2818067, 2, 0, 2818068, 2, 0, 2818069, 2, 0, 2818070, 2, 0, 2818071, 2, 0, 2818072, 2, 0, 2818073, 2, 0, 2818074, 2, 0, 2818075, 2, 0, 2818076, 2, 0, 2818077, 2, 0, 2818078, 2, 0, 2818079, 2, 0, 2818080, 2, 0, 2818081, 2, 0, 2818082, 2, 0, 2818083, 2, 0, 2818084, 2, 0, 2818085, 2, 0, 2818086, 2, 0, 2818087, 2, 0, 2818088, 2, 0, 2883591, 2, 0, 2883592, 2, 0, 2883593, 2, 0, 2883594, 2, 0, 2883595, 2, 0, 2883596, 2, 0, 2883597, 2, 0, 2883598, 2, 0, 2883599, 2, 0, 2883600, 2, 0, 2883601, 2, 0, 2883602, 2, 0, 2883603, 2, 0, 2883604, 2, 0, 2883605, 2, 0, 2883606, 2, 0, 2883607, 2, 0, 2883608, 2, 0, 2883609, 2, 0, 2883610, 2, 0, 2883611, 2, 0, 2883612, 2, 0, 2883613, 2, 0, 2883614, 2, 0, 2883615, 2, 0, 2883616, 2, 0, 2883617, 2, 0, 2883618, 2, 0, 2883619, 2, 0, 2883620, 2, 0, 2883621, 2, 0, 2883622, 2, 0, 2949128, 2, 0, 2949129, 2, 0, 2949130, 2, 0, 2949131, 2, 0, 2949132, 2, 0, 2949133, 2, 0, 2949134, 2, 0, 2949135, 2, 0, 2949136, 2, 0, 2949137, 2, 0, 2949138, 2, 0, 2949139, 2, 0, 2949140, 2, 0, 2949141, 2, 0, 2949142, 2, 0, 2949143, 2, 0, 2949144, 2, 0, 2949145, 2, 0, 2949146, 2, 0, 2949147, 2, 0, 2949148, 2, 0, 2949149, 2, 0, 2949150, 2, 0, 2949151, 2, 0, 2949152, 2, 0, 2949153, 2, 0, 2949154, 2, 0, 2949155, 2, 0, 2949156, 2, 0, 2949157, 2, 0, 3014665, 2, 0, 3014666, 2, 0, 3014667, 2, 0, 3014668, 2, 0, 3014669, 2, 0, 3014670, 2, 0, 3014671, 2, 0, 3014672, 2, 0, 3014673, 2, 0, 3014674, 2, 0, 3014675, 2, 0, 3014676, 2, 0, 3014677, 2, 0, 3014678, 2, 0, 3014679, 2, 0, 3014680, 2, 0, 3014681, 2, 0, 3014682, 2, 0, 3014683, 2, 0, 3014684, 2, 0, 3014685, 2, 0, 3014686, 2, 0, 3014687, 2, 0, 3014688, 2, 0, 3014689, 2, 0, 3014690, 2, 0, 3014691, 2, 0, 3014692, 2, 0, 3014693, 2, 0, 3080202, 2, 0, 3080203, 2, 0, 3080204, 2, 0, 3080205, 2, 0, 3080206, 2, 0, 3080207, 2, 0, 3080208, 2, 0, 3080209, 2, 0, 3080210, 2, 0, 3080211, 2, 0, 3080212, 2, 0, 3080213, 2, 0, 3080214, 2, 0, 3080215, 2, 0, 3080216, 2, 0, 3080217, 2, 0, 3080218, 2, 0, 3080219, 2, 0, 3080220, 2, 0, 3080221, 2, 0, 3080222, 2, 0, 3080223, 2, 0, 3080224, 2, 0, 3080225, 2, 0, 3080226, 2, 0, 3080227, 2, 0, 3080228, 2, 0, 3145739, 2, 0, 3145740, 2, 0, 3145741, 2, 0, 3145742, 2, 0, 3145743, 2, 0, 3145744, 2, 0, 3145745, 2, 0, 3145746, 2, 0, 3145747, 2, 0, 3145748, 2, 0, 3145749, 2, 0, 3145750, 2, 0, 3145751, 2, 0, 3145752, 2, 0, 3145753, 2, 0, 3145754, 2, 0, 3145755, 2, 0, 3145756, 2, 0, 3145757, 2, 0, 3145758, 2, 0, 3145759, 2, 0, 3145760, 2, 0, 3145761, 2, 0, 3145762, 2, 0, 3145763, 2, 0, 3211276, 2, 0, 3211277, 2, 0, 3211278, 2, 0, 3211279, 2, 0, 3211280, 2, 0, 3211281, 2, 0, 3211282, 2, 0, 3211283, 2, 0, 3211284, 2, 0, 3211285, 2, 0, 3211286, 2, 0, 3211287, 2, 0, 3211288, 2, 0, 3211289, 2, 0, 3211290, 2, 0, 3211291, 2, 0, 3211292, 2, 0, 3211293, 2, 0, 3211294, 2, 0, 3211295, 2, 0, 3211296, 2, 0, 3211297, 2, 0, 3211298, 2, 0, 3276813, 2, 0, 3276814, 2, 0, 3276815, 2, 0, 3276816, 2, 0, 3276817, 2, 0, 3276818, 2, 0, 3276819, 2, 0, 3276820, 2, 0, 3276821, 2, 0, 3276822, 2, 0, 3276823, 2, 0, 3276824, 2, 0, 3276825, 2, 0, 3276826, 2, 0, 3276827, 2, 0, 3276828, 2, 0, 3276829, 2, 0, 3276830, 2, 0, 3276831, 2, 0, 3276832, 2, 0, 3342351, 2, 0, 3342352, 2, 0, 3342353, 2, 0, 3342354, 2, 0, 3342355, 2, 0, 3342356, 2, 0, 3342357, 2, 0, 3342358, 2, 0, 3342359, 2, 0, 3342360, 2, 0, 3342361, 2, 0, 3342362, 2, 0, 3342363, 2, 0, 3342364, 2, 0, 3342365, 2, 0, 3342366, 2, 0, 3342367, 2, 0, 3407888, 2, 0, 3407889, 2, 0, 3407890, 2, 0, 3407891, 2, 0, 3407892, 2, 0, 3407893, 2, 0, 3407894, 2, 0, 3407895, 2, 0, 3407896, 2, 0, 3407897, 2, 0, 3407898, 2, 0, 3407899, 2, 0, 3407900, 2, 0, 3407901, 2, 0, 3473427, 2, 0, 3473428, 2, 0, 3473429, 2, 0, 3473430, 2, 0, 3473431, 2, 0, 3473432, 2, 0, 3473433, 2, 0, 3473434, 2, 0 ) diff --git a/game/test_iso_tileset/TileMap44x24.tscn b/game/test_iso_tileset/TileMap44x24.tscn new file mode 100644 index 0000000..6fe3bc5 --- /dev/null +++ b/game/test_iso_tileset/TileMap44x24.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://test_iso_tileset/new_tileset.tres" type="TileSet" id=1] + +[node name="TileMap" type="TileMap"] +mode = 1 +tile_set = ExtResource( 1 ) +cell_size = Vector2( 44, 24 ) +cell_y_sort = true +format = 1 +tile_data = PoolIntArray( -3801106, 2, 0, -3670043, 2, 0, -3473452, 1, 0, -3473451, 1, 0, -3473450, 1, 0, -3407917, 1, 0, -3407916, 1, 0, -3407915, 1, 0, -3407914, 1, 0, -3407913, 1, 0, -3407912, 1, 0, -3407911, 1, 0, -3407910, 1, 0, -3407909, 1, 0, -3342381, 1, 0, -3342380, 1, 0, -3342379, 1, 0, -3342378, 1, 0, -3342377, 1, 0, -3342376, 1, 0, -3342375, 1, 0, -3342374, 1, 0, -3342373, 1, 0, -3342372, 1, 0, -3342371, 1, 0, -3342370, 1, 0, -3342369, 1, 0, -3342368, 1, 0, -3342367, 1, 0, -3342366, 1, 0, -3276845, 1, 0, -3276844, 1, 0, -3276843, 1, 0, -3276842, 1, 0, -3276841, 1, 0, -3276840, 1, 0, -3276839, 1, 0, -3276838, 1, 0, -3276837, 1, 0, -3276836, 1, 0, -3276835, 1, 0, -3276834, 1, 0, -3276833, 1, 0, -3276832, 1, 0, -3276831, 1, 0, -3276830, 1, 0, -3276829, 1, 0, -3276828, 1, 0, -3276827, 1, 0, -3276826, 1, 0, -3211309, 1, 0, -3211308, 1, 0, -3211307, 1, 0, -3211306, 1, 0, -3211305, 1, 0, -3211304, 1, 0, -3211303, 1, 0, -3211302, 1, 0, -3211301, 1, 0, -3211300, 1, 0, -3211299, 1, 0, -3211298, 1, 0, -3211297, 1, 0, -3211296, 1, 0, -3211295, 1, 0, -3211294, 1, 0, -3211293, 1, 0, -3211292, 1, 0, -3211291, 1, 0, -3211290, 1, 0, -3211289, 1, 0, -3211288, 1, 0, -3211287, 1, 0, -3211286, 1, 0, -3211285, 1, 0, -3211284, 1, 0, -3211283, 1, 0, -3211282, 1, 0, -3145773, 1, 0, -3145772, 1, 0, -3145771, 1, 0, -3145770, 1, 0, -3145769, 1, 0, -3145768, 1, 0, -3145767, 1, 0, -3145766, 1, 0, -3145765, 1, 0, -3145764, 1, 0, -3145763, 1, 0, -3145762, 1, 0, -3145761, 1, 0, -3145760, 1, 0, -3145759, 1, 0, -3145758, 1, 0, -3145757, 1, 0, -3145756, 1, 0, -3145755, 1, 0, -3145754, 1, 0, -3145753, 1, 0, -3145752, 1, 0, -3145751, 1, 0, -3145750, 1, 0, -3145749, 1, 0, -3145748, 1, 0, -3145747, 1, 0, -3145746, 1, 0, -3145745, 1, 0, -3145744, 1, 0, -3145743, 1, 0, -3145742, 1, 0, -3145741, 1, 0, -3145740, 1, 0, -3145739, 1, 0, -3145738, 1, 0, -3145737, 1, 0, -3080237, 1, 0, -3080236, 1, 0, -3080235, 1, 0, -3080234, 1, 0, -3080233, 1, 0, -3080232, 1, 0, -3080231, 1, 0, -3080230, 1, 0, -3080229, 1, 0, -3080228, 1, 0, -3080227, 1, 0, -3080226, 1, 0, -3080225, 1, 0, -3080224, 1, 0, -3080223, 1, 0, -3080222, 1, 0, -3080221, 1, 0, -3080220, 1, 0, -3080219, 1, 0, -3080218, 1, 0, -3080217, 1, 0, -3080216, 1, 0, -3080215, 1, 0, -3080214, 1, 0, -3080213, 1, 0, -3080212, 1, 0, -3080211, 1, 0, -3080210, 1, 0, -3080209, 1, 0, -3080208, 1, 0, -3080207, 1, 0, -3080206, 1, 0, -3080205, 1, 0, -3080204, 1, 0, -3080203, 1, 0, -3080202, 1, 0, -3080201, 1, 0, -3080200, 1, 0, -3080199, 1, 0, -3080198, 1, 0, -3014701, 1, 0, -3014700, 1, 0, -3014699, 1, 0, -3014698, 1, 0, -3014697, 1, 0, -3014696, 1, 0, -3014695, 1, 0, -3014694, 1, 0, -3014693, 1, 0, -3014692, 1, 0, -3014691, 1, 0, -3014690, 1, 0, -3014689, 1, 0, -3014688, 1, 0, -3014687, 1, 0, -3014686, 1, 0, -3014685, 1, 0, -3014684, 1, 0, -3014683, 1, 0, -3014682, 1, 0, -3014681, 1, 0, -3014680, 1, 0, -3014679, 1, 0, -3014678, 1, 0, -3014677, 1, 0, -3014676, 1, 0, -3014675, 1, 0, -3014674, 1, 0, -3014673, 1, 0, -3014672, 1, 0, -3014671, 1, 0, -3014670, 1, 0, -3014669, 1, 0, -3014668, 1, 0, -3014667, 1, 0, -3014666, 1, 0, -3014665, 1, 0, -3014664, 1, 0, -3014663, 1, 0, -3014662, 1, 0, -3014661, 1, 0, -3014660, 1, 0, -3014659, 1, 0, -3014658, 1, 0, -2949165, 1, 0, -2949164, 1, 0, -2949163, 1, 0, -2949162, 1, 0, -2949161, 1, 0, -2949160, 1, 0, -2949159, 1, 0, -2949158, 1, 0, -2949157, 1, 0, -2949156, 1, 0, -2949155, 1, 0, -2949154, 1, 0, -2949153, 1, 0, -2949152, 1, 0, -2949151, 1, 0, -2949150, 1, 0, -2949149, 1, 0, -2949148, 1, 0, -2949147, 1, 0, -2949146, 1, 0, -2949145, 1, 0, -2949144, 1, 0, -2949143, 1, 0, -2949142, 1, 0, -2949141, 1, 0, -2949140, 1, 0, -2949139, 1, 0, -2949138, 1, 0, -2949137, 1, 0, -2949136, 1, 0, -2949135, 1, 0, -2949134, 1, 0, -2949133, 1, 0, -2949132, 1, 0, -2949131, 1, 0, -2949130, 1, 0, -2949129, 1, 0, -2949128, 1, 0, -2949127, 1, 0, -2949126, 1, 0, -2949125, 1, 0, -2949124, 1, 0, -2949123, 1, 0, -2949122, 1, 0, -2949121, 1, 0, -3014656, 1, 0, -3014655, 1, 0, -3014654, 1, 0, -2883628, 1, 0, -2883627, 1, 0, -2883626, 1, 0, -2883625, 1, 0, -2883624, 1, 0, -2883623, 1, 0, -2883622, 1, 0, -2883621, 1, 0, -2883620, 1, 0, -2883619, 1, 0, -2883618, 1, 0, -2883617, 1, 0, -2883616, 1, 0, -2883615, 1, 0, -2883614, 1, 0, -2883613, 1, 0, -2883612, 1, 0, -2883611, 1, 0, -2883610, 1, 0, -2883609, 1, 0, -2883608, 1, 0, -2883607, 1, 0, -2883606, 1, 0, -2883605, 1, 0, -2883604, 1, 0, -2883603, 1, 0, -2883602, 1, 0, -2883601, 1, 0, -2883600, 1, 0, -2883599, 1, 0, -2883598, 1, 0, -2883597, 1, 0, -2883596, 1, 0, -2883595, 1, 0, -2883594, 1, 0, -2883593, 1, 0, -2883592, 1, 0, -2883591, 1, 0, -2883590, 1, 0, -2883589, 1, 0, -2883588, 1, 0, -2883587, 1, 0, -2883586, 1, 0, -2883585, 1, 0, -2949120, 1, 0, -2949119, 1, 0, -2949118, 1, 0, -2949117, 1, 0, -2949116, 1, 0, -2949115, 1, 0, -2949114, 1, 0, -2818092, 1, 0, -2818091, 1, 0, -2818090, 1, 0, -2818089, 1, 0, -2818088, 1, 0, -2818087, 1, 0, -2818086, 1, 0, -2818085, 1, 0, -2818084, 1, 0, -2818083, 1, 0, -2818082, 1, 0, -2818081, 1, 0, -2818080, 1, 0, -2818079, 1, 0, -2818078, 1, 0, -2818077, 1, 0, -2818076, 1, 0, -2818075, 1, 0, -2818074, 1, 0, -2818073, 1, 0, -2818072, 1, 0, -2818071, 1, 0, -2818070, 1, 0, -2818069, 1, 0, -2818068, 1, 0, -2818067, 1, 0, -2818066, 1, 0, -2818065, 1, 0, -2818064, 1, 0, -2818063, 1, 0, -2818062, 1, 0, -2818061, 1, 0, -2818060, 1, 0, -2818059, 1, 0, -2818058, 1, 0, -2818057, 1, 0, -2818056, 1, 0, -2818055, 1, 0, -2818054, 1, 0, -2818053, 1, 0, -2818052, 1, 0, -2818051, 1, 0, -2818050, 1, 0, -2818049, 1, 0, -2883584, 1, 0, -2883583, 1, 0, -2883582, 1, 0, -2883581, 1, 0, -2883580, 1, 0, -2883579, 1, 0, -2883578, 1, 0, -2883577, 1, 0, -2883576, 1, 0, -2752556, 1, 0, -2752555, 1, 0, -2752554, 1, 0, -2752553, 1, 0, -2752552, 1, 0, -2752551, 1, 0, -2752550, 1, 0, -2752549, 1, 0, -2752548, 1, 0, -2752547, 1, 0, -2752546, 1, 0, -2752545, 1, 0, -2752544, 1, 0, -2752543, 1, 0, -2752542, 1, 0, -2752541, 1, 0, -2752540, 1, 0, -2752539, 1, 0, -2752538, 1, 0, -2752537, 1, 0, -2752536, 1, 0, -2752535, 1, 0, -2752534, 1, 0, -2752533, 1, 0, -2752532, 1, 0, -2752531, 1, 0, -2752530, 1, 0, -2752529, 1, 0, -2752528, 1, 0, -2752527, 1, 0, -2752526, 1, 0, -2752525, 1, 0, -2752524, 1, 0, -2752523, 1, 0, -2752522, 1, 0, -2752521, 1, 0, -2752520, 1, 0, -2752519, 1, 0, -2752518, 1, 0, -2752517, 1, 0, -2752516, 1, 0, -2752515, 1, 0, -2752514, 1, 0, -2752513, 1, 0, -2818048, 1, 0, -2818047, 1, 0, -2818046, 1, 0, -2818045, 1, 0, -2818044, 1, 0, -2818043, 1, 0, -2818042, 1, 0, -2818041, 1, 0, -2818040, 1, 0, -2818039, 1, 0, -2818038, 1, 0, -2818037, 1, 0, -2818036, 1, 0, -2687020, 1, 0, -2687019, 1, 0, -2687018, 1, 0, -2687017, 1, 0, -2687016, 1, 0, -2687015, 1, 0, -2687014, 1, 0, -2687013, 1, 0, -2687012, 1, 0, -2687011, 1, 0, -2687010, 1, 0, -2687009, 1, 0, -2687008, 1, 0, -2687007, 1, 0, -2687006, 1, 0, -2687005, 1, 0, -2687004, 1, 0, -2687003, 1, 0, -2687002, 1, 0, -2687001, 1, 0, -2687000, 1, 0, -2686999, 1, 0, -2686998, 1, 0, -2686997, 1, 0, -2686996, 1, 0, -2686995, 1, 0, -2686994, 1, 0, -2686993, 1, 0, -2686992, 1, 0, -2686991, 1, 0, -2686990, 1, 0, -2686989, 1, 0, -2686988, 1, 0, -2686987, 1, 0, -2686986, 1, 0, -2686985, 1, 0, -2686984, 1, 0, -2686983, 1, 0, -2686982, 1, 0, -2686981, 1, 0, -2686980, 1, 0, -2686979, 1, 0, -2686978, 1, 0, -2686977, 1, 0, -2752512, 1, 0, -2752511, 1, 0, -2752510, 1, 0, -2752509, 1, 0, -2752508, 1, 0, -2752507, 1, 0, -2752506, 1, 0, -2752505, 1, 0, -2752504, 1, 0, -2752503, 1, 0, -2752502, 1, 0, -2752501, 1, 0, -2752500, 1, 0, -2752499, 1, 0, -2752498, 1, 0, -2752497, 1, 0, -2621484, 1, 0, -2621483, 1, 0, -2621482, 1, 0, -2621481, 1, 0, -2621480, 1, 0, -2621479, 1, 0, -2621478, 1, 0, -2621477, 1, 0, -2621476, 1, 0, -2621475, 1, 0, -2621474, 1, 0, -2621473, 1, 0, -2621472, 1, 0, -2621471, 1, 0, -2621470, 1, 0, -2621469, 1, 0, -2621468, 1, 0, -2621467, 1, 0, -2621466, 1, 0, -2621465, 1, 0, -2621464, 1, 0, -2621463, 1, 0, -2621462, 1, 0, -2621461, 1, 0, -2621460, 1, 0, -2621459, 1, 0, -2621458, 1, 0, -2621457, 1, 0, -2621456, 1, 0, -2621455, 1, 0, -2621454, 1, 0, -2621453, 1, 0, -2621452, 1, 0, -2621451, 1, 0, -2621450, 1, 0, -2621449, 1, 0, -2621448, 1, 0, -2621447, 1, 0, -2621446, 1, 0, -2621445, 1, 0, -2621444, 1, 0, -2621443, 1, 0, -2621442, 1, 0, -2621441, 1, 0, -2686976, 1, 0, -2686975, 1, 0, -2686974, 1, 0, -2686973, 1, 0, -2686972, 1, 0, -2686971, 1, 0, -2686970, 1, 0, -2686969, 1, 0, -2686968, 1, 0, -2686967, 1, 0, -2686966, 1, 0, -2686965, 1, 0, -2686964, 1, 0, -2686963, 1, 0, -2686962, 1, 0, -2686961, 1, 0, -2686960, 1, 0, -2686959, 1, 0, -2555948, 1, 0, -2555947, 1, 0, -2555946, 1, 0, -2555945, 1, 0, -2555944, 1, 0, -2555943, 1, 0, -2555942, 1, 0, -2555941, 1, 0, -2555940, 1, 0, -2555939, 1, 0, -2555938, 1, 0, -2555937, 1, 0, -2555936, 1, 0, -2555935, 1, 0, -2555934, 1, 0, -2555933, 1, 0, -2555932, 1, 0, -2555931, 1, 0, -2555930, 1, 0, -2555929, 1, 0, -2555928, 1, 0, -2555927, 1, 0, -2555926, 1, 0, -2555925, 1, 0, -2555924, 1, 0, -2555923, 1, 0, -2555922, 1, 0, -2555921, 1, 0, -2555920, 1, 0, -2555919, 1, 0, -2555918, 1, 0, -2555917, 1, 0, -2555916, 1, 0, -2555915, 1, 0, -2555914, 1, 0, -2555913, 1, 0, -2555912, 1, 0, -2555911, 1, 0, -2555910, 1, 0, -2555909, 1, 0, -2555908, 1, 0, -2555907, 1, 0, -2555906, 1, 0, -2555905, 1, 0, -2621440, 1, 0, -2621439, 1, 0, -2621438, 1, 0, -2621437, 1, 0, -2621436, 1, 0, -2621435, 1, 0, -2621434, 1, 0, -2621433, 1, 0, -2621432, 1, 0, -2621431, 1, 0, -2621430, 1, 0, -2621429, 1, 0, -2621428, 1, 0, -2621427, 1, 0, -2621426, 1, 0, -2621425, 1, 0, -2621424, 1, 0, -2621423, 1, 0, -2621422, 1, 0, -2621421, 1, 0, -2490412, 1, 0, -2490411, 1, 0, -2490410, 1, 0, -2490409, 1, 0, -2490408, 1, 0, -2490407, 1, 0, -2490406, 1, 0, -2490405, 1, 0, -2490404, 1, 0, -2490403, 1, 0, -2490402, 1, 0, -2490401, 1, 0, -2490400, 1, 0, -2490399, 1, 0, -2490398, 1, 0, -2490397, 1, 0, -2490396, 1, 0, -2490395, 1, 0, -2490394, 1, 0, -2490393, 1, 0, -2490392, 1, 0, -2490391, 1, 0, -2490390, 1, 0, -2490389, 1, 0, -2490388, 1, 0, -2490387, 1, 0, -2490386, 1, 0, -2490385, 1, 0, -2490384, 1, 0, -2490383, 1, 0, -2490382, 1, 0, -2490381, 1, 0, -2490380, 1, 0, -2490379, 1, 0, -2490378, 1, 0, -2490377, 1, 0, -2490376, 1, 0, -2490375, 1, 0, -2490374, 1, 0, -2490373, 1, 0, -2490372, 1, 0, -2490371, 1, 0, -2490370, 1, 0, -2490369, 1, 0, -2555904, 1, 0, -2555903, 1, 0, -2555902, 1, 0, -2555901, 1, 0, -2555900, 1, 0, -2555899, 1, 0, -2555898, 1, 0, -2555897, 1, 0, -2555896, 1, 0, -2555895, 1, 0, -2555894, 1, 0, -2555893, 1, 0, -2555892, 1, 0, -2555891, 1, 0, -2555890, 1, 0, -2555889, 1, 0, -2555888, 1, 0, -2555887, 1, 0, -2555886, 1, 0, -2555885, 1, 0, -2555884, 1, 0, -2555883, 1, 0, -2424876, 1, 0, -2424875, 1, 0, -2424874, 1, 0, -2424873, 1, 0, -2424872, 1, 0, -2424871, 1, 0, -2424870, 1, 0, -2424869, 1, 0, -2424868, 1, 0, -2424867, 1, 0, -2424866, 1, 0, -2424865, 1, 0, -2424864, 1, 0, -2424863, 1, 0, -2424862, 1, 0, -2424861, 1, 0, -2424860, 1, 0, -2424859, 1, 0, -2424858, 1, 0, -2424857, 1, 0, -2424856, 1, 0, -2424855, 1, 0, -2424854, 1, 0, -2424853, 1, 0, -2424852, 1, 0, -2424851, 1, 0, -2424850, 1, 0, -2424849, 1, 0, -2424848, 1, 0, -2424847, 1, 0, -2424846, 1, 0, -2424845, 1, 0, -2424844, 1, 0, -2424843, 1, 0, -2424842, 1, 0, -2424841, 1, 0, -2424840, 1, 0, -2424839, 1, 0, -2424838, 1, 0, -2424837, 1, 0, -2424836, 1, 0, -2424835, 1, 0, -2424834, 1, 0, -2424833, 1, 0, -2490368, 1, 0, -2490367, 1, 0, -2490366, 1, 0, -2490365, 1, 0, -2490364, 1, 0, -2490363, 1, 0, -2490362, 1, 0, -2490361, 1, 0, -2490360, 1, 0, -2490359, 1, 0, -2490358, 1, 0, -2490357, 1, 0, -2490356, 1, 0, -2490355, 1, 0, -2490354, 1, 0, -2490353, 1, 0, -2490352, 1, 0, -2490351, 1, 0, -2490350, 1, 0, -2490349, 1, 0, -2490348, 1, 0, -2490347, 1, 0, -2490346, 1, 0, -2490345, 1, 0, -2359339, 1, 0, -2359338, 1, 0, -2359337, 1, 0, -2359336, 1, 0, -2359335, 1, 0, -2359334, 1, 0, -2359333, 1, 0, -2359332, 1, 0, -2359331, 1, 0, -2359330, 1, 0, -2359329, 1, 0, -2359328, 1, 0, -2359327, 1, 0, -2359326, 1, 0, -2359325, 1, 0, -2359324, 1, 0, -2359323, 1, 0, -2359322, 1, 0, -2359321, 1, 0, -2359320, 1, 0, -2359319, 1, 0, -2359318, 1, 0, -2359317, 1, 0, -2359316, 1, 0, -2359315, 1, 0, -2359314, 1, 0, -2359313, 1, 0, -2359312, 1, 0, -2359311, 1, 0, -2359310, 1, 0, -2359309, 1, 0, -2359308, 1, 0, -2359307, 1, 0, -2359306, 1, 0, -2359305, 1, 0, -2359304, 1, 0, -2359303, 1, 0, -2359302, 1, 0, -2359301, 1, 0, -2359300, 1, 0, -2359299, 1, 0, -2359298, 1, 0, -2359297, 1, 0, -2424832, 1, 0, -2424831, 1, 0, -2424830, 1, 0, -2424829, 1, 0, -2424828, 1, 0, -2424827, 1, 0, -2424826, 1, 0, -2424825, 1, 0, -2424824, 1, 0, -2424823, 1, 0, -2424822, 1, 0, -2424821, 1, 0, -2424820, 1, 0, -2424819, 1, 0, -2424818, 1, 0, -2424817, 1, 0, -2424816, 1, 0, -2424815, 1, 0, -2424814, 1, 0, -2424813, 1, 0, -2424812, 1, 0, -2424811, 1, 0, -2424810, 1, 0, -2424809, 1, 0, -2424808, 1, 0, -2424807, 1, 0, -2424806, 1, 0, -2293803, 1, 0, -2293802, 1, 0, -2293801, 1, 0, -2293800, 1, 0, -2293799, 1, 0, -2293798, 1, 0, -2293797, 1, 0, -2293796, 1, 0, -2293795, 1, 0, -2293794, 1, 0, -2293793, 1, 0, -2293792, 1, 0, -2293791, 1, 0, -2293790, 1, 0, -2293789, 1, 0, -2293788, 1, 0, -2293787, 1, 0, -2293786, 1, 0, -2293785, 1, 0, -2293784, 1, 0, -2293783, 1, 0, -2293782, 1, 0, -2293781, 1, 0, -2293780, 1, 0, -2293779, 1, 0, -2293778, 1, 0, -2293777, 1, 0, -2293776, 1, 0, -2293775, 1, 0, -2293774, 1, 0, -2293773, 1, 0, -2293772, 1, 0, -2293771, 1, 0, -2293770, 1, 0, -2293769, 1, 0, -2293768, 1, 0, -2293767, 1, 0, -2293766, 1, 0, -2293765, 1, 0, -2293764, 1, 0, -2293763, 1, 0, -2293762, 1, 0, -2293761, 1, 0, -2359296, 1, 0, -2359295, 1, 0, -2359294, 1, 0, -2359293, 1, 0, -2359292, 1, 0, -2359291, 1, 0, -2359290, 1, 0, -2359289, 1, 0, -2359288, 1, 0, -2359287, 1, 0, -2359286, 1, 0, -2359285, 1, 0, -2359284, 1, 0, -2359283, 1, 0, -2359282, 1, 0, -2359281, 1, 0, -2359280, 1, 0, -2359279, 1, 0, -2359278, 1, 0, -2359277, 1, 0, -2359276, 1, 0, -2359275, 1, 0, -2359274, 1, 0, -2359273, 1, 0, -2359272, 1, 0, -2359271, 1, 0, -2359270, 1, 0, -2359269, 1, 0, -2359268, 1, 0, -2228267, 1, 0, -2228266, 1, 0, -2228265, 1, 0, -2228264, 1, 0, -2228263, 1, 0, -2228262, 1, 0, -2228261, 1, 0, -2228260, 1, 0, -2228259, 1, 0, -2228258, 1, 0, -2228257, 1, 0, -2228256, 1, 0, -2228255, 1, 0, -2228254, 1, 0, -2228253, 1, 0, -2228252, 1, 0, -2228251, 1, 0, -2228250, 1, 0, -2228249, 1, 0, -2228248, 1, 0, -2228247, 1, 0, -2228246, 1, 0, -2228245, 1, 0, -2228244, 1, 0, -2228243, 1, 0, -2228242, 1, 0, -2228241, 1, 0, -2228240, 1, 0, -2228239, 1, 0, -2228238, 1, 0, -2228237, 1, 0, -2228236, 1, 0, -2228235, 1, 0, -2228234, 1, 0, -2228233, 1, 0, -2228232, 1, 0, -2228231, 1, 0, -2228230, 1, 0, -2228229, 1, 0, -2228228, 1, 0, -2228227, 1, 0, -2228226, 1, 0, -2228225, 1, 0, -2293760, 1, 0, -2293759, 1, 0, -2293758, 1, 0, -2293757, 1, 0, -2293756, 1, 0, -2293755, 1, 0, -2293754, 1, 0, -2293753, 1, 0, -2293752, 1, 0, -2293751, 1, 0, -2293750, 1, 0, -2293749, 1, 0, -2293748, 1, 0, -2293747, 1, 0, -2293746, 1, 0, -2293745, 1, 0, -2293744, 1, 0, -2293743, 1, 0, -2293742, 1, 0, -2293741, 1, 0, -2293740, 1, 0, -2293739, 1, 0, -2293738, 1, 0, -2293737, 1, 0, -2293736, 1, 0, -2293735, 1, 0, -2293734, 1, 0, -2293733, 1, 0, -2293732, 1, 0, -2293731, 1, 0, -2293730, 1, 0, -2293729, 1, 0, -2293728, 1, 0, -2162731, 1, 0, -2162730, 1, 0, -2162729, 1, 0, -2162728, 1, 0, -2162727, 1, 0, -2162726, 1, 0, -2162725, 1, 0, -2162724, 1, 0, -2162723, 1, 0, -2162722, 1, 0, -2162721, 1, 0, -2162720, 1, 0, -2162719, 1, 0, -2162718, 1, 0, -2162717, 1, 0, -2162716, 1, 0, -2162715, 1, 0, -2162714, 1, 0, -2162713, 1, 0, -2162712, 1, 0, -2162711, 1, 0, -2162710, 1, 0, -2162709, 1, 0, -2162708, 1, 0, -2162707, 1, 0, -2162706, 1, 0, -2162705, 1, 0, -2162704, 1, 0, -2162703, 1, 0, -2162702, 1, 0, -2162701, 1, 0, -2162700, 1, 0, -2162699, 1, 0, -2162698, 1, 0, -2162697, 1, 0, -2162696, 1, 0, -2162695, 1, 0, -2162694, 1, 0, -2162693, 1, 0, -2162692, 1, 0, -2162691, 1, 0, -2162690, 1, 0, -2162689, 1, 0, -2228224, 1, 0, -2228223, 1, 0, -2228222, 1, 0, -2228221, 1, 0, -2228220, 1, 0, -2228219, 1, 0, -2228218, 1, 0, -2228217, 1, 0, -2228216, 1, 0, -2228215, 1, 0, -2228214, 1, 0, -2228213, 1, 0, -2228212, 1, 0, -2228211, 1, 0, -2228210, 1, 0, -2228209, 1, 0, -2228208, 1, 0, -2228207, 1, 0, -2228206, 1, 0, -2228205, 1, 0, -2228204, 1, 0, -2228203, 1, 0, -2228202, 1, 0, -2228201, 1, 0, -2228200, 1, 0, -2228199, 1, 0, -2228198, 1, 0, -2228197, 1, 0, -2228196, 1, 0, -2228195, 1, 0, -2228194, 1, 0, -2228193, 1, 0, -2228192, 1, 0, -2097194, 1, 0, -2097193, 1, 0, -2097192, 1, 0, -2097191, 1, 0, -2097190, 1, 0, -2097189, 1, 0, -2097188, 1, 0, -2097187, 1, 0, -2097186, 1, 0, -2097185, 1, 0, -2097184, 1, 0, -2097183, 1, 0, -2097182, 1, 0, -2097181, 1, 0, -2097180, 1, 0, -2097179, 1, 0, -2097178, 1, 0, -2097177, 1, 0, -2097176, 1, 0, -2097175, 1, 0, -2097174, 1, 0, -2097173, 1, 0, -2097172, 1, 0, -2097171, 1, 0, -2097170, 1, 0, -2097169, 1, 0, -2097168, 1, 0, -2097167, 1, 0, -2097166, 1, 0, -2097165, 1, 0, -2097164, 1, 0, -2097163, 1, 0, -2097162, 1, 0, -2097161, 1, 0, -2097160, 1, 0, -2097159, 1, 0, -2097158, 1, 0, -2097157, 1, 0, -2097156, 1, 0, -2097155, 1, 0, -2097154, 1, 0, -2097153, 1, 0, -2162688, 1, 0, -2162687, 1, 0, -2162686, 1, 0, -2162685, 1, 0, -2162684, 1, 0, -2162683, 1, 0, -2162682, 1, 0, -2162681, 1, 0, -2162680, 1, 0, -2162679, 1, 0, -2162678, 1, 0, -2162677, 1, 0, -2162676, 1, 0, -2162675, 1, 0, -2162674, 1, 0, -2162673, 1, 0, -2162672, 1, 0, -2162671, 1, 0, -2162670, 1, 0, -2162669, 1, 0, -2162668, 1, 0, -2162667, 1, 0, -2162666, 1, 0, -2162665, 1, 0, -2162664, 1, 0, -2162663, 1, 0, -2162662, 1, 0, -2162661, 1, 0, -2162660, 1, 0, -2162659, 1, 0, -2162658, 1, 0, -2162657, 1, 0, -2162656, 1, 0, -2162655, 1, 0, -2162654, 1, 0, -2031658, 1, 0, -2031657, 1, 0, -2031656, 1, 0, -2031655, 1, 0, -2031654, 1, 0, -2031653, 1, 0, -2031652, 1, 0, -2031651, 1, 0, -2031650, 1, 0, -2031649, 1, 0, -2031648, 1, 0, -2031647, 1, 0, -2031646, 1, 0, -2031645, 1, 0, -2031644, 1, 0, -2031643, 1, 0, -2031642, 1, 0, -2031641, 1, 0, -2031640, 1, 0, -2031639, 1, 0, -2031638, 1, 0, -2031637, 1, 0, -2031636, 1, 0, -2031635, 1, 0, -2031634, 1, 0, -2031633, 1, 0, -2031632, 1, 0, -2031631, 1, 0, -2031630, 1, 0, -2031629, 1, 0, -2031628, 1, 0, -2031627, 1, 0, -2031626, 1, 0, -2031625, 1, 0, -2031624, 1, 0, -2031623, 1, 0, -2031622, 1, 0, -2031621, 1, 0, -2031620, 1, 0, -2031619, 1, 0, -2031618, 1, 0, -2031617, 1, 0, -2097152, 1, 0, -2097151, 1, 0, -2097150, 1, 0, -2097149, 1, 0, -2097148, 1, 0, -2097147, 1, 0, -2097146, 1, 0, -2097145, 1, 0, -2097144, 1, 0, -2097143, 1, 0, -2097142, 1, 0, -2097141, 1, 0, -2097140, 1, 0, -2097139, 1, 0, -2097138, 1, 0, -2097137, 1, 0, -2097136, 1, 0, -2097135, 1, 0, -2097134, 1, 0, -2097133, 1, 0, -2097132, 1, 0, -2097131, 1, 0, -2097130, 1, 0, -2097129, 1, 0, -2097128, 1, 0, -2097127, 1, 0, -2097126, 1, 0, -2097125, 1, 0, -2097124, 1, 0, -2097123, 1, 0, -2097122, 1, 0, -2097121, 1, 0, -2097120, 1, 0, -2097119, 1, 0, -2097118, 1, 0, -2097117, 1, 0, -2097116, 1, 0, -1966122, 1, 0, -1966121, 1, 0, -1966120, 1, 0, -1966119, 1, 0, -1966118, 1, 0, -1966117, 1, 0, -1966116, 1, 0, -1966115, 1, 0, -1966114, 1, 0, -1966113, 1, 0, -1966112, 1, 0, -1966111, 1, 0, -1966110, 1, 0, -1966109, 1, 0, -1966108, 1, 0, -1966107, 1, 0, -1966106, 1, 0, -1966105, 1, 0, -1966104, 1, 0, -1966103, 1, 0, -1966102, 1, 0, -1966101, 1, 0, -1966100, 1, 0, -1966099, 1, 0, -1966098, 1, 0, -1966097, 1, 0, -1966096, 1, 0, -1966095, 1, 0, -1966094, 1, 0, -1966093, 1, 0, -1966092, 1, 0, -1966091, 1, 0, -1966090, 1, 0, -1966089, 1, 0, -1966088, 1, 0, -1966087, 1, 0, -1966086, 1, 0, -1966085, 1, 0, -1966084, 1, 0, -1966083, 1, 0, -1966082, 1, 0, -1966081, 1, 0, -2031616, 1, 0, -2031615, 1, 0, -2031614, 1, 0, -2031613, 1, 0, -2031612, 1, 0, -2031611, 1, 0, -2031610, 1, 0, -2031609, 1, 0, -2031608, 1, 0, -2031607, 1, 0, -2031606, 1, 0, -2031605, 1, 0, -2031604, 1, 0, -2031603, 1, 0, -2031602, 1, 0, -2031601, 1, 0, -2031600, 1, 0, -2031599, 1, 0, -2031598, 1, 0, -2031597, 1, 0, -2031596, 1, 0, -2031595, 1, 0, -2031594, 1, 0, -2031593, 1, 0, -2031592, 1, 0, -2031591, 1, 0, -2031590, 1, 0, -2031589, 1, 0, -2031588, 1, 0, -2031587, 1, 0, -2031586, 1, 0, -2031585, 1, 0, -2031584, 1, 0, -2031583, 1, 0, -2031582, 1, 0, -2031581, 1, 0, -2031580, 1, 0, -2031579, 1, 0, -2031578, 1, 0, -1900586, 1, 0, -1900585, 1, 0, -1900584, 1, 0, -1900583, 1, 0, -1900582, 1, 0, -1900581, 1, 0, -1900580, 1, 0, -1900579, 1, 0, -1900578, 1, 0, -1900577, 1, 0, -1900576, 1, 0, -1900575, 1, 0, -1900574, 1, 0, -1900573, 1, 0, -1900572, 1, 0, -1900571, 1, 0, -1900570, 1, 0, -1900569, 1, 0, -1900568, 1, 0, -1900567, 1, 0, -1900566, 1, 0, -1900565, 1, 0, -1900564, 1, 0, -1900563, 1, 0, -1900562, 1, 0, -1900561, 1, 0, -1900560, 1, 0, -1900559, 1, 0, -1900558, 1, 0, -1900557, 1, 0, -1900556, 1, 0, -1900555, 1, 0, -1900554, 1, 0, -1900553, 1, 0, -1900552, 1, 0, -1900551, 1, 0, -1900550, 1, 0, -1900549, 1, 0, -1900548, 1, 0, -1900547, 1, 0, -1900546, 1, 0, -1900545, 1, 0, -1966080, 1, 0, -1966079, 1, 0, -1966078, 1, 0, -1966077, 1, 0, -1966076, 1, 0, -1966075, 1, 0, -1966074, 1, 0, -1966073, 1, 0, -1966072, 1, 0, -1966071, 1, 0, -1966070, 1, 0, -1966069, 1, 0, -1966068, 1, 0, -1966067, 1, 0, -1966066, 1, 0, -1966065, 1, 0, -1966064, 1, 0, -1966063, 1, 0, -1966062, 1, 0, -1966061, 1, 0, -1966060, 1, 0, -1966059, 1, 0, -1966058, 1, 0, -1966057, 1, 0, -1966056, 1, 0, -1966055, 1, 0, -1966054, 1, 0, -1966053, 1, 0, -1966052, 1, 0, -1966051, 1, 0, -1966050, 1, 0, -1966049, 1, 0, -1966048, 1, 0, -1966047, 1, 0, -1966046, 1, 0, -1966045, 1, 0, -1966044, 1, 0, -1966043, 1, 0, -1966042, 1, 0, -1966041, 1, 0, -1966040, 1, 0, -1835050, 1, 0, -1835049, 1, 0, -1835048, 1, 0, -1835047, 1, 0, -1835046, 1, 0, -1835045, 1, 0, -1835044, 1, 0, -1835043, 1, 0, -1835042, 1, 0, -1835041, 1, 0, -1835040, 1, 0, -1835039, 1, 0, -1835038, 1, 0, -1835037, 1, 0, -1835036, 1, 0, -1835035, 1, 0, -1835034, 1, 0, -1835033, 1, 0, -1835032, 1, 0, -1835031, 1, 0, -1835030, 1, 0, -1835029, 1, 0, -1835028, 1, 0, -1835027, 1, 0, -1835026, 1, 0, -1835025, 1, 0, -1835024, 1, 0, -1835023, 1, 0, -1835022, 1, 0, -1835021, 1, 0, -1835020, 1, 0, -1835019, 1, 0, -1835018, 1, 0, -1835017, 1, 0, -1835016, 1, 0, -1835015, 1, 0, -1835014, 1, 0, -1835013, 1, 0, -1835012, 1, 0, -1835011, 1, 0, -1835010, 1, 0, -1835009, 1, 0, -1900544, 1, 0, -1900543, 1, 0, -1900542, 1, 0, -1900541, 1, 0, -1900540, 1, 0, -1900539, 1, 0, -1900538, 1, 0, -1900537, 1, 0, -1900536, 1, 0, -1900535, 1, 0, -1900534, 1, 0, -1900533, 1, 0, -1900532, 1, 0, -1900531, 1, 0, -1900530, 1, 0, -1900529, 1, 0, -1900528, 1, 0, -1900527, 1, 0, -1900526, 1, 0, -1900525, 1, 0, -1900524, 1, 0, -1900523, 1, 0, -1900522, 1, 0, -1900521, 1, 0, -1900520, 1, 0, -1900519, 1, 0, -1900518, 1, 0, -1900517, 1, 0, -1900516, 1, 0, -1900515, 1, 0, -1900514, 1, 0, -1900513, 1, 0, -1900512, 1, 0, -1900511, 1, 0, -1900510, 1, 0, -1900509, 1, 0, -1900508, 1, 0, -1900507, 1, 0, -1900506, 1, 0, -1900505, 1, 0, -1900504, 1, 0, -1900503, 1, 0, -1769514, 1, 0, -1769513, 1, 0, -1769512, 1, 0, -1769511, 1, 0, -1769510, 1, 0, -1769509, 1, 0, -1769508, 1, 0, -1769507, 1, 0, -1769506, 1, 0, -1769505, 1, 0, -1769504, 1, 0, -1769503, 1, 0, -1769502, 1, 0, -1769501, 1, 0, -1769500, 1, 0, -1769499, 1, 0, -1769498, 1, 0, -1769497, 1, 0, -1769496, 1, 0, -1769495, 1, 0, -1769494, 1, 0, -1769493, 1, 0, -1769492, 1, 0, -1769491, 1, 0, -1769490, 1, 0, -1769489, 1, 0, -1769488, 1, 0, -1769487, 1, 0, -1769486, 1, 0, -1769485, 1, 0, -1769484, 1, 0, -1769483, 1, 0, -1769482, 1, 0, -1769481, 1, 0, -1769480, 1, 0, -1769479, 1, 0, -1769478, 1, 0, -1769477, 1, 0, -1769476, 1, 0, -1769475, 1, 0, -1769474, 1, 0, -1769473, 1, 0, -1835008, 1, 0, -1835007, 1, 0, -1835006, 1, 0, -1835005, 1, 0, -1835004, 1, 0, -1835003, 1, 0, -1835002, 1, 0, -1835001, 1, 0, -1835000, 1, 0, -1834999, 1, 0, -1834998, 1, 0, -1834997, 1, 0, -1834996, 1, 0, -1834995, 1, 0, -1834994, 1, 0, -1834993, 1, 0, -1834992, 1, 0, -1834991, 1, 0, -1834990, 1, 0, -1834989, 1, 0, -1834988, 1, 0, -1834987, 1, 0, -1834986, 1, 0, -1834985, 1, 0, -1834984, 1, 0, -1834983, 1, 0, -1834982, 1, 0, -1834981, 1, 0, -1834980, 1, 0, -1834979, 1, 0, -1834978, 1, 0, -1834977, 1, 0, -1834976, 1, 0, -1834975, 1, 0, -1834974, 1, 0, -1834973, 1, 0, -1834972, 1, 0, -1834971, 1, 0, -1834970, 1, 0, -1834969, 1, 0, -1834968, 1, 0, -1834967, 1, 0, -1834966, 1, 0, -1703977, 1, 0, -1703976, 1, 0, -1703975, 1, 0, -1703974, 1, 0, -1703973, 1, 0, -1703972, 1, 0, -1703971, 1, 0, -1703970, 1, 0, -1703969, 1, 0, -1703968, 1, 0, -1703967, 1, 0, -1703966, 1, 0, -1703965, 1, 0, -1703964, 1, 0, -1703963, 1, 0, -1703962, 1, 0, -1703961, 1, 0, -1703960, 1, 0, -1703959, 1, 0, -1703958, 1, 0, -1703957, 1, 0, -1703956, 1, 0, -1703955, 1, 0, -1703954, 1, 0, -1703953, 1, 0, -1703952, 1, 0, -1703951, 1, 0, -1703950, 1, 0, -1703949, 1, 0, -1703948, 1, 0, -1703947, 1, 0, -1703946, 1, 0, -1703945, 1, 0, -1703944, 1, 0, -1703943, 1, 0, -1703942, 1, 0, -1703941, 1, 0, -1703940, 1, 0, -1703939, 1, 0, -1703938, 1, 0, -1703937, 1, 0, -1769472, 1, 0, -1769471, 1, 0, -1769470, 1, 0, -1769469, 1, 0, -1769468, 1, 0, -1769467, 1, 0, -1769466, 1, 0, -1769465, 1, 0, -1769464, 1, 0, -1769463, 1, 0, -1769462, 1, 0, -1769461, 1, 0, -1769460, 1, 0, -1769459, 1, 0, -1769458, 1, 0, -1769457, 1, 0, -1769456, 1, 0, -1769455, 1, 0, -1769454, 1, 0, -1769453, 1, 0, -1769452, 1, 0, -1769451, 1, 0, -1769450, 1, 0, -1769449, 1, 0, -1769448, 1, 0, -1769447, 1, 0, -1769446, 1, 0, -1769445, 1, 0, -1769444, 1, 0, -1769443, 1, 0, -1769442, 1, 0, -1769441, 1, 0, -1769440, 1, 0, -1769439, 1, 0, -1769438, 1, 0, -1769437, 1, 0, -1769436, 1, 0, -1769435, 1, 0, -1769434, 1, 0, -1769433, 1, 0, -1769432, 1, 0, -1769431, 1, 0, -1769430, 1, 0, -1769429, 1, 0, -1769428, 1, 0, -1638441, 1, 0, -1638440, 1, 0, -1638439, 1, 0, -1638438, 1, 0, -1638437, 1, 0, -1638436, 1, 0, -1638435, 1, 0, -1638434, 1, 0, -1638433, 1, 0, -1638432, 1, 0, -1638431, 1, 0, -1638430, 1, 0, -1638429, 1, 0, -1638428, 1, 0, -1638427, 1, 0, -1638426, 1, 0, -1638425, 1, 0, -1638424, 1, 0, -1638423, 1, 0, -1638422, 1, 0, -1638421, 1, 0, -1638420, 1, 0, -1638419, 1, 0, -1638418, 1, 0, -1638417, 1, 0, -1638416, 1, 0, -1638415, 1, 0, -1638414, 1, 0, -1638413, 1, 0, -1638412, 1, 0, -1638411, 1, 0, -1638410, 1, 0, -1638409, 1, 0, -1638408, 1, 0, -1638407, 1, 0, -1638406, 1, 0, -1638405, 1, 0, -1638404, 1, 0, -1638403, 1, 0, -1638402, 1, 0, -1638401, 1, 0, -1703936, 1, 0, -1703935, 1, 0, -1703934, 1, 0, -1703933, 1, 0, -1703932, 1, 0, -1703931, 1, 0, -1703930, 1, 0, -1703929, 1, 0, -1703928, 1, 0, -1703927, 1, 0, -1703926, 1, 0, -1703925, 1, 0, -1703924, 1, 0, -1703923, 1, 0, -1703922, 1, 0, -1703921, 1, 0, -1703920, 1, 0, -1703919, 1, 0, -1703918, 1, 0, -1703917, 1, 0, -1703916, 1, 0, -1703915, 1, 0, -1703914, 1, 0, -1703913, 1, 0, -1703912, 1, 0, -1703911, 1, 0, -1703910, 1, 0, -1703909, 1, 0, -1703908, 1, 0, -1703907, 1, 0, -1703906, 1, 0, -1703905, 1, 0, -1703904, 1, 0, -1703903, 1, 0, -1703902, 1, 0, -1703901, 1, 0, -1703900, 1, 0, -1703899, 1, 0, -1703898, 1, 0, -1703897, 1, 0, -1703896, 1, 0, -1703895, 1, 0, -1703894, 1, 0, -1703893, 1, 0, -1703892, 1, 0, -1703891, 1, 0, -1572905, 1, 0, -1572904, 1, 0, -1572903, 1, 0, -1572902, 1, 0, -1572901, 1, 0, -1572900, 1, 0, -1572899, 1, 0, -1572898, 1, 0, -1572897, 1, 0, -1572896, 1, 0, -1572895, 1, 0, -1572894, 1, 0, -1572893, 1, 0, -1572892, 1, 0, -1572891, 1, 0, -1572890, 1, 0, -1572889, 1, 0, -1572888, 1, 0, -1572887, 1, 0, -1572886, 1, 0, -1572885, 1, 0, -1572884, 1, 0, -1572883, 1, 0, -1572882, 1, 0, -1572881, 1, 0, -1572880, 1, 0, -1572879, 1, 0, -1572878, 1, 0, -1572877, 1, 0, -1572876, 1, 0, -1572875, 1, 0, -1572874, 1, 0, -1572873, 1, 0, -1572872, 1, 0, -1572871, 1, 0, -1572870, 1, 0, -1572869, 1, 0, -1572868, 1, 0, -1572867, 1, 0, -1572866, 1, 0, -1572865, 1, 0, -1638400, 1, 0, -1638399, 1, 0, -1638398, 1, 0, -1638397, 1, 0, -1638396, 1, 0, -1638395, 1, 0, -1638394, 1, 0, -1638393, 1, 0, -1638392, 1, 0, -1638391, 1, 0, -1638390, 1, 0, -1638389, 1, 0, -1638388, 1, 0, -1638387, 1, 0, -1638386, 1, 0, -1638385, 1, 0, -1638384, 1, 0, -1638383, 1, 0, -1638382, 1, 0, -1638381, 1, 0, -1638380, 1, 0, -1638379, 1, 0, -1638378, 1, 0, -1638377, 1, 0, -1638376, 1, 0, -1638375, 1, 0, -1638374, 1, 0, -1638373, 1, 0, -1638372, 1, 0, -1638371, 1, 0, -1638370, 1, 0, -1638369, 1, 0, -1638368, 1, 0, -1638367, 1, 0, -1638366, 1, 0, -1638365, 1, 0, -1638364, 1, 0, -1638363, 1, 0, -1638362, 1, 0, -1638361, 1, 0, -1638360, 1, 0, -1638359, 1, 0, -1638358, 1, 0, -1638357, 1, 0, -1638356, 1, 0, -1638355, 1, 0, -1638354, 1, 0, -1507369, 1, 0, -1507368, 1, 0, -1507367, 1, 0, -1507366, 1, 0, -1507365, 1, 0, -1507364, 1, 0, -1507363, 1, 0, -1507362, 1, 0, -1507361, 1, 0, -1507360, 1, 0, -1507359, 1, 0, -1507358, 1, 0, -1507357, 1, 0, -1507356, 1, 0, -1507355, 1, 0, -1507354, 1, 0, -1507353, 1, 0, -1507352, 1, 0, -1507351, 1, 0, -1507350, 1, 0, -1507349, 1, 0, -1507348, 1, 0, -1507347, 1, 0, -1507346, 1, 0, -1507345, 1, 0, -1507344, 1, 0, -1507343, 1, 0, -1507342, 1, 0, -1507341, 1, 0, -1507340, 1, 0, -1507339, 1, 0, -1507338, 1, 0, -1507337, 1, 0, -1507336, 1, 0, -1507335, 1, 0, -1507334, 1, 0, -1507333, 1, 0, -1507332, 1, 0, -1507331, 1, 0, -1507330, 1, 0, -1507329, 1, 0, -1572864, 1, 0, -1572863, 1, 0, -1572862, 1, 0, -1572861, 1, 0, -1572860, 1, 0, -1572859, 1, 0, -1572858, 1, 0, -1572857, 1, 0, -1572856, 1, 0, -1572855, 1, 0, -1572854, 1, 0, -1572853, 1, 0, -1572852, 1, 0, -1572851, 1, 0, -1572850, 1, 0, -1572849, 1, 0, -1572848, 1, 0, -1572847, 1, 0, -1572846, 1, 0, -1572845, 1, 0, -1572844, 1, 0, -1572843, 1, 0, -1572842, 1, 0, -1572841, 1, 0, -1572840, 1, 0, -1572839, 1, 0, -1572838, 1, 0, -1572837, 1, 0, -1572836, 1, 0, -1572835, 1, 0, -1572834, 1, 0, -1572833, 1, 0, -1572832, 1, 0, -1572831, 1, 0, -1572830, 1, 0, -1572829, 1, 0, -1572828, 1, 0, -1572827, 1, 0, -1572826, 1, 0, -1572825, 1, 0, -1572824, 1, 0, -1572823, 1, 0, -1572822, 1, 0, -1572821, 1, 0, -1572820, 1, 0, -1572819, 1, 0, -1572818, 1, 0, -1572817, 1, 0, -1441833, 1, 0, -1441832, 1, 0, -1441831, 1, 0, -1441830, 1, 0, -1441829, 1, 0, -1441828, 1, 0, -1441827, 1, 0, -1441826, 1, 0, -1441825, 1, 0, -1441824, 1, 0, -1441823, 1, 0, -1441822, 1, 0, -1441821, 1, 0, -1441820, 1, 0, -1441819, 1, 0, -1441818, 1, 0, -1441817, 1, 0, -1441816, 1, 0, -1441815, 1, 0, -1441814, 1, 0, -1441813, 1, 0, -1441812, 1, 0, -1441811, 1, 0, -1441810, 1, 0, -1441809, 1, 0, -1441808, 1, 0, -1441807, 1, 0, -1441806, 1, 0, -1441805, 1, 0, -1441804, 1, 0, -1441803, 1, 0, -1441802, 1, 0, -1441801, 1, 0, -1441800, 1, 0, -1441799, 1, 0, -1441798, 1, 0, -1441797, 1, 0, -1441796, 1, 0, -1441795, 1, 0, -1441794, 1, 0, -1441793, 1, 0, -1507328, 1, 0, -1507327, 1, 0, -1507326, 1, 0, -1507325, 1, 0, -1507324, 1, 0, -1507323, 1, 0, -1507322, 1, 0, -1507321, 1, 0, -1507320, 1, 0, -1507319, 1, 0, -1507318, 1, 0, -1507317, 1, 0, -1507316, 1, 0, -1507315, 1, 0, -1507314, 1, 0, -1507313, 1, 0, -1507312, 1, 0, -1507311, 1, 0, -1507310, 1, 0, -1507309, 1, 0, -1507308, 1, 0, -1507307, 1, 0, -1507306, 1, 0, -1507305, 1, 0, -1507304, 1, 0, -1507303, 1, 0, -1507302, 1, 0, -1507301, 1, 0, -1507300, 1, 0, -1507299, 1, 0, -1507298, 1, 0, -1507297, 1, 0, -1507296, 1, 0, -1507295, 1, 0, -1507294, 1, 0, -1507293, 1, 0, -1507292, 1, 0, -1507291, 1, 0, -1507290, 1, 0, -1507289, 1, 0, -1507288, 1, 0, -1507287, 1, 0, -1507286, 1, 0, -1507285, 1, 0, -1507284, 1, 0, -1507283, 1, 0, -1507282, 1, 0, -1507281, 1, 0, -1507280, 1, 0, -1376297, 1, 0, -1376296, 1, 0, -1376295, 1, 0, -1376294, 1, 0, -1376293, 1, 0, -1376292, 1, 0, -1376291, 1, 0, -1376290, 1, 0, -1376289, 1, 0, -1376288, 1, 0, -1376287, 1, 0, -1376286, 1, 0, -1376285, 1, 0, -1376284, 1, 0, -1376283, 1, 0, -1376282, 1, 0, -1376281, 1, 0, -1376280, 1, 0, -1376279, 1, 0, -1376278, 1, 0, -1376277, 1, 0, -1376276, 1, 0, -1376275, 1, 0, -1376274, 1, 0, -1376273, 1, 0, -1376272, 1, 0, -1376271, 1, 0, -1376270, 1, 0, -1376269, 1, 0, -1376268, 1, 0, -1376267, 1, 0, -1376266, 1, 0, -1376265, 1, 0, -1376264, 1, 0, -1376263, 1, 0, -1376262, 1, 0, -1376261, 1, 0, -1376260, 1, 0, -1376259, 1, 0, -1376258, 1, 0, -1376257, 1, 0, -1441792, 1, 0, -1441791, 1, 0, -1441790, 1, 0, -1441789, 1, 0, -1441788, 1, 0, -1441787, 1, 0, -1441786, 1, 0, -1441785, 1, 0, -1441784, 1, 0, -1441783, 1, 0, -1441782, 1, 0, -1441781, 1, 0, -1441780, 1, 0, -1441779, 1, 0, -1441778, 1, 0, -1441777, 1, 0, -1441776, 1, 0, -1441775, 1, 0, -1441774, 1, 0, -1441773, 1, 0, -1441772, 1, 0, -1441771, 1, 0, -1441770, 1, 0, -1441769, 1, 0, -1441768, 1, 0, -1441767, 1, 0, -1441766, 1, 0, -1441765, 1, 0, -1441764, 1, 0, -1441763, 1, 0, -1441762, 1, 0, -1441761, 1, 0, -1441760, 1, 0, -1441759, 1, 0, -1441758, 1, 0, -1441757, 1, 0, -1441756, 1, 0, -1441755, 1, 0, -1441754, 1, 0, -1441753, 1, 0, -1441752, 1, 0, -1441751, 1, 0, -1441750, 1, 0, -1441749, 1, 0, -1441748, 1, 0, -1441747, 1, 0, -1441746, 1, 0, -1441745, 1, 0, -1441744, 1, 0, -1310760, 1, 0, -1310759, 1, 0, -1310758, 1, 0, -1310757, 1, 0, -1310756, 1, 0, -1310755, 1, 0, -1310754, 1, 0, -1310753, 1, 0, -1310752, 1, 0, -1310751, 1, 0, -1310750, 1, 0, -1310749, 1, 0, -1310748, 1, 0, -1310747, 1, 0, -1310746, 1, 0, -1310745, 1, 0, -1310744, 1, 0, -1310743, 1, 0, -1310742, 1, 0, -1310741, 1, 0, -1310740, 1, 0, -1310739, 1, 0, -1310738, 1, 0, -1310737, 1, 0, -1310736, 1, 0, -1310735, 1, 0, -1310734, 1, 0, -1310733, 1, 0, -1310732, 1, 0, -1310731, 1, 0, -1310730, 1, 0, -1310729, 1, 0, -1310728, 1, 0, -1310727, 1, 0, -1310726, 1, 0, -1310725, 1, 0, -1310724, 1, 0, -1310723, 1, 0, -1310722, 1, 0, -1310721, 1, 0, -1376256, 1, 0, -1376255, 1, 0, -1376254, 1, 0, -1376253, 1, 0, -1376252, 1, 0, -1376251, 1, 0, -1376250, 1, 0, -1376249, 1, 0, -1376248, 1, 0, -1376247, 1, 0, -1376246, 1, 0, -1376245, 1, 0, -1376244, 1, 0, -1376243, 1, 0, -1376242, 1, 0, -1376241, 1, 0, -1376240, 1, 0, -1376239, 1, 0, -1376238, 1, 0, -1376237, 1, 0, -1376236, 1, 0, -1376235, 1, 0, -1376234, 1, 0, -1376233, 1, 0, -1376232, 1, 0, -1376231, 1, 0, -1376230, 1, 0, -1376229, 1, 0, -1376228, 1, 0, -1376227, 1, 0, -1376226, 1, 0, -1376225, 1, 0, -1376224, 1, 0, -1376223, 1, 0, -1376222, 1, 0, -1376221, 1, 0, -1376220, 1, 0, -1376219, 1, 0, -1376218, 1, 0, -1376217, 1, 0, -1376216, 1, 0, -1376215, 1, 0, -1376214, 1, 0, -1376213, 1, 0, -1376212, 1, 0, -1376211, 1, 0, -1376210, 1, 0, -1376209, 1, 0, -1376208, 1, 0, -1376207, 1, 0, -1245224, 1, 0, -1245223, 1, 0, -1245222, 1, 0, -1245221, 1, 0, -1245220, 1, 0, -1245219, 1, 0, -1245218, 1, 0, -1245217, 1, 0, -1245216, 1, 0, -1245215, 1, 0, -1245214, 1, 0, -1245213, 1, 0, -1245212, 1, 0, -1245211, 1, 0, -1245210, 1, 0, -1245209, 1, 0, -1245208, 1, 0, -1245207, 1, 0, -1245206, 1, 0, -1245205, 1, 0, -1245204, 1, 0, -1245203, 1, 0, -1245202, 1, 0, -1245201, 1, 0, -1245200, 1, 0, -1245199, 1, 0, -1245198, 1, 0, -1245197, 1, 0, -1245196, 1, 0, -1245195, 1, 0, -1245194, 1, 0, -1245193, 1, 0, -1245192, 1, 0, -1245191, 1, 0, -1245190, 1, 0, -1245189, 1, 0, -1245188, 1, 0, -1245187, 1, 0, -1245186, 1, 0, -1245185, 1, 0, -1310720, 1, 0, -1310719, 1, 0, -1310718, 1, 0, -1310717, 1, 0, -1310716, 1, 0, -1310715, 1, 0, -1310714, 1, 0, -1310713, 1, 0, -1310712, 1, 0, -1310711, 1, 0, -1310710, 1, 0, -1310709, 1, 0, -1310708, 1, 0, -1310707, 1, 0, -1310706, 1, 0, -1310705, 1, 0, -1310704, 1, 0, -1310703, 1, 0, -1310702, 1, 0, -1310701, 1, 0, -1310700, 1, 0, -1310699, 1, 0, -1310698, 1, 0, -1310697, 1, 0, -1310696, 1, 0, -1310695, 1, 0, -1310694, 1, 0, -1310693, 1, 0, -1310692, 1, 0, -1310691, 1, 0, -1310690, 1, 0, -1310689, 1, 0, -1310688, 1, 0, -1310687, 1, 0, -1310686, 1, 0, -1310685, 1, 0, -1310684, 1, 0, -1310683, 1, 0, -1310682, 1, 0, -1310681, 1, 0, -1310680, 1, 0, -1310679, 1, 0, -1310678, 1, 0, -1310677, 1, 0, -1310676, 1, 0, -1310675, 1, 0, -1310674, 1, 0, -1310673, 1, 0, -1310672, 1, 0, -1310671, 1, 0, -1310670, 1, 0, -1310669, 1, 0, -1179688, 1, 0, -1179687, 1, 0, -1179686, 1, 0, -1179685, 1, 0, -1179684, 1, 0, -1179683, 1, 0, -1179682, 1, 0, -1179681, 1, 0, -1179680, 1, 0, -1179679, 1, 0, -1179678, 1, 0, -1179677, 1, 0, -1179676, 1, 0, -1179675, 1, 0, -1179674, 1, 0, -1179673, 1, 0, -1179672, 1, 0, -1179671, 1, 0, -1179670, 1, 0, -1179669, 1, 0, -1179668, 1, 0, -1179667, 1, 0, -1179666, 1, 0, -1179665, 1, 0, -1179664, 1, 0, -1179663, 1, 0, -1179662, 1, 0, -1179661, 1, 0, -1179660, 1, 0, -1179659, 1, 0, -1179658, 1, 0, -1179657, 1, 0, -1179656, 1, 0, -1179655, 1, 0, -1179654, 1, 0, -1179653, 1, 0, -1179652, 1, 0, -1179651, 1, 0, -1179650, 1, 0, -1179649, 1, 0, -1245184, 1, 0, -1245183, 1, 0, -1245182, 1, 0, -1245181, 1, 0, -1245180, 1, 0, -1245179, 1, 0, -1245178, 1, 0, -1245177, 1, 0, -1245176, 1, 0, -1245175, 1, 0, -1245174, 1, 0, -1245173, 1, 0, -1245172, 1, 0, -1245171, 1, 0, -1245170, 1, 0, -1245169, 1, 0, -1245168, 1, 0, -1245167, 1, 0, -1245166, 1, 0, -1245165, 1, 0, -1245164, 1, 0, -1245163, 1, 0, -1245162, 1, 0, -1245161, 1, 0, -1245160, 1, 0, -1245159, 1, 0, -1245158, 1, 0, -1245157, 1, 0, -1245156, 1, 0, -1245155, 1, 0, -1245154, 1, 0, -1245153, 1, 0, -1245152, 1, 0, -1245151, 1, 0, -1245150, 1, 0, -1245149, 1, 0, -1245148, 1, 0, -1245147, 1, 0, -1245146, 1, 0, -1245145, 1, 0, -1245144, 1, 0, -1245143, 1, 0, -1245142, 1, 0, -1245141, 1, 0, -1245140, 1, 0, -1245139, 1, 0, -1245138, 1, 0, -1245137, 1, 0, -1245136, 1, 0, -1245135, 1, 0, -1245134, 1, 0, -1245133, 1, 0, -1245132, 1, 0, -1114152, 1, 0, -1114151, 1, 0, -1114150, 1, 0, -1114149, 1, 0, -1114148, 1, 0, -1114147, 1, 0, -1114146, 1, 0, -1114145, 1, 0, -1114144, 1, 0, -1114143, 1, 0, -1114142, 1, 0, -1114141, 1, 0, -1114140, 1, 0, -1114139, 1, 0, -1114138, 1, 0, -1114137, 1, 0, -1114136, 1, 0, -1114135, 1, 0, -1114134, 1, 0, -1114133, 1, 0, -1114132, 1, 0, -1114131, 1, 0, -1114130, 1, 0, -1114129, 1, 0, -1114128, 1, 0, -1114127, 1, 0, -1114126, 1, 0, -1114125, 1, 0, -1114124, 1, 0, -1114123, 1, 0, -1114122, 1, 0, -1114121, 1, 0, -1114120, 1, 0, -1114119, 1, 0, -1114118, 1, 0, -1114117, 1, 0, -1114116, 1, 0, -1114115, 1, 0, -1114114, 1, 0, -1114113, 1, 0, -1179648, 1, 0, -1179647, 1, 0, -1179646, 1, 0, -1179645, 1, 0, -1179644, 1, 0, -1179643, 1, 0, -1179642, 1, 0, -1179641, 1, 0, -1179640, 1, 0, -1179639, 1, 0, -1179638, 1, 0, -1179637, 1, 0, -1179636, 1, 0, -1179635, 1, 0, -1179634, 1, 0, -1179633, 1, 0, -1179632, 1, 0, -1179631, 1, 0, -1179630, 1, 0, -1179629, 1, 0, -1179628, 1, 0, -1179627, 1, 0, -1179626, 1, 0, -1179625, 1, 0, -1179624, 1, 0, -1179623, 1, 0, -1179622, 1, 0, -1179621, 1, 0, -1179620, 1, 0, -1179619, 1, 0, -1179618, 1, 0, -1179617, 1, 0, -1179616, 1, 0, -1179615, 1, 0, -1179614, 1, 0, -1179613, 1, 0, -1179612, 1, 0, -1179611, 1, 0, -1179610, 1, 0, -1179609, 1, 0, -1179608, 1, 0, -1179607, 1, 0, -1179606, 1, 0, -1179605, 1, 0, -1179604, 1, 0, -1179603, 1, 0, -1179602, 1, 0, -1179601, 1, 0, -1179600, 1, 0, -1179599, 1, 0, -1179598, 1, 0, -1179597, 1, 0, -1179596, 1, 0, -1048615, 1, 0, -1048614, 1, 0, -1048613, 1, 0, -1048612, 1, 0, -1048611, 1, 0, -1048610, 1, 0, -1048609, 1, 0, -1048608, 1, 0, -1048607, 1, 0, -1048606, 1, 0, -1048605, 1, 0, -1048604, 1, 0, -1048603, 1, 0, -1048602, 1, 0, -1048601, 1, 0, -1048600, 1, 0, -1048599, 1, 0, -1048598, 1, 0, -1048597, 1, 0, -1048596, 1, 0, -1048595, 1, 0, -1048594, 1, 0, -1048593, 1, 0, -1048592, 1, 0, -1048591, 1, 0, -1048590, 1, 0, -1048589, 1, 0, -1048588, 1, 0, -1048587, 1, 0, -1048586, 1, 0, -1048585, 1, 0, -1048584, 1, 0, -1048583, 1, 0, -1048582, 1, 0, -1048581, 1, 0, -1048580, 1, 0, -1048579, 1, 0, -1048578, 1, 0, -1048577, 1, 0, -1114112, 1, 0, -1114111, 1, 0, -1114110, 1, 0, -1114109, 1, 0, -1114108, 1, 0, -1114107, 1, 0, -1114106, 1, 0, -1114105, 1, 0, -1114104, 1, 0, -1114103, 1, 0, -1114102, 1, 0, -1114101, 1, 0, -1114100, 1, 0, -1114099, 1, 0, -1114098, 1, 0, -1114097, 1, 0, -1114096, 1, 0, -1114095, 1, 0, -1114094, 1, 0, -1114093, 1, 0, -1114092, 1, 0, -1114091, 1, 0, -1114090, 1, 0, -1114089, 1, 0, -1114088, 1, 0, -1114087, 1, 0, -1114086, 1, 0, -1114085, 1, 0, -1114084, 1, 0, -1114083, 1, 0, -1114082, 1, 0, -1114081, 1, 0, -1114080, 1, 0, -1114079, 1, 0, -1114078, 1, 0, -1114077, 1, 0, -1114076, 1, 0, -1114075, 1, 0, -1114074, 1, 0, -1114073, 1, 0, -1114072, 1, 0, -1114071, 1, 0, -1114070, 1, 0, -1114069, 1, 0, -1114068, 1, 0, -1114067, 1, 0, -1114066, 1, 0, -1114065, 1, 0, -1114064, 1, 0, -1114063, 1, 0, -1114062, 1, 0, -1114061, 1, 0, -1114060, 1, 0, -1114059, 1, 0, -983079, 1, 0, -983078, 1, 0, -983077, 1, 0, -983076, 1, 0, -983075, 1, 0, -983074, 1, 0, -983073, 1, 0, -983072, 1, 0, -983071, 1, 0, -983070, 1, 0, -983069, 1, 0, -983068, 1, 0, -983067, 1, 0, -983066, 1, 0, -983065, 1, 0, -983064, 1, 0, -983063, 1, 0, -983062, 1, 0, -983061, 1, 0, -983060, 1, 0, -983059, 1, 0, -983058, 1, 0, -983057, 1, 0, -983056, 1, 0, -983055, 1, 0, -983054, 1, 0, -983053, 1, 0, -983052, 1, 0, -983051, 1, 0, -983050, 1, 0, -983049, 1, 0, -983048, 1, 0, -983047, 1, 0, -983046, 1, 0, -983045, 1, 0, -983044, 1, 0, -983043, 1, 0, -983042, 1, 0, -983041, 1, 0, -1048576, 1, 0, -1048575, 1, 0, -1048574, 1, 0, -1048573, 1, 0, -1048572, 1, 0, -1048571, 1, 0, -1048570, 1, 0, -1048569, 1, 0, -1048568, 1, 0, -1048567, 1, 0, -1048566, 1, 0, -1048565, 1, 0, -1048564, 1, 0, -1048563, 1, 0, -1048562, 1, 0, -1048561, 1, 0, -1048560, 1, 0, -1048559, 1, 0, -1048558, 1, 0, -1048557, 1, 0, -1048556, 1, 0, -1048555, 1, 0, -1048554, 1, 0, -1048553, 1, 0, -1048552, 1, 0, -1048551, 1, 0, -1048550, 1, 0, -1048549, 1, 0, -1048548, 1, 0, -1048547, 1, 0, -1048546, 1, 0, -1048545, 1, 0, -1048544, 1, 0, -1048543, 1, 0, -1048542, 1, 0, -1048541, 1, 0, -1048540, 1, 0, -1048539, 1, 0, -1048538, 1, 0, -1048537, 1, 0, -1048536, 1, 0, -1048535, 1, 0, -1048534, 1, 0, -1048533, 1, 0, -1048532, 1, 0, -1048531, 1, 0, -1048530, 1, 0, -1048529, 1, 0, -1048528, 1, 0, -1048527, 1, 0, -1048526, 1, 0, -1048525, 1, 0, -1048524, 1, 0, -1048523, 1, 0, -917543, 1, 0, -917542, 1, 0, -917541, 1, 0, -917540, 1, 0, -917539, 1, 0, -917538, 1, 0, -917537, 1, 0, -917536, 1, 0, -917535, 1, 0, -917534, 1, 0, -917533, 1, 0, -917532, 1, 0, -917531, 1, 0, -917530, 1, 0, -917529, 1, 0, -917528, 1, 0, -917527, 1, 0, -917526, 1, 0, -917525, 1, 0, -917524, 1, 0, -917523, 1, 0, -917522, 1, 0, -917521, 1, 0, -917520, 1, 0, -917519, 1, 0, -917518, 1, 0, -917517, 1, 0, -917516, 1, 0, -917515, 1, 0, -917514, 1, 0, -917513, 1, 0, -917512, 1, 0, -917511, 1, 0, -917510, 1, 0, -917509, 1, 0, -917508, 1, 0, -917507, 1, 0, -917506, 1, 0, -917505, 1, 0, -983040, 1, 0, -983039, 1, 0, -983038, 1, 0, -983037, 1, 0, -983036, 1, 0, -983035, 1, 0, -983034, 1, 0, -983033, 1, 0, -983032, 1, 0, -983031, 1, 0, -983030, 1, 0, -983029, 1, 0, -983028, 1, 0, -983027, 1, 0, -983026, 1, 0, -983025, 1, 0, -983024, 1, 0, -983023, 1, 0, -983022, 1, 0, -983021, 1, 0, -983020, 1, 0, -983019, 1, 0, -983018, 1, 0, -983017, 1, 0, -983016, 1, 0, -983015, 1, 0, -983014, 1, 0, -983013, 1, 0, -983012, 1, 0, -983011, 1, 0, -983010, 1, 0, -983009, 1, 0, -983008, 1, 0, -983007, 1, 0, -983006, 1, 0, -983005, 1, 0, -983004, 1, 0, -983003, 1, 0, -983002, 1, 0, -983001, 1, 0, -983000, 1, 0, -982999, 1, 0, -982998, 1, 0, -982997, 1, 0, -982996, 1, 0, -982995, 1, 0, -982994, 1, 0, -982993, 1, 0, -982992, 1, 0, -982991, 1, 0, -982990, 1, 0, -982989, 1, 0, -982988, 1, 0, -982987, 1, 0, -982986, 1, 0, -852007, 1, 0, -852006, 1, 0, -852005, 1, 0, -852004, 1, 0, -852003, 1, 0, -852002, 1, 0, -852001, 1, 0, -852000, 1, 0, -851999, 1, 0, -851998, 1, 0, -851997, 1, 0, -851996, 1, 0, -851995, 1, 0, -851994, 1, 0, -851993, 1, 0, -851992, 1, 0, -851991, 1, 0, -851990, 1, 0, -851989, 1, 0, -851988, 1, 0, -851987, 1, 0, -851986, 1, 0, -851985, 1, 0, -851984, 1, 0, -851983, 1, 0, -851982, 1, 0, -851981, 1, 0, -851980, 1, 0, -851979, 1, 0, -851978, 1, 0, -851977, 1, 0, -851976, 1, 0, -851975, 1, 0, -851974, 1, 0, -851973, 1, 0, -851972, 1, 0, -851971, 1, 0, -851970, 1, 0, -851969, 1, 0, -917504, 1, 0, -917503, 1, 0, -917502, 1, 0, -917501, 1, 0, -917500, 1, 0, -917499, 1, 0, -917498, 1, 0, -917497, 1, 0, -917496, 1, 0, -917495, 1, 0, -917494, 1, 0, -917493, 1, 0, -917492, 1, 0, -917491, 1, 0, -917490, 1, 0, -917489, 1, 0, -917488, 1, 0, -917487, 1, 0, -917486, 1, 0, -917485, 1, 0, -917484, 1, 0, -917483, 1, 0, -917482, 1, 0, -917481, 1, 0, -917480, 1, 0, -917479, 1, 0, -917478, 1, 0, -917477, 1, 0, -917476, 1, 0, -917475, 1, 0, -917474, 1, 0, -917473, 1, 0, -917472, 1, 0, -917471, 1, 0, -917470, 1, 0, -917469, 1, 0, -917468, 1, 0, -917467, 1, 0, -917466, 1, 0, -917465, 1, 0, -917464, 1, 0, -917463, 1, 0, -917462, 1, 0, -917461, 1, 0, -917460, 1, 0, -917459, 1, 0, -917458, 1, 0, -917457, 1, 0, -917456, 1, 0, -917455, 1, 0, -917454, 1, 0, -917453, 1, 0, -917452, 1, 0, -917451, 1, 0, -917450, 1, 0, -786471, 1, 0, -786470, 1, 0, -786469, 1, 0, -786468, 1, 0, -786467, 1, 0, -786466, 1, 0, -786465, 1, 0, -786464, 1, 0, -786463, 1, 0, -786462, 1, 0, -786461, 1, 0, -786460, 1, 0, -786459, 1, 0, -786458, 1, 0, -786457, 1, 0, -786456, 1, 0, -786455, 1, 0, -786454, 1, 0, -786453, 1, 0, -786452, 1, 0, -786451, 1, 0, -786450, 1, 0, -786449, 1, 0, -786448, 1, 0, -786447, 1, 0, -786446, 1, 0, -786445, 1, 0, -786444, 1, 0, -786443, 1, 0, -786442, 1, 0, -786441, 1, 0, -786440, 1, 0, -786439, 1, 0, -786438, 1, 0, -786437, 1, 0, -786436, 1, 0, -786435, 1, 0, -786434, 1, 0, -786433, 1, 0, -851968, 1, 0, -851967, 1, 0, -851966, 1, 0, -851965, 1, 0, -851964, 1, 0, -851963, 1, 0, -851962, 1, 0, -851961, 1, 0, -851960, 1, 0, -851959, 1, 0, -851958, 1, 0, -851957, 1, 0, -851956, 1, 0, -851955, 1, 0, -851954, 1, 0, -851953, 1, 0, -851952, 1, 0, -851951, 1, 0, -851950, 1, 0, -851949, 1, 0, -851948, 1, 0, -851947, 1, 0, -851946, 1, 0, -851945, 1, 0, -851944, 1, 0, -851943, 1, 0, -851942, 1, 0, -851941, 1, 0, -851940, 1, 0, -851939, 1, 0, -851938, 1, 0, -851937, 1, 0, -851936, 1, 0, -851935, 1, 0, -851934, 1, 0, -851933, 1, 0, -851932, 1, 0, -851931, 1, 0, -851930, 1, 0, -851929, 1, 0, -851928, 1, 0, -851927, 1, 0, -851926, 1, 0, -851925, 1, 0, -851924, 1, 0, -851923, 1, 0, -851922, 1, 0, -851921, 1, 0, -851920, 1, 0, -851919, 1, 0, -851918, 1, 0, -851917, 1, 0, -851916, 1, 0, -851915, 1, 0, -851914, 1, 0, -851913, 1, 0, -720934, 1, 0, -720933, 1, 0, -720932, 1, 0, -720931, 1, 0, -720930, 1, 0, -720929, 1, 0, -720928, 1, 0, -720927, 1, 0, -720926, 1, 0, -720925, 1, 0, -720924, 1, 0, -720923, 1, 0, -720922, 1, 0, -720921, 1, 0, -720920, 1, 0, -720919, 1, 0, -720918, 1, 0, -720917, 1, 0, -720916, 1, 0, -720915, 1, 0, -720914, 1, 0, -720913, 1, 0, -720912, 1, 0, -720911, 1, 0, -720910, 1, 0, -720909, 1, 0, -720908, 1, 0, -720907, 1, 0, -720906, 1, 0, -720905, 1, 0, -720904, 1, 0, -720903, 1, 0, -720902, 1, 0, -720901, 1, 0, -720900, 1, 0, -720899, 1, 0, -720898, 1, 0, -720897, 1, 0, -786432, 1, 0, -786431, 1, 0, -786430, 1, 0, -786429, 1, 0, -786428, 1, 0, -786427, 1, 0, -786426, 1, 0, -786425, 1, 0, -786424, 1, 0, -786423, 1, 0, -786422, 1, 0, -786421, 1, 0, -786420, 1, 0, -786419, 1, 0, -786418, 1, 0, -786417, 1, 0, -786416, 1, 0, -786415, 1, 0, -786414, 1, 0, -786413, 1, 0, -786412, 1, 0, -786411, 1, 0, -786410, 1, 0, -786409, 1, 0, -786408, 1, 0, -786407, 1, 0, -786406, 1, 0, -786405, 1, 0, -786404, 1, 0, -786403, 1, 0, -786402, 1, 0, -786401, 1, 0, -786400, 1, 0, -786399, 1, 0, -786398, 1, 0, -786397, 1, 0, -786396, 1, 0, -786395, 1, 0, -786394, 1, 0, -786393, 1, 0, -786392, 1, 0, -786391, 1, 0, -786390, 1, 0, -786389, 1, 0, -786388, 1, 0, -786387, 1, 0, -786386, 1, 0, -786385, 1, 0, -786384, 1, 0, -786383, 1, 0, -786382, 1, 0, -786381, 1, 0, -786380, 1, 0, -786379, 1, 0, -786378, 1, 0, -786377, 1, 0, -655398, 1, 0, -655397, 1, 0, -655396, 1, 0, -655395, 1, 0, -655394, 1, 0, -655393, 1, 0, -655392, 1, 0, -655391, 1, 0, -655390, 1, 0, -655389, 1, 0, -655388, 1, 0, -655387, 1, 0, -655386, 1, 0, -655385, 1, 0, -655384, 1, 0, -655383, 1, 0, -655382, 1, 0, -655381, 1, 0, -655380, 1, 0, -655379, 1, 0, -655378, 1, 0, -655377, 1, 0, -655376, 1, 0, -655375, 1, 0, -655374, 1, 0, -655373, 1, 0, -655372, 1, 0, -655371, 1, 0, -655370, 1, 0, -655369, 1, 0, -655368, 1, 0, -655367, 1, 0, -655366, 1, 0, -655365, 1, 0, -655364, 1, 0, -655363, 1, 0, -655362, 1, 0, -655361, 1, 0, -720896, 1, 0, -720895, 1, 0, -720894, 1, 0, -720893, 1, 0, -720892, 1, 0, -720891, 1, 0, -720890, 1, 0, -720889, 1, 0, -720888, 1, 0, -720887, 1, 0, -720886, 1, 0, -720885, 1, 0, -720884, 1, 0, -720883, 1, 0, -720882, 1, 0, -720881, 1, 0, -720880, 1, 0, -720879, 1, 0, -720878, 1, 0, -720877, 1, 0, -720876, 1, 0, -720875, 1, 0, -720874, 1, 0, -720873, 1, 0, -720872, 1, 0, -720871, 1, 0, -720870, 1, 0, -720869, 1, 0, -720868, 1, 0, -720867, 1, 0, -720866, 1, 0, -720865, 1, 0, -720864, 1, 0, -720863, 1, 0, -720862, 1, 0, -720861, 1, 0, -720860, 1, 0, -720859, 1, 0, -720858, 1, 0, -720857, 1, 0, -720856, 1, 0, -720855, 1, 0, -720854, 1, 0, -720853, 1, 0, -720852, 1, 0, -720851, 1, 0, -720850, 1, 0, -720849, 1, 0, -720848, 1, 0, -720847, 1, 0, -720846, 1, 0, -720845, 1, 0, -720844, 1, 0, -720843, 1, 0, -720842, 1, 0, -720841, 1, 0, -720840, 1, 0, -589862, 1, 0, -589861, 1, 0, -589860, 1, 0, -589859, 1, 0, -589858, 1, 0, -589857, 1, 0, -589856, 1, 0, -589855, 1, 0, -589854, 1, 0, -589853, 1, 0, -589852, 1, 0, -589851, 1, 0, -589850, 1, 0, -589849, 1, 0, -589848, 1, 0, -589847, 1, 0, -589846, 1, 0, -589845, 1, 0, -589844, 1, 0, -589843, 1, 0, -589842, 1, 0, -589841, 1, 0, -589840, 1, 0, -589839, 1, 0, -589838, 1, 0, -589837, 1, 0, -589836, 1, 0, -589835, 1, 0, -589834, 1, 0, -589833, 1, 0, -589832, 1, 0, -589831, 1, 0, -589830, 1, 0, -589829, 1, 0, -589828, 1, 0, -589827, 1, 0, -589826, 1, 0, -589825, 1, 0, -655360, 1, 0, -655359, 1, 0, -655358, 1, 0, -655357, 1, 0, -655356, 1, 0, -655355, 1, 0, -655354, 1, 0, -655353, 1, 0, -655352, 1, 0, -655351, 1, 0, -655350, 1, 0, -655349, 1, 0, -655348, 1, 0, -655347, 1, 0, -655346, 1, 0, -655345, 1, 0, -655344, 1, 0, -655343, 1, 0, -655342, 1, 0, -655341, 1, 0, -655340, 1, 0, -655339, 1, 0, -655338, 1, 0, -655337, 1, 0, -655336, 1, 0, -655335, 1, 0, -655334, 1, 0, -655333, 1, 0, -655332, 1, 0, -655331, 1, 0, -655330, 1, 0, -655329, 1, 0, -655328, 1, 0, -655327, 1, 0, -655326, 1, 0, -655325, 1, 0, -655324, 1, 0, -655323, 1, 0, -655322, 1, 0, -655321, 1, 0, -655320, 1, 0, -655319, 1, 0, -655318, 1, 0, -655317, 1, 0, -655316, 1, 0, -655315, 1, 0, -655314, 1, 0, -655313, 1, 0, -655312, 1, 0, -655311, 1, 0, -655310, 1, 0, -655309, 1, 0, -655308, 1, 0, -655307, 1, 0, -655306, 1, 0, -655305, 1, 0, -655304, 1, 0, -524326, 1, 0, -524325, 1, 0, -524324, 1, 0, -524323, 1, 0, -524322, 1, 0, -524321, 1, 0, -524320, 1, 0, -524319, 1, 0, -524318, 1, 0, -524317, 1, 0, -524316, 1, 0, -524315, 1, 0, -524314, 1, 0, -524313, 1, 0, -524312, 1, 0, -524311, 1, 0, -524310, 1, 0, -524309, 1, 0, -524308, 1, 0, -524307, 1, 0, -524306, 1, 0, -524305, 1, 0, -524304, 1, 0, -524303, 1, 0, -524302, 1, 0, -524301, 1, 0, -524300, 1, 0, -524299, 1, 0, -524298, 1, 0, -524297, 1, 0, -524296, 1, 0, -524295, 1, 0, -524294, 1, 0, -524293, 1, 0, -524292, 1, 0, -524291, 1, 0, -524290, 1, 0, -524289, 1, 0, -589824, 1, 0, -589823, 1, 0, -589822, 1, 0, -589821, 1, 0, -589820, 1, 0, -589819, 1, 0, -589818, 1, 0, -589817, 1, 0, -589816, 1, 0, -589815, 1, 0, -589814, 1, 0, -589813, 1, 0, -589812, 1, 0, -589811, 1, 0, -589810, 1, 0, -589809, 1, 0, -589808, 1, 0, -589807, 1, 0, -589806, 1, 0, -589805, 1, 0, -589804, 1, 0, -589803, 1, 0, -589802, 1, 0, -589801, 1, 0, -589800, 1, 0, -589799, 1, 0, -589798, 1, 0, -589797, 1, 0, -589796, 1, 0, -589795, 1, 0, -589794, 1, 0, -589793, 1, 0, -589792, 1, 0, -589791, 1, 0, -589790, 1, 0, -589789, 1, 0, -589788, 1, 0, -589787, 1, 0, -589786, 1, 0, -589785, 1, 0, -589784, 1, 0, -589783, 1, 0, -589782, 1, 0, -589781, 1, 0, -589780, 1, 0, -589779, 1, 0, -589778, 1, 0, -589777, 1, 0, -589776, 1, 0, -589775, 1, 0, -589774, 1, 0, -589773, 1, 0, -589772, 1, 0, -589771, 1, 0, -589770, 1, 0, -589769, 1, 0, -589768, 1, 0, -458789, 1, 0, -458788, 1, 0, -458787, 1, 0, -458786, 1, 0, -458785, 1, 0, -458784, 1, 0, -458783, 1, 0, -458782, 1, 0, -458781, 1, 0, -458780, 1, 0, -458779, 1, 0, -458778, 1, 0, -458777, 1, 0, -458776, 1, 0, -458775, 1, 0, -458774, 1, 0, -458773, 1, 0, -458772, 1, 0, -458771, 1, 0, -458770, 1, 0, -458769, 1, 0, -458768, 1, 0, -458767, 1, 0, -458766, 1, 0, -458765, 1, 0, -458764, 1, 0, -458763, 1, 0, -458762, 1, 0, -458761, 1, 0, -458760, 1, 0, -458759, 1, 0, -458758, 1, 0, -458757, 1, 0, -458756, 1, 0, -458755, 1, 0, -458754, 1, 0, -458753, 1, 0, -524288, 1, 0, -524287, 1, 0, -524286, 1, 0, -524285, 1, 0, -524284, 1, 0, -524283, 1, 0, -524282, 1, 0, -524281, 1, 0, -524280, 1, 0, -524279, 1, 0, -524278, 1, 0, -524277, 1, 0, -524276, 1, 0, -524275, 1, 0, -524274, 1, 0, -524273, 1, 0, -524272, 1, 0, -524271, 1, 0, -524270, 1, 0, -524269, 1, 0, -524268, 1, 0, -524267, 1, 0, -524266, 1, 0, -524265, 1, 0, -524264, 1, 0, -524263, 1, 0, -524262, 1, 0, -524261, 1, 0, -524260, 1, 0, -524259, 1, 0, -524258, 1, 0, -524257, 1, 0, -524256, 1, 0, -524255, 1, 0, -524254, 1, 0, -524253, 1, 0, -524252, 1, 0, -524251, 1, 0, -524250, 1, 0, -524249, 1, 0, -524248, 1, 0, -524247, 1, 0, -524246, 1, 0, -524245, 1, 0, -524244, 1, 0, -524243, 1, 0, -524242, 1, 0, -524241, 1, 0, -524240, 1, 0, -524239, 1, 0, -524238, 1, 0, -524237, 1, 0, -524236, 1, 0, -524235, 1, 0, -524234, 1, 0, -524233, 1, 0, -524232, 1, 0, -393253, 1, 0, -393252, 1, 0, -393251, 1, 0, -393250, 1, 0, -393249, 1, 0, -393248, 1, 0, -393247, 1, 0, -393246, 1, 0, -393245, 1, 0, -393244, 1, 0, -393243, 1, 0, -393242, 1, 0, -393241, 1, 0, -393240, 1, 0, -393239, 1, 0, -393238, 1, 0, -393237, 1, 0, -393236, 1, 0, -393235, 1, 0, -393234, 1, 0, -393233, 1, 0, -393232, 1, 0, -393231, 1, 0, -393230, 1, 0, -393229, 1, 0, -393228, 1, 0, -393227, 1, 0, -393226, 1, 0, -393225, 1, 0, -393224, 1, 0, -393223, 1, 0, -393222, 1, 0, -393221, 1, 0, -393220, 1, 0, -393219, 1, 0, -393218, 1, 0, -393217, 1, 0, -458752, 1, 0, -458751, 1, 0, -458750, 1, 0, -458749, 1, 0, -458748, 1, 0, -458747, 1, 0, -458746, 1, 0, -458745, 1, 0, -458744, 1, 0, -458743, 1, 0, -458742, 1, 0, -458741, 1, 0, -458740, 1, 0, -458739, 1, 0, -458738, 1, 0, -458737, 1, 0, -458736, 1, 0, -458735, 1, 0, -458734, 1, 0, -458733, 1, 0, -458732, 1, 0, -458731, 1, 0, -458730, 1, 0, -458729, 1, 0, -458728, 1, 0, -458727, 1, 0, -458726, 1, 0, -458725, 1, 0, -458724, 1, 0, -458723, 1, 0, -458722, 1, 0, -458721, 1, 0, -458720, 1, 0, -458719, 1, 0, -458718, 1, 0, -458717, 1, 0, -458716, 1, 0, -458715, 1, 0, -458714, 1, 0, -458713, 1, 0, -458712, 1, 0, -458711, 1, 0, -458710, 1, 0, -458709, 1, 0, -458708, 1, 0, -458707, 1, 0, -458706, 1, 0, -458705, 1, 0, -458704, 1, 0, -458703, 1, 0, -458702, 1, 0, -458701, 1, 0, -458700, 1, 0, -458699, 1, 0, -458698, 1, 0, -458697, 1, 0, -458696, 1, 0, -327717, 1, 0, -327716, 1, 0, -327715, 1, 0, -327714, 1, 0, -327713, 1, 0, -327712, 1, 0, -327711, 1, 0, -327710, 1, 0, -327709, 1, 0, -327708, 1, 0, -327707, 1, 0, -327706, 1, 0, -327705, 1, 0, -327704, 1, 0, -327703, 1, 0, -327702, 1, 0, -327701, 1, 0, -327700, 1, 0, -327699, 1, 0, -327698, 1, 0, -327697, 1, 0, -327696, 1, 0, -327695, 1, 0, -327694, 1, 0, -327693, 1, 0, -327692, 1, 0, -327691, 1, 0, -327690, 1, 0, -327689, 1, 0, -327688, 1, 0, -327687, 1, 0, -327686, 1, 0, -327685, 1, 0, -327684, 1, 0, -327683, 1, 0, -327682, 1, 0, -327681, 1, 0, -393216, 1, 0, -393215, 1, 0, -393214, 1, 0, -393213, 1, 0, -393212, 1, 0, -393211, 1, 0, -393210, 1, 0, -393209, 1, 0, -393208, 1, 0, -393207, 1, 0, -393206, 1, 0, -393205, 1, 0, -393204, 1, 0, -393203, 1, 0, -393202, 1, 0, -393201, 1, 0, -393200, 1, 0, -393199, 1, 0, -393198, 1, 0, -393197, 1, 0, -393196, 1, 0, -393195, 1, 0, -393194, 1, 0, -393193, 1, 0, -393192, 1, 0, -393191, 1, 0, -393190, 1, 0, -393189, 1, 0, -393188, 1, 0, -393187, 1, 0, -393186, 1, 0, -393185, 1, 0, -393184, 1, 0, -393183, 1, 0, -393182, 1, 0, -393181, 1, 0, -393180, 1, 0, -393179, 1, 0, -393178, 1, 0, -393177, 1, 0, -393176, 1, 0, -393175, 1, 0, -393174, 1, 0, -393173, 1, 0, -393172, 1, 0, -393171, 1, 0, -393170, 1, 0, -393169, 1, 0, -393168, 1, 0, -393167, 1, 0, -393166, 1, 0, -393165, 1, 0, -393164, 1, 0, -393163, 1, 0, -393162, 1, 0, -393161, 1, 0, -393160, 1, 0, -393159, 1, 0, -262181, 1, 0, -262180, 1, 0, -262179, 1, 0, -262178, 1, 0, -262177, 1, 0, -262176, 1, 0, -262175, 1, 0, -262174, 1, 0, -262173, 1, 0, -262172, 1, 0, -262171, 1, 0, -262170, 1, 0, -262169, 1, 0, -262168, 1, 0, -262167, 1, 0, -262166, 1, 0, -262165, 1, 0, -262164, 1, 0, -262163, 1, 0, -262162, 1, 0, -262161, 1, 0, -262160, 1, 0, -262159, 1, 0, -262158, 1, 0, -262157, 1, 0, -262156, 1, 0, -262155, 1, 0, -262154, 1, 0, -262153, 1, 0, -262152, 1, 0, -262151, 1, 0, -262150, 1, 0, -262149, 1, 0, -262148, 1, 0, -262147, 1, 0, -262146, 1, 0, -262145, 1, 0, -327680, 1, 0, -327679, 1, 0, -327678, 1, 0, -327677, 1, 0, -327676, 1, 0, -327675, 1, 0, -327674, 1, 0, -327673, 1, 0, -327672, 1, 0, -327671, 1, 0, -327670, 1, 0, -327669, 1, 0, -327668, 1, 0, -327667, 1, 0, -327666, 1, 0, -327665, 1, 0, -327664, 1, 0, -327663, 1, 0, -327662, 1, 0, -327661, 1, 0, -327660, 1, 0, -327659, 1, 0, -327658, 1, 0, -327657, 1, 0, -327656, 1, 0, -327655, 1, 0, -327654, 1, 0, -327653, 1, 0, -327652, 1, 0, -327651, 1, 0, -327650, 1, 0, -327649, 1, 0, -327648, 1, 0, -327647, 1, 0, -327646, 1, 0, -327645, 1, 0, -327644, 1, 0, -327643, 1, 0, -327642, 1, 0, -327641, 1, 0, -327640, 1, 0, -327639, 1, 0, -327638, 1, 0, -327637, 1, 0, -327636, 1, 0, -327635, 1, 0, -327634, 1, 0, -327633, 1, 0, -327632, 1, 0, -327631, 1, 0, -327630, 1, 0, -327629, 1, 0, -327628, 1, 0, -327627, 1, 0, -327626, 1, 0, -327625, 1, 0, -327624, 1, 0, -327623, 1, 0, -196645, 1, 0, -196644, 1, 0, -196643, 1, 0, -196642, 1, 0, -196641, 1, 0, -196640, 1, 0, -196639, 1, 0, -196638, 1, 0, -196637, 1, 0, -196636, 1, 0, -196635, 1, 0, -196634, 1, 0, -196633, 1, 0, -196632, 1, 0, -196631, 1, 0, -196630, 1, 0, -196629, 1, 0, -196628, 1, 0, -196627, 1, 0, -196626, 1, 0, -196625, 1, 0, -196624, 1, 0, -196623, 1, 0, -196622, 1, 0, -196621, 1, 0, -196620, 1, 0, -196619, 1, 0, -196618, 1, 0, -196617, 1, 0, -196616, 1, 0, -196615, 1, 0, -196614, 1, 0, -196613, 1, 0, -196612, 1, 0, -196611, 1, 0, -196610, 1, 0, -196609, 1, 0, -262144, 1, 0, -262143, 1, 0, -262142, 1, 0, -262141, 1, 0, -262140, 1, 0, -262139, 1, 0, -262138, 1, 0, -262137, 1, 0, -262136, 1, 0, -262135, 1, 0, -262134, 1, 0, -262133, 1, 0, -262132, 1, 0, -262131, 1, 0, -262130, 1, 0, -262129, 1, 0, -262128, 1, 0, -262127, 1, 0, -262126, 1, 0, -262125, 1, 0, -262124, 1, 0, -262123, 1, 0, -262122, 1, 0, -262121, 1, 0, -262120, 1, 0, -262119, 1, 0, -262118, 1, 0, -262117, 1, 0, -262116, 1, 0, -262115, 1, 0, -262114, 1, 0, -262113, 1, 0, -262112, 1, 0, -262111, 1, 0, -262110, 1, 0, -262109, 1, 0, -262108, 1, 0, -262107, 1, 0, -262106, 1, 0, -262105, 1, 0, -262104, 1, 0, -262103, 1, 0, -262102, 1, 0, -262101, 1, 0, -262100, 1, 0, -262099, 1, 0, -262098, 1, 0, -262097, 1, 0, -262096, 1, 0, -262095, 1, 0, -262094, 1, 0, -262093, 1, 0, -262092, 1, 0, -262091, 1, 0, -262090, 1, 0, -262089, 1, 0, -262088, 1, 0, -262087, 1, 0, -131108, 1, 0, -131107, 1, 0, -131106, 1, 0, -131105, 1, 0, -131104, 1, 0, -131103, 1, 0, -131102, 1, 0, -131101, 1, 0, -131100, 1, 0, -131099, 1, 0, -131098, 1, 0, -131097, 1, 0, -131096, 1, 0, -131095, 1, 0, -131094, 1, 0, -131093, 1, 0, -131092, 1, 0, -131091, 1, 0, -131090, 1, 0, -131089, 1, 0, -131088, 1, 0, -131087, 1, 0, -131086, 1, 0, -131085, 1, 0, -131084, 1, 0, -131083, 1, 0, -131082, 1, 0, -131081, 1, 0, -131080, 1, 0, -131079, 1, 0, -131078, 1, 0, -131077, 1, 0, -131076, 1, 0, -131075, 1, 0, -131074, 1, 0, -131073, 1, 0, -196608, 1, 0, -196607, 1, 0, -196606, 1, 0, -196605, 1, 0, -196604, 1, 0, -196603, 1, 0, -196602, 1, 0, -196601, 1, 0, -196600, 1, 0, -196599, 1, 0, -196598, 1, 0, -196597, 1, 0, -196596, 1, 0, -196595, 1, 0, -196594, 1, 0, -196593, 1, 0, -196592, 1, 0, -196591, 1, 0, -196590, 1, 0, -196589, 1, 0, -196588, 1, 0, -196587, 1, 0, -196586, 1, 0, -196585, 1, 0, -196584, 1, 0, -196583, 1, 0, -196582, 1, 0, -196581, 1, 0, -196580, 1, 0, -196579, 1, 0, -196578, 1, 0, -196577, 1, 0, -196576, 1, 0, -196575, 1, 0, -196574, 1, 0, -196573, 1, 0, -196572, 1, 0, -196571, 1, 0, -196570, 1, 0, -196569, 1, 0, -196568, 1, 0, -196567, 1, 0, -196566, 1, 0, -196565, 1, 0, -196564, 1, 0, -196563, 1, 0, -196562, 1, 0, -196561, 1, 0, -196560, 1, 0, -196559, 1, 0, -196558, 1, 0, -196557, 1, 0, -196556, 1, 0, -196555, 1, 0, -196554, 1, 0, -196553, 1, 0, -196552, 1, 0, -196551, 1, 0, -65572, 1, 0, -65571, 1, 0, -65570, 1, 0, -65569, 1, 0, -65568, 1, 0, -65567, 1, 0, -65566, 1, 0, -65565, 1, 0, -65564, 1, 0, -65563, 1, 0, -65562, 1, 0, -65561, 1, 0, -65560, 1, 0, -65559, 1, 0, -65558, 1, 0, -65557, 1, 0, -65556, 1, 0, -65555, 1, 0, -65554, 1, 0, -65553, 1, 0, -65552, 1, 0, -65551, 1, 0, -65550, 1, 0, -65549, 1, 0, -65548, 1, 0, -65547, 1, 0, -65546, 1, 0, -65545, 1, 0, -65544, 1, 0, -65543, 1, 0, -65542, 1, 0, -65541, 1, 0, -65540, 1, 0, -65539, 1, 0, -65538, 1, 0, -65537, 1, 0, -131072, 1, 0, -131071, 1, 0, -131070, 1, 0, -131069, 1, 0, -131068, 1, 0, -131067, 1, 0, -131066, 1, 0, -131065, 1, 0, -131064, 1, 0, -131063, 1, 0, -131062, 1, 0, -131061, 1, 0, -131060, 1, 0, -131059, 1, 0, -131058, 1, 0, -131057, 1, 0, -131056, 1, 0, -131055, 1, 0, -131054, 1, 0, -131053, 1, 0, -131052, 1, 0, -131051, 1, 0, -131050, 1, 0, -131049, 1, 0, -131048, 1, 0, -131047, 1, 0, -131046, 1, 0, -131045, 1, 0, -131044, 1, 0, -131043, 1, 0, -131042, 1, 0, -131041, 1, 0, -131040, 1, 0, -131039, 1, 0, -131038, 1, 0, -131037, 1, 0, -131036, 1, 0, -131035, 1, 0, -131034, 1, 0, -131033, 1, 0, -131032, 1, 0, -131031, 1, 0, -131030, 1, 0, -131029, 1, 0, -131028, 1, 0, -131027, 1, 0, -131026, 1, 0, -131025, 1, 0, -131024, 1, 0, -131023, 1, 0, -131022, 1, 0, -131021, 1, 0, -131020, 1, 0, -131019, 1, 0, -131018, 1, 0, -131017, 1, 0, -131016, 1, 0, -131015, 1, 0, -36, 1, 0, -35, 1, 0, -34, 1, 0, -33, 1, 0, -32, 1, 0, -31, 1, 0, -30, 1, 0, -29, 1, 0, -28, 1, 0, -27, 1, 0, -26, 1, 0, -25, 1, 0, -24, 1, 0, -23, 1, 0, -22, 1, 0, -21, 1, 0, -20, 1, 0, -19, 1, 0, -18, 1, 0, -17, 1, 0, -16, 1, 0, -15, 1, 0, -14, 1, 0, -13, 1, 0, -12, 1, 0, -11, 1, 0, -10, 1, 0, -9, 1, 0, -8, 1, 0, -7, 1, 0, -6, 1, 0, -5, 1, 0, -4, 1, 0, -3, 1, 0, -2, 1, 0, -1, 1, 0, -65536, 1, 0, -65535, 1, 0, -65534, 1, 0, -65533, 1, 0, -65532, 1, 0, -65531, 1, 0, -65530, 1, 0, -65529, 1, 0, -65528, 1, 0, -65527, 1, 0, -65526, 1, 0, -65525, 1, 0, -65524, 1, 0, -65523, 1, 0, -65522, 1, 0, -65521, 1, 0, -65520, 1, 0, -65519, 1, 0, -65518, 1, 0, -65517, 1, 0, -65516, 1, 0, -65515, 1, 0, -65514, 1, 0, -65513, 1, 0, -65512, 1, 0, -65511, 1, 0, -65510, 1, 0, -65509, 1, 0, -65508, 1, 0, -65507, 1, 0, -65506, 1, 0, -65505, 1, 0, -65504, 1, 0, -65503, 1, 0, -65502, 1, 0, -65501, 1, 0, -65500, 1, 0, -65499, 1, 0, -65498, 1, 0, -65497, 1, 0, -65496, 1, 0, -65495, 1, 0, -65494, 1, 0, -65493, 1, 0, -65492, 1, 0, -65491, 1, 0, -65490, 1, 0, -65489, 1, 0, -65488, 1, 0, -65487, 1, 0, -65486, 1, 0, -65485, 1, 0, -65484, 1, 0, -65483, 1, 0, -65482, 1, 0, -65481, 1, 0, -65480, 1, 0, -65479, 1, 0, 65500, 1, 0, 65501, 1, 0, 65502, 1, 0, 65503, 1, 0, 65504, 1, 0, 65505, 1, 0, 65506, 1, 0, 65507, 1, 0, 65508, 1, 0, 65509, 1, 0, 65510, 1, 0, 65511, 1, 0, 65512, 1, 0, 65513, 1, 0, 65514, 1, 0, 65515, 1, 0, 65516, 1, 0, 65517, 1, 0, 65518, 1, 0, 65519, 1, 0, 65520, 1, 0, 65521, 1, 0, 65522, 1, 0, 65523, 1, 0, 65524, 1, 0, 65525, 1, 0, 65526, 1, 0, 65527, 1, 0, 65528, 1, 0, 65529, 1, 0, 65530, 1, 0, 65531, 1, 0, 65532, 1, 0, 65533, 1, 0, 65534, 1, 0, 65535, 1, 0, 0, 1, 0, 1, 1, 0, 2, 1, 0, 3, 1, 0, 4, 1, 0, 5, 1, 0, 6, 1, 0, 7, 1, 0, 8, 1, 0, 9, 1, 0, 10, 1, 0, 11, 1, 0, 12, 1, 0, 13, 1, 0, 14, 1, 0, 15, 1, 0, 16, 1, 0, 17, 1, 0, 18, 1, 0, 19, 1, 0, 20, 1, 0, 21, 1, 0, 22, 1, 0, 23, 1, 0, 24, 1, 0, 25, 1, 0, 26, 1, 0, 27, 1, 0, 28, 1, 0, 29, 1, 0, 30, 1, 0, 31, 1, 0, 32, 1, 0, 33, 1, 0, 34, 1, 0, 35, 1, 0, 36, 1, 0, 37, 1, 0, 38, 1, 0, 39, 1, 0, 40, 1, 0, 41, 1, 0, 42, 1, 0, 43, 1, 0, 44, 1, 0, 45, 1, 0, 46, 1, 0, 47, 1, 0, 48, 1, 0, 49, 1, 0, 50, 1, 0, 51, 1, 0, 52, 1, 0, 53, 1, 0, 54, 1, 0, 55, 1, 0, 56, 1, 0, 57, 1, 0, 131037, 1, 0, 131038, 1, 0, 131039, 1, 0, 131040, 1, 0, 131041, 1, 0, 131042, 1, 0, 131043, 1, 0, 131044, 1, 0, 131045, 1, 0, 131046, 1, 0, 131047, 1, 0, 131048, 1, 0, 131049, 1, 0, 131050, 1, 0, 131051, 1, 0, 131052, 1, 0, 131053, 1, 0, 131054, 1, 0, 131055, 1, 0, 131056, 1, 0, 131057, 1, 0, 131058, 1, 0, 131059, 1, 0, 131060, 1, 0, 131061, 1, 0, 131062, 1, 0, 131063, 1, 0, 131064, 1, 0, 131065, 1, 0, 131066, 1, 0, 131067, 1, 0, 131068, 1, 0, 131069, 1, 0, 131070, 1, 0, 131071, 1, 0, 65536, 1, 0, 65537, 1, 0, 65538, 1, 0, 65539, 1, 0, 65540, 1, 0, 65541, 1, 0, 65542, 1, 0, 65543, 1, 0, 65544, 1, 0, 65545, 1, 0, 65546, 1, 0, 65547, 1, 0, 65548, 1, 0, 65549, 1, 0, 65550, 1, 0, 65551, 1, 0, 65552, 1, 0, 65553, 1, 0, 65554, 1, 0, 65555, 1, 0, 65556, 1, 0, 65557, 1, 0, 65558, 1, 0, 65559, 1, 0, 65560, 1, 0, 65561, 1, 0, 65562, 1, 0, 65563, 1, 0, 65564, 1, 0, 65565, 1, 0, 65566, 1, 0, 65567, 1, 0, 65568, 1, 0, 65569, 1, 0, 65570, 1, 0, 65571, 1, 0, 65572, 1, 0, 65573, 1, 0, 65574, 1, 0, 65575, 1, 0, 65576, 1, 0, 65577, 1, 0, 65578, 1, 0, 65579, 1, 0, 65580, 1, 0, 65581, 1, 0, 65582, 1, 0, 65583, 1, 0, 65584, 1, 0, 65585, 1, 0, 65586, 1, 0, 65587, 1, 0, 65588, 1, 0, 65589, 1, 0, 65590, 1, 0, 65591, 1, 0, 65592, 1, 0, 65593, 1, 0, 196573, 1, 0, 196574, 1, 0, 196575, 1, 0, 196576, 1, 0, 196577, 1, 0, 196578, 1, 0, 196579, 1, 0, 196580, 1, 0, 196581, 1, 0, 196582, 1, 0, 196583, 1, 0, 196584, 1, 0, 196585, 1, 0, 196586, 1, 0, 196587, 1, 0, 196588, 1, 0, 196589, 1, 0, 196590, 1, 0, 196591, 1, 0, 196592, 1, 0, 196593, 1, 0, 196594, 1, 0, 196595, 1, 0, 196596, 1, 0, 196597, 1, 0, 196598, 1, 0, 196599, 1, 0, 196600, 1, 0, 196601, 1, 0, 196602, 1, 0, 196603, 1, 0, 196604, 1, 0, 196605, 1, 0, 196606, 1, 0, 196607, 1, 0, 131072, 1, 0, 131073, 1, 0, 131074, 1, 0, 131075, 1, 0, 131076, 1, 0, 131077, 1, 0, 131078, 1, 0, 131079, 1, 0, 131080, 1, 0, 131081, 1, 0, 131082, 1, 0, 131083, 1, 0, 131084, 1, 0, 131085, 1, 0, 131086, 1, 0, 131087, 1, 0, 131088, 1, 0, 131089, 1, 0, 131090, 1, 0, 131091, 1, 0, 131092, 1, 0, 131093, 1, 0, 131094, 1, 0, 131095, 1, 0, 131096, 1, 0, 131097, 1, 0, 131098, 1, 0, 131099, 1, 0, 131100, 1, 0, 131101, 1, 0, 131102, 1, 0, 131103, 1, 0, 131104, 1, 0, 131105, 1, 0, 131106, 1, 0, 131107, 1, 0, 131108, 1, 0, 131109, 1, 0, 131110, 1, 0, 131111, 1, 0, 131112, 1, 0, 131113, 1, 0, 131114, 1, 0, 131115, 1, 0, 131116, 1, 0, 131117, 1, 0, 131118, 1, 0, 131119, 1, 0, 131120, 1, 0, 131121, 1, 0, 131122, 1, 0, 131123, 1, 0, 131124, 1, 0, 131125, 1, 0, 131126, 1, 0, 131127, 1, 0, 131128, 1, 0, 131129, 1, 0, 262109, 1, 0, 262110, 1, 0, 262111, 1, 0, 262112, 1, 0, 262113, 1, 0, 262114, 1, 0, 262115, 1, 0, 262116, 1, 0, 262117, 1, 0, 262118, 1, 0, 262119, 1, 0, 262120, 1, 0, 262121, 1, 0, 262122, 1, 0, 262123, 1, 0, 262124, 1, 0, 262125, 1, 0, 262126, 1, 0, 262127, 1, 0, 262128, 1, 0, 262129, 1, 0, 262130, 1, 0, 262131, 1, 0, 262132, 1, 0, 262133, 1, 0, 262134, 1, 0, 262135, 1, 0, 262136, 1, 0, 262137, 1, 0, 262138, 1, 0, 262139, 1, 0, 262140, 1, 0, 262141, 1, 0, 262142, 1, 0, 262143, 1, 0, 196608, 1, 0, 196609, 1, 0, 196610, 1, 0, 196611, 1, 0, 196612, 1, 0, 196613, 1, 0, 196614, 1, 0, 196615, 1, 0, 196616, 1, 0, 196617, 1, 0, 196618, 1, 0, 196619, 1, 0, 196620, 1, 0, 196621, 1, 0, 196622, 1, 0, 196623, 1, 0, 196624, 1, 0, 196625, 1, 0, 196626, 1, 0, 196627, 1, 0, 196628, 1, 0, 196629, 1, 0, 196630, 1, 0, 196631, 1, 0, 196632, 1, 0, 196633, 1, 0, 196634, 1, 0, 196635, 1, 0, 196636, 1, 0, 196637, 1, 0, 196638, 1, 0, 196639, 1, 0, 196640, 1, 0, 196641, 1, 0, 196642, 1, 0, 196643, 1, 0, 196644, 1, 0, 196645, 1, 0, 196646, 1, 0, 196647, 1, 0, 196648, 1, 0, 196649, 1, 0, 196650, 1, 0, 196651, 1, 0, 196652, 1, 0, 196653, 1, 0, 196654, 1, 0, 196655, 1, 0, 196656, 1, 0, 196657, 1, 0, 196658, 1, 0, 196659, 1, 0, 196660, 1, 0, 196661, 1, 0, 196662, 1, 0, 196663, 1, 0, 196664, 1, 0, 196665, 1, 0, 327645, 1, 0, 327646, 1, 0, 327647, 1, 0, 327648, 1, 0, 327649, 1, 0, 327650, 1, 0, 327651, 1, 0, 327652, 1, 0, 327653, 1, 0, 327654, 1, 0, 327655, 1, 0, 327656, 1, 0, 327657, 1, 0, 327658, 1, 0, 327659, 1, 0, 327660, 1, 0, 327661, 1, 0, 327662, 1, 0, 327663, 1, 0, 327664, 1, 0, 327665, 1, 0, 327666, 1, 0, 327667, 1, 0, 327668, 1, 0, 327669, 1, 0, 327670, 1, 0, 327671, 1, 0, 327672, 1, 0, 327673, 1, 0, 327674, 1, 0, 327675, 1, 0, 327676, 1, 0, 327677, 1, 0, 327678, 1, 0, 327679, 1, 0, 262144, 1, 0, 262145, 1, 0, 262146, 1, 0, 262147, 1, 0, 262148, 1, 0, 262149, 1, 0, 262150, 1, 0, 262151, 1, 0, 262152, 1, 0, 262153, 1, 0, 262154, 1, 0, 262155, 1, 0, 262156, 1, 0, 262157, 1, 0, 262158, 1, 0, 262159, 1, 0, 262160, 1, 0, 262161, 1, 0, 262162, 1, 0, 262163, 1, 0, 262164, 1, 0, 262165, 1, 0, 262166, 1, 0, 262167, 1, 0, 262168, 1, 0, 262169, 1, 0, 262170, 1, 0, 262171, 1, 0, 262172, 1, 0, 262173, 1, 0, 262174, 1, 0, 262175, 1, 0, 262176, 1, 0, 262177, 1, 0, 262178, 1, 0, 262179, 1, 0, 262180, 1, 0, 262181, 1, 0, 262182, 1, 0, 262183, 1, 0, 262184, 1, 0, 262185, 1, 0, 262186, 1, 0, 262187, 1, 0, 262188, 1, 0, 262189, 1, 0, 262190, 1, 0, 262191, 1, 0, 262192, 1, 0, 262193, 1, 0, 262194, 1, 0, 262195, 1, 0, 262196, 1, 0, 262197, 1, 0, 262198, 1, 0, 262199, 1, 0, 262200, 1, 0, 262201, 1, 0, 393182, 1, 0, 393183, 1, 0, 393184, 1, 0, 393185, 1, 0, 393186, 1, 0, 393187, 1, 0, 393188, 1, 0, 393189, 1, 0, 393190, 1, 0, 393191, 1, 0, 393192, 1, 0, 393193, 1, 0, 393194, 1, 0, 393195, 1, 0, 393196, 1, 0, 393197, 1, 0, 393198, 1, 0, 393199, 1, 0, 393200, 1, 0, 393201, 1, 0, 393202, 1, 0, 393203, 1, 0, 393204, 1, 0, 393205, 1, 0, 393206, 1, 0, 393207, 1, 0, 393208, 1, 0, 393209, 1, 0, 393210, 1, 0, 393211, 1, 0, 393212, 1, 0, 393213, 1, 0, 393214, 1, 0, 393215, 1, 0, 327680, 1, 0, 327681, 1, 0, 327682, 1, 0, 327683, 1, 0, 327684, 1, 0, 327685, 1, 0, 327686, 1, 0, 327687, 1, 0, 327688, 1, 0, 327689, 1, 0, 327690, 1, 0, 327691, 1, 0, 327692, 1, 0, 327693, 1, 0, 327694, 1, 0, 327695, 1, 0, 327696, 1, 0, 327697, 1, 0, 327698, 1, 0, 327699, 1, 0, 327700, 1, 0, 327701, 1, 0, 327702, 1, 0, 327703, 1, 0, 327704, 1, 0, 327705, 1, 0, 327706, 1, 0, 327707, 1, 0, 327708, 1, 0, 327709, 1, 0, 327710, 1, 0, 327711, 1, 0, 327712, 1, 0, 327713, 1, 0, 327714, 1, 0, 327715, 1, 0, 327716, 1, 0, 327717, 1, 0, 327718, 1, 0, 327719, 1, 0, 327720, 1, 0, 327721, 1, 0, 327722, 1, 0, 327723, 1, 0, 327724, 1, 0, 327725, 1, 0, 327726, 1, 0, 327727, 1, 0, 327728, 1, 0, 327729, 1, 0, 327730, 1, 0, 327731, 1, 0, 327732, 1, 0, 327733, 1, 0, 327734, 1, 0, 327735, 1, 0, 327736, 1, 0, 458718, 1, 0, 458719, 1, 0, 458720, 1, 0, 458721, 1, 0, 458722, 1, 0, 458723, 1, 0, 458724, 1, 0, 458725, 1, 0, 458726, 1, 0, 458727, 1, 0, 458728, 1, 0, 458729, 1, 0, 458730, 1, 0, 458731, 1, 0, 458732, 1, 0, 458733, 1, 0, 458734, 1, 0, 458735, 1, 0, 458736, 1, 0, 458737, 1, 0, 458738, 1, 0, 458739, 1, 0, 458740, 1, 0, 458741, 1, 0, 458742, 1, 0, 458743, 1, 0, 458744, 1, 0, 458745, 1, 0, 458746, 1, 0, 458747, 1, 0, 458748, 1, 0, 458749, 1, 0, 458750, 1, 0, 458751, 1, 0, 393216, 1, 0, 393217, 1, 0, 393218, 1, 0, 393219, 1, 0, 393220, 1, 0, 393221, 1, 0, 393222, 1, 0, 393223, 1, 0, 393224, 1, 0, 393225, 1, 0, 393226, 1, 0, 393227, 1, 0, 393228, 1, 0, 393229, 1, 0, 393230, 1, 0, 393231, 1, 0, 393232, 1, 0, 393233, 1, 0, 393234, 1, 0, 393235, 1, 0, 393236, 1, 0, 393237, 1, 0, 393238, 1, 0, 393239, 1, 0, 393240, 1, 0, 393241, 1, 0, 393242, 1, 0, 393243, 1, 0, 393244, 1, 0, 393245, 1, 0, 393246, 1, 0, 393247, 1, 0, 393248, 1, 0, 393249, 1, 0, 393250, 1, 0, 393251, 1, 0, 393252, 1, 0, 393253, 1, 0, 393254, 1, 0, 393255, 1, 0, 393256, 1, 0, 393257, 1, 0, 393258, 1, 0, 393259, 1, 0, 393260, 1, 0, 393261, 1, 0, 393262, 1, 0, 393263, 1, 0, 393264, 1, 0, 393265, 1, 0, 393266, 1, 0, 393267, 1, 0, 393268, 1, 0, 393269, 1, 0, 393270, 1, 0, 393271, 1, 0, 393272, 1, 0, 524254, 1, 0, 524255, 1, 0, 524256, 1, 0, 524257, 1, 0, 524258, 1, 0, 524259, 1, 0, 524260, 1, 0, 524261, 1, 0, 524262, 1, 0, 524263, 1, 0, 524264, 1, 0, 524265, 1, 0, 524266, 1, 0, 524267, 1, 0, 524268, 1, 0, 524269, 1, 0, 524270, 1, 0, 524271, 1, 0, 524272, 1, 0, 524273, 1, 0, 524274, 1, 0, 524275, 1, 0, 524276, 1, 0, 524277, 1, 0, 524278, 1, 0, 524279, 1, 0, 524280, 1, 0, 524281, 1, 0, 524282, 1, 0, 524283, 1, 0, 524284, 1, 0, 524285, 1, 0, 524286, 1, 0, 524287, 1, 0, 458752, 1, 0, 458753, 1, 0, 458754, 1, 0, 458755, 1, 0, 458756, 1, 0, 458757, 1, 0, 458758, 1, 0, 458759, 1, 0, 458760, 1, 0, 458761, 1, 0, 458762, 1, 0, 458763, 1, 0, 458764, 1, 0, 458765, 1, 0, 458766, 1, 0, 458767, 1, 0, 458768, 1, 0, 458769, 1, 0, 458770, 1, 0, 458771, 1, 0, 458772, 1, 0, 458773, 1, 0, 458774, 1, 0, 458775, 1, 0, 458776, 1, 0, 458777, 1, 0, 458778, 1, 0, 458779, 1, 0, 458780, 1, 0, 458781, 1, 0, 458782, 1, 0, 458783, 1, 0, 458784, 1, 0, 458785, 1, 0, 458786, 1, 0, 458787, 1, 0, 458788, 1, 0, 458789, 1, 0, 458790, 1, 0, 458791, 1, 0, 458792, 1, 0, 458793, 1, 0, 458794, 1, 0, 458795, 1, 0, 458796, 1, 0, 458797, 1, 0, 458798, 1, 0, 458799, 1, 0, 458800, 1, 0, 458801, 1, 0, 458802, 1, 0, 458803, 1, 0, 458804, 1, 0, 458805, 1, 0, 458806, 1, 0, 458807, 1, 0, 458808, 1, 0, 589790, 1, 0, 589791, 1, 0, 589792, 1, 0, 589793, 1, 0, 589794, 1, 0, 589795, 1, 0, 589796, 1, 0, 589797, 1, 0, 589798, 1, 0, 589799, 1, 0, 589800, 1, 0, 589801, 1, 0, 589802, 1, 0, 589803, 1, 0, 589804, 1, 0, 589805, 1, 0, 589806, 1, 0, 589807, 1, 0, 589808, 1, 0, 589809, 1, 0, 589810, 1, 0, 589811, 1, 0, 589812, 1, 0, 589813, 1, 0, 589814, 1, 0, 589815, 1, 0, 589816, 1, 0, 589817, 1, 0, 589818, 1, 0, 589819, 1, 0, 589820, 1, 0, 589821, 1, 0, 589822, 1, 0, 589823, 1, 0, 524288, 1, 0, 524289, 1, 0, 524290, 1, 0, 524291, 1, 0, 524292, 1, 0, 524293, 1, 0, 524294, 1, 0, 524295, 1, 0, 524296, 1, 0, 524297, 1, 0, 524298, 1, 0, 524299, 1, 0, 524300, 1, 0, 524301, 1, 0, 524302, 1, 0, 524303, 1, 0, 524304, 1, 0, 524305, 1, 0, 524306, 1, 0, 524307, 1, 0, 524308, 1, 0, 524309, 1, 0, 524310, 1, 0, 524311, 1, 0, 524312, 1, 0, 524313, 1, 0, 524314, 1, 0, 524315, 1, 0, 524316, 1, 0, 524317, 1, 0, 524318, 1, 0, 524319, 1, 0, 524320, 1, 0, 524321, 1, 0, 524322, 1, 0, 524323, 1, 0, 524324, 1, 0, 524325, 1, 0, 524326, 1, 0, 524327, 1, 0, 524328, 1, 0, 524329, 1, 0, 524330, 1, 0, 524331, 1, 0, 524332, 1, 0, 524333, 1, 0, 524334, 1, 0, 524335, 1, 0, 524336, 1, 0, 524337, 1, 0, 524338, 1, 0, 524339, 1, 0, 524340, 1, 0, 524341, 1, 0, 524342, 1, 0, 524343, 1, 0, 524344, 1, 0, 655327, 1, 0, 655328, 1, 0, 655329, 1, 0, 655330, 1, 0, 655331, 1, 0, 655332, 1, 0, 655333, 1, 0, 655334, 1, 0, 655335, 1, 0, 655336, 1, 0, 655337, 1, 0, 655338, 1, 0, 655339, 1, 0, 655340, 1, 0, 655341, 1, 0, 655342, 1, 0, 655343, 1, 0, 655344, 1, 0, 655345, 1, 0, 655346, 1, 0, 655347, 1, 0, 655348, 1, 0, 655349, 1, 0, 655350, 1, 0, 655351, 1, 0, 655352, 1, 0, 655353, 1, 0, 655354, 1, 0, 655355, 1, 0, 655356, 1, 0, 655357, 1, 0, 655358, 1, 0, 655359, 1, 0, 589824, 1, 0, 589825, 1, 0, 589826, 1, 0, 589827, 1, 0, 589828, 1, 0, 589829, 1, 0, 589830, 1, 0, 589831, 1, 0, 589832, 1, 0, 589833, 1, 0, 589834, 1, 0, 589835, 1, 0, 589836, 1, 0, 589837, 1, 0, 589838, 1, 0, 589839, 1, 0, 589840, 1, 0, 589841, 1, 0, 589842, 1, 0, 589843, 1, 0, 589844, 1, 0, 589845, 1, 0, 589846, 1, 0, 589847, 1, 0, 589848, 1, 0, 589849, 1, 0, 589850, 1, 0, 589851, 1, 0, 589852, 1, 0, 589853, 1, 0, 589854, 1, 0, 589855, 1, 0, 589856, 1, 0, 589857, 1, 0, 589858, 1, 0, 589859, 1, 0, 589860, 1, 0, 589861, 1, 0, 589862, 1, 0, 589863, 1, 0, 589864, 1, 0, 589865, 1, 0, 589866, 1, 0, 589867, 1, 0, 589868, 1, 0, 589869, 1, 0, 589870, 1, 0, 589871, 1, 0, 589872, 1, 0, 589873, 1, 0, 589874, 1, 0, 589875, 1, 0, 589876, 1, 0, 589877, 1, 0, 589878, 1, 0, 589879, 1, 0, 720863, 1, 0, 720864, 1, 0, 720865, 1, 0, 720866, 1, 0, 720867, 1, 0, 720868, 1, 0, 720869, 1, 0, 720870, 1, 0, 720871, 1, 0, 720872, 1, 0, 720873, 1, 0, 720874, 1, 0, 720875, 1, 0, 720876, 1, 0, 720877, 1, 0, 720878, 1, 0, 720879, 1, 0, 720880, 1, 0, 720881, 1, 0, 720882, 1, 0, 720883, 1, 0, 720884, 1, 0, 720885, 1, 0, 720886, 1, 0, 720887, 1, 0, 720888, 1, 0, 720889, 1, 0, 720890, 1, 0, 720891, 1, 0, 720892, 1, 0, 720893, 1, 0, 720894, 1, 0, 720895, 1, 0, 655360, 1, 0, 655361, 1, 0, 655362, 1, 0, 655363, 1, 0, 655364, 1, 0, 655365, 1, 0, 655366, 1, 0, 655367, 1, 0, 655368, 1, 0, 655369, 1, 0, 655370, 1, 0, 655371, 1, 0, 655372, 1, 0, 655373, 1, 0, 655374, 1, 0, 655375, 1, 0, 655376, 1, 0, 655377, 1, 0, 655378, 1, 0, 655379, 1, 0, 655380, 1, 0, 655381, 1, 0, 655382, 1, 0, 655383, 1, 0, 655384, 1, 0, 655385, 1, 0, 655386, 1, 0, 655387, 1, 0, 655388, 1, 0, 655389, 1, 0, 655390, 1, 0, 655391, 1, 0, 655392, 1, 0, 655393, 1, 0, 655394, 1, 0, 655395, 1, 0, 655396, 1, 0, 655397, 1, 0, 655398, 1, 0, 655399, 1, 0, 655400, 1, 0, 655401, 1, 0, 655402, 1, 0, 655403, 1, 0, 655404, 1, 0, 655405, 1, 0, 655406, 1, 0, 655407, 1, 0, 655408, 1, 0, 655409, 1, 0, 655410, 1, 0, 655411, 1, 0, 655412, 1, 0, 655413, 1, 0, 655414, 1, 0, 655415, 1, 0, 786399, 1, 0, 786400, 1, 0, 786401, 1, 0, 786402, 1, 0, 786403, 1, 0, 786404, 1, 0, 786405, 1, 0, 786406, 1, 0, 786407, 1, 0, 786408, 1, 0, 786409, 1, 0, 786410, 1, 0, 786411, 1, 0, 786412, 1, 0, 786413, 1, 0, 786414, 1, 0, 786415, 1, 0, 786416, 1, 0, 786417, 1, 0, 786418, 1, 0, 786419, 1, 0, 786420, 1, 0, 786421, 1, 0, 786422, 1, 0, 786423, 1, 0, 786424, 1, 0, 786425, 1, 0, 786426, 1, 0, 786427, 1, 0, 786428, 1, 0, 786429, 1, 0, 786430, 1, 0, 786431, 1, 0, 720896, 1, 0, 720897, 1, 0, 720898, 1, 0, 720899, 1, 0, 720900, 1, 0, 720901, 1, 0, 720902, 1, 0, 720903, 1, 0, 720904, 1, 0, 720905, 1, 0, 720906, 1, 0, 720907, 1, 0, 720908, 1, 0, 720909, 1, 0, 720910, 1, 0, 720911, 1, 0, 720912, 1, 0, 720913, 1, 0, 720914, 1, 0, 720915, 1, 0, 720916, 1, 0, 720917, 1, 0, 720918, 1, 0, 720919, 1, 0, 720920, 1, 0, 720921, 1, 0, 720922, 1, 0, 720923, 1, 0, 720924, 1, 0, 720925, 1, 0, 720926, 1, 0, 720927, 1, 0, 720928, 1, 0, 720929, 1, 0, 720930, 1, 0, 720931, 1, 0, 720932, 1, 0, 720933, 1, 0, 720934, 1, 0, 720935, 1, 0, 720936, 1, 0, 720937, 1, 0, 720938, 1, 0, 720939, 1, 0, 720940, 1, 0, 720941, 1, 0, 720942, 1, 0, 720943, 1, 0, 720944, 1, 0, 720945, 1, 0, 720946, 1, 0, 720947, 1, 0, 720948, 1, 0, 720949, 1, 0, 720950, 1, 0, 720951, 1, 0, 851934, 1, 0, 851935, 1, 0, 851936, 1, 0, 851942, 1, 0, 851943, 1, 0, 851944, 1, 0, 851945, 1, 0, 851946, 1, 0, 851947, 1, 0, 851948, 1, 0, 851949, 1, 0, 851950, 1, 0, 851951, 1, 0, 851952, 1, 0, 851953, 1, 0, 851954, 1, 0, 851955, 1, 0, 851956, 1, 0, 851957, 1, 0, 851958, 1, 0, 851959, 1, 0, 851960, 1, 0, 851961, 1, 0, 851962, 1, 0, 851963, 1, 0, 851964, 1, 0, 851965, 1, 0, 851966, 1, 0, 851967, 1, 0, 786432, 1, 0, 786433, 1, 0, 786434, 1, 0, 786435, 1, 0, 786436, 1, 0, 786437, 1, 0, 786438, 1, 0, 786439, 1, 0, 786440, 1, 0, 786441, 1, 0, 786442, 1, 0, 786443, 1, 0, 786444, 1, 0, 786445, 1, 0, 786446, 1, 0, 786447, 1, 0, 786448, 1, 0, 786449, 1, 0, 786450, 1, 0, 786451, 1, 0, 786452, 1, 0, 786453, 1, 0, 786454, 1, 0, 786455, 1, 0, 786456, 1, 0, 786457, 1, 0, 786458, 1, 0, 786459, 1, 0, 786460, 1, 0, 786461, 1, 0, 786462, 1, 0, 786463, 1, 0, 786464, 1, 0, 786465, 1, 0, 786466, 1, 0, 786467, 1, 0, 786468, 1, 0, 786469, 1, 0, 786470, 1, 0, 786471, 1, 0, 786472, 1, 0, 786473, 1, 0, 786474, 1, 0, 786475, 1, 0, 786476, 1, 0, 786477, 1, 0, 786478, 1, 0, 786479, 1, 0, 786480, 1, 0, 786481, 1, 0, 786482, 1, 0, 786483, 1, 0, 786484, 1, 0, 786485, 1, 0, 786486, 1, 0, 917472, 1, 0, 917479, 1, 0, 917480, 1, 0, 917481, 1, 0, 917482, 1, 0, 917483, 1, 0, 917484, 1, 0, 917485, 1, 0, 917486, 1, 0, 917487, 1, 0, 917488, 1, 0, 917489, 1, 0, 917490, 1, 0, 917491, 1, 0, 917492, 1, 0, 917493, 1, 0, 917494, 1, 0, 917495, 1, 0, 917496, 1, 0, 917497, 1, 0, 917498, 1, 0, 917499, 1, 0, 917500, 1, 0, 917501, 1, 0, 917502, 1, 0, 917503, 1, 0, 851968, 1, 0, 851969, 1, 0, 851970, 1, 0, 851971, 1, 0, 851972, 1, 0, 851973, 1, 0, 851974, 1, 0, 851975, 1, 0, 851976, 1, 0, 851977, 1, 0, 851978, 1, 0, 851979, 1, 0, 851980, 1, 0, 851981, 1, 0, 851982, 1, 0, 851983, 1, 0, 851984, 1, 0, 851985, 1, 0, 851986, 1, 0, 851987, 1, 0, 851988, 1, 0, 851989, 1, 0, 851990, 1, 0, 851991, 1, 0, 851992, 1, 0, 851993, 1, 0, 851994, 1, 0, 851995, 1, 0, 851996, 1, 0, 851997, 1, 0, 851998, 1, 0, 851999, 1, 0, 852000, 1, 0, 852001, 1, 0, 852002, 1, 0, 852003, 1, 0, 852004, 1, 0, 852005, 1, 0, 852006, 1, 0, 852007, 1, 0, 852008, 1, 0, 852009, 1, 0, 852010, 1, 0, 852011, 1, 0, 852012, 1, 0, 852013, 1, 0, 852014, 1, 0, 852015, 1, 0, 852016, 1, 0, 852017, 1, 0, 852018, 1, 0, 852019, 1, 0, 852020, 1, 0, 852021, 1, 0, 852022, 1, 0, 983008, 1, 0, 983016, 1, 0, 983017, 1, 0, 983018, 1, 0, 983019, 1, 0, 983020, 1, 0, 983021, 1, 0, 983022, 1, 0, 983023, 1, 0, 983024, 1, 0, 983025, 1, 0, 983026, 1, 0, 983027, 1, 0, 983028, 1, 0, 983029, 1, 0, 983030, 1, 0, 983031, 1, 0, 983032, 1, 0, 983033, 1, 0, 983034, 1, 0, 983035, 1, 0, 983036, 1, 0, 983037, 1, 0, 983038, 1, 0, 983039, 1, 0, 917504, 1, 0, 917505, 1, 0, 917506, 1, 0, 917507, 1, 0, 917508, 1, 0, 917509, 1, 0, 917510, 1, 0, 917511, 1, 0, 917512, 1, 0, 917513, 1, 0, 917514, 1, 0, 917515, 1, 0, 917516, 1, 0, 917517, 1, 0, 917518, 1, 0, 917519, 1, 0, 917520, 1, 0, 917521, 1, 0, 917522, 1, 0, 917523, 1, 0, 917524, 1, 0, 917525, 1, 0, 917526, 1, 0, 917527, 1, 0, 917528, 1, 0, 917529, 1, 0, 917530, 1, 0, 917531, 1, 0, 917532, 1, 0, 917533, 1, 0, 917534, 1, 0, 917535, 1, 0, 917536, 1, 0, 917537, 1, 0, 917538, 1, 0, 917539, 1, 0, 917540, 1, 0, 917541, 1, 0, 917542, 1, 0, 917543, 1, 0, 917544, 1, 0, 917545, 1, 0, 917546, 1, 0, 917547, 1, 0, 917548, 1, 0, 917549, 1, 0, 917550, 1, 0, 917551, 1, 0, 917552, 1, 0, 917553, 1, 0, 917554, 1, 0, 917555, 1, 0, 917556, 1, 0, 917557, 1, 0, 917558, 1, 0, 1048545, 2, 0, 1048553, 1, 0, 1048554, 1, 0, 1048555, 1, 0, 1048556, 1, 0, 1048557, 1, 0, 1048558, 1, 0, 1048559, 1, 0, 1048560, 1, 0, 1048561, 1, 0, 1048562, 1, 0, 1048563, 1, 0, 1048564, 1, 0, 1048565, 1, 0, 1048566, 1, 0, 1048567, 1, 0, 1048568, 1, 0, 1048569, 1, 0, 1048570, 1, 0, 1048571, 1, 0, 1048572, 1, 0, 1048573, 1, 0, 1048574, 1, 0, 1048575, 1, 0, 983040, 1, 0, 983041, 1, 0, 983042, 1, 0, 983043, 1, 0, 983044, 1, 0, 983045, 1, 0, 983046, 1, 0, 983047, 1, 0, 983048, 1, 0, 983049, 1, 0, 983050, 1, 0, 983051, 1, 0, 983052, 1, 0, 983053, 1, 0, 983054, 1, 0, 983055, 1, 0, 983056, 1, 0, 983057, 1, 0, 983058, 1, 0, 983059, 1, 0, 983060, 1, 0, 983061, 1, 0, 983062, 1, 0, 983063, 1, 0, 983064, 1, 0, 983065, 1, 0, 983066, 1, 0, 983067, 1, 0, 983068, 1, 0, 983069, 1, 0, 983070, 1, 0, 983071, 1, 0, 983072, 1, 0, 983073, 1, 0, 983074, 1, 0, 983075, 1, 0, 983076, 1, 0, 983077, 1, 0, 983078, 1, 0, 983079, 1, 0, 983080, 1, 0, 983081, 1, 0, 983082, 1, 0, 983083, 1, 0, 983084, 1, 0, 983085, 1, 0, 983086, 1, 0, 983087, 1, 0, 983088, 1, 0, 983089, 1, 0, 983090, 1, 0, 983091, 1, 0, 983092, 1, 0, 983093, 1, 0, 1114081, 2, 0, 1114090, 1, 0, 1114091, 1, 0, 1114092, 1, 0, 1114093, 1, 0, 1114094, 1, 0, 1114095, 1, 0, 1114096, 1, 0, 1114097, 1, 0, 1114098, 1, 0, 1114099, 1, 0, 1114100, 1, 0, 1114101, 1, 0, 1114102, 1, 0, 1114103, 1, 0, 1114104, 1, 0, 1114105, 1, 0, 1114106, 1, 0, 1114107, 1, 0, 1114108, 1, 0, 1114109, 1, 0, 1114110, 1, 0, 1114111, 1, 0, 1048576, 1, 0, 1048577, 1, 0, 1048578, 1, 0, 1048579, 1, 0, 1048580, 1, 0, 1048581, 1, 0, 1048582, 1, 0, 1048583, 1, 0, 1048584, 1, 0, 1048585, 1, 0, 1048586, 1, 0, 1048587, 1, 0, 1048588, 1, 0, 1048589, 1, 0, 1048590, 1, 0, 1048591, 1, 0, 1048592, 1, 0, 1048593, 1, 0, 1048594, 1, 0, 1048595, 1, 0, 1048596, 1, 0, 1048597, 1, 0, 1048598, 1, 0, 1048599, 1, 0, 1048600, 1, 0, 1048601, 1, 0, 1048602, 1, 0, 1048603, 1, 0, 1048604, 1, 0, 1048605, 1, 0, 1048606, 1, 0, 1048607, 1, 0, 1048608, 1, 0, 1048609, 1, 0, 1048610, 1, 0, 1048611, 1, 0, 1048612, 1, 0, 1048613, 1, 0, 1048614, 1, 0, 1048615, 1, 0, 1048616, 1, 0, 1048617, 1, 0, 1048618, 1, 0, 1048619, 1, 0, 1048620, 1, 0, 1048621, 1, 0, 1048622, 1, 0, 1048623, 1, 0, 1048624, 1, 0, 1048625, 1, 0, 1048626, 1, 0, 1048627, 1, 0, 1048628, 1, 0, 1048629, 1, 0, 1179618, 2, 0, 1179627, 1, 0, 1179628, 1, 0, 1179629, 1, 0, 1179630, 1, 0, 1179631, 1, 0, 1179632, 1, 0, 1179633, 1, 0, 1179634, 1, 0, 1179635, 1, 0, 1179636, 1, 0, 1179637, 1, 0, 1179638, 1, 0, 1179639, 1, 0, 1179640, 1, 0, 1179641, 1, 0, 1179642, 1, 0, 1179643, 1, 0, 1179644, 1, 0, 1179645, 1, 0, 1179646, 1, 0, 1179647, 1, 0, 1114112, 1, 0, 1114113, 1, 0, 1114114, 1, 0, 1114115, 1, 0, 1114116, 1, 0, 1114117, 1, 0, 1114118, 1, 0, 1114119, 1, 0, 1114120, 1, 0, 1114121, 1, 0, 1114122, 1, 0, 1114123, 1, 0, 1114124, 1, 0, 1114125, 1, 0, 1114126, 1, 0, 1114127, 1, 0, 1114128, 1, 0, 1114129, 1, 0, 1114130, 1, 0, 1114131, 1, 0, 1114132, 1, 0, 1114133, 1, 0, 1114134, 1, 0, 1114135, 1, 0, 1114136, 1, 0, 1114137, 1, 0, 1114138, 1, 0, 1114139, 1, 0, 1114140, 1, 0, 1114141, 1, 0, 1114142, 1, 0, 1114143, 1, 0, 1114144, 1, 0, 1114145, 1, 0, 1114146, 1, 0, 1114147, 1, 0, 1114148, 1, 0, 1114149, 1, 0, 1114150, 1, 0, 1114151, 1, 0, 1114152, 1, 0, 1114153, 1, 0, 1114154, 1, 0, 1114155, 1, 0, 1114156, 1, 0, 1114157, 1, 0, 1114158, 1, 0, 1114159, 1, 0, 1114160, 1, 0, 1114161, 1, 0, 1114162, 1, 0, 1114163, 1, 0, 1114164, 1, 0, 1114165, 1, 0, 1245154, 2, 0, 1245164, 1, 0, 1245165, 1, 0, 1245166, 1, 0, 1245167, 1, 0, 1245168, 1, 0, 1245169, 1, 0, 1245170, 1, 0, 1245171, 1, 0, 1245172, 1, 0, 1245173, 1, 0, 1245174, 1, 0, 1245175, 1, 0, 1245176, 1, 0, 1245177, 1, 0, 1245178, 1, 0, 1245179, 1, 0, 1245180, 1, 0, 1245181, 1, 0, 1245182, 1, 0, 1245183, 1, 0, 1179648, 1, 0, 1179649, 1, 0, 1179650, 1, 0, 1179651, 1, 0, 1179652, 1, 0, 1179653, 1, 0, 1179654, 1, 0, 1179655, 1, 0, 1179656, 1, 0, 1179657, 1, 0, 1179658, 1, 0, 1179659, 1, 0, 1179660, 1, 0, 1179661, 1, 0, 1179662, 1, 0, 1179663, 1, 0, 1179664, 1, 0, 1179665, 1, 0, 1179666, 1, 0, 1179667, 1, 0, 1179668, 1, 0, 1179669, 1, 0, 1179670, 1, 0, 1179671, 1, 0, 1179672, 1, 0, 1179673, 1, 0, 1179674, 1, 0, 1179675, 1, 0, 1179676, 1, 0, 1179677, 1, 0, 1179678, 1, 0, 1179679, 1, 0, 1179680, 1, 0, 1179681, 1, 0, 1179682, 1, 0, 1179683, 1, 0, 1179684, 1, 0, 1179685, 1, 0, 1179686, 1, 0, 1179687, 1, 0, 1179688, 1, 0, 1179689, 1, 0, 1179690, 1, 0, 1179691, 1, 0, 1179692, 1, 0, 1179693, 1, 0, 1179694, 1, 0, 1179695, 1, 0, 1179696, 1, 0, 1179697, 1, 0, 1179698, 1, 0, 1179699, 1, 0, 1179700, 1, 0, 1179701, 1, 0, 1310690, 2, 0, 1310701, 1, 0, 1310702, 1, 0, 1310703, 1, 0, 1310704, 1, 0, 1310705, 1, 0, 1310706, 1, 0, 1310707, 1, 0, 1310708, 1, 0, 1310709, 1, 0, 1310710, 1, 0, 1310711, 1, 0, 1310712, 1, 0, 1310713, 1, 0, 1310714, 1, 0, 1310715, 1, 0, 1310716, 1, 0, 1310717, 1, 0, 1310718, 1, 0, 1310719, 1, 0, 1245184, 1, 0, 1245185, 1, 0, 1245186, 1, 0, 1245187, 1, 0, 1245188, 1, 0, 1245189, 1, 0, 1245190, 1, 0, 1245191, 1, 0, 1245192, 1, 0, 1245193, 1, 0, 1245194, 1, 0, 1245195, 1, 0, 1245196, 1, 0, 1245197, 1, 0, 1245198, 1, 0, 1245199, 1, 0, 1245200, 1, 0, 1245201, 1, 0, 1245202, 1, 0, 1245203, 1, 0, 1245204, 1, 0, 1245205, 1, 0, 1245206, 1, 0, 1245207, 1, 0, 1245208, 1, 0, 1245209, 1, 0, 1245210, 1, 0, 1245211, 1, 0, 1245212, 1, 0, 1245213, 1, 0, 1245214, 1, 0, 1245215, 1, 0, 1245216, 1, 0, 1245217, 1, 0, 1245218, 1, 0, 1245219, 1, 0, 1245220, 1, 0, 1245221, 1, 0, 1245222, 1, 0, 1245223, 1, 0, 1245224, 1, 0, 1245225, 1, 0, 1245226, 1, 0, 1245227, 1, 0, 1245228, 1, 0, 1245229, 1, 0, 1245230, 1, 0, 1245231, 1, 0, 1245232, 1, 0, 1245233, 1, 0, 1245234, 1, 0, 1245235, 1, 0, 1245236, 1, 0, 1376238, 1, 0, 1376239, 1, 0, 1376240, 1, 0, 1376241, 1, 0, 1376242, 1, 0, 1376243, 1, 0, 1376244, 1, 0, 1376245, 1, 0, 1376246, 1, 0, 1376247, 1, 0, 1376248, 1, 0, 1376249, 1, 0, 1376250, 1, 0, 1376251, 1, 0, 1376252, 1, 0, 1376253, 1, 0, 1376254, 1, 0, 1376255, 1, 0, 1310720, 1, 0, 1310721, 1, 0, 1310722, 1, 0, 1310723, 1, 0, 1310724, 1, 0, 1310725, 1, 0, 1310726, 1, 0, 1310727, 1, 0, 1310728, 1, 0, 1310729, 1, 0, 1310730, 1, 0, 1310731, 1, 0, 1310732, 1, 0, 1310733, 1, 0, 1310734, 1, 0, 1310735, 1, 0, 1310736, 1, 0, 1310737, 1, 0, 1310738, 1, 0, 1310739, 1, 0, 1310740, 1, 0, 1310741, 1, 0, 1310742, 1, 0, 1310743, 1, 0, 1310744, 1, 0, 1310745, 1, 0, 1310746, 1, 0, 1310747, 1, 0, 1310748, 1, 0, 1310749, 1, 0, 1310750, 1, 0, 1310751, 1, 0, 1310752, 1, 0, 1310753, 1, 0, 1310754, 1, 0, 1310755, 1, 0, 1310756, 1, 0, 1310757, 1, 0, 1310758, 1, 0, 1310759, 1, 0, 1310760, 1, 0, 1310761, 1, 0, 1310762, 1, 0, 1310763, 1, 0, 1310764, 1, 0, 1310765, 1, 0, 1310766, 1, 0, 1310767, 1, 0, 1310768, 1, 0, 1310769, 1, 0, 1310770, 1, 0, 1310771, 1, 0, 1310772, 1, 0, 1441775, 1, 0, 1441776, 1, 0, 1441777, 1, 0, 1441778, 1, 0, 1441779, 1, 0, 1441780, 1, 0, 1441781, 1, 0, 1441782, 1, 0, 1441783, 1, 0, 1441784, 1, 0, 1441785, 1, 0, 1441786, 1, 0, 1441787, 1, 0, 1441788, 1, 0, 1441789, 1, 0, 1441790, 1, 0, 1441791, 1, 0, 1376256, 1, 0, 1376257, 1, 0, 1376258, 1, 0, 1376259, 1, 0, 1376260, 1, 0, 1376261, 1, 0, 1376262, 1, 0, 1376263, 1, 0, 1376264, 1, 0, 1376265, 1, 0, 1376266, 1, 0, 1376267, 1, 0, 1376268, 1, 0, 1376269, 1, 0, 1376270, 1, 0, 1376271, 1, 0, 1376272, 1, 0, 1376273, 1, 0, 1376274, 1, 0, 1376275, 1, 0, 1376276, 1, 0, 1376277, 1, 0, 1376278, 1, 0, 1376279, 1, 0, 1376280, 1, 0, 1376281, 1, 0, 1376282, 1, 0, 1376283, 1, 0, 1376284, 1, 0, 1376285, 1, 0, 1376286, 1, 0, 1376287, 1, 0, 1376288, 1, 0, 1376289, 1, 0, 1376290, 1, 0, 1376291, 1, 0, 1376292, 1, 0, 1376293, 1, 0, 1376294, 1, 0, 1376295, 1, 0, 1376296, 1, 0, 1376297, 1, 0, 1376298, 1, 0, 1376299, 1, 0, 1376300, 1, 0, 1376301, 1, 0, 1376302, 1, 0, 1376303, 1, 0, 1376304, 1, 0, 1376305, 1, 0, 1376306, 1, 0, 1376307, 1, 0, 1376308, 1, 0, 1507312, 1, 0, 1507313, 1, 0, 1507314, 1, 0, 1507315, 1, 0, 1507316, 1, 0, 1507317, 1, 0, 1507318, 1, 0, 1507319, 1, 0, 1507320, 1, 0, 1507321, 1, 0, 1507322, 1, 0, 1507323, 1, 0, 1507324, 1, 0, 1507325, 1, 0, 1507326, 1, 0, 1507327, 1, 0, 1441792, 1, 0, 1441793, 1, 0, 1441794, 1, 0, 1441795, 1, 0, 1441796, 1, 0, 1441797, 1, 0, 1441798, 1, 0, 1441799, 1, 0, 1441800, 1, 0, 1441801, 1, 0, 1441802, 1, 0, 1441803, 1, 0, 1441804, 1, 0, 1441805, 1, 0, 1441806, 1, 0, 1441807, 1, 0, 1441808, 1, 0, 1441809, 1, 0, 1441810, 1, 0, 1441811, 1, 0, 1441812, 1, 0, 1441813, 1, 0, 1441814, 1, 0, 1441815, 1, 0, 1441816, 1, 0, 1441817, 1, 0, 1441818, 1, 0, 1441819, 1, 0, 1441820, 1, 0, 1441821, 1, 0, 1441822, 1, 0, 1441823, 1, 0, 1441824, 1, 0, 1441825, 1, 0, 1441826, 1, 0, 1441827, 1, 0, 1441828, 1, 0, 1441829, 1, 0, 1441830, 1, 0, 1441831, 1, 0, 1441832, 1, 0, 1441833, 1, 0, 1441834, 1, 0, 1441835, 1, 0, 1441836, 1, 0, 1441837, 1, 0, 1441838, 1, 0, 1441839, 1, 0, 1441840, 1, 0, 1441841, 1, 0, 1441842, 1, 0, 1441843, 1, 0, 1572849, 1, 0, 1572850, 1, 0, 1572851, 1, 0, 1572852, 1, 0, 1572853, 1, 0, 1572854, 1, 0, 1572855, 1, 0, 1572856, 1, 0, 1572857, 1, 0, 1572858, 1, 0, 1572859, 1, 0, 1572860, 1, 0, 1572861, 1, 0, 1572862, 1, 0, 1572863, 1, 0, 1507328, 1, 0, 1507329, 1, 0, 1507330, 1, 0, 1507331, 1, 0, 1507332, 1, 0, 1507333, 1, 0, 1507334, 1, 0, 1507335, 1, 0, 1507336, 1, 0, 1507337, 1, 0, 1507338, 1, 0, 1507339, 1, 0, 1507340, 1, 0, 1507341, 1, 0, 1507342, 1, 0, 1507343, 1, 0, 1507344, 1, 0, 1507345, 1, 0, 1507346, 1, 0, 1507347, 1, 0, 1507348, 1, 0, 1507349, 1, 0, 1507350, 1, 0, 1507351, 1, 0, 1507352, 1, 0, 1507353, 1, 0, 1507354, 1, 0, 1507355, 1, 0, 1507356, 1, 0, 1507357, 1, 0, 1507358, 1, 0, 1507359, 1, 0, 1507360, 1, 0, 1507361, 1, 0, 1507362, 1, 0, 1507363, 1, 0, 1507364, 1, 0, 1507365, 1, 0, 1507366, 1, 0, 1507367, 1, 0, 1507368, 1, 0, 1507369, 1, 0, 1507370, 1, 0, 1507371, 1, 0, 1507372, 1, 0, 1507373, 1, 0, 1507374, 1, 0, 1507375, 1, 0, 1507376, 1, 0, 1507377, 1, 0, 1507378, 1, 0, 1507379, 1, 0, 1638385, 1, 0, 1638386, 1, 0, 1638387, 1, 0, 1638388, 1, 0, 1638389, 1, 0, 1638390, 1, 0, 1638391, 1, 0, 1638392, 1, 0, 1638393, 1, 0, 1638394, 1, 0, 1638395, 1, 0, 1638396, 1, 0, 1638397, 1, 0, 1638398, 1, 0, 1638399, 1, 0, 1572864, 1, 0, 1572865, 1, 0, 1572866, 1, 0, 1572867, 1, 0, 1572868, 1, 0, 1572869, 1, 0, 1572870, 1, 0, 1572871, 1, 0, 1572872, 1, 0, 1572873, 1, 0, 1572874, 1, 0, 1572875, 1, 0, 1572876, 1, 0, 1572877, 1, 0, 1572878, 1, 0, 1572879, 1, 0, 1572880, 1, 0, 1572881, 1, 0, 1572882, 1, 0, 1572883, 1, 0, 1572884, 1, 0, 1572885, 1, 0, 1572886, 1, 0, 1572887, 1, 0, 1572888, 1, 0, 1572889, 1, 0, 1572890, 1, 0, 1572891, 1, 0, 1572892, 1, 0, 1572893, 1, 0, 1572894, 1, 0, 1572895, 1, 0, 1572896, 1, 0, 1572897, 1, 0, 1572898, 1, 0, 1572899, 1, 0, 1572900, 1, 0, 1572901, 1, 0, 1572902, 1, 0, 1572903, 1, 0, 1572904, 1, 0, 1572905, 1, 0, 1572906, 1, 0, 1572907, 1, 0, 1572908, 1, 0, 1572909, 1, 0, 1572910, 1, 0, 1572911, 1, 0, 1572912, 1, 0, 1572913, 1, 0, 1572914, 1, 0, 1703922, 1, 0, 1703923, 1, 0, 1703924, 1, 0, 1703925, 1, 0, 1703926, 1, 0, 1703927, 1, 0, 1703928, 1, 0, 1703929, 1, 0, 1703930, 1, 0, 1703931, 1, 0, 1703932, 1, 0, 1703933, 1, 0, 1703934, 1, 0, 1703935, 1, 0, 1638400, 1, 0, 1638401, 1, 0, 1638402, 1, 0, 1638403, 1, 0, 1638404, 1, 0, 1638405, 1, 0, 1638406, 1, 0, 1638407, 1, 0, 1638408, 1, 0, 1638409, 1, 0, 1638410, 1, 0, 1638411, 1, 0, 1638412, 1, 0, 1638413, 1, 0, 1638414, 1, 0, 1638415, 1, 0, 1638416, 1, 0, 1638417, 1, 0, 1638418, 1, 0, 1638419, 1, 0, 1638420, 1, 0, 1638421, 1, 0, 1638422, 1, 0, 1638423, 1, 0, 1638424, 1, 0, 1638425, 1, 0, 1638426, 1, 0, 1638427, 1, 0, 1638428, 1, 0, 1638429, 1, 0, 1638430, 1, 0, 1638431, 1, 0, 1638432, 1, 0, 1638433, 1, 0, 1638434, 1, 0, 1638435, 1, 0, 1638436, 1, 0, 1638437, 1, 0, 1638438, 1, 0, 1638439, 1, 0, 1638440, 1, 0, 1638441, 1, 0, 1638442, 1, 0, 1638443, 1, 0, 1638444, 1, 0, 1638445, 1, 0, 1638446, 1, 0, 1638447, 1, 0, 1638448, 1, 0, 1638449, 1, 0, 1638450, 1, 0, 1769459, 1, 0, 1769460, 1, 0, 1769461, 1, 0, 1769462, 1, 0, 1769463, 1, 0, 1769464, 1, 0, 1769465, 1, 0, 1769466, 1, 0, 1769467, 1, 0, 1769468, 1, 0, 1769469, 1, 0, 1769470, 1, 0, 1769471, 1, 0, 1703936, 1, 0, 1703937, 1, 0, 1703938, 1, 0, 1703939, 1, 0, 1703940, 1, 0, 1703941, 1, 0, 1703942, 1, 0, 1703943, 1, 0, 1703944, 1, 0, 1703945, 1, 0, 1703946, 1, 0, 1703947, 1, 0, 1703948, 1, 0, 1703949, 1, 0, 1703950, 1, 0, 1703951, 1, 0, 1703952, 1, 0, 1703953, 1, 0, 1703954, 1, 0, 1703955, 1, 0, 1703956, 1, 0, 1703957, 1, 0, 1703958, 1, 0, 1703959, 1, 0, 1703960, 1, 0, 1703961, 1, 0, 1703962, 1, 0, 1703963, 1, 0, 1703964, 1, 0, 1703965, 1, 0, 1703966, 1, 0, 1703967, 1, 0, 1703968, 1, 0, 1703969, 1, 0, 1703970, 1, 0, 1703971, 1, 0, 1703972, 1, 0, 1703973, 1, 0, 1703974, 1, 0, 1703975, 1, 0, 1703976, 1, 0, 1703977, 1, 0, 1703978, 1, 0, 1703979, 1, 0, 1703980, 1, 0, 1703981, 1, 0, 1703982, 1, 0, 1703983, 1, 0, 1703984, 1, 0, 1703985, 1, 0, 1834996, 1, 0, 1834997, 1, 0, 1834998, 1, 0, 1834999, 1, 0, 1835000, 1, 0, 1835001, 1, 0, 1835002, 1, 0, 1835003, 1, 0, 1835004, 1, 0, 1835005, 1, 0, 1835006, 1, 0, 1835007, 1, 0, 1769472, 1, 0, 1769473, 1, 0, 1769474, 1, 0, 1769475, 1, 0, 1769476, 1, 0, 1769477, 1, 0, 1769478, 1, 0, 1769479, 1, 0, 1769480, 1, 0, 1769481, 1, 0, 1769482, 1, 0, 1769483, 1, 0, 1769484, 1, 0, 1769485, 1, 0, 1769486, 1, 0, 1769487, 1, 0, 1769488, 1, 0, 1769489, 1, 0, 1769490, 1, 0, 1769491, 1, 0, 1769492, 1, 0, 1769493, 1, 0, 1769494, 1, 0, 1769495, 1, 0, 1769496, 1, 0, 1769497, 1, 0, 1769498, 1, 0, 1769499, 1, 0, 1769500, 1, 0, 1769501, 1, 0, 1769502, 1, 0, 1769503, 1, 0, 1769504, 1, 0, 1769505, 1, 0, 1769506, 1, 0, 1769507, 1, 0, 1769508, 1, 0, 1769509, 1, 0, 1769510, 1, 0, 1769511, 1, 0, 1769512, 1, 0, 1769513, 1, 0, 1769514, 1, 0, 1769515, 1, 0, 1769516, 1, 0, 1769517, 1, 0, 1769518, 1, 0, 1769519, 1, 0, 1769520, 1, 0, 1769521, 1, 0, 1900533, 1, 0, 1900534, 1, 0, 1900535, 1, 0, 1900536, 1, 0, 1900537, 1, 0, 1900538, 1, 0, 1900539, 1, 0, 1900540, 1, 0, 1900541, 1, 0, 1900542, 1, 0, 1900543, 1, 0, 1835008, 1, 0, 1835009, 1, 0, 1835010, 1, 0, 1835011, 1, 0, 1835012, 1, 0, 1835013, 1, 0, 1835014, 1, 0, 1835015, 1, 0, 1835016, 1, 0, 1835017, 1, 0, 1835018, 1, 0, 1835019, 1, 0, 1835020, 1, 0, 1835021, 1, 0, 1835022, 1, 0, 1835023, 1, 0, 1835024, 1, 0, 1835025, 1, 0, 1835026, 1, 0, 1835027, 1, 0, 1835028, 1, 0, 1835029, 1, 0, 1835030, 1, 0, 1835031, 1, 0, 1835032, 1, 0, 1835033, 1, 0, 1835034, 1, 0, 1835035, 1, 0, 1835036, 1, 0, 1835037, 1, 0, 1835038, 1, 0, 1835039, 1, 0, 1835040, 1, 0, 1835041, 1, 0, 1835042, 1, 0, 1835043, 1, 0, 1835044, 1, 0, 1835045, 1, 0, 1835046, 1, 0, 1835047, 1, 0, 1835048, 1, 0, 1835049, 1, 0, 1835050, 1, 0, 1835051, 1, 0, 1835052, 1, 0, 1835053, 1, 0, 1835054, 1, 0, 1835055, 1, 0, 1835056, 1, 0, 1966070, 1, 0, 1966071, 1, 0, 1966072, 1, 0, 1966073, 1, 0, 1966074, 1, 0, 1966075, 1, 0, 1966076, 1, 0, 1966077, 1, 0, 1966078, 1, 0, 1966079, 1, 0, 1900544, 1, 0, 1900545, 1, 0, 1900546, 1, 0, 1900547, 1, 0, 1900548, 1, 0, 1900549, 1, 0, 1900550, 1, 0, 1900551, 1, 0, 1900552, 1, 0, 1900553, 1, 0, 1900554, 1, 0, 1900555, 1, 0, 1900556, 1, 0, 1900557, 1, 0, 1900558, 1, 0, 1900559, 1, 0, 1900560, 1, 0, 1900561, 1, 0, 1900562, 1, 0, 1900563, 1, 0, 1900564, 1, 0, 1900565, 1, 0, 1900566, 1, 0, 1900567, 1, 0, 1900568, 1, 0, 1900569, 1, 0, 1900570, 1, 0, 1900571, 1, 0, 1900572, 1, 0, 1900573, 1, 0, 1900574, 1, 0, 1900575, 1, 0, 1900576, 1, 0, 1900577, 1, 0, 1900578, 1, 0, 1900579, 1, 0, 1900580, 1, 0, 1900581, 1, 0, 1900582, 1, 0, 1900583, 1, 0, 1900584, 1, 0, 1900585, 1, 0, 1900586, 1, 0, 1900587, 1, 0, 1900588, 1, 0, 1900589, 1, 0, 1900590, 1, 0, 1900591, 1, 0, 1900592, 1, 0, 2031607, 1, 0, 2031608, 1, 0, 2031609, 1, 0, 2031610, 1, 0, 2031611, 1, 0, 2031612, 1, 0, 2031613, 1, 0, 2031614, 1, 0, 2031615, 1, 0, 1966080, 1, 0, 1966081, 1, 0, 1966082, 1, 0, 1966083, 1, 0, 1966084, 1, 0, 1966085, 1, 0, 1966086, 1, 0, 1966087, 1, 0, 1966088, 1, 0, 1966089, 1, 0, 1966090, 1, 0, 1966091, 1, 0, 1966092, 1, 0, 1966093, 1, 0, 1966094, 1, 0, 1966095, 1, 0, 1966096, 1, 0, 1966097, 1, 0, 1966098, 1, 0, 1966099, 1, 0, 1966100, 1, 0, 1966101, 1, 0, 1966102, 1, 0, 1966103, 1, 0, 1966104, 1, 0, 1966105, 1, 0, 1966106, 1, 0, 1966107, 1, 0, 1966108, 1, 0, 1966109, 1, 0, 1966110, 1, 0, 1966111, 1, 0, 1966112, 1, 0, 1966113, 1, 0, 1966114, 1, 0, 1966115, 1, 0, 1966116, 1, 0, 1966117, 1, 0, 1966118, 1, 0, 1966119, 1, 0, 1966120, 1, 0, 1966121, 1, 0, 1966122, 1, 0, 1966123, 1, 0, 1966124, 1, 0, 1966125, 1, 0, 1966126, 1, 0, 1966127, 1, 0, 2097144, 1, 0, 2097145, 1, 0, 2097146, 1, 0, 2097147, 1, 0, 2097148, 1, 0, 2097149, 1, 0, 2097150, 1, 0, 2097151, 1, 0, 2031616, 1, 0, 2031617, 1, 0, 2031618, 1, 0, 2031619, 1, 0, 2031620, 1, 0, 2031621, 1, 0, 2031622, 1, 0, 2031623, 1, 0, 2031624, 1, 0, 2031625, 1, 0, 2031626, 1, 0, 2031627, 1, 0, 2031628, 1, 0, 2031629, 1, 0, 2031630, 1, 0, 2031631, 1, 0, 2031632, 1, 0, 2031633, 1, 0, 2031634, 1, 0, 2031635, 1, 0, 2031636, 1, 0, 2031637, 1, 0, 2031638, 1, 0, 2031639, 1, 0, 2031640, 1, 0, 2031641, 1, 0, 2031642, 1, 0, 2031643, 1, 0, 2031644, 1, 0, 2031645, 1, 0, 2031646, 1, 0, 2031647, 1, 0, 2031648, 1, 0, 2031649, 1, 0, 2031650, 1, 0, 2031651, 1, 0, 2031652, 1, 0, 2031653, 1, 0, 2031654, 1, 0, 2031655, 1, 0, 2031656, 1, 0, 2031657, 1, 0, 2031658, 1, 0, 2031659, 1, 0, 2031660, 1, 0, 2031661, 1, 0, 2031662, 1, 0, 2031663, 1, 0, 2162681, 1, 0, 2162682, 1, 0, 2162683, 1, 0, 2162684, 1, 0, 2162685, 1, 0, 2162686, 1, 0, 2162687, 1, 0, 2097152, 1, 0, 2097153, 1, 0, 2097154, 1, 0, 2097155, 1, 0, 2097156, 1, 0, 2097157, 1, 0, 2097158, 1, 0, 2097159, 1, 0, 2097160, 1, 0, 2097161, 1, 0, 2097162, 1, 0, 2097163, 1, 0, 2097164, 1, 0, 2097165, 1, 0, 2097166, 1, 0, 2097167, 1, 0, 2097168, 1, 0, 2097169, 1, 0, 2097170, 1, 0, 2097171, 1, 0, 2097172, 1, 0, 2097173, 1, 0, 2097174, 1, 0, 2097175, 1, 0, 2097176, 1, 0, 2097177, 1, 0, 2097178, 1, 0, 2097179, 1, 0, 2097180, 1, 0, 2097181, 1, 0, 2097182, 1, 0, 2097183, 1, 0, 2097184, 1, 0, 2097185, 1, 0, 2097186, 1, 0, 2097187, 1, 0, 2097188, 1, 0, 2097189, 1, 0, 2097190, 1, 0, 2097191, 1, 0, 2097192, 1, 0, 2097193, 1, 0, 2097194, 1, 0, 2097195, 1, 0, 2097196, 1, 0, 2097197, 1, 0, 2097198, 1, 0, 2097199, 1, 0, 2228218, 1, 0, 2228219, 1, 0, 2228220, 1, 0, 2228221, 1, 0, 2228222, 1, 0, 2228223, 1, 0, 2162688, 1, 0, 2162689, 1, 0, 2162690, 1, 0, 2162691, 1, 0, 2162692, 1, 0, 2162693, 1, 0, 2162694, 1, 0, 2162695, 1, 0, 2162696, 1, 0, 2162697, 1, 0, 2162698, 1, 0, 2162699, 1, 0, 2162700, 1, 0, 2162701, 1, 0, 2162702, 1, 0, 2162703, 1, 0, 2162704, 1, 0, 2162705, 1, 0, 2162706, 1, 0, 2162707, 1, 0, 2162708, 1, 0, 2162709, 1, 0, 2162710, 1, 0, 2162711, 1, 0, 2162712, 1, 0, 2162713, 1, 0, 2162714, 1, 0, 2162715, 1, 0, 2162716, 1, 0, 2162717, 1, 0, 2162718, 1, 0, 2162719, 1, 0, 2162720, 1, 0, 2162721, 1, 0, 2162722, 1, 0, 2162723, 1, 0, 2162724, 1, 0, 2162725, 1, 0, 2162726, 1, 0, 2162727, 1, 0, 2162728, 1, 0, 2162729, 1, 0, 2162730, 1, 0, 2162731, 1, 0, 2162732, 1, 0, 2162733, 1, 0, 2162734, 1, 0, 2293754, 1, 0, 2293755, 1, 0, 2293756, 1, 0, 2293757, 1, 0, 2293758, 1, 0, 2293759, 1, 0, 2228224, 1, 0, 2228225, 1, 0, 2228226, 1, 0, 2228227, 1, 0, 2228228, 1, 0, 2228229, 1, 0, 2228230, 1, 0, 2228231, 1, 0, 2228232, 1, 0, 2228233, 1, 0, 2228234, 1, 0, 2228235, 1, 0, 2228236, 1, 0, 2228237, 1, 0, 2228238, 1, 0, 2228239, 1, 0, 2228240, 1, 0, 2228241, 1, 0, 2228242, 1, 0, 2228243, 1, 0, 2228244, 1, 0, 2228245, 1, 0, 2228246, 1, 0, 2228247, 1, 0, 2228248, 1, 0, 2228249, 1, 0, 2228250, 1, 0, 2228251, 1, 0, 2228252, 1, 0, 2228253, 1, 0, 2228254, 1, 0, 2228255, 1, 0, 2228256, 1, 0, 2228257, 1, 0, 2228258, 1, 0, 2228259, 1, 0, 2228260, 1, 0, 2228261, 1, 0, 2228262, 1, 0, 2228263, 1, 0, 2228264, 1, 0, 2228265, 1, 0, 2228266, 1, 0, 2228267, 1, 0, 2228268, 1, 0, 2228269, 1, 0, 2228270, 1, 0, 2359291, 1, 0, 2359292, 1, 0, 2359293, 1, 0, 2359294, 1, 0, 2359295, 1, 0, 2293760, 1, 0, 2293761, 1, 0, 2293762, 1, 0, 2293763, 1, 0, 2293764, 1, 0, 2293765, 1, 0, 2293766, 1, 0, 2293767, 1, 0, 2293768, 1, 0, 2293769, 1, 0, 2293770, 1, 0, 2293771, 1, 0, 2293772, 1, 0, 2293773, 1, 0, 2293774, 1, 0, 2293775, 1, 0, 2293776, 1, 0, 2293777, 1, 0, 2293778, 1, 0, 2293779, 1, 0, 2293780, 1, 0, 2293781, 1, 0, 2293782, 1, 0, 2293783, 1, 0, 2293784, 1, 0, 2293785, 1, 0, 2293786, 1, 0, 2293787, 1, 0, 2293788, 1, 0, 2293789, 1, 0, 2293790, 1, 0, 2293791, 1, 0, 2293792, 1, 0, 2293793, 1, 0, 2293794, 1, 0, 2293795, 1, 0, 2293796, 1, 0, 2293797, 1, 0, 2293798, 1, 0, 2293799, 1, 0, 2293800, 1, 0, 2293801, 1, 0, 2293802, 1, 0, 2293803, 1, 0, 2293804, 1, 0, 2293805, 1, 0, 2424828, 1, 0, 2424829, 1, 0, 2424830, 1, 0, 2424831, 1, 0, 2359296, 1, 0, 2359297, 1, 0, 2359298, 1, 0, 2359299, 1, 0, 2359300, 1, 0, 2359301, 1, 0, 2359302, 1, 0, 2359303, 1, 0, 2359304, 1, 0, 2359305, 1, 0, 2359306, 1, 0, 2359307, 1, 0, 2359308, 1, 0, 2359309, 1, 0, 2359310, 1, 0, 2359311, 1, 0, 2359312, 1, 0, 2359313, 1, 0, 2359314, 1, 0, 2359315, 1, 0, 2359316, 1, 0, 2359317, 1, 0, 2359318, 1, 0, 2359319, 1, 0, 2359320, 1, 0, 2359321, 1, 0, 2359322, 1, 0, 2359323, 1, 0, 2359324, 1, 0, 2359325, 1, 0, 2359326, 1, 0, 2359327, 1, 0, 2359328, 1, 0, 2359329, 1, 0, 2359330, 1, 0, 2359331, 1, 0, 2359332, 1, 0, 2359333, 1, 0, 2359334, 1, 0, 2359335, 1, 0, 2359336, 1, 0, 2359337, 1, 0, 2359338, 1, 0, 2359339, 1, 0, 2359340, 1, 0, 2490365, 1, 0, 2490366, 1, 0, 2490367, 1, 0, 2424832, 1, 0, 2424833, 1, 0, 2424834, 1, 0, 2424835, 1, 0, 2424836, 1, 0, 2424837, 1, 0, 2424838, 1, 0, 2424839, 1, 0, 2424840, 1, 0, 2424841, 1, 0, 2424842, 1, 0, 2424843, 1, 0, 2424844, 1, 0, 2424845, 1, 0, 2424846, 1, 0, 2424847, 1, 0, 2424848, 1, 0, 2424849, 1, 0, 2424850, 1, 0, 2424851, 1, 0, 2424852, 1, 0, 2424853, 1, 0, 2424854, 1, 0, 2424855, 1, 0, 2424856, 1, 0, 2424857, 1, 0, 2424858, 1, 0, 2424859, 1, 0, 2424860, 1, 0, 2424861, 1, 0, 2424862, 1, 0, 2424863, 1, 0, 2424864, 1, 0, 2424865, 1, 0, 2424866, 1, 0, 2424867, 1, 0, 2424868, 1, 0, 2424869, 1, 0, 2424870, 1, 0, 2424871, 1, 0, 2424872, 1, 0, 2424873, 1, 0, 2424874, 1, 0, 2424875, 1, 0, 2424876, 1, 0, 2555903, 1, 0, 2490368, 1, 0, 2490369, 1, 0, 2490370, 1, 0, 2490371, 1, 0, 2490372, 1, 0, 2490373, 1, 0, 2490374, 1, 0, 2490375, 1, 0, 2490376, 1, 0, 2490377, 1, 0, 2490378, 1, 0, 2490379, 1, 0, 2490380, 1, 0, 2490381, 1, 0, 2490382, 1, 0, 2490383, 1, 0, 2490384, 1, 0, 2490385, 1, 0, 2490386, 1, 0, 2490387, 1, 0, 2490388, 1, 0, 2490389, 1, 0, 2490390, 1, 0, 2490391, 1, 0, 2490392, 1, 0, 2490393, 1, 0, 2490394, 1, 0, 2490395, 1, 0, 2490396, 1, 0, 2490397, 1, 0, 2490398, 1, 0, 2490399, 1, 0, 2490400, 1, 0, 2490401, 1, 0, 2490402, 1, 0, 2490403, 1, 0, 2490404, 1, 0, 2490405, 1, 0, 2490406, 1, 0, 2490407, 1, 0, 2490408, 1, 0, 2490409, 1, 0, 2490410, 1, 0, 2490411, 1, 0, 2555904, 1, 0, 2555905, 1, 0, 2555906, 1, 0, 2555907, 1, 0, 2555908, 1, 0, 2555909, 1, 0, 2555910, 1, 0, 2555911, 1, 0, 2555912, 1, 0, 2555913, 1, 0, 2555914, 1, 0, 2555915, 1, 0, 2555916, 1, 0, 2555917, 1, 0, 2555918, 1, 0, 2555919, 1, 0, 2555920, 1, 0, 2555921, 1, 0, 2555922, 1, 0, 2555923, 1, 0, 2555924, 1, 0, 2555925, 1, 0, 2555926, 1, 0, 2555927, 1, 0, 2555928, 1, 0, 2555929, 1, 0, 2555930, 1, 0, 2555931, 1, 0, 2555932, 1, 0, 2555933, 1, 0, 2555934, 1, 0, 2555935, 1, 0, 2555936, 1, 0, 2555937, 1, 0, 2555938, 1, 0, 2555939, 1, 0, 2555940, 1, 0, 2555941, 1, 0, 2555942, 1, 0, 2555943, 1, 0, 2555944, 1, 0, 2555945, 1, 0, 2555946, 1, 0, 2555947, 1, 0, 2621441, 1, 0, 2621442, 1, 0, 2621443, 1, 0, 2621444, 1, 0, 2621445, 1, 0, 2621446, 1, 0, 2621447, 1, 0, 2621448, 1, 0, 2621449, 1, 0, 2621450, 1, 0, 2621451, 1, 0, 2621452, 1, 0, 2621453, 1, 0, 2621454, 1, 0, 2621455, 1, 0, 2621456, 1, 0, 2621457, 1, 0, 2621458, 1, 0, 2621459, 1, 0, 2621460, 1, 0, 2621461, 1, 0, 2621462, 1, 0, 2621463, 1, 0, 2621464, 1, 0, 2621465, 1, 0, 2621466, 1, 0, 2621467, 1, 0, 2621468, 1, 0, 2621469, 1, 0, 2621470, 1, 0, 2621471, 1, 0, 2621472, 1, 0, 2621473, 1, 0, 2621474, 1, 0, 2621475, 1, 0, 2621476, 1, 0, 2621477, 1, 0, 2621478, 1, 0, 2621479, 1, 0, 2621480, 1, 0, 2621481, 1, 0, 2621482, 1, 0, 2686979, 1, 0, 2686980, 1, 0, 2686981, 1, 0, 2686982, 1, 0, 2686983, 1, 0, 2686984, 1, 0, 2686985, 1, 0, 2686986, 1, 0, 2686987, 1, 0, 2686988, 1, 0, 2686989, 1, 0, 2686990, 1, 0, 2686991, 1, 0, 2686992, 1, 0, 2686993, 1, 0, 2686994, 1, 0, 2686995, 1, 0, 2686996, 1, 0, 2686997, 1, 0, 2686998, 1, 0, 2686999, 1, 0, 2687000, 1, 0, 2687001, 1, 0, 2687002, 1, 0, 2687003, 1, 0, 2687004, 1, 0, 2687005, 1, 0, 2687006, 1, 0, 2687007, 1, 0, 2687008, 1, 0, 2687009, 1, 0, 2687010, 1, 0, 2687011, 1, 0, 2687012, 1, 0, 2687013, 1, 0, 2687014, 1, 0, 2687015, 1, 0, 2687016, 1, 0, 2687017, 1, 0, 2687018, 1, 0, 2752516, 1, 0, 2752517, 1, 0, 2752518, 1, 0, 2752519, 1, 0, 2752520, 1, 0, 2752521, 1, 0, 2752522, 1, 0, 2752523, 1, 0, 2752524, 1, 0, 2752525, 1, 0, 2752526, 1, 0, 2752527, 1, 0, 2752528, 1, 0, 2752529, 1, 0, 2752530, 1, 0, 2752531, 1, 0, 2752532, 1, 0, 2752533, 1, 0, 2752534, 1, 0, 2752535, 1, 0, 2752536, 1, 0, 2752537, 1, 0, 2752538, 1, 0, 2752539, 1, 0, 2752540, 1, 0, 2752541, 1, 0, 2752542, 1, 0, 2752543, 1, 0, 2752544, 1, 0, 2752545, 1, 0, 2752546, 1, 0, 2752547, 1, 0, 2752548, 1, 0, 2752549, 1, 0, 2752550, 1, 0, 2752551, 1, 0, 2752552, 1, 0, 2752553, 1, 0, 2818053, 1, 0, 2818054, 1, 0, 2818055, 1, 0, 2818056, 1, 0, 2818057, 1, 0, 2818058, 1, 0, 2818059, 1, 0, 2818060, 1, 0, 2818061, 1, 0, 2818062, 1, 0, 2818063, 1, 0, 2818064, 1, 0, 2818065, 1, 0, 2818066, 1, 0, 2818067, 1, 0, 2818068, 1, 0, 2818069, 1, 0, 2818070, 1, 0, 2818071, 1, 0, 2818072, 1, 0, 2818073, 1, 0, 2818074, 1, 0, 2818075, 1, 0, 2818076, 1, 0, 2818077, 1, 0, 2818078, 1, 0, 2818079, 1, 0, 2818080, 1, 0, 2818081, 1, 0, 2818082, 1, 0, 2818083, 1, 0, 2818084, 1, 0, 2818085, 1, 0, 2818086, 1, 0, 2818087, 1, 0, 2818088, 1, 0, 2883591, 1, 0, 2883592, 1, 0, 2883593, 1, 0, 2883594, 1, 0, 2883595, 1, 0, 2883596, 1, 0, 2883597, 1, 0, 2883598, 1, 0, 2883599, 1, 0, 2883600, 1, 0, 2883601, 1, 0, 2883602, 1, 0, 2883603, 1, 0, 2883604, 1, 0, 2883605, 1, 0, 2883606, 1, 0, 2883607, 1, 0, 2883608, 1, 0, 2883609, 1, 0, 2883610, 1, 0, 2883611, 1, 0, 2883612, 1, 0, 2883613, 1, 0, 2883614, 1, 0, 2883615, 1, 0, 2883616, 1, 0, 2883617, 1, 0, 2883618, 1, 0, 2883619, 1, 0, 2883620, 1, 0, 2883621, 1, 0, 2883622, 1, 0, 2949128, 1, 0, 2949129, 1, 0, 2949130, 1, 0, 2949131, 1, 0, 2949132, 1, 0, 2949133, 1, 0, 2949134, 1, 0, 2949135, 1, 0, 2949136, 1, 0, 2949137, 1, 0, 2949138, 1, 0, 2949139, 1, 0, 2949140, 1, 0, 2949141, 1, 0, 2949142, 1, 0, 2949143, 1, 0, 2949144, 1, 0, 2949145, 1, 0, 2949146, 1, 0, 2949147, 1, 0, 2949148, 1, 0, 2949149, 1, 0, 2949150, 1, 0, 2949151, 1, 0, 2949152, 1, 0, 2949153, 1, 0, 2949154, 1, 0, 2949155, 1, 0, 2949156, 1, 0, 2949157, 1, 0, 3014665, 1, 0, 3014666, 1, 0, 3014667, 1, 0, 3014668, 1, 0, 3014669, 1, 0, 3014670, 1, 0, 3014671, 1, 0, 3014672, 1, 0, 3014673, 1, 0, 3014674, 1, 0, 3014675, 1, 0, 3014676, 1, 0, 3014677, 1, 0, 3014678, 1, 0, 3014679, 1, 0, 3014680, 1, 0, 3014681, 1, 0, 3014682, 1, 0, 3014683, 1, 0, 3014684, 1, 0, 3014685, 1, 0, 3014686, 1, 0, 3014687, 1, 0, 3014688, 1, 0, 3014689, 1, 0, 3014690, 1, 0, 3014691, 1, 0, 3014692, 1, 0, 3014693, 1, 0, 3080202, 1, 0, 3080203, 1, 0, 3080204, 1, 0, 3080205, 1, 0, 3080206, 1, 0, 3080207, 1, 0, 3080208, 1, 0, 3080209, 1, 0, 3080210, 1, 0, 3080211, 1, 0, 3080212, 1, 0, 3080213, 1, 0, 3080214, 1, 0, 3080215, 1, 0, 3080216, 1, 0, 3080217, 1, 0, 3080218, 1, 0, 3080219, 1, 0, 3080220, 1, 0, 3080221, 1, 0, 3080222, 1, 0, 3080223, 1, 0, 3080224, 1, 0, 3080225, 1, 0, 3080226, 1, 0, 3080227, 1, 0, 3080228, 1, 0, 3145739, 1, 0, 3145740, 1, 0, 3145741, 1, 0, 3145742, 1, 0, 3145743, 1, 0, 3145744, 1, 0, 3145745, 1, 0, 3145746, 1, 0, 3145747, 1, 0, 3145748, 1, 0, 3145749, 1, 0, 3145750, 1, 0, 3145751, 1, 0, 3145752, 1, 0, 3145753, 1, 0, 3145754, 1, 0, 3145755, 1, 0, 3145756, 1, 0, 3145757, 1, 0, 3145758, 1, 0, 3145759, 1, 0, 3145760, 1, 0, 3145761, 1, 0, 3145762, 1, 0, 3145763, 1, 0, 3211276, 1, 0, 3211277, 1, 0, 3211278, 1, 0, 3211279, 1, 0, 3211280, 1, 0, 3211281, 1, 0, 3211282, 1, 0, 3211283, 1, 0, 3211284, 1, 0, 3211285, 1, 0, 3211286, 1, 0, 3211287, 1, 0, 3211288, 1, 0, 3211289, 1, 0, 3211290, 1, 0, 3211291, 1, 0, 3211292, 1, 0, 3211293, 1, 0, 3211294, 1, 0, 3211295, 1, 0, 3211296, 1, 0, 3211297, 1, 0, 3211298, 1, 0, 3276813, 1, 0, 3276814, 1, 0, 3276815, 1, 0, 3276816, 1, 0, 3276817, 1, 0, 3276818, 1, 0, 3276819, 1, 0, 3276820, 1, 0, 3276821, 1, 0, 3276822, 1, 0, 3276823, 1, 0, 3276824, 1, 0, 3276825, 1, 0, 3276826, 1, 0, 3276827, 1, 0, 3276828, 1, 0, 3276829, 1, 0, 3276830, 1, 0, 3276831, 1, 0, 3276832, 1, 0, 3342351, 1, 0, 3342352, 1, 0, 3342353, 1, 0, 3342354, 1, 0, 3342355, 1, 0, 3342356, 1, 0, 3342357, 1, 0, 3342358, 1, 0, 3342359, 1, 0, 3342360, 1, 0, 3342361, 1, 0, 3342362, 1, 0, 3342363, 1, 0, 3342364, 1, 0, 3342365, 1, 0, 3342366, 1, 0, 3342367, 1, 0, 3407888, 1, 0, 3407889, 1, 0, 3407890, 1, 0, 3407891, 1, 0, 3407892, 1, 0, 3407893, 1, 0, 3407894, 1, 0, 3407895, 1, 0, 3407896, 1, 0, 3407897, 1, 0, 3407898, 1, 0, 3407899, 1, 0, 3407900, 1, 0, 3407901, 1, 0, 3473427, 1, 0, 3473428, 1, 0, 3473429, 1, 0, 3473430, 1, 0, 3473431, 1, 0, 3473432, 1, 0, 3473433, 1, 0, 3473434, 1, 0 ) diff --git a/game/test_iso_tileset/TileMap52x28.tscn b/game/test_iso_tileset/TileMap52x28.tscn new file mode 100644 index 0000000..1445b16 --- /dev/null +++ b/game/test_iso_tileset/TileMap52x28.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://test_iso_tileset/new_tileset.tres" type="TileSet" id=1] + +[node name="TileMap" type="TileMap"] +mode = 1 +tile_set = ExtResource( 1 ) +cell_size = Vector2( 52, 28 ) +cell_y_sort = true +format = 1 +tile_data = PoolIntArray( -3801106, 2, 0, -3670043, 2, 0, -3473452, 0, 0, -3473451, 0, 0, -3473450, 0, 0, -3407917, 0, 0, -3407916, 0, 0, -3407915, 0, 0, -3407914, 0, 0, -3407913, 0, 0, -3407912, 0, 0, -3407911, 0, 0, -3407910, 0, 0, -3407909, 0, 0, -3342381, 0, 0, -3342380, 0, 0, -3342379, 0, 0, -3342378, 0, 0, -3342377, 0, 0, -3342376, 0, 0, -3342375, 0, 0, -3342374, 0, 0, -3342373, 0, 0, -3342372, 0, 0, -3342371, 0, 0, -3342370, 0, 0, -3342369, 0, 0, -3342368, 0, 0, -3342367, 0, 0, -3342366, 0, 0, -3276845, 0, 0, -3276844, 0, 0, -3276843, 0, 0, -3276842, 0, 0, -3276841, 0, 0, -3276840, 0, 0, -3276839, 0, 0, -3276838, 0, 0, -3276837, 0, 0, -3276836, 0, 0, -3276835, 0, 0, -3276834, 0, 0, -3276833, 0, 0, -3276832, 0, 0, -3276831, 0, 0, -3276830, 0, 0, -3276829, 0, 0, -3276828, 0, 0, -3276827, 0, 0, -3276826, 0, 0, -3211309, 0, 0, -3211308, 0, 0, -3211307, 0, 0, -3211306, 0, 0, -3211305, 0, 0, -3211304, 0, 0, -3211303, 0, 0, -3211302, 0, 0, -3211301, 0, 0, -3211300, 0, 0, -3211299, 0, 0, -3211298, 0, 0, -3211297, 0, 0, -3211296, 0, 0, -3211295, 0, 0, -3211294, 0, 0, -3211293, 0, 0, -3211292, 0, 0, -3211291, 0, 0, -3211290, 0, 0, -3211289, 0, 0, -3211288, 0, 0, -3211287, 0, 0, -3211286, 0, 0, -3211285, 0, 0, -3211284, 0, 0, -3211283, 0, 0, -3211282, 0, 0, -3145773, 0, 0, -3145772, 0, 0, -3145771, 0, 0, -3145770, 0, 0, -3145769, 0, 0, -3145768, 0, 0, -3145767, 0, 0, -3145766, 0, 0, -3145765, 0, 0, -3145764, 0, 0, -3145763, 0, 0, -3145762, 0, 0, -3145761, 0, 0, -3145760, 0, 0, -3145759, 0, 0, -3145758, 0, 0, -3145757, 0, 0, -3145756, 0, 0, -3145755, 0, 0, -3145754, 0, 0, -3145753, 0, 0, -3145752, 0, 0, -3145751, 0, 0, -3145750, 0, 0, -3145749, 0, 0, -3145748, 0, 0, -3145747, 0, 0, -3145746, 0, 0, -3145745, 0, 0, -3145744, 0, 0, -3145743, 0, 0, -3145742, 0, 0, -3145741, 0, 0, -3145740, 0, 0, -3145739, 0, 0, -3145738, 0, 0, -3145737, 0, 0, -3080237, 0, 0, -3080236, 0, 0, -3080235, 0, 0, -3080234, 0, 0, -3080233, 0, 0, -3080232, 0, 0, -3080231, 0, 0, -3080230, 0, 0, -3080229, 0, 0, -3080228, 0, 0, -3080227, 0, 0, -3080226, 0, 0, -3080225, 0, 0, -3080224, 0, 0, -3080223, 0, 0, -3080222, 0, 0, -3080221, 0, 0, -3080220, 0, 0, -3080219, 0, 0, -3080218, 0, 0, -3080217, 0, 0, -3080216, 0, 0, -3080215, 0, 0, -3080214, 0, 0, -3080213, 0, 0, -3080212, 0, 0, -3080211, 0, 0, -3080210, 0, 0, -3080209, 0, 0, -3080208, 0, 0, -3080207, 0, 0, -3080206, 0, 0, -3080205, 0, 0, -3080204, 0, 0, -3080203, 0, 0, -3080202, 0, 0, -3080201, 0, 0, -3080200, 0, 0, -3080199, 0, 0, -3080198, 0, 0, -3014701, 0, 0, -3014700, 0, 0, -3014699, 0, 0, -3014698, 0, 0, -3014697, 0, 0, -3014696, 0, 0, -3014695, 0, 0, -3014694, 0, 0, -3014693, 0, 0, -3014692, 0, 0, -3014691, 0, 0, -3014690, 0, 0, -3014689, 0, 0, -3014688, 0, 0, -3014687, 0, 0, -3014686, 0, 0, -3014685, 0, 0, -3014684, 0, 0, -3014683, 0, 0, -3014682, 0, 0, -3014681, 0, 0, -3014680, 0, 0, -3014679, 0, 0, -3014678, 0, 0, -3014677, 0, 0, -3014676, 0, 0, -3014675, 0, 0, -3014674, 0, 0, -3014673, 0, 0, -3014672, 0, 0, -3014671, 0, 0, -3014670, 0, 0, -3014669, 0, 0, -3014668, 0, 0, -3014667, 0, 0, -3014666, 0, 0, -3014665, 0, 0, -3014664, 0, 0, -3014663, 0, 0, -3014662, 0, 0, -3014661, 0, 0, -3014660, 0, 0, -3014659, 0, 0, -3014658, 0, 0, -2949165, 0, 0, -2949164, 0, 0, -2949163, 0, 0, -2949162, 0, 0, -2949161, 0, 0, -2949160, 0, 0, -2949159, 0, 0, -2949158, 0, 0, -2949157, 0, 0, -2949156, 0, 0, -2949155, 0, 0, -2949154, 0, 0, -2949153, 0, 0, -2949152, 0, 0, -2949151, 0, 0, -2949150, 0, 0, -2949149, 0, 0, -2949148, 0, 0, -2949147, 0, 0, -2949146, 0, 0, -2949145, 0, 0, -2949144, 0, 0, -2949143, 0, 0, -2949142, 0, 0, -2949141, 0, 0, -2949140, 0, 0, -2949139, 0, 0, -2949138, 0, 0, -2949137, 0, 0, -2949136, 0, 0, -2949135, 0, 0, -2949134, 0, 0, -2949133, 0, 0, -2949132, 0, 0, -2949131, 0, 0, -2949130, 0, 0, -2949129, 0, 0, -2949128, 0, 0, -2949127, 0, 0, -2949126, 0, 0, -2949125, 0, 0, -2949124, 0, 0, -2949123, 0, 0, -2949122, 0, 0, -2949121, 0, 0, -3014656, 0, 0, -3014655, 0, 0, -3014654, 0, 0, -2883628, 0, 0, -2883627, 0, 0, -2883626, 0, 0, -2883625, 0, 0, -2883624, 0, 0, -2883623, 0, 0, -2883622, 0, 0, -2883621, 0, 0, -2883620, 0, 0, -2883619, 0, 0, -2883618, 0, 0, -2883617, 0, 0, -2883616, 0, 0, -2883615, 0, 0, -2883614, 0, 0, -2883613, 0, 0, -2883612, 0, 0, -2883611, 0, 0, -2883610, 0, 0, -2883609, 0, 0, -2883608, 0, 0, -2883607, 0, 0, -2883606, 0, 0, -2883605, 0, 0, -2883604, 0, 0, -2883603, 0, 0, -2883602, 0, 0, -2883601, 0, 0, -2883600, 0, 0, -2883599, 0, 0, -2883598, 0, 0, -2883597, 0, 0, -2883596, 0, 0, -2883595, 0, 0, -2883594, 0, 0, -2883593, 0, 0, -2883592, 0, 0, -2883591, 0, 0, -2883590, 0, 0, -2883589, 0, 0, -2883588, 0, 0, -2883587, 0, 0, -2883586, 0, 0, -2883585, 0, 0, -2949120, 0, 0, -2949119, 0, 0, -2949118, 0, 0, -2949117, 0, 0, -2949116, 0, 0, -2949115, 0, 0, -2949114, 0, 0, -2818092, 0, 0, -2818091, 0, 0, -2818090, 0, 0, -2818089, 0, 0, -2818088, 0, 0, -2818087, 0, 0, -2818086, 0, 0, -2818085, 0, 0, -2818084, 0, 0, -2818083, 0, 0, -2818082, 0, 0, -2818081, 0, 0, -2818080, 0, 0, -2818079, 0, 0, -2818078, 0, 0, -2818077, 0, 0, -2818076, 0, 0, -2818075, 0, 0, -2818074, 0, 0, -2818073, 0, 0, -2818072, 0, 0, -2818071, 0, 0, -2818070, 0, 0, -2818069, 0, 0, -2818068, 0, 0, -2818067, 0, 0, -2818066, 0, 0, -2818065, 0, 0, -2818064, 0, 0, -2818063, 0, 0, -2818062, 0, 0, -2818061, 0, 0, -2818060, 0, 0, -2818059, 0, 0, -2818058, 0, 0, -2818057, 0, 0, -2818056, 0, 0, -2818055, 0, 0, -2818054, 0, 0, -2818053, 0, 0, -2818052, 0, 0, -2818051, 0, 0, -2818050, 0, 0, -2818049, 0, 0, -2883584, 0, 0, -2883583, 0, 0, -2883582, 0, 0, -2883581, 0, 0, -2883580, 0, 0, -2883579, 0, 0, -2883578, 0, 0, -2883577, 0, 0, -2883576, 0, 0, -2752556, 0, 0, -2752555, 0, 0, -2752554, 0, 0, -2752553, 0, 0, -2752552, 0, 0, -2752551, 0, 0, -2752550, 0, 0, -2752549, 0, 0, -2752548, 0, 0, -2752547, 0, 0, -2752546, 0, 0, -2752545, 0, 0, -2752544, 0, 0, -2752543, 0, 0, -2752542, 0, 0, -2752541, 0, 0, -2752540, 0, 0, -2752539, 0, 0, -2752538, 0, 0, -2752537, 0, 0, -2752536, 0, 0, -2752535, 0, 0, -2752534, 0, 0, -2752533, 0, 0, -2752532, 0, 0, -2752531, 0, 0, -2752530, 0, 0, -2752529, 0, 0, -2752528, 0, 0, -2752527, 0, 0, -2752526, 0, 0, -2752525, 0, 0, -2752524, 0, 0, -2752523, 0, 0, -2752522, 0, 0, -2752521, 0, 0, -2752520, 0, 0, -2752519, 0, 0, -2752518, 0, 0, -2752517, 0, 0, -2752516, 0, 0, -2752515, 0, 0, -2752514, 0, 0, -2752513, 0, 0, -2818048, 0, 0, -2818047, 0, 0, -2818046, 0, 0, -2818045, 0, 0, -2818044, 0, 0, -2818043, 0, 0, -2818042, 0, 0, -2818041, 0, 0, -2818040, 0, 0, -2818039, 0, 0, -2818038, 0, 0, -2818037, 0, 0, -2818036, 0, 0, -2687020, 0, 0, -2687019, 0, 0, -2687018, 0, 0, -2687017, 0, 0, -2687016, 0, 0, -2687015, 0, 0, -2687014, 0, 0, -2687013, 0, 0, -2687012, 0, 0, -2687011, 0, 0, -2687010, 0, 0, -2687009, 0, 0, -2687008, 0, 0, -2687007, 0, 0, -2687006, 0, 0, -2687005, 0, 0, -2687004, 0, 0, -2687003, 0, 0, -2687002, 0, 0, -2687001, 0, 0, -2687000, 0, 0, -2686999, 0, 0, -2686998, 0, 0, -2686997, 0, 0, -2686996, 0, 0, -2686995, 0, 0, -2686994, 0, 0, -2686993, 0, 0, -2686992, 0, 0, -2686991, 0, 0, -2686990, 0, 0, -2686989, 0, 0, -2686988, 0, 0, -2686987, 0, 0, -2686986, 0, 0, -2686985, 0, 0, -2686984, 0, 0, -2686983, 0, 0, -2686982, 0, 0, -2686981, 0, 0, -2686980, 0, 0, -2686979, 0, 0, -2686978, 0, 0, -2686977, 0, 0, -2752512, 0, 0, -2752511, 0, 0, -2752510, 0, 0, -2752509, 0, 0, -2752508, 0, 0, -2752507, 0, 0, -2752506, 0, 0, -2752505, 0, 0, -2752504, 0, 0, -2752503, 0, 0, -2752502, 0, 0, -2752501, 0, 0, -2752500, 0, 0, -2752499, 0, 0, -2752498, 0, 0, -2752497, 0, 0, -2621484, 0, 0, -2621483, 0, 0, -2621482, 0, 0, -2621481, 0, 0, -2621480, 0, 0, -2621479, 0, 0, -2621478, 0, 0, -2621477, 0, 0, -2621476, 0, 0, -2621475, 0, 0, -2621474, 0, 0, -2621473, 0, 0, -2621472, 0, 0, -2621471, 0, 0, -2621470, 0, 0, -2621469, 0, 0, -2621468, 0, 0, -2621467, 0, 0, -2621466, 0, 0, -2621465, 0, 0, -2621464, 0, 0, -2621463, 0, 0, -2621462, 0, 0, -2621461, 0, 0, -2621460, 0, 0, -2621459, 0, 0, -2621458, 0, 0, -2621457, 0, 0, -2621456, 0, 0, -2621455, 0, 0, -2621454, 0, 0, -2621453, 0, 0, -2621452, 0, 0, -2621451, 0, 0, -2621450, 0, 0, -2621449, 0, 0, -2621448, 0, 0, -2621447, 0, 0, -2621446, 0, 0, -2621445, 0, 0, -2621444, 0, 0, -2621443, 0, 0, -2621442, 0, 0, -2621441, 0, 0, -2686976, 0, 0, -2686975, 0, 0, -2686974, 0, 0, -2686973, 0, 0, -2686972, 0, 0, -2686971, 0, 0, -2686970, 0, 0, -2686969, 0, 0, -2686968, 0, 0, -2686967, 0, 0, -2686966, 0, 0, -2686965, 0, 0, -2686964, 0, 0, -2686963, 0, 0, -2686962, 0, 0, -2686961, 0, 0, -2686960, 0, 0, -2686959, 0, 0, -2555948, 0, 0, -2555947, 0, 0, -2555946, 0, 0, -2555945, 0, 0, -2555944, 0, 0, -2555943, 0, 0, -2555942, 0, 0, -2555941, 0, 0, -2555940, 0, 0, -2555939, 0, 0, -2555938, 0, 0, -2555937, 0, 0, -2555936, 0, 0, -2555935, 0, 0, -2555934, 0, 0, -2555933, 0, 0, -2555932, 0, 0, -2555931, 0, 0, -2555930, 0, 0, -2555929, 0, 0, -2555928, 0, 0, -2555927, 0, 0, -2555926, 0, 0, -2555925, 0, 0, -2555924, 0, 0, -2555923, 0, 0, -2555922, 0, 0, -2555921, 0, 0, -2555920, 0, 0, -2555919, 0, 0, -2555918, 0, 0, -2555917, 0, 0, -2555916, 0, 0, -2555915, 0, 0, -2555914, 0, 0, -2555913, 0, 0, -2555912, 0, 0, -2555911, 0, 0, -2555910, 0, 0, -2555909, 0, 0, -2555908, 0, 0, -2555907, 0, 0, -2555906, 0, 0, -2555905, 0, 0, -2621440, 0, 0, -2621439, 0, 0, -2621438, 0, 0, -2621437, 0, 0, -2621436, 0, 0, -2621435, 0, 0, -2621434, 0, 0, -2621433, 0, 0, -2621432, 0, 0, -2621431, 0, 0, -2621430, 0, 0, -2621429, 0, 0, -2621428, 0, 0, -2621427, 0, 0, -2621426, 0, 0, -2621425, 0, 0, -2621424, 0, 0, -2621423, 0, 0, -2621422, 0, 0, -2621421, 0, 0, -2490412, 0, 0, -2490411, 0, 0, -2490410, 0, 0, -2490409, 0, 0, -2490408, 0, 0, -2490407, 0, 0, -2490406, 0, 0, -2490405, 0, 0, -2490404, 0, 0, -2490403, 0, 0, -2490402, 0, 0, -2490401, 0, 0, -2490400, 0, 0, -2490399, 0, 0, -2490398, 0, 0, -2490397, 0, 0, -2490396, 0, 0, -2490395, 0, 0, -2490394, 0, 0, -2490393, 0, 0, -2490392, 0, 0, -2490391, 0, 0, -2490390, 0, 0, -2490389, 0, 0, -2490388, 0, 0, -2490387, 0, 0, -2490386, 0, 0, -2490385, 0, 0, -2490384, 0, 0, -2490383, 0, 0, -2490382, 0, 0, -2490381, 0, 0, -2490380, 0, 0, -2490379, 0, 0, -2490378, 0, 0, -2490377, 0, 0, -2490376, 0, 0, -2490375, 0, 0, -2490374, 0, 0, -2490373, 0, 0, -2490372, 0, 0, -2490371, 0, 0, -2490370, 0, 0, -2490369, 0, 0, -2555904, 0, 0, -2555903, 0, 0, -2555902, 0, 0, -2555901, 0, 0, -2555900, 0, 0, -2555899, 0, 0, -2555898, 0, 0, -2555897, 0, 0, -2555896, 0, 0, -2555895, 0, 0, -2555894, 0, 0, -2555893, 0, 0, -2555892, 0, 0, -2555891, 0, 0, -2555890, 0, 0, -2555889, 0, 0, -2555888, 0, 0, -2555887, 0, 0, -2555886, 0, 0, -2555885, 0, 0, -2555884, 0, 0, -2555883, 0, 0, -2424876, 0, 0, -2424875, 0, 0, -2424874, 0, 0, -2424873, 0, 0, -2424872, 0, 0, -2424871, 0, 0, -2424870, 0, 0, -2424869, 0, 0, -2424868, 0, 0, -2424867, 0, 0, -2424866, 0, 0, -2424865, 0, 0, -2424864, 0, 0, -2424863, 0, 0, -2424862, 0, 0, -2424861, 0, 0, -2424860, 0, 0, -2424859, 0, 0, -2424858, 0, 0, -2424857, 0, 0, -2424856, 0, 0, -2424855, 0, 0, -2424854, 0, 0, -2424853, 0, 0, -2424852, 0, 0, -2424851, 0, 0, -2424850, 0, 0, -2424849, 0, 0, -2424848, 0, 0, -2424847, 0, 0, -2424846, 0, 0, -2424845, 0, 0, -2424844, 0, 0, -2424843, 0, 0, -2424842, 0, 0, -2424841, 0, 0, -2424840, 0, 0, -2424839, 0, 0, -2424838, 0, 0, -2424837, 0, 0, -2424836, 0, 0, -2424835, 0, 0, -2424834, 0, 0, -2424833, 0, 0, -2490368, 0, 0, -2490367, 0, 0, -2490366, 0, 0, -2490365, 0, 0, -2490364, 0, 0, -2490363, 0, 0, -2490362, 0, 0, -2490361, 0, 0, -2490360, 0, 0, -2490359, 0, 0, -2490358, 0, 0, -2490357, 0, 0, -2490356, 0, 0, -2490355, 0, 0, -2490354, 0, 0, -2490353, 0, 0, -2490352, 0, 0, -2490351, 0, 0, -2490350, 0, 0, -2490349, 0, 0, -2490348, 0, 0, -2490347, 0, 0, -2490346, 0, 0, -2490345, 0, 0, -2359339, 0, 0, -2359338, 0, 0, -2359337, 0, 0, -2359336, 0, 0, -2359335, 0, 0, -2359334, 0, 0, -2359333, 0, 0, -2359332, 0, 0, -2359331, 0, 0, -2359330, 0, 0, -2359329, 0, 0, -2359328, 0, 0, -2359327, 0, 0, -2359326, 0, 0, -2359325, 0, 0, -2359324, 0, 0, -2359323, 0, 0, -2359322, 0, 0, -2359321, 0, 0, -2359320, 0, 0, -2359319, 0, 0, -2359318, 0, 0, -2359317, 0, 0, -2359316, 0, 0, -2359315, 0, 0, -2359314, 0, 0, -2359313, 0, 0, -2359312, 0, 0, -2359311, 0, 0, -2359310, 0, 0, -2359309, 0, 0, -2359308, 0, 0, -2359307, 0, 0, -2359306, 0, 0, -2359305, 0, 0, -2359304, 0, 0, -2359303, 0, 0, -2359302, 0, 0, -2359301, 0, 0, -2359300, 0, 0, -2359299, 0, 0, -2359298, 0, 0, -2359297, 0, 0, -2424832, 0, 0, -2424831, 0, 0, -2424830, 0, 0, -2424829, 0, 0, -2424828, 0, 0, -2424827, 0, 0, -2424826, 0, 0, -2424825, 0, 0, -2424824, 0, 0, -2424823, 0, 0, -2424822, 0, 0, -2424821, 0, 0, -2424820, 0, 0, -2424819, 0, 0, -2424818, 0, 0, -2424817, 0, 0, -2424816, 0, 0, -2424815, 0, 0, -2424814, 0, 0, -2424813, 0, 0, -2424812, 0, 0, -2424811, 0, 0, -2424810, 0, 0, -2424809, 0, 0, -2424808, 0, 0, -2424807, 0, 0, -2424806, 0, 0, -2293803, 0, 0, -2293802, 0, 0, -2293801, 0, 0, -2293800, 0, 0, -2293799, 0, 0, -2293798, 0, 0, -2293797, 0, 0, -2293796, 0, 0, -2293795, 0, 0, -2293794, 0, 0, -2293793, 0, 0, -2293792, 0, 0, -2293791, 0, 0, -2293790, 0, 0, -2293789, 0, 0, -2293788, 0, 0, -2293787, 0, 0, -2293786, 0, 0, -2293785, 0, 0, -2293784, 0, 0, -2293783, 0, 0, -2293782, 0, 0, -2293781, 0, 0, -2293780, 0, 0, -2293779, 0, 0, -2293778, 0, 0, -2293777, 0, 0, -2293776, 0, 0, -2293775, 0, 0, -2293774, 0, 0, -2293773, 0, 0, -2293772, 0, 0, -2293771, 0, 0, -2293770, 0, 0, -2293769, 0, 0, -2293768, 0, 0, -2293767, 0, 0, -2293766, 0, 0, -2293765, 0, 0, -2293764, 0, 0, -2293763, 0, 0, -2293762, 0, 0, -2293761, 0, 0, -2359296, 0, 0, -2359295, 0, 0, -2359294, 0, 0, -2359293, 0, 0, -2359292, 0, 0, -2359291, 0, 0, -2359290, 0, 0, -2359289, 0, 0, -2359288, 0, 0, -2359287, 0, 0, -2359286, 0, 0, -2359285, 0, 0, -2359284, 0, 0, -2359283, 0, 0, -2359282, 0, 0, -2359281, 0, 0, -2359280, 0, 0, -2359279, 0, 0, -2359278, 0, 0, -2359277, 0, 0, -2359276, 0, 0, -2359275, 0, 0, -2359274, 0, 0, -2359273, 0, 0, -2359272, 0, 0, -2359271, 0, 0, -2359270, 0, 0, -2359269, 0, 0, -2359268, 0, 0, -2228267, 0, 0, -2228266, 0, 0, -2228265, 0, 0, -2228264, 0, 0, -2228263, 0, 0, -2228262, 0, 0, -2228261, 0, 0, -2228260, 0, 0, -2228259, 0, 0, -2228258, 0, 0, -2228257, 0, 0, -2228256, 0, 0, -2228255, 0, 0, -2228254, 0, 0, -2228253, 0, 0, -2228252, 0, 0, -2228251, 0, 0, -2228250, 0, 0, -2228249, 0, 0, -2228248, 0, 0, -2228247, 0, 0, -2228246, 0, 0, -2228245, 0, 0, -2228244, 0, 0, -2228243, 0, 0, -2228242, 0, 0, -2228241, 0, 0, -2228240, 0, 0, -2228239, 0, 0, -2228238, 0, 0, -2228237, 0, 0, -2228236, 0, 0, -2228235, 0, 0, -2228234, 0, 0, -2228233, 0, 0, -2228232, 0, 0, -2228231, 0, 0, -2228230, 0, 0, -2228229, 0, 0, -2228228, 0, 0, -2228227, 0, 0, -2228226, 0, 0, -2228225, 0, 0, -2293760, 0, 0, -2293759, 0, 0, -2293758, 0, 0, -2293757, 0, 0, -2293756, 0, 0, -2293755, 0, 0, -2293754, 0, 0, -2293753, 0, 0, -2293752, 0, 0, -2293751, 0, 0, -2293750, 0, 0, -2293749, 0, 0, -2293748, 0, 0, -2293747, 0, 0, -2293746, 0, 0, -2293745, 0, 0, -2293744, 0, 0, -2293743, 0, 0, -2293742, 0, 0, -2293741, 0, 0, -2293740, 0, 0, -2293739, 0, 0, -2293738, 0, 0, -2293737, 0, 0, -2293736, 0, 0, -2293735, 0, 0, -2293734, 0, 0, -2293733, 0, 0, -2293732, 0, 0, -2293731, 0, 0, -2293730, 0, 0, -2293729, 0, 0, -2293728, 0, 0, -2162731, 0, 0, -2162730, 0, 0, -2162729, 0, 0, -2162728, 0, 0, -2162727, 0, 0, -2162726, 0, 0, -2162725, 0, 0, -2162724, 0, 0, -2162723, 0, 0, -2162722, 0, 0, -2162721, 0, 0, -2162720, 0, 0, -2162719, 0, 0, -2162718, 0, 0, -2162717, 0, 0, -2162716, 0, 0, -2162715, 0, 0, -2162714, 0, 0, -2162713, 0, 0, -2162712, 0, 0, -2162711, 0, 0, -2162710, 0, 0, -2162709, 0, 0, -2162708, 0, 0, -2162707, 0, 0, -2162706, 0, 0, -2162705, 0, 0, -2162704, 0, 0, -2162703, 0, 0, -2162702, 0, 0, -2162701, 0, 0, -2162700, 0, 0, -2162699, 0, 0, -2162698, 0, 0, -2162697, 0, 0, -2162696, 0, 0, -2162695, 0, 0, -2162694, 0, 0, -2162693, 0, 0, -2162692, 0, 0, -2162691, 0, 0, -2162690, 0, 0, -2162689, 0, 0, -2228224, 0, 0, -2228223, 0, 0, -2228222, 0, 0, -2228221, 0, 0, -2228220, 0, 0, -2228219, 0, 0, -2228218, 0, 0, -2228217, 0, 0, -2228216, 0, 0, -2228215, 0, 0, -2228214, 0, 0, -2228213, 0, 0, -2228212, 0, 0, -2228211, 0, 0, -2228210, 0, 0, -2228209, 0, 0, -2228208, 0, 0, -2228207, 0, 0, -2228206, 0, 0, -2228205, 0, 0, -2228204, 0, 0, -2228203, 0, 0, -2228202, 0, 0, -2228201, 0, 0, -2228200, 0, 0, -2228199, 0, 0, -2228198, 0, 0, -2228197, 0, 0, -2228196, 0, 0, -2228195, 0, 0, -2228194, 0, 0, -2228193, 0, 0, -2228192, 0, 0, -2097194, 0, 0, -2097193, 0, 0, -2097192, 0, 0, -2097191, 0, 0, -2097190, 0, 0, -2097189, 0, 0, -2097188, 0, 0, -2097187, 0, 0, -2097186, 0, 0, -2097185, 0, 0, -2097184, 0, 0, -2097183, 0, 0, -2097182, 0, 0, -2097181, 0, 0, -2097180, 0, 0, -2097179, 0, 0, -2097178, 0, 0, -2097177, 0, 0, -2097176, 0, 0, -2097175, 0, 0, -2097174, 0, 0, -2097173, 0, 0, -2097172, 0, 0, -2097171, 0, 0, -2097170, 0, 0, -2097169, 0, 0, -2097168, 0, 0, -2097167, 0, 0, -2097166, 0, 0, -2097165, 0, 0, -2097164, 0, 0, -2097163, 0, 0, -2097162, 0, 0, -2097161, 0, 0, -2097160, 0, 0, -2097159, 0, 0, -2097158, 0, 0, -2097157, 0, 0, -2097156, 0, 0, -2097155, 0, 0, -2097154, 0, 0, -2097153, 0, 0, -2162688, 0, 0, -2162687, 0, 0, -2162686, 0, 0, -2162685, 0, 0, -2162684, 0, 0, -2162683, 0, 0, -2162682, 0, 0, -2162681, 0, 0, -2162680, 0, 0, -2162679, 0, 0, -2162678, 0, 0, -2162677, 0, 0, -2162676, 0, 0, -2162675, 0, 0, -2162674, 0, 0, -2162673, 0, 0, -2162672, 0, 0, -2162671, 0, 0, -2162670, 0, 0, -2162669, 0, 0, -2162668, 0, 0, -2162667, 0, 0, -2162666, 0, 0, -2162665, 0, 0, -2162664, 0, 0, -2162663, 0, 0, -2162662, 0, 0, -2162661, 0, 0, -2162660, 0, 0, -2162659, 0, 0, -2162658, 0, 0, -2162657, 0, 0, -2162656, 0, 0, -2162655, 0, 0, -2162654, 0, 0, -2031658, 0, 0, -2031657, 0, 0, -2031656, 0, 0, -2031655, 0, 0, -2031654, 0, 0, -2031653, 0, 0, -2031652, 0, 0, -2031651, 0, 0, -2031650, 0, 0, -2031649, 0, 0, -2031648, 0, 0, -2031647, 0, 0, -2031646, 0, 0, -2031645, 0, 0, -2031644, 0, 0, -2031643, 0, 0, -2031642, 0, 0, -2031641, 0, 0, -2031640, 0, 0, -2031639, 0, 0, -2031638, 0, 0, -2031637, 0, 0, -2031636, 0, 0, -2031635, 0, 0, -2031634, 0, 0, -2031633, 0, 0, -2031632, 0, 0, -2031631, 0, 0, -2031630, 0, 0, -2031629, 0, 0, -2031628, 0, 0, -2031627, 0, 0, -2031626, 0, 0, -2031625, 0, 0, -2031624, 0, 0, -2031623, 0, 0, -2031622, 0, 0, -2031621, 0, 0, -2031620, 0, 0, -2031619, 0, 0, -2031618, 0, 0, -2031617, 0, 0, -2097152, 0, 0, -2097151, 0, 0, -2097150, 0, 0, -2097149, 0, 0, -2097148, 0, 0, -2097147, 0, 0, -2097146, 0, 0, -2097145, 0, 0, -2097144, 0, 0, -2097143, 0, 0, -2097142, 0, 0, -2097141, 0, 0, -2097140, 0, 0, -2097139, 0, 0, -2097138, 0, 0, -2097137, 0, 0, -2097136, 0, 0, -2097135, 0, 0, -2097134, 0, 0, -2097133, 0, 0, -2097132, 0, 0, -2097131, 0, 0, -2097130, 0, 0, -2097129, 0, 0, -2097128, 0, 0, -2097127, 0, 0, -2097126, 0, 0, -2097125, 0, 0, -2097124, 0, 0, -2097123, 0, 0, -2097122, 0, 0, -2097121, 0, 0, -2097120, 0, 0, -2097119, 0, 0, -2097118, 0, 0, -2097117, 0, 0, -2097116, 0, 0, -1966122, 0, 0, -1966121, 0, 0, -1966120, 0, 0, -1966119, 0, 0, -1966118, 0, 0, -1966117, 0, 0, -1966116, 0, 0, -1966115, 0, 0, -1966114, 0, 0, -1966113, 0, 0, -1966112, 0, 0, -1966111, 0, 0, -1966110, 0, 0, -1966109, 0, 0, -1966108, 0, 0, -1966107, 0, 0, -1966106, 0, 0, -1966105, 0, 0, -1966104, 0, 0, -1966103, 0, 0, -1966102, 0, 0, -1966101, 0, 0, -1966100, 0, 0, -1966099, 0, 0, -1966098, 0, 0, -1966097, 0, 0, -1966096, 0, 0, -1966095, 0, 0, -1966094, 0, 0, -1966093, 0, 0, -1966092, 0, 0, -1966091, 0, 0, -1966090, 0, 0, -1966089, 0, 0, -1966088, 0, 0, -1966087, 0, 0, -1966086, 0, 0, -1966085, 0, 0, -1966084, 0, 0, -1966083, 0, 0, -1966082, 0, 0, -1966081, 0, 0, -2031616, 0, 0, -2031615, 0, 0, -2031614, 0, 0, -2031613, 0, 0, -2031612, 0, 0, -2031611, 0, 0, -2031610, 0, 0, -2031609, 0, 0, -2031608, 0, 0, -2031607, 0, 0, -2031606, 0, 0, -2031605, 0, 0, -2031604, 0, 0, -2031603, 0, 0, -2031602, 0, 0, -2031601, 0, 0, -2031600, 0, 0, -2031599, 0, 0, -2031598, 0, 0, -2031597, 0, 0, -2031596, 0, 0, -2031595, 0, 0, -2031594, 0, 0, -2031593, 0, 0, -2031592, 0, 0, -2031591, 0, 0, -2031590, 0, 0, -2031589, 0, 0, -2031588, 0, 0, -2031587, 0, 0, -2031586, 0, 0, -2031585, 0, 0, -2031584, 0, 0, -2031583, 0, 0, -2031582, 0, 0, -2031581, 0, 0, -2031580, 0, 0, -2031579, 0, 0, -2031578, 0, 0, -1900586, 0, 0, -1900585, 0, 0, -1900584, 0, 0, -1900583, 0, 0, -1900582, 0, 0, -1900581, 0, 0, -1900580, 0, 0, -1900579, 0, 0, -1900578, 0, 0, -1900577, 0, 0, -1900576, 0, 0, -1900575, 0, 0, -1900574, 0, 0, -1900573, 0, 0, -1900572, 0, 0, -1900571, 0, 0, -1900570, 0, 0, -1900569, 0, 0, -1900568, 0, 0, -1900567, 0, 0, -1900566, 0, 0, -1900565, 0, 0, -1900564, 0, 0, -1900563, 0, 0, -1900562, 0, 0, -1900561, 0, 0, -1900560, 0, 0, -1900559, 0, 0, -1900558, 0, 0, -1900557, 0, 0, -1900556, 0, 0, -1900555, 0, 0, -1900554, 0, 0, -1900553, 0, 0, -1900552, 0, 0, -1900551, 0, 0, -1900550, 0, 0, -1900549, 0, 0, -1900548, 0, 0, -1900547, 0, 0, -1900546, 0, 0, -1900545, 0, 0, -1966080, 0, 0, -1966079, 0, 0, -1966078, 0, 0, -1966077, 0, 0, -1966076, 0, 0, -1966075, 0, 0, -1966074, 0, 0, -1966073, 0, 0, -1966072, 0, 0, -1966071, 0, 0, -1966070, 0, 0, -1966069, 0, 0, -1966068, 0, 0, -1966067, 0, 0, -1966066, 0, 0, -1966065, 0, 0, -1966064, 0, 0, -1966063, 0, 0, -1966062, 0, 0, -1966061, 0, 0, -1966060, 0, 0, -1966059, 0, 0, -1966058, 0, 0, -1966057, 0, 0, -1966056, 0, 0, -1966055, 0, 0, -1966054, 0, 0, -1966053, 0, 0, -1966052, 0, 0, -1966051, 0, 0, -1966050, 0, 0, -1966049, 0, 0, -1966048, 0, 0, -1966047, 0, 0, -1966046, 0, 0, -1966045, 0, 0, -1966044, 0, 0, -1966043, 0, 0, -1966042, 0, 0, -1966041, 0, 0, -1966040, 0, 0, -1835050, 0, 0, -1835049, 0, 0, -1835048, 0, 0, -1835047, 0, 0, -1835046, 0, 0, -1835045, 0, 0, -1835044, 0, 0, -1835043, 0, 0, -1835042, 0, 0, -1835041, 0, 0, -1835040, 0, 0, -1835039, 0, 0, -1835038, 0, 0, -1835037, 0, 0, -1835036, 0, 0, -1835035, 0, 0, -1835034, 0, 0, -1835033, 0, 0, -1835032, 0, 0, -1835031, 0, 0, -1835030, 0, 0, -1835029, 0, 0, -1835028, 0, 0, -1835027, 0, 0, -1835026, 0, 0, -1835025, 0, 0, -1835024, 0, 0, -1835023, 0, 0, -1835022, 0, 0, -1835021, 0, 0, -1835020, 0, 0, -1835019, 0, 0, -1835018, 0, 0, -1835017, 0, 0, -1835016, 0, 0, -1835015, 0, 0, -1835014, 0, 0, -1835013, 0, 0, -1835012, 0, 0, -1835011, 0, 0, -1835010, 0, 0, -1835009, 0, 0, -1900544, 0, 0, -1900543, 0, 0, -1900542, 0, 0, -1900541, 0, 0, -1900540, 0, 0, -1900539, 0, 0, -1900538, 0, 0, -1900537, 0, 0, -1900536, 0, 0, -1900535, 0, 0, -1900534, 0, 0, -1900533, 0, 0, -1900532, 0, 0, -1900531, 0, 0, -1900530, 0, 0, -1900529, 0, 0, -1900528, 0, 0, -1900527, 0, 0, -1900526, 0, 0, -1900525, 0, 0, -1900524, 0, 0, -1900523, 0, 0, -1900522, 0, 0, -1900521, 0, 0, -1900520, 0, 0, -1900519, 0, 0, -1900518, 0, 0, -1900517, 0, 0, -1900516, 0, 0, -1900515, 0, 0, -1900514, 0, 0, -1900513, 0, 0, -1900512, 0, 0, -1900511, 0, 0, -1900510, 0, 0, -1900509, 0, 0, -1900508, 0, 0, -1900507, 0, 0, -1900506, 0, 0, -1900505, 0, 0, -1900504, 0, 0, -1900503, 0, 0, -1769514, 0, 0, -1769513, 0, 0, -1769512, 0, 0, -1769511, 0, 0, -1769510, 0, 0, -1769509, 0, 0, -1769508, 0, 0, -1769507, 0, 0, -1769506, 0, 0, -1769505, 0, 0, -1769504, 0, 0, -1769503, 0, 0, -1769502, 0, 0, -1769501, 0, 0, -1769500, 0, 0, -1769499, 0, 0, -1769498, 0, 0, -1769497, 0, 0, -1769496, 0, 0, -1769495, 0, 0, -1769494, 0, 0, -1769493, 0, 0, -1769492, 0, 0, -1769491, 0, 0, -1769490, 0, 0, -1769489, 0, 0, -1769488, 0, 0, -1769487, 0, 0, -1769486, 0, 0, -1769485, 0, 0, -1769484, 0, 0, -1769483, 0, 0, -1769482, 0, 0, -1769481, 0, 0, -1769480, 0, 0, -1769479, 0, 0, -1769478, 0, 0, -1769477, 0, 0, -1769476, 0, 0, -1769475, 0, 0, -1769474, 0, 0, -1769473, 0, 0, -1835008, 0, 0, -1835007, 0, 0, -1835006, 0, 0, -1835005, 0, 0, -1835004, 0, 0, -1835003, 0, 0, -1835002, 0, 0, -1835001, 0, 0, -1835000, 0, 0, -1834999, 0, 0, -1834998, 0, 0, -1834997, 0, 0, -1834996, 0, 0, -1834995, 0, 0, -1834994, 0, 0, -1834993, 0, 0, -1834992, 0, 0, -1834991, 0, 0, -1834990, 0, 0, -1834989, 0, 0, -1834988, 0, 0, -1834987, 0, 0, -1834986, 0, 0, -1834985, 0, 0, -1834984, 0, 0, -1834983, 0, 0, -1834982, 0, 0, -1834981, 0, 0, -1834980, 0, 0, -1834979, 0, 0, -1834978, 0, 0, -1834977, 0, 0, -1834976, 0, 0, -1834975, 0, 0, -1834974, 0, 0, -1834973, 0, 0, -1834972, 0, 0, -1834971, 0, 0, -1834970, 0, 0, -1834969, 0, 0, -1834968, 0, 0, -1834967, 0, 0, -1834966, 0, 0, -1703977, 0, 0, -1703976, 0, 0, -1703975, 0, 0, -1703974, 0, 0, -1703973, 0, 0, -1703972, 0, 0, -1703971, 0, 0, -1703970, 0, 0, -1703969, 0, 0, -1703968, 0, 0, -1703967, 0, 0, -1703966, 0, 0, -1703965, 0, 0, -1703964, 0, 0, -1703963, 0, 0, -1703962, 0, 0, -1703961, 0, 0, -1703960, 0, 0, -1703959, 0, 0, -1703958, 0, 0, -1703957, 0, 0, -1703956, 0, 0, -1703955, 0, 0, -1703954, 0, 0, -1703953, 0, 0, -1703952, 0, 0, -1703951, 0, 0, -1703950, 0, 0, -1703949, 0, 0, -1703948, 0, 0, -1703947, 0, 0, -1703946, 0, 0, -1703945, 0, 0, -1703944, 0, 0, -1703943, 0, 0, -1703942, 0, 0, -1703941, 0, 0, -1703940, 0, 0, -1703939, 0, 0, -1703938, 0, 0, -1703937, 0, 0, -1769472, 0, 0, -1769471, 0, 0, -1769470, 0, 0, -1769469, 0, 0, -1769468, 0, 0, -1769467, 0, 0, -1769466, 0, 0, -1769465, 0, 0, -1769464, 0, 0, -1769463, 0, 0, -1769462, 0, 0, -1769461, 0, 0, -1769460, 0, 0, -1769459, 0, 0, -1769458, 0, 0, -1769457, 0, 0, -1769456, 0, 0, -1769455, 0, 0, -1769454, 0, 0, -1769453, 0, 0, -1769452, 0, 0, -1769451, 0, 0, -1769450, 0, 0, -1769449, 0, 0, -1769448, 0, 0, -1769447, 0, 0, -1769446, 0, 0, -1769445, 0, 0, -1769444, 0, 0, -1769443, 0, 0, -1769442, 0, 0, -1769441, 0, 0, -1769440, 0, 0, -1769439, 0, 0, -1769438, 0, 0, -1769437, 0, 0, -1769436, 0, 0, -1769435, 0, 0, -1769434, 0, 0, -1769433, 0, 0, -1769432, 0, 0, -1769431, 0, 0, -1769430, 0, 0, -1769429, 0, 0, -1769428, 0, 0, -1638441, 0, 0, -1638440, 0, 0, -1638439, 0, 0, -1638438, 0, 0, -1638437, 0, 0, -1638436, 0, 0, -1638435, 0, 0, -1638434, 0, 0, -1638433, 0, 0, -1638432, 0, 0, -1638431, 0, 0, -1638430, 0, 0, -1638429, 0, 0, -1638428, 0, 0, -1638427, 0, 0, -1638426, 0, 0, -1638425, 0, 0, -1638424, 0, 0, -1638423, 0, 0, -1638422, 0, 0, -1638421, 0, 0, -1638420, 0, 0, -1638419, 0, 0, -1638418, 0, 0, -1638417, 0, 0, -1638416, 0, 0, -1638415, 0, 0, -1638414, 0, 0, -1638413, 0, 0, -1638412, 0, 0, -1638411, 0, 0, -1638410, 0, 0, -1638409, 0, 0, -1638408, 0, 0, -1638407, 0, 0, -1638406, 0, 0, -1638405, 0, 0, -1638404, 0, 0, -1638403, 0, 0, -1638402, 0, 0, -1638401, 0, 0, -1703936, 0, 0, -1703935, 0, 0, -1703934, 0, 0, -1703933, 0, 0, -1703932, 0, 0, -1703931, 0, 0, -1703930, 0, 0, -1703929, 0, 0, -1703928, 0, 0, -1703927, 0, 0, -1703926, 0, 0, -1703925, 0, 0, -1703924, 0, 0, -1703923, 0, 0, -1703922, 0, 0, -1703921, 0, 0, -1703920, 0, 0, -1703919, 0, 0, -1703918, 0, 0, -1703917, 0, 0, -1703916, 0, 0, -1703915, 0, 0, -1703914, 0, 0, -1703913, 0, 0, -1703912, 0, 0, -1703911, 0, 0, -1703910, 0, 0, -1703909, 0, 0, -1703908, 0, 0, -1703907, 0, 0, -1703906, 0, 0, -1703905, 0, 0, -1703904, 0, 0, -1703903, 0, 0, -1703902, 0, 0, -1703901, 0, 0, -1703900, 0, 0, -1703899, 0, 0, -1703898, 0, 0, -1703897, 0, 0, -1703896, 0, 0, -1703895, 0, 0, -1703894, 0, 0, -1703893, 0, 0, -1703892, 0, 0, -1703891, 0, 0, -1572905, 0, 0, -1572904, 0, 0, -1572903, 0, 0, -1572902, 0, 0, -1572901, 0, 0, -1572900, 0, 0, -1572899, 0, 0, -1572898, 0, 0, -1572897, 0, 0, -1572896, 0, 0, -1572895, 0, 0, -1572894, 0, 0, -1572893, 0, 0, -1572892, 0, 0, -1572891, 0, 0, -1572890, 0, 0, -1572889, 0, 0, -1572888, 0, 0, -1572887, 0, 0, -1572886, 0, 0, -1572885, 0, 0, -1572884, 0, 0, -1572883, 0, 0, -1572882, 0, 0, -1572881, 0, 0, -1572880, 0, 0, -1572879, 0, 0, -1572878, 0, 0, -1572877, 0, 0, -1572876, 0, 0, -1572875, 0, 0, -1572874, 0, 0, -1572873, 0, 0, -1572872, 0, 0, -1572871, 0, 0, -1572870, 0, 0, -1572869, 0, 0, -1572868, 0, 0, -1572867, 0, 0, -1572866, 0, 0, -1572865, 0, 0, -1638400, 0, 0, -1638399, 0, 0, -1638398, 0, 0, -1638397, 0, 0, -1638396, 0, 0, -1638395, 0, 0, -1638394, 0, 0, -1638393, 0, 0, -1638392, 0, 0, -1638391, 0, 0, -1638390, 0, 0, -1638389, 0, 0, -1638388, 0, 0, -1638387, 0, 0, -1638386, 0, 0, -1638385, 0, 0, -1638384, 0, 0, -1638383, 0, 0, -1638382, 0, 0, -1638381, 0, 0, -1638380, 0, 0, -1638379, 0, 0, -1638378, 0, 0, -1638377, 0, 0, -1638376, 0, 0, -1638375, 0, 0, -1638374, 0, 0, -1638373, 0, 0, -1638372, 0, 0, -1638371, 0, 0, -1638370, 0, 0, -1638369, 0, 0, -1638368, 0, 0, -1638367, 0, 0, -1638366, 0, 0, -1638365, 0, 0, -1638364, 0, 0, -1638363, 0, 0, -1638362, 0, 0, -1638361, 0, 0, -1638360, 0, 0, -1638359, 0, 0, -1638358, 0, 0, -1638357, 0, 0, -1638356, 0, 0, -1638355, 0, 0, -1638354, 0, 0, -1507369, 0, 0, -1507368, 0, 0, -1507367, 0, 0, -1507366, 0, 0, -1507365, 0, 0, -1507364, 0, 0, -1507363, 0, 0, -1507362, 0, 0, -1507361, 0, 0, -1507360, 0, 0, -1507359, 0, 0, -1507358, 0, 0, -1507357, 0, 0, -1507356, 0, 0, -1507355, 0, 0, -1507354, 0, 0, -1507353, 0, 0, -1507352, 0, 0, -1507351, 0, 0, -1507350, 0, 0, -1507349, 0, 0, -1507348, 0, 0, -1507347, 0, 0, -1507346, 0, 0, -1507345, 0, 0, -1507344, 0, 0, -1507343, 0, 0, -1507342, 0, 0, -1507341, 0, 0, -1507340, 0, 0, -1507339, 0, 0, -1507338, 0, 0, -1507337, 0, 0, -1507336, 0, 0, -1507335, 0, 0, -1507334, 0, 0, -1507333, 0, 0, -1507332, 0, 0, -1507331, 0, 0, -1507330, 0, 0, -1507329, 0, 0, -1572864, 0, 0, -1572863, 0, 0, -1572862, 0, 0, -1572861, 0, 0, -1572860, 0, 0, -1572859, 0, 0, -1572858, 0, 0, -1572857, 0, 0, -1572856, 0, 0, -1572855, 0, 0, -1572854, 0, 0, -1572853, 0, 0, -1572852, 0, 0, -1572851, 0, 0, -1572850, 0, 0, -1572849, 0, 0, -1572848, 0, 0, -1572847, 0, 0, -1572846, 0, 0, -1572845, 0, 0, -1572844, 0, 0, -1572843, 0, 0, -1572842, 0, 0, -1572841, 0, 0, -1572840, 0, 0, -1572839, 0, 0, -1572838, 0, 0, -1572837, 0, 0, -1572836, 0, 0, -1572835, 0, 0, -1572834, 0, 0, -1572833, 0, 0, -1572832, 0, 0, -1572831, 0, 0, -1572830, 0, 0, -1572829, 0, 0, -1572828, 0, 0, -1572827, 0, 0, -1572826, 0, 0, -1572825, 0, 0, -1572824, 0, 0, -1572823, 0, 0, -1572822, 0, 0, -1572821, 0, 0, -1572820, 0, 0, -1572819, 0, 0, -1572818, 0, 0, -1572817, 0, 0, -1441833, 0, 0, -1441832, 0, 0, -1441831, 0, 0, -1441830, 0, 0, -1441829, 0, 0, -1441828, 0, 0, -1441827, 0, 0, -1441826, 0, 0, -1441825, 0, 0, -1441824, 0, 0, -1441823, 0, 0, -1441822, 0, 0, -1441821, 0, 0, -1441820, 0, 0, -1441819, 0, 0, -1441818, 0, 0, -1441817, 0, 0, -1441816, 0, 0, -1441815, 0, 0, -1441814, 0, 0, -1441813, 0, 0, -1441812, 0, 0, -1441811, 0, 0, -1441810, 0, 0, -1441809, 0, 0, -1441808, 0, 0, -1441807, 0, 0, -1441806, 0, 0, -1441805, 0, 0, -1441804, 0, 0, -1441803, 0, 0, -1441802, 0, 0, -1441801, 0, 0, -1441800, 0, 0, -1441799, 0, 0, -1441798, 0, 0, -1441797, 0, 0, -1441796, 0, 0, -1441795, 0, 0, -1441794, 0, 0, -1441793, 0, 0, -1507328, 0, 0, -1507327, 0, 0, -1507326, 0, 0, -1507325, 0, 0, -1507324, 0, 0, -1507323, 0, 0, -1507322, 0, 0, -1507321, 0, 0, -1507320, 0, 0, -1507319, 0, 0, -1507318, 0, 0, -1507317, 0, 0, -1507316, 0, 0, -1507315, 0, 0, -1507314, 0, 0, -1507313, 0, 0, -1507312, 0, 0, -1507311, 0, 0, -1507310, 0, 0, -1507309, 0, 0, -1507308, 0, 0, -1507307, 0, 0, -1507306, 0, 0, -1507305, 0, 0, -1507304, 0, 0, -1507303, 0, 0, -1507302, 0, 0, -1507301, 0, 0, -1507300, 0, 0, -1507299, 0, 0, -1507298, 0, 0, -1507297, 0, 0, -1507296, 0, 0, -1507295, 0, 0, -1507294, 0, 0, -1507293, 0, 0, -1507292, 0, 0, -1507291, 0, 0, -1507290, 0, 0, -1507289, 0, 0, -1507288, 0, 0, -1507287, 0, 0, -1507286, 0, 0, -1507285, 0, 0, -1507284, 0, 0, -1507283, 0, 0, -1507282, 0, 0, -1507281, 0, 0, -1507280, 0, 0, -1376297, 0, 0, -1376296, 0, 0, -1376295, 0, 0, -1376294, 0, 0, -1376293, 0, 0, -1376292, 0, 0, -1376291, 0, 0, -1376290, 0, 0, -1376289, 0, 0, -1376288, 0, 0, -1376287, 0, 0, -1376286, 0, 0, -1376285, 0, 0, -1376284, 0, 0, -1376283, 0, 0, -1376282, 0, 0, -1376281, 0, 0, -1376280, 0, 0, -1376279, 0, 0, -1376278, 0, 0, -1376277, 0, 0, -1376276, 0, 0, -1376275, 0, 0, -1376274, 0, 0, -1376273, 0, 0, -1376272, 0, 0, -1376271, 0, 0, -1376270, 0, 0, -1376269, 0, 0, -1376268, 0, 0, -1376267, 0, 0, -1376266, 0, 0, -1376265, 0, 0, -1376264, 0, 0, -1376263, 0, 0, -1376262, 0, 0, -1376261, 0, 0, -1376260, 0, 0, -1376259, 0, 0, -1376258, 0, 0, -1376257, 0, 0, -1441792, 0, 0, -1441791, 0, 0, -1441790, 0, 0, -1441789, 0, 0, -1441788, 0, 0, -1441787, 0, 0, -1441786, 0, 0, -1441785, 0, 0, -1441784, 0, 0, -1441783, 0, 0, -1441782, 0, 0, -1441781, 0, 0, -1441780, 0, 0, -1441779, 0, 0, -1441778, 0, 0, -1441777, 0, 0, -1441776, 0, 0, -1441775, 0, 0, -1441774, 0, 0, -1441773, 0, 0, -1441772, 0, 0, -1441771, 0, 0, -1441770, 0, 0, -1441769, 0, 0, -1441768, 0, 0, -1441767, 0, 0, -1441766, 0, 0, -1441765, 0, 0, -1441764, 0, 0, -1441763, 0, 0, -1441762, 0, 0, -1441761, 0, 0, -1441760, 0, 0, -1441759, 0, 0, -1441758, 0, 0, -1441757, 0, 0, -1441756, 0, 0, -1441755, 0, 0, -1441754, 0, 0, -1441753, 0, 0, -1441752, 0, 0, -1441751, 0, 0, -1441750, 0, 0, -1441749, 0, 0, -1441748, 0, 0, -1441747, 0, 0, -1441746, 0, 0, -1441745, 0, 0, -1441744, 0, 0, -1310760, 0, 0, -1310759, 0, 0, -1310758, 0, 0, -1310757, 0, 0, -1310756, 0, 0, -1310755, 0, 0, -1310754, 0, 0, -1310753, 0, 0, -1310752, 0, 0, -1310751, 0, 0, -1310750, 0, 0, -1310749, 0, 0, -1310748, 0, 0, -1310747, 0, 0, -1310746, 0, 0, -1310745, 0, 0, -1310744, 0, 0, -1310743, 0, 0, -1310742, 0, 0, -1310741, 0, 0, -1310740, 0, 0, -1310739, 0, 0, -1310738, 0, 0, -1310737, 0, 0, -1310736, 0, 0, -1310735, 0, 0, -1310734, 0, 0, -1310733, 0, 0, -1310732, 0, 0, -1310731, 0, 0, -1310730, 0, 0, -1310729, 0, 0, -1310728, 0, 0, -1310727, 0, 0, -1310726, 0, 0, -1310725, 0, 0, -1310724, 0, 0, -1310723, 0, 0, -1310722, 0, 0, -1310721, 0, 0, -1376256, 0, 0, -1376255, 0, 0, -1376254, 0, 0, -1376253, 0, 0, -1376252, 0, 0, -1376251, 0, 0, -1376250, 0, 0, -1376249, 0, 0, -1376248, 0, 0, -1376247, 0, 0, -1376246, 0, 0, -1376245, 0, 0, -1376244, 0, 0, -1376243, 0, 0, -1376242, 0, 0, -1376241, 0, 0, -1376240, 0, 0, -1376239, 0, 0, -1376238, 0, 0, -1376237, 0, 0, -1376236, 0, 0, -1376235, 0, 0, -1376234, 0, 0, -1376233, 0, 0, -1376232, 0, 0, -1376231, 0, 0, -1376230, 0, 0, -1376229, 0, 0, -1376228, 0, 0, -1376227, 0, 0, -1376226, 0, 0, -1376225, 0, 0, -1376224, 0, 0, -1376223, 0, 0, -1376222, 0, 0, -1376221, 0, 0, -1376220, 0, 0, -1376219, 0, 0, -1376218, 0, 0, -1376217, 0, 0, -1376216, 0, 0, -1376215, 0, 0, -1376214, 0, 0, -1376213, 0, 0, -1376212, 0, 0, -1376211, 0, 0, -1376210, 0, 0, -1376209, 0, 0, -1376208, 0, 0, -1376207, 0, 0, -1245224, 0, 0, -1245223, 0, 0, -1245222, 0, 0, -1245221, 0, 0, -1245220, 0, 0, -1245219, 0, 0, -1245218, 0, 0, -1245217, 0, 0, -1245216, 0, 0, -1245215, 0, 0, -1245214, 0, 0, -1245213, 0, 0, -1245212, 0, 0, -1245211, 0, 0, -1245210, 0, 0, -1245209, 0, 0, -1245208, 0, 0, -1245207, 0, 0, -1245206, 0, 0, -1245205, 0, 0, -1245204, 0, 0, -1245203, 0, 0, -1245202, 0, 0, -1245201, 0, 0, -1245200, 0, 0, -1245199, 0, 0, -1245198, 0, 0, -1245197, 0, 0, -1245196, 0, 0, -1245195, 0, 0, -1245194, 0, 0, -1245193, 0, 0, -1245192, 0, 0, -1245191, 0, 0, -1245190, 0, 0, -1245189, 0, 0, -1245188, 0, 0, -1245187, 0, 0, -1245186, 0, 0, -1245185, 0, 0, -1310720, 0, 0, -1310719, 0, 0, -1310718, 0, 0, -1310717, 0, 0, -1310716, 0, 0, -1310715, 0, 0, -1310714, 0, 0, -1310713, 0, 0, -1310712, 0, 0, -1310711, 0, 0, -1310710, 0, 0, -1310709, 0, 0, -1310708, 0, 0, -1310707, 0, 0, -1310706, 0, 0, -1310705, 0, 0, -1310704, 0, 0, -1310703, 0, 0, -1310702, 0, 0, -1310701, 0, 0, -1310700, 0, 0, -1310699, 0, 0, -1310698, 0, 0, -1310697, 0, 0, -1310696, 0, 0, -1310695, 0, 0, -1310694, 0, 0, -1310693, 0, 0, -1310692, 0, 0, -1310691, 0, 0, -1310690, 0, 0, -1310689, 0, 0, -1310688, 0, 0, -1310687, 0, 0, -1310686, 0, 0, -1310685, 0, 0, -1310684, 0, 0, -1310683, 0, 0, -1310682, 0, 0, -1310681, 0, 0, -1310680, 0, 0, -1310679, 0, 0, -1310678, 0, 0, -1310677, 0, 0, -1310676, 0, 0, -1310675, 0, 0, -1310674, 0, 0, -1310673, 0, 0, -1310672, 0, 0, -1310671, 0, 0, -1310670, 0, 0, -1310669, 0, 0, -1179688, 0, 0, -1179687, 0, 0, -1179686, 0, 0, -1179685, 0, 0, -1179684, 0, 0, -1179683, 0, 0, -1179682, 0, 0, -1179681, 0, 0, -1179680, 0, 0, -1179679, 0, 0, -1179678, 0, 0, -1179677, 0, 0, -1179676, 0, 0, -1179675, 0, 0, -1179674, 0, 0, -1179673, 0, 0, -1179672, 0, 0, -1179671, 0, 0, -1179670, 0, 0, -1179669, 0, 0, -1179668, 0, 0, -1179667, 0, 0, -1179666, 0, 0, -1179665, 0, 0, -1179664, 0, 0, -1179663, 0, 0, -1179662, 0, 0, -1179661, 0, 0, -1179660, 0, 0, -1179659, 0, 0, -1179658, 0, 0, -1179657, 0, 0, -1179656, 0, 0, -1179655, 0, 0, -1179654, 0, 0, -1179653, 0, 0, -1179652, 0, 0, -1179651, 0, 0, -1179650, 0, 0, -1179649, 0, 0, -1245184, 0, 0, -1245183, 0, 0, -1245182, 0, 0, -1245181, 0, 0, -1245180, 0, 0, -1245179, 0, 0, -1245178, 0, 0, -1245177, 0, 0, -1245176, 0, 0, -1245175, 0, 0, -1245174, 0, 0, -1245173, 0, 0, -1245172, 0, 0, -1245171, 0, 0, -1245170, 0, 0, -1245169, 0, 0, -1245168, 0, 0, -1245167, 0, 0, -1245166, 0, 0, -1245165, 0, 0, -1245164, 0, 0, -1245163, 0, 0, -1245162, 0, 0, -1245161, 0, 0, -1245160, 0, 0, -1245159, 0, 0, -1245158, 0, 0, -1245157, 0, 0, -1245156, 0, 0, -1245155, 0, 0, -1245154, 0, 0, -1245153, 0, 0, -1245152, 0, 0, -1245151, 0, 0, -1245150, 0, 0, -1245149, 0, 0, -1245148, 0, 0, -1245147, 0, 0, -1245146, 0, 0, -1245145, 0, 0, -1245144, 0, 0, -1245143, 0, 0, -1245142, 0, 0, -1245141, 0, 0, -1245140, 0, 0, -1245139, 0, 0, -1245138, 0, 0, -1245137, 0, 0, -1245136, 0, 0, -1245135, 0, 0, -1245134, 0, 0, -1245133, 0, 0, -1245132, 0, 0, -1114152, 0, 0, -1114151, 0, 0, -1114150, 0, 0, -1114149, 0, 0, -1114148, 0, 0, -1114147, 0, 0, -1114146, 0, 0, -1114145, 0, 0, -1114144, 0, 0, -1114143, 0, 0, -1114142, 0, 0, -1114141, 0, 0, -1114140, 0, 0, -1114139, 0, 0, -1114138, 0, 0, -1114137, 0, 0, -1114136, 0, 0, -1114135, 0, 0, -1114134, 0, 0, -1114133, 0, 0, -1114132, 0, 0, -1114131, 0, 0, -1114130, 0, 0, -1114129, 0, 0, -1114128, 0, 0, -1114127, 0, 0, -1114126, 0, 0, -1114125, 0, 0, -1114124, 0, 0, -1114123, 0, 0, -1114122, 0, 0, -1114121, 0, 0, -1114120, 0, 0, -1114119, 0, 0, -1114118, 0, 0, -1114117, 0, 0, -1114116, 0, 0, -1114115, 0, 0, -1114114, 0, 0, -1114113, 0, 0, -1179648, 0, 0, -1179647, 0, 0, -1179646, 0, 0, -1179645, 0, 0, -1179644, 0, 0, -1179643, 0, 0, -1179642, 0, 0, -1179641, 0, 0, -1179640, 0, 0, -1179639, 0, 0, -1179638, 0, 0, -1179637, 0, 0, -1179636, 0, 0, -1179635, 0, 0, -1179634, 0, 0, -1179633, 0, 0, -1179632, 0, 0, -1179631, 0, 0, -1179630, 0, 0, -1179629, 0, 0, -1179628, 0, 0, -1179627, 0, 0, -1179626, 0, 0, -1179625, 0, 0, -1179624, 0, 0, -1179623, 0, 0, -1179622, 0, 0, -1179621, 0, 0, -1179620, 0, 0, -1179619, 0, 0, -1179618, 0, 0, -1179617, 0, 0, -1179616, 0, 0, -1179615, 0, 0, -1179614, 0, 0, -1179613, 0, 0, -1179612, 0, 0, -1179611, 0, 0, -1179610, 0, 0, -1179609, 0, 0, -1179608, 0, 0, -1179607, 0, 0, -1179606, 0, 0, -1179605, 0, 0, -1179604, 0, 0, -1179603, 0, 0, -1179602, 0, 0, -1179601, 0, 0, -1179600, 0, 0, -1179599, 0, 0, -1179598, 0, 0, -1179597, 0, 0, -1179596, 0, 0, -1048615, 0, 0, -1048614, 0, 0, -1048613, 0, 0, -1048612, 0, 0, -1048611, 0, 0, -1048610, 0, 0, -1048609, 0, 0, -1048608, 0, 0, -1048607, 0, 0, -1048606, 0, 0, -1048605, 0, 0, -1048604, 0, 0, -1048603, 0, 0, -1048602, 0, 0, -1048601, 0, 0, -1048600, 0, 0, -1048599, 0, 0, -1048598, 0, 0, -1048597, 0, 0, -1048596, 0, 0, -1048595, 0, 0, -1048594, 0, 0, -1048593, 0, 0, -1048592, 0, 0, -1048591, 0, 0, -1048590, 0, 0, -1048589, 0, 0, -1048588, 0, 0, -1048587, 0, 0, -1048586, 0, 0, -1048585, 0, 0, -1048584, 0, 0, -1048583, 0, 0, -1048582, 0, 0, -1048581, 0, 0, -1048580, 0, 0, -1048579, 0, 0, -1048578, 0, 0, -1048577, 0, 0, -1114112, 0, 0, -1114111, 0, 0, -1114110, 0, 0, -1114109, 0, 0, -1114108, 0, 0, -1114107, 0, 0, -1114106, 0, 0, -1114105, 0, 0, -1114104, 0, 0, -1114103, 0, 0, -1114102, 0, 0, -1114101, 0, 0, -1114100, 0, 0, -1114099, 0, 0, -1114098, 0, 0, -1114097, 0, 0, -1114096, 0, 0, -1114095, 0, 0, -1114094, 0, 0, -1114093, 0, 0, -1114092, 0, 0, -1114091, 0, 0, -1114090, 0, 0, -1114089, 0, 0, -1114088, 0, 0, -1114087, 0, 0, -1114086, 0, 0, -1114085, 0, 0, -1114084, 0, 0, -1114083, 0, 0, -1114082, 0, 0, -1114081, 0, 0, -1114080, 0, 0, -1114079, 0, 0, -1114078, 0, 0, -1114077, 0, 0, -1114076, 0, 0, -1114075, 0, 0, -1114074, 0, 0, -1114073, 0, 0, -1114072, 0, 0, -1114071, 0, 0, -1114070, 0, 0, -1114069, 0, 0, -1114068, 0, 0, -1114067, 0, 0, -1114066, 0, 0, -1114065, 0, 0, -1114064, 0, 0, -1114063, 0, 0, -1114062, 0, 0, -1114061, 0, 0, -1114060, 0, 0, -1114059, 0, 0, -983079, 0, 0, -983078, 0, 0, -983077, 0, 0, -983076, 0, 0, -983075, 0, 0, -983074, 0, 0, -983073, 0, 0, -983072, 0, 0, -983071, 0, 0, -983070, 0, 0, -983069, 0, 0, -983068, 0, 0, -983067, 0, 0, -983066, 0, 0, -983065, 0, 0, -983064, 0, 0, -983063, 0, 0, -983062, 0, 0, -983061, 0, 0, -983060, 0, 0, -983059, 0, 0, -983058, 0, 0, -983057, 0, 0, -983056, 0, 0, -983055, 0, 0, -983054, 0, 0, -983053, 0, 0, -983052, 0, 0, -983051, 0, 0, -983050, 0, 0, -983049, 0, 0, -983048, 0, 0, -983047, 0, 0, -983046, 0, 0, -983045, 0, 0, -983044, 0, 0, -983043, 0, 0, -983042, 0, 0, -983041, 0, 0, -1048576, 0, 0, -1048575, 0, 0, -1048574, 0, 0, -1048573, 0, 0, -1048572, 0, 0, -1048571, 0, 0, -1048570, 0, 0, -1048569, 0, 0, -1048568, 0, 0, -1048567, 0, 0, -1048566, 0, 0, -1048565, 0, 0, -1048564, 0, 0, -1048563, 0, 0, -1048562, 0, 0, -1048561, 0, 0, -1048560, 0, 0, -1048559, 0, 0, -1048558, 0, 0, -1048557, 0, 0, -1048556, 0, 0, -1048555, 0, 0, -1048554, 0, 0, -1048553, 0, 0, -1048552, 0, 0, -1048551, 0, 0, -1048550, 0, 0, -1048549, 0, 0, -1048548, 0, 0, -1048547, 0, 0, -1048546, 0, 0, -1048545, 0, 0, -1048544, 0, 0, -1048543, 0, 0, -1048542, 0, 0, -1048541, 0, 0, -1048540, 0, 0, -1048539, 0, 0, -1048538, 0, 0, -1048537, 0, 0, -1048536, 0, 0, -1048535, 0, 0, -1048534, 0, 0, -1048533, 0, 0, -1048532, 0, 0, -1048531, 0, 0, -1048530, 0, 0, -1048529, 0, 0, -1048528, 0, 0, -1048527, 0, 0, -1048526, 0, 0, -1048525, 0, 0, -1048524, 0, 0, -1048523, 0, 0, -917543, 0, 0, -917542, 0, 0, -917541, 0, 0, -917540, 0, 0, -917539, 0, 0, -917538, 0, 0, -917537, 0, 0, -917536, 0, 0, -917535, 0, 0, -917534, 0, 0, -917533, 0, 0, -917532, 0, 0, -917531, 0, 0, -917530, 0, 0, -917529, 0, 0, -917528, 0, 0, -917527, 0, 0, -917526, 0, 0, -917525, 0, 0, -917524, 0, 0, -917523, 0, 0, -917522, 0, 0, -917521, 0, 0, -917520, 0, 0, -917519, 0, 0, -917518, 0, 0, -917517, 0, 0, -917516, 0, 0, -917515, 0, 0, -917514, 0, 0, -917513, 0, 0, -917512, 0, 0, -917511, 0, 0, -917510, 0, 0, -917509, 0, 0, -917508, 0, 0, -917507, 0, 0, -917506, 0, 0, -917505, 0, 0, -983040, 0, 0, -983039, 0, 0, -983038, 0, 0, -983037, 0, 0, -983036, 0, 0, -983035, 0, 0, -983034, 0, 0, -983033, 0, 0, -983032, 0, 0, -983031, 0, 0, -983030, 0, 0, -983029, 0, 0, -983028, 0, 0, -983027, 0, 0, -983026, 0, 0, -983025, 0, 0, -983024, 0, 0, -983023, 0, 0, -983022, 0, 0, -983021, 0, 0, -983020, 0, 0, -983019, 0, 0, -983018, 0, 0, -983017, 0, 0, -983016, 0, 0, -983015, 0, 0, -983014, 0, 0, -983013, 0, 0, -983012, 0, 0, -983011, 0, 0, -983010, 0, 0, -983009, 0, 0, -983008, 0, 0, -983007, 0, 0, -983006, 0, 0, -983005, 0, 0, -983004, 0, 0, -983003, 0, 0, -983002, 0, 0, -983001, 0, 0, -983000, 0, 0, -982999, 0, 0, -982998, 0, 0, -982997, 0, 0, -982996, 0, 0, -982995, 0, 0, -982994, 0, 0, -982993, 0, 0, -982992, 0, 0, -982991, 0, 0, -982990, 0, 0, -982989, 0, 0, -982988, 0, 0, -982987, 0, 0, -982986, 0, 0, -852007, 0, 0, -852006, 0, 0, -852005, 0, 0, -852004, 0, 0, -852003, 0, 0, -852002, 0, 0, -852001, 0, 0, -852000, 0, 0, -851999, 0, 0, -851998, 0, 0, -851997, 0, 0, -851996, 0, 0, -851995, 0, 0, -851994, 0, 0, -851993, 0, 0, -851992, 0, 0, -851991, 0, 0, -851990, 0, 0, -851989, 0, 0, -851988, 0, 0, -851987, 0, 0, -851986, 0, 0, -851985, 0, 0, -851984, 0, 0, -851983, 0, 0, -851982, 0, 0, -851981, 0, 0, -851980, 0, 0, -851979, 0, 0, -851978, 0, 0, -851977, 0, 0, -851976, 0, 0, -851975, 0, 0, -851974, 0, 0, -851973, 0, 0, -851972, 0, 0, -851971, 0, 0, -851970, 0, 0, -851969, 0, 0, -917504, 0, 0, -917503, 0, 0, -917502, 0, 0, -917501, 0, 0, -917500, 0, 0, -917499, 0, 0, -917498, 0, 0, -917497, 0, 0, -917496, 0, 0, -917495, 0, 0, -917494, 0, 0, -917493, 0, 0, -917492, 0, 0, -917491, 0, 0, -917490, 0, 0, -917489, 0, 0, -917488, 0, 0, -917487, 0, 0, -917486, 0, 0, -917485, 0, 0, -917484, 0, 0, -917483, 0, 0, -917482, 0, 0, -917481, 0, 0, -917480, 0, 0, -917479, 0, 0, -917478, 0, 0, -917477, 0, 0, -917476, 0, 0, -917475, 0, 0, -917474, 0, 0, -917473, 0, 0, -917472, 0, 0, -917471, 0, 0, -917470, 0, 0, -917469, 0, 0, -917468, 0, 0, -917467, 0, 0, -917466, 0, 0, -917465, 0, 0, -917464, 0, 0, -917463, 0, 0, -917462, 0, 0, -917461, 0, 0, -917460, 0, 0, -917459, 0, 0, -917458, 0, 0, -917457, 0, 0, -917456, 0, 0, -917455, 0, 0, -917454, 0, 0, -917453, 0, 0, -917452, 0, 0, -917451, 0, 0, -917450, 0, 0, -786471, 0, 0, -786470, 0, 0, -786469, 0, 0, -786468, 0, 0, -786467, 0, 0, -786466, 0, 0, -786465, 0, 0, -786464, 0, 0, -786463, 0, 0, -786462, 0, 0, -786461, 0, 0, -786460, 0, 0, -786459, 0, 0, -786458, 0, 0, -786457, 0, 0, -786456, 0, 0, -786455, 0, 0, -786454, 0, 0, -786453, 0, 0, -786452, 0, 0, -786451, 0, 0, -786450, 0, 0, -786449, 0, 0, -786448, 0, 0, -786447, 0, 0, -786446, 0, 0, -786445, 0, 0, -786444, 0, 0, -786443, 0, 0, -786442, 0, 0, -786441, 0, 0, -786440, 0, 0, -786439, 0, 0, -786438, 0, 0, -786437, 0, 0, -786436, 0, 0, -786435, 0, 0, -786434, 0, 0, -786433, 0, 0, -851968, 0, 0, -851967, 0, 0, -851966, 0, 0, -851965, 0, 0, -851964, 0, 0, -851963, 0, 0, -851962, 0, 0, -851961, 0, 0, -851960, 0, 0, -851959, 0, 0, -851958, 0, 0, -851957, 0, 0, -851956, 0, 0, -851955, 0, 0, -851954, 0, 0, -851953, 0, 0, -851952, 0, 0, -851951, 0, 0, -851950, 0, 0, -851949, 0, 0, -851948, 0, 0, -851947, 0, 0, -851946, 0, 0, -851945, 0, 0, -851944, 0, 0, -851943, 0, 0, -851942, 0, 0, -851941, 0, 0, -851940, 0, 0, -851939, 0, 0, -851938, 0, 0, -851937, 0, 0, -851936, 0, 0, -851935, 0, 0, -851934, 0, 0, -851933, 0, 0, -851932, 0, 0, -851931, 0, 0, -851930, 0, 0, -851929, 0, 0, -851928, 0, 0, -851927, 0, 0, -851926, 0, 0, -851925, 0, 0, -851924, 0, 0, -851923, 0, 0, -851922, 0, 0, -851921, 0, 0, -851920, 0, 0, -851919, 0, 0, -851918, 0, 0, -851917, 0, 0, -851916, 0, 0, -851915, 0, 0, -851914, 0, 0, -851913, 0, 0, -720934, 0, 0, -720933, 0, 0, -720932, 0, 0, -720931, 0, 0, -720930, 0, 0, -720929, 0, 0, -720928, 0, 0, -720927, 0, 0, -720926, 0, 0, -720925, 0, 0, -720924, 0, 0, -720923, 0, 0, -720922, 0, 0, -720921, 0, 0, -720920, 0, 0, -720919, 0, 0, -720918, 0, 0, -720917, 0, 0, -720916, 0, 0, -720915, 0, 0, -720914, 0, 0, -720913, 0, 0, -720912, 0, 0, -720911, 0, 0, -720910, 0, 0, -720909, 0, 0, -720908, 0, 0, -720907, 0, 0, -720906, 0, 0, -720905, 0, 0, -720904, 0, 0, -720903, 0, 0, -720902, 0, 0, -720901, 0, 0, -720900, 0, 0, -720899, 0, 0, -720898, 0, 0, -720897, 0, 0, -786432, 0, 0, -786431, 0, 0, -786430, 0, 0, -786429, 0, 0, -786428, 0, 0, -786427, 0, 0, -786426, 0, 0, -786425, 0, 0, -786424, 0, 0, -786423, 0, 0, -786422, 0, 0, -786421, 0, 0, -786420, 0, 0, -786419, 0, 0, -786418, 0, 0, -786417, 0, 0, -786416, 0, 0, -786415, 0, 0, -786414, 0, 0, -786413, 0, 0, -786412, 0, 0, -786411, 0, 0, -786410, 0, 0, -786409, 0, 0, -786408, 0, 0, -786407, 0, 0, -786406, 0, 0, -786405, 0, 0, -786404, 0, 0, -786403, 0, 0, -786402, 0, 0, -786401, 0, 0, -786400, 0, 0, -786399, 0, 0, -786398, 0, 0, -786397, 0, 0, -786396, 0, 0, -786395, 0, 0, -786394, 0, 0, -786393, 0, 0, -786392, 0, 0, -786391, 0, 0, -786390, 0, 0, -786389, 0, 0, -786388, 0, 0, -786387, 0, 0, -786386, 0, 0, -786385, 0, 0, -786384, 0, 0, -786383, 0, 0, -786382, 0, 0, -786381, 0, 0, -786380, 0, 0, -786379, 0, 0, -786378, 0, 0, -786377, 0, 0, -655398, 0, 0, -655397, 0, 0, -655396, 0, 0, -655395, 0, 0, -655394, 0, 0, -655393, 0, 0, -655392, 0, 0, -655391, 0, 0, -655390, 0, 0, -655389, 0, 0, -655388, 0, 0, -655387, 0, 0, -655386, 0, 0, -655385, 0, 0, -655384, 0, 0, -655383, 0, 0, -655382, 0, 0, -655381, 0, 0, -655380, 0, 0, -655379, 0, 0, -655378, 0, 0, -655377, 0, 0, -655376, 0, 0, -655375, 0, 0, -655374, 0, 0, -655373, 0, 0, -655372, 0, 0, -655371, 0, 0, -655370, 0, 0, -655369, 0, 0, -655368, 0, 0, -655367, 0, 0, -655366, 0, 0, -655365, 0, 0, -655364, 0, 0, -655363, 0, 0, -655362, 0, 0, -655361, 0, 0, -720896, 0, 0, -720895, 0, 0, -720894, 0, 0, -720893, 0, 0, -720892, 0, 0, -720891, 0, 0, -720890, 0, 0, -720889, 0, 0, -720888, 0, 0, -720887, 0, 0, -720886, 0, 0, -720885, 0, 0, -720884, 0, 0, -720883, 0, 0, -720882, 0, 0, -720881, 0, 0, -720880, 0, 0, -720879, 0, 0, -720878, 0, 0, -720877, 0, 0, -720876, 0, 0, -720875, 0, 0, -720874, 0, 0, -720873, 0, 0, -720872, 0, 0, -720871, 0, 0, -720870, 0, 0, -720869, 0, 0, -720868, 0, 0, -720867, 0, 0, -720866, 0, 0, -720865, 0, 0, -720864, 0, 0, -720863, 0, 0, -720862, 0, 0, -720861, 0, 0, -720860, 0, 0, -720859, 0, 0, -720858, 0, 0, -720857, 0, 0, -720856, 0, 0, -720855, 0, 0, -720854, 0, 0, -720853, 0, 0, -720852, 0, 0, -720851, 0, 0, -720850, 0, 0, -720849, 0, 0, -720848, 0, 0, -720847, 0, 0, -720846, 0, 0, -720845, 0, 0, -720844, 0, 0, -720843, 0, 0, -720842, 0, 0, -720841, 0, 0, -720840, 0, 0, -589862, 0, 0, -589861, 0, 0, -589860, 0, 0, -589859, 0, 0, -589858, 0, 0, -589857, 0, 0, -589856, 0, 0, -589855, 0, 0, -589854, 0, 0, -589853, 0, 0, -589852, 0, 0, -589851, 0, 0, -589850, 0, 0, -589849, 0, 0, -589848, 0, 0, -589847, 0, 0, -589846, 0, 0, -589845, 0, 0, -589844, 0, 0, -589843, 0, 0, -589842, 0, 0, -589841, 0, 0, -589840, 0, 0, -589839, 0, 0, -589838, 0, 0, -589837, 0, 0, -589836, 0, 0, -589835, 0, 0, -589834, 0, 0, -589833, 0, 0, -589832, 0, 0, -589831, 0, 0, -589830, 0, 0, -589829, 0, 0, -589828, 0, 0, -589827, 0, 0, -589826, 0, 0, -589825, 0, 0, -655360, 0, 0, -655359, 0, 0, -655358, 0, 0, -655357, 0, 0, -655356, 0, 0, -655355, 0, 0, -655354, 0, 0, -655353, 0, 0, -655352, 0, 0, -655351, 0, 0, -655350, 0, 0, -655349, 0, 0, -655348, 0, 0, -655347, 0, 0, -655346, 0, 0, -655345, 0, 0, -655344, 0, 0, -655343, 0, 0, -655342, 0, 0, -655341, 0, 0, -655340, 0, 0, -655339, 0, 0, -655338, 0, 0, -655337, 0, 0, -655336, 0, 0, -655335, 0, 0, -655334, 0, 0, -655333, 0, 0, -655332, 0, 0, -655331, 0, 0, -655330, 0, 0, -655329, 0, 0, -655328, 0, 0, -655327, 0, 0, -655326, 0, 0, -655325, 0, 0, -655324, 0, 0, -655323, 0, 0, -655322, 0, 0, -655321, 0, 0, -655320, 0, 0, -655319, 0, 0, -655318, 0, 0, -655317, 0, 0, -655316, 0, 0, -655315, 0, 0, -655314, 0, 0, -655313, 0, 0, -655312, 0, 0, -655311, 0, 0, -655310, 0, 0, -655309, 0, 0, -655308, 0, 0, -655307, 0, 0, -655306, 0, 0, -655305, 0, 0, -655304, 0, 0, -524326, 0, 0, -524325, 0, 0, -524324, 0, 0, -524323, 0, 0, -524322, 0, 0, -524321, 0, 0, -524320, 0, 0, -524319, 0, 0, -524318, 0, 0, -524317, 0, 0, -524316, 0, 0, -524315, 0, 0, -524314, 0, 0, -524313, 0, 0, -524312, 0, 0, -524311, 0, 0, -524310, 0, 0, -524309, 0, 0, -524308, 0, 0, -524307, 0, 0, -524306, 0, 0, -524305, 0, 0, -524304, 0, 0, -524303, 0, 0, -524302, 0, 0, -524301, 0, 0, -524300, 0, 0, -524299, 0, 0, -524298, 0, 0, -524297, 0, 0, -524296, 0, 0, -524295, 0, 0, -524294, 0, 0, -524293, 0, 0, -524292, 0, 0, -524291, 0, 0, -524290, 0, 0, -524289, 0, 0, -589824, 0, 0, -589823, 0, 0, -589822, 0, 0, -589821, 0, 0, -589820, 0, 0, -589819, 0, 0, -589818, 0, 0, -589817, 0, 0, -589816, 0, 0, -589815, 0, 0, -589814, 0, 0, -589813, 0, 0, -589812, 0, 0, -589811, 0, 0, -589810, 0, 0, -589809, 0, 0, -589808, 0, 0, -589807, 0, 0, -589806, 0, 0, -589805, 0, 0, -589804, 0, 0, -589803, 0, 0, -589802, 0, 0, -589801, 0, 0, -589800, 0, 0, -589799, 0, 0, -589798, 0, 0, -589797, 0, 0, -589796, 0, 0, -589795, 0, 0, -589794, 0, 0, -589793, 0, 0, -589792, 0, 0, -589791, 0, 0, -589790, 0, 0, -589789, 0, 0, -589788, 0, 0, -589787, 0, 0, -589786, 0, 0, -589785, 0, 0, -589784, 0, 0, -589783, 0, 0, -589782, 0, 0, -589781, 0, 0, -589780, 0, 0, -589779, 0, 0, -589778, 0, 0, -589777, 0, 0, -589776, 0, 0, -589775, 0, 0, -589774, 0, 0, -589773, 0, 0, -589772, 0, 0, -589771, 0, 0, -589770, 0, 0, -589769, 0, 0, -589768, 0, 0, -458789, 0, 0, -458788, 0, 0, -458787, 0, 0, -458786, 0, 0, -458785, 0, 0, -458784, 0, 0, -458783, 0, 0, -458782, 0, 0, -458781, 0, 0, -458780, 0, 0, -458779, 0, 0, -458778, 0, 0, -458777, 0, 0, -458776, 0, 0, -458775, 0, 0, -458774, 0, 0, -458773, 0, 0, -458772, 0, 0, -458771, 0, 0, -458770, 0, 0, -458769, 0, 0, -458768, 0, 0, -458767, 0, 0, -458766, 0, 0, -458765, 0, 0, -458764, 0, 0, -458763, 0, 0, -458762, 0, 0, -458761, 0, 0, -458760, 0, 0, -458759, 0, 0, -458758, 0, 0, -458757, 0, 0, -458756, 0, 0, -458755, 0, 0, -458754, 0, 0, -458753, 0, 0, -524288, 0, 0, -524287, 0, 0, -524286, 0, 0, -524285, 0, 0, -524284, 0, 0, -524283, 0, 0, -524282, 0, 0, -524281, 0, 0, -524280, 0, 0, -524279, 0, 0, -524278, 0, 0, -524277, 0, 0, -524276, 0, 0, -524275, 0, 0, -524274, 0, 0, -524273, 0, 0, -524272, 0, 0, -524271, 0, 0, -524270, 0, 0, -524269, 0, 0, -524268, 0, 0, -524267, 0, 0, -524266, 0, 0, -524265, 0, 0, -524264, 0, 0, -524263, 0, 0, -524262, 0, 0, -524261, 0, 0, -524260, 0, 0, -524259, 0, 0, -524258, 0, 0, -524257, 0, 0, -524256, 0, 0, -524255, 0, 0, -524254, 0, 0, -524253, 0, 0, -524252, 0, 0, -524251, 0, 0, -524250, 0, 0, -524249, 0, 0, -524248, 0, 0, -524247, 0, 0, -524246, 0, 0, -524245, 0, 0, -524244, 0, 0, -524243, 0, 0, -524242, 0, 0, -524241, 0, 0, -524240, 0, 0, -524239, 0, 0, -524238, 0, 0, -524237, 0, 0, -524236, 0, 0, -524235, 0, 0, -524234, 0, 0, -524233, 0, 0, -524232, 0, 0, -393253, 0, 0, -393252, 0, 0, -393251, 0, 0, -393250, 0, 0, -393249, 0, 0, -393248, 0, 0, -393247, 0, 0, -393246, 0, 0, -393245, 0, 0, -393244, 0, 0, -393243, 0, 0, -393242, 0, 0, -393241, 0, 0, -393240, 0, 0, -393239, 0, 0, -393238, 0, 0, -393237, 0, 0, -393236, 0, 0, -393235, 0, 0, -393234, 0, 0, -393233, 0, 0, -393232, 0, 0, -393231, 0, 0, -393230, 0, 0, -393229, 0, 0, -393228, 0, 0, -393227, 0, 0, -393226, 0, 0, -393225, 0, 0, -393224, 0, 0, -393223, 0, 0, -393222, 0, 0, -393221, 0, 0, -393220, 0, 0, -393219, 0, 0, -393218, 0, 0, -393217, 0, 0, -458752, 0, 0, -458751, 0, 0, -458750, 0, 0, -458749, 0, 0, -458748, 0, 0, -458747, 0, 0, -458746, 0, 0, -458745, 0, 0, -458744, 0, 0, -458743, 0, 0, -458742, 0, 0, -458741, 0, 0, -458740, 0, 0, -458739, 0, 0, -458738, 0, 0, -458737, 0, 0, -458736, 0, 0, -458735, 0, 0, -458734, 0, 0, -458733, 0, 0, -458732, 0, 0, -458731, 0, 0, -458730, 0, 0, -458729, 0, 0, -458728, 0, 0, -458727, 0, 0, -458726, 0, 0, -458725, 0, 0, -458724, 0, 0, -458723, 0, 0, -458722, 0, 0, -458721, 0, 0, -458720, 0, 0, -458719, 0, 0, -458718, 0, 0, -458717, 0, 0, -458716, 0, 0, -458715, 0, 0, -458714, 0, 0, -458713, 0, 0, -458712, 0, 0, -458711, 0, 0, -458710, 0, 0, -458709, 0, 0, -458708, 0, 0, -458707, 0, 0, -458706, 0, 0, -458705, 0, 0, -458704, 0, 0, -458703, 0, 0, -458702, 0, 0, -458701, 0, 0, -458700, 0, 0, -458699, 0, 0, -458698, 0, 0, -458697, 0, 0, -458696, 0, 0, -327717, 0, 0, -327716, 0, 0, -327715, 0, 0, -327714, 0, 0, -327713, 0, 0, -327712, 0, 0, -327711, 0, 0, -327710, 0, 0, -327709, 0, 0, -327708, 0, 0, -327707, 0, 0, -327706, 0, 0, -327705, 0, 0, -327704, 0, 0, -327703, 0, 0, -327702, 0, 0, -327701, 0, 0, -327700, 0, 0, -327699, 0, 0, -327698, 0, 0, -327697, 0, 0, -327696, 0, 0, -327695, 0, 0, -327694, 0, 0, -327693, 0, 0, -327692, 0, 0, -327691, 0, 0, -327690, 0, 0, -327689, 0, 0, -327688, 0, 0, -327687, 0, 0, -327686, 0, 0, -327685, 0, 0, -327684, 0, 0, -327683, 0, 0, -327682, 0, 0, -327681, 0, 0, -393216, 0, 0, -393215, 0, 0, -393214, 0, 0, -393213, 0, 0, -393212, 0, 0, -393211, 0, 0, -393210, 0, 0, -393209, 0, 0, -393208, 0, 0, -393207, 0, 0, -393206, 0, 0, -393205, 0, 0, -393204, 0, 0, -393203, 0, 0, -393202, 0, 0, -393201, 0, 0, -393200, 0, 0, -393199, 0, 0, -393198, 0, 0, -393197, 0, 0, -393196, 0, 0, -393195, 0, 0, -393194, 0, 0, -393193, 0, 0, -393192, 0, 0, -393191, 0, 0, -393190, 0, 0, -393189, 0, 0, -393188, 0, 0, -393187, 0, 0, -393186, 0, 0, -393185, 0, 0, -393184, 0, 0, -393183, 0, 0, -393182, 0, 0, -393181, 0, 0, -393180, 0, 0, -393179, 0, 0, -393178, 0, 0, -393177, 0, 0, -393176, 0, 0, -393175, 0, 0, -393174, 0, 0, -393173, 0, 0, -393172, 0, 0, -393171, 0, 0, -393170, 0, 0, -393169, 0, 0, -393168, 0, 0, -393167, 0, 0, -393166, 0, 0, -393165, 0, 0, -393164, 0, 0, -393163, 0, 0, -393162, 0, 0, -393161, 0, 0, -393160, 0, 0, -393159, 0, 0, -262181, 0, 0, -262180, 0, 0, -262179, 0, 0, -262178, 0, 0, -262177, 0, 0, -262176, 0, 0, -262175, 0, 0, -262174, 0, 0, -262173, 0, 0, -262172, 0, 0, -262171, 0, 0, -262170, 0, 0, -262169, 0, 0, -262168, 0, 0, -262167, 0, 0, -262166, 0, 0, -262165, 0, 0, -262164, 0, 0, -262163, 0, 0, -262162, 0, 0, -262161, 0, 0, -262160, 0, 0, -262159, 0, 0, -262158, 0, 0, -262157, 0, 0, -262156, 0, 0, -262155, 0, 0, -262154, 0, 0, -262153, 0, 0, -262152, 0, 0, -262151, 0, 0, -262150, 0, 0, -262149, 0, 0, -262148, 0, 0, -262147, 0, 0, -262146, 0, 0, -262145, 0, 0, -327680, 0, 0, -327679, 0, 0, -327678, 0, 0, -327677, 0, 0, -327676, 0, 0, -327675, 0, 0, -327674, 0, 0, -327673, 0, 0, -327672, 0, 0, -327671, 0, 0, -327670, 0, 0, -327669, 0, 0, -327668, 0, 0, -327667, 0, 0, -327666, 0, 0, -327665, 0, 0, -327664, 0, 0, -327663, 0, 0, -327662, 0, 0, -327661, 0, 0, -327660, 0, 0, -327659, 0, 0, -327658, 0, 0, -327657, 0, 0, -327656, 0, 0, -327655, 0, 0, -327654, 0, 0, -327653, 0, 0, -327652, 0, 0, -327651, 0, 0, -327650, 0, 0, -327649, 0, 0, -327648, 0, 0, -327647, 0, 0, -327646, 0, 0, -327645, 0, 0, -327644, 0, 0, -327643, 0, 0, -327642, 0, 0, -327641, 0, 0, -327640, 0, 0, -327639, 0, 0, -327638, 0, 0, -327637, 0, 0, -327636, 0, 0, -327635, 0, 0, -327634, 0, 0, -327633, 0, 0, -327632, 0, 0, -327631, 0, 0, -327630, 0, 0, -327629, 0, 0, -327628, 0, 0, -327627, 0, 0, -327626, 0, 0, -327625, 0, 0, -327624, 0, 0, -327623, 0, 0, -196645, 0, 0, -196644, 0, 0, -196643, 0, 0, -196642, 0, 0, -196641, 0, 0, -196640, 0, 0, -196639, 0, 0, -196638, 0, 0, -196637, 0, 0, -196636, 0, 0, -196635, 0, 0, -196634, 0, 0, -196633, 0, 0, -196632, 0, 0, -196631, 0, 0, -196630, 0, 0, -196629, 0, 0, -196628, 0, 0, -196627, 0, 0, -196626, 0, 0, -196625, 0, 0, -196624, 0, 0, -196623, 0, 0, -196622, 0, 0, -196621, 0, 0, -196620, 0, 0, -196619, 0, 0, -196618, 0, 0, -196617, 0, 0, -196616, 0, 0, -196615, 0, 0, -196614, 0, 0, -196613, 0, 0, -196612, 0, 0, -196611, 0, 0, -196610, 0, 0, -196609, 0, 0, -262144, 0, 0, -262143, 0, 0, -262142, 0, 0, -262141, 0, 0, -262140, 0, 0, -262139, 0, 0, -262138, 0, 0, -262137, 0, 0, -262136, 0, 0, -262135, 0, 0, -262134, 0, 0, -262133, 0, 0, -262132, 0, 0, -262131, 0, 0, -262130, 0, 0, -262129, 0, 0, -262128, 0, 0, -262127, 0, 0, -262126, 0, 0, -262125, 0, 0, -262124, 0, 0, -262123, 0, 0, -262122, 0, 0, -262121, 0, 0, -262120, 0, 0, -262119, 0, 0, -262118, 0, 0, -262117, 0, 0, -262116, 0, 0, -262115, 0, 0, -262114, 0, 0, -262113, 0, 0, -262112, 0, 0, -262111, 0, 0, -262110, 0, 0, -262109, 0, 0, -262108, 0, 0, -262107, 0, 0, -262106, 0, 0, -262105, 0, 0, -262104, 0, 0, -262103, 0, 0, -262102, 0, 0, -262101, 0, 0, -262100, 0, 0, -262099, 0, 0, -262098, 0, 0, -262097, 0, 0, -262096, 0, 0, -262095, 0, 0, -262094, 0, 0, -262093, 0, 0, -262092, 0, 0, -262091, 0, 0, -262090, 0, 0, -262089, 0, 0, -262088, 0, 0, -262087, 0, 0, -131108, 0, 0, -131107, 0, 0, -131106, 0, 0, -131105, 0, 0, -131104, 0, 0, -131103, 0, 0, -131102, 0, 0, -131101, 0, 0, -131100, 0, 0, -131099, 0, 0, -131098, 0, 0, -131097, 0, 0, -131096, 0, 0, -131095, 0, 0, -131094, 0, 0, -131093, 0, 0, -131092, 0, 0, -131091, 0, 0, -131090, 0, 0, -131089, 0, 0, -131088, 0, 0, -131087, 0, 0, -131086, 0, 0, -131085, 0, 0, -131084, 0, 0, -131083, 0, 0, -131082, 0, 0, -131081, 0, 0, -131080, 0, 0, -131079, 0, 0, -131078, 0, 0, -131077, 0, 0, -131076, 0, 0, -131075, 0, 0, -131074, 0, 0, -131073, 0, 0, -196608, 0, 0, -196607, 0, 0, -196606, 0, 0, -196605, 0, 0, -196604, 0, 0, -196603, 0, 0, -196602, 0, 0, -196601, 0, 0, -196600, 0, 0, -196599, 0, 0, -196598, 0, 0, -196597, 0, 0, -196596, 0, 0, -196595, 0, 0, -196594, 0, 0, -196593, 0, 0, -196592, 0, 0, -196591, 0, 0, -196590, 0, 0, -196589, 0, 0, -196588, 0, 0, -196587, 0, 0, -196586, 0, 0, -196585, 0, 0, -196584, 0, 0, -196583, 0, 0, -196582, 0, 0, -196581, 0, 0, -196580, 0, 0, -196579, 0, 0, -196578, 0, 0, -196577, 0, 0, -196576, 0, 0, -196575, 0, 0, -196574, 0, 0, -196573, 0, 0, -196572, 0, 0, -196571, 0, 0, -196570, 0, 0, -196569, 0, 0, -196568, 0, 0, -196567, 0, 0, -196566, 0, 0, -196565, 0, 0, -196564, 0, 0, -196563, 0, 0, -196562, 0, 0, -196561, 0, 0, -196560, 0, 0, -196559, 0, 0, -196558, 0, 0, -196557, 0, 0, -196556, 0, 0, -196555, 0, 0, -196554, 0, 0, -196553, 0, 0, -196552, 0, 0, -196551, 0, 0, -65572, 0, 0, -65571, 0, 0, -65570, 0, 0, -65569, 0, 0, -65568, 0, 0, -65567, 0, 0, -65566, 0, 0, -65565, 0, 0, -65564, 0, 0, -65563, 0, 0, -65562, 0, 0, -65561, 0, 0, -65560, 0, 0, -65559, 0, 0, -65558, 0, 0, -65557, 0, 0, -65556, 0, 0, -65555, 0, 0, -65554, 0, 0, -65553, 0, 0, -65552, 0, 0, -65551, 0, 0, -65550, 0, 0, -65549, 0, 0, -65548, 0, 0, -65547, 0, 0, -65546, 0, 0, -65545, 0, 0, -65544, 0, 0, -65543, 0, 0, -65542, 0, 0, -65541, 0, 0, -65540, 0, 0, -65539, 0, 0, -65538, 0, 0, -65537, 0, 0, -131072, 0, 0, -131071, 0, 0, -131070, 0, 0, -131069, 0, 0, -131068, 0, 0, -131067, 0, 0, -131066, 0, 0, -131065, 0, 0, -131064, 0, 0, -131063, 0, 0, -131062, 0, 0, -131061, 0, 0, -131060, 0, 0, -131059, 0, 0, -131058, 0, 0, -131057, 0, 0, -131056, 0, 0, -131055, 0, 0, -131054, 0, 0, -131053, 0, 0, -131052, 0, 0, -131051, 0, 0, -131050, 0, 0, -131049, 0, 0, -131048, 0, 0, -131047, 0, 0, -131046, 0, 0, -131045, 0, 0, -131044, 0, 0, -131043, 0, 0, -131042, 0, 0, -131041, 0, 0, -131040, 0, 0, -131039, 0, 0, -131038, 0, 0, -131037, 0, 0, -131036, 0, 0, -131035, 0, 0, -131034, 0, 0, -131033, 0, 0, -131032, 0, 0, -131031, 0, 0, -131030, 0, 0, -131029, 0, 0, -131028, 0, 0, -131027, 0, 0, -131026, 0, 0, -131025, 0, 0, -131024, 0, 0, -131023, 0, 0, -131022, 0, 0, -131021, 0, 0, -131020, 0, 0, -131019, 0, 0, -131018, 0, 0, -131017, 0, 0, -131016, 0, 0, -131015, 0, 0, -36, 0, 0, -35, 0, 0, -34, 0, 0, -33, 0, 0, -32, 0, 0, -31, 0, 0, -30, 0, 0, -29, 0, 0, -28, 0, 0, -27, 0, 0, -26, 0, 0, -25, 0, 0, -24, 0, 0, -23, 0, 0, -22, 0, 0, -21, 0, 0, -20, 0, 0, -19, 0, 0, -18, 0, 0, -17, 0, 0, -16, 0, 0, -15, 0, 0, -14, 0, 0, -13, 0, 0, -12, 0, 0, -11, 0, 0, -10, 0, 0, -9, 0, 0, -8, 0, 0, -7, 0, 0, -6, 0, 0, -5, 0, 0, -4, 0, 0, -3, 0, 0, -2, 0, 0, -1, 0, 0, -65536, 0, 0, -65535, 0, 0, -65534, 0, 0, -65533, 0, 0, -65532, 0, 0, -65531, 0, 0, -65530, 0, 0, -65529, 0, 0, -65528, 0, 0, -65527, 0, 0, -65526, 0, 0, -65525, 0, 0, -65524, 0, 0, -65523, 0, 0, -65522, 0, 0, -65521, 0, 0, -65520, 0, 0, -65519, 0, 0, -65518, 0, 0, -65517, 0, 0, -65516, 0, 0, -65515, 0, 0, -65514, 0, 0, -65513, 0, 0, -65512, 0, 0, -65511, 0, 0, -65510, 0, 0, -65509, 0, 0, -65508, 0, 0, -65507, 0, 0, -65506, 0, 0, -65505, 0, 0, -65504, 0, 0, -65503, 0, 0, -65502, 0, 0, -65501, 0, 0, -65500, 0, 0, -65499, 0, 0, -65498, 0, 0, -65497, 0, 0, -65496, 0, 0, -65495, 0, 0, -65494, 0, 0, -65493, 0, 0, -65492, 0, 0, -65491, 0, 0, -65490, 0, 0, -65489, 0, 0, -65488, 0, 0, -65487, 0, 0, -65486, 0, 0, -65485, 0, 0, -65484, 0, 0, -65483, 0, 0, -65482, 0, 0, -65481, 0, 0, -65480, 0, 0, -65479, 0, 0, 65500, 0, 0, 65501, 0, 0, 65502, 0, 0, 65503, 0, 0, 65504, 0, 0, 65505, 0, 0, 65506, 0, 0, 65507, 0, 0, 65508, 0, 0, 65509, 0, 0, 65510, 0, 0, 65511, 0, 0, 65512, 0, 0, 65513, 0, 0, 65514, 0, 0, 65515, 0, 0, 65516, 0, 0, 65517, 0, 0, 65518, 0, 0, 65519, 0, 0, 65520, 0, 0, 65521, 0, 0, 65522, 0, 0, 65523, 0, 0, 65524, 0, 0, 65525, 0, 0, 65526, 0, 0, 65527, 0, 0, 65528, 0, 0, 65529, 0, 0, 65530, 0, 0, 65531, 0, 0, 65532, 0, 0, 65533, 0, 0, 65534, 0, 0, 65535, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 5, 0, 0, 6, 0, 0, 7, 0, 0, 8, 0, 0, 9, 0, 0, 10, 0, 0, 11, 0, 0, 12, 0, 0, 13, 0, 0, 14, 0, 0, 15, 0, 0, 16, 0, 0, 17, 0, 0, 18, 0, 0, 19, 0, 0, 20, 0, 0, 21, 0, 0, 22, 0, 0, 23, 0, 0, 24, 0, 0, 25, 0, 0, 26, 0, 0, 27, 0, 0, 28, 0, 0, 29, 0, 0, 30, 0, 0, 31, 0, 0, 32, 0, 0, 33, 0, 0, 34, 0, 0, 35, 0, 0, 36, 0, 0, 37, 0, 0, 38, 0, 0, 39, 0, 0, 40, 0, 0, 41, 0, 0, 42, 0, 0, 43, 0, 0, 44, 0, 0, 45, 0, 0, 46, 0, 0, 47, 0, 0, 48, 0, 0, 49, 0, 0, 50, 0, 0, 51, 0, 0, 52, 0, 0, 53, 0, 0, 54, 0, 0, 55, 0, 0, 56, 0, 0, 57, 0, 0, 131037, 0, 0, 131038, 0, 0, 131039, 0, 0, 131040, 0, 0, 131041, 0, 0, 131042, 0, 0, 131043, 0, 0, 131044, 0, 0, 131045, 0, 0, 131046, 0, 0, 131047, 0, 0, 131048, 0, 0, 131049, 0, 0, 131050, 0, 0, 131051, 0, 0, 131052, 0, 0, 131053, 0, 0, 131054, 0, 0, 131055, 0, 0, 131056, 0, 0, 131057, 0, 0, 131058, 0, 0, 131059, 0, 0, 131060, 0, 0, 131061, 0, 0, 131062, 0, 0, 131063, 0, 0, 131064, 0, 0, 131065, 0, 0, 131066, 0, 0, 131067, 0, 0, 131068, 0, 0, 131069, 0, 0, 131070, 0, 0, 131071, 0, 0, 65536, 0, 0, 65537, 0, 0, 65538, 0, 0, 65539, 0, 0, 65540, 0, 0, 65541, 0, 0, 65542, 0, 0, 65543, 0, 0, 65544, 0, 0, 65545, 0, 0, 65546, 0, 0, 65547, 0, 0, 65548, 0, 0, 65549, 0, 0, 65550, 0, 0, 65551, 0, 0, 65552, 0, 0, 65553, 0, 0, 65554, 0, 0, 65555, 0, 0, 65556, 0, 0, 65557, 0, 0, 65558, 0, 0, 65559, 0, 0, 65560, 0, 0, 65561, 0, 0, 65562, 0, 0, 65563, 0, 0, 65564, 0, 0, 65565, 0, 0, 65566, 0, 0, 65567, 0, 0, 65568, 0, 0, 65569, 0, 0, 65570, 0, 0, 65571, 0, 0, 65572, 0, 0, 65573, 0, 0, 65574, 0, 0, 65575, 0, 0, 65576, 0, 0, 65577, 0, 0, 65578, 0, 0, 65579, 0, 0, 65580, 0, 0, 65581, 0, 0, 65582, 0, 0, 65583, 0, 0, 65584, 0, 0, 65585, 0, 0, 65586, 0, 0, 65587, 0, 0, 65588, 0, 0, 65589, 0, 0, 65590, 0, 0, 65591, 0, 0, 65592, 0, 0, 65593, 0, 0, 196573, 0, 0, 196574, 0, 0, 196575, 0, 0, 196576, 0, 0, 196577, 0, 0, 196578, 0, 0, 196579, 0, 0, 196580, 0, 0, 196581, 0, 0, 196582, 0, 0, 196583, 0, 0, 196584, 0, 0, 196585, 0, 0, 196586, 0, 0, 196587, 0, 0, 196588, 0, 0, 196589, 0, 0, 196590, 0, 0, 196591, 0, 0, 196592, 0, 0, 196593, 0, 0, 196594, 0, 0, 196595, 0, 0, 196596, 0, 0, 196597, 0, 0, 196598, 0, 0, 196599, 0, 0, 196600, 0, 0, 196601, 0, 0, 196602, 0, 0, 196603, 0, 0, 196604, 0, 0, 196605, 0, 0, 196606, 0, 0, 196607, 0, 0, 131072, 0, 0, 131073, 0, 0, 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0, 131078, 0, 0, 131079, 0, 0, 131080, 0, 0, 131081, 0, 0, 131082, 0, 0, 131083, 0, 0, 131084, 0, 0, 131085, 0, 0, 131086, 0, 0, 131087, 0, 0, 131088, 0, 0, 131089, 0, 0, 131090, 0, 0, 131091, 0, 0, 131092, 0, 0, 131093, 0, 0, 131094, 0, 0, 131095, 0, 0, 131096, 0, 0, 131097, 0, 0, 131098, 0, 0, 131099, 0, 0, 131100, 0, 0, 131101, 0, 0, 131102, 0, 0, 131103, 0, 0, 131104, 0, 0, 131105, 0, 0, 131106, 0, 0, 131107, 0, 0, 131108, 0, 0, 131109, 0, 0, 131110, 0, 0, 131111, 0, 0, 131112, 0, 0, 131113, 0, 0, 131114, 0, 0, 131115, 0, 0, 131116, 0, 0, 131117, 0, 0, 131118, 0, 0, 131119, 0, 0, 131120, 0, 0, 131121, 0, 0, 131122, 0, 0, 131123, 0, 0, 131124, 0, 0, 131125, 0, 0, 131126, 0, 0, 131127, 0, 0, 131128, 0, 0, 131129, 0, 0, 262109, 0, 0, 262110, 0, 0, 262111, 0, 0, 262112, 0, 0, 262113, 0, 0, 262114, 0, 0, 262115, 0, 0, 262116, 0, 0, 262117, 0, 0, 262118, 0, 0, 262119, 0, 0, 262120, 0, 0, 262121, 0, 0, 262122, 0, 0, 262123, 0, 0, 262124, 0, 0, 262125, 0, 0, 262126, 0, 0, 262127, 0, 0, 262128, 0, 0, 262129, 0, 0, 262130, 0, 0, 262131, 0, 0, 262132, 0, 0, 262133, 0, 0, 262134, 0, 0, 262135, 0, 0, 262136, 0, 0, 262137, 0, 0, 262138, 0, 0, 262139, 0, 0, 262140, 0, 0, 262141, 0, 0, 262142, 0, 0, 262143, 0, 0, 196608, 0, 0, 196609, 0, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0, 196614, 0, 0, 196615, 0, 0, 196616, 0, 0, 196617, 0, 0, 196618, 0, 0, 196619, 0, 0, 196620, 0, 0, 196621, 0, 0, 196622, 0, 0, 196623, 0, 0, 196624, 0, 0, 196625, 0, 0, 196626, 0, 0, 196627, 0, 0, 196628, 0, 0, 196629, 0, 0, 196630, 0, 0, 196631, 0, 0, 196632, 0, 0, 196633, 0, 0, 196634, 0, 0, 196635, 0, 0, 196636, 0, 0, 196637, 0, 0, 196638, 0, 0, 196639, 0, 0, 196640, 0, 0, 196641, 0, 0, 196642, 0, 0, 196643, 0, 0, 196644, 0, 0, 196645, 0, 0, 196646, 0, 0, 196647, 0, 0, 196648, 0, 0, 196649, 0, 0, 196650, 0, 0, 196651, 0, 0, 196652, 0, 0, 196653, 0, 0, 196654, 0, 0, 196655, 0, 0, 196656, 0, 0, 196657, 0, 0, 196658, 0, 0, 196659, 0, 0, 196660, 0, 0, 196661, 0, 0, 196662, 0, 0, 196663, 0, 0, 196664, 0, 0, 196665, 0, 0, 327645, 0, 0, 327646, 0, 0, 327647, 0, 0, 327648, 0, 0, 327649, 0, 0, 327650, 0, 0, 327651, 0, 0, 327652, 0, 0, 327653, 0, 0, 327654, 0, 0, 327655, 0, 0, 327656, 0, 0, 327657, 0, 0, 327658, 0, 0, 327659, 0, 0, 327660, 0, 0, 327661, 0, 0, 327662, 0, 0, 327663, 0, 0, 327664, 0, 0, 327665, 0, 0, 327666, 0, 0, 327667, 0, 0, 327668, 0, 0, 327669, 0, 0, 327670, 0, 0, 327671, 0, 0, 327672, 0, 0, 327673, 0, 0, 327674, 0, 0, 327675, 0, 0, 327676, 0, 0, 327677, 0, 0, 327678, 0, 0, 327679, 0, 0, 262144, 0, 0, 262145, 0, 0, 262146, 0, 0, 262147, 0, 0, 262148, 0, 0, 262149, 0, 0, 262150, 0, 0, 262151, 0, 0, 262152, 0, 0, 262153, 0, 0, 262154, 0, 0, 262155, 0, 0, 262156, 0, 0, 262157, 0, 0, 262158, 0, 0, 262159, 0, 0, 262160, 0, 0, 262161, 0, 0, 262162, 0, 0, 262163, 0, 0, 262164, 0, 0, 262165, 0, 0, 262166, 0, 0, 262167, 0, 0, 262168, 0, 0, 262169, 0, 0, 262170, 0, 0, 262171, 0, 0, 262172, 0, 0, 262173, 0, 0, 262174, 0, 0, 262175, 0, 0, 262176, 0, 0, 262177, 0, 0, 262178, 0, 0, 262179, 0, 0, 262180, 0, 0, 262181, 0, 0, 262182, 0, 0, 262183, 0, 0, 262184, 0, 0, 262185, 0, 0, 262186, 0, 0, 262187, 0, 0, 262188, 0, 0, 262189, 0, 0, 262190, 0, 0, 262191, 0, 0, 262192, 0, 0, 262193, 0, 0, 262194, 0, 0, 262195, 0, 0, 262196, 0, 0, 262197, 0, 0, 262198, 0, 0, 262199, 0, 0, 262200, 0, 0, 262201, 0, 0, 393182, 0, 0, 393183, 0, 0, 393184, 0, 0, 393185, 0, 0, 393186, 0, 0, 393187, 0, 0, 393188, 0, 0, 393189, 0, 0, 393190, 0, 0, 393191, 0, 0, 393192, 0, 0, 393193, 0, 0, 393194, 0, 0, 393195, 0, 0, 393196, 0, 0, 393197, 0, 0, 393198, 0, 0, 393199, 0, 0, 393200, 0, 0, 393201, 0, 0, 393202, 0, 0, 393203, 0, 0, 393204, 0, 0, 393205, 0, 0, 393206, 0, 0, 393207, 0, 0, 393208, 0, 0, 393209, 0, 0, 393210, 0, 0, 393211, 0, 0, 393212, 0, 0, 393213, 0, 0, 393214, 0, 0, 393215, 0, 0, 327680, 0, 0, 327681, 0, 0, 327682, 0, 0, 327683, 0, 0, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0, 327687, 0, 0, 327688, 0, 0, 327689, 0, 0, 327690, 0, 0, 327691, 0, 0, 327692, 0, 0, 327693, 0, 0, 327694, 0, 0, 327695, 0, 0, 327696, 0, 0, 327697, 0, 0, 327698, 0, 0, 327699, 0, 0, 327700, 0, 0, 327701, 0, 0, 327702, 0, 0, 327703, 0, 0, 327704, 0, 0, 327705, 0, 0, 327706, 0, 0, 327707, 0, 0, 327708, 0, 0, 327709, 0, 0, 327710, 0, 0, 327711, 0, 0, 327712, 0, 0, 327713, 0, 0, 327714, 0, 0, 327715, 0, 0, 327716, 0, 0, 327717, 0, 0, 327718, 0, 0, 327719, 0, 0, 327720, 0, 0, 327721, 0, 0, 327722, 0, 0, 327723, 0, 0, 327724, 0, 0, 327725, 0, 0, 327726, 0, 0, 327727, 0, 0, 327728, 0, 0, 327729, 0, 0, 327730, 0, 0, 327731, 0, 0, 327732, 0, 0, 327733, 0, 0, 327734, 0, 0, 327735, 0, 0, 327736, 0, 0, 458718, 0, 0, 458719, 0, 0, 458720, 0, 0, 458721, 0, 0, 458722, 0, 0, 458723, 0, 0, 458724, 0, 0, 458725, 0, 0, 458726, 0, 0, 458727, 0, 0, 458728, 0, 0, 458729, 0, 0, 458730, 0, 0, 458731, 0, 0, 458732, 0, 0, 458733, 0, 0, 458734, 0, 0, 458735, 0, 0, 458736, 0, 0, 458737, 0, 0, 458738, 0, 0, 458739, 0, 0, 458740, 0, 0, 458741, 0, 0, 458742, 0, 0, 458743, 0, 0, 458744, 0, 0, 458745, 0, 0, 458746, 0, 0, 458747, 0, 0, 458748, 0, 0, 458749, 0, 0, 458750, 0, 0, 458751, 0, 0, 393216, 0, 0, 393217, 0, 0, 393218, 0, 0, 393219, 0, 0, 393220, 0, 0, 393221, 0, 0, 393222, 0, 0, 393223, 0, 0, 393224, 0, 0, 393225, 0, 0, 393226, 0, 0, 393227, 0, 0, 393228, 0, 0, 393229, 0, 0, 393230, 0, 0, 393231, 0, 0, 393232, 0, 0, 393233, 0, 0, 393234, 0, 0, 393235, 0, 0, 393236, 0, 0, 393237, 0, 0, 393238, 0, 0, 393239, 0, 0, 393240, 0, 0, 393241, 0, 0, 393242, 0, 0, 393243, 0, 0, 393244, 0, 0, 393245, 0, 0, 393246, 0, 0, 393247, 0, 0, 393248, 0, 0, 393249, 0, 0, 393250, 0, 0, 393251, 0, 0, 393252, 0, 0, 393253, 0, 0, 393254, 0, 0, 393255, 0, 0, 393256, 0, 0, 393257, 0, 0, 393258, 0, 0, 393259, 0, 0, 393260, 0, 0, 393261, 0, 0, 393262, 0, 0, 393263, 0, 0, 393264, 0, 0, 393265, 0, 0, 393266, 0, 0, 393267, 0, 0, 393268, 0, 0, 393269, 0, 0, 393270, 0, 0, 393271, 0, 0, 393272, 0, 0, 524254, 0, 0, 524255, 0, 0, 524256, 0, 0, 524257, 0, 0, 524258, 0, 0, 524259, 0, 0, 524260, 0, 0, 524261, 0, 0, 524262, 0, 0, 524263, 0, 0, 524264, 0, 0, 524265, 0, 0, 524266, 0, 0, 524267, 0, 0, 524268, 0, 0, 524269, 0, 0, 524270, 0, 0, 524271, 0, 0, 524272, 0, 0, 524273, 0, 0, 524274, 0, 0, 524275, 0, 0, 524276, 0, 0, 524277, 0, 0, 524278, 0, 0, 524279, 0, 0, 524280, 0, 0, 524281, 0, 0, 524282, 0, 0, 524283, 0, 0, 524284, 0, 0, 524285, 0, 0, 524286, 0, 0, 524287, 0, 0, 458752, 0, 0, 458753, 0, 0, 458754, 0, 0, 458755, 0, 0, 458756, 0, 0, 458757, 0, 0, 458758, 0, 0, 458759, 0, 0, 458760, 0, 0, 458761, 0, 0, 458762, 0, 0, 458763, 0, 0, 458764, 0, 0, 458765, 0, 0, 458766, 0, 0, 458767, 0, 0, 458768, 0, 0, 458769, 0, 0, 458770, 0, 0, 458771, 0, 0, 458772, 0, 0, 458773, 0, 0, 458774, 0, 0, 458775, 0, 0, 458776, 0, 0, 458777, 0, 0, 458778, 0, 0, 458779, 0, 0, 458780, 0, 0, 458781, 0, 0, 458782, 0, 0, 458783, 0, 0, 458784, 0, 0, 458785, 0, 0, 458786, 0, 0, 458787, 0, 0, 458788, 0, 0, 458789, 0, 0, 458790, 0, 0, 458791, 0, 0, 458792, 0, 0, 458793, 0, 0, 458794, 0, 0, 458795, 0, 0, 458796, 0, 0, 458797, 0, 0, 458798, 0, 0, 458799, 0, 0, 458800, 0, 0, 458801, 0, 0, 458802, 0, 0, 458803, 0, 0, 458804, 0, 0, 458805, 0, 0, 458806, 0, 0, 458807, 0, 0, 458808, 0, 0, 589790, 0, 0, 589791, 0, 0, 589792, 0, 0, 589793, 0, 0, 589794, 0, 0, 589795, 0, 0, 589796, 0, 0, 589797, 0, 0, 589798, 0, 0, 589799, 0, 0, 589800, 0, 0, 589801, 0, 0, 589802, 0, 0, 589803, 0, 0, 589804, 0, 0, 589805, 0, 0, 589806, 0, 0, 589807, 0, 0, 589808, 0, 0, 589809, 0, 0, 589810, 0, 0, 589811, 0, 0, 589812, 0, 0, 589813, 0, 0, 589814, 0, 0, 589815, 0, 0, 589816, 0, 0, 589817, 0, 0, 589818, 0, 0, 589819, 0, 0, 589820, 0, 0, 589821, 0, 0, 589822, 0, 0, 589823, 0, 0, 524288, 0, 0, 524289, 0, 0, 524290, 0, 0, 524291, 0, 0, 524292, 0, 0, 524293, 0, 0, 524294, 0, 0, 524295, 0, 0, 524296, 0, 0, 524297, 0, 0, 524298, 0, 0, 524299, 0, 0, 524300, 0, 0, 524301, 0, 0, 524302, 0, 0, 524303, 0, 0, 524304, 0, 0, 524305, 0, 0, 524306, 0, 0, 524307, 0, 0, 524308, 0, 0, 524309, 0, 0, 524310, 0, 0, 524311, 0, 0, 524312, 0, 0, 524313, 0, 0, 524314, 0, 0, 524315, 0, 0, 524316, 0, 0, 524317, 0, 0, 524318, 0, 0, 524319, 0, 0, 524320, 0, 0, 524321, 0, 0, 524322, 0, 0, 524323, 0, 0, 524324, 0, 0, 524325, 0, 0, 524326, 0, 0, 524327, 0, 0, 524328, 0, 0, 524329, 0, 0, 524330, 0, 0, 524331, 0, 0, 524332, 0, 0, 524333, 0, 0, 524334, 0, 0, 524335, 0, 0, 524336, 0, 0, 524337, 0, 0, 524338, 0, 0, 524339, 0, 0, 524340, 0, 0, 524341, 0, 0, 524342, 0, 0, 524343, 0, 0, 524344, 0, 0, 655327, 0, 0, 655328, 0, 0, 655329, 0, 0, 655330, 0, 0, 655331, 0, 0, 655332, 0, 0, 655333, 0, 0, 655334, 0, 0, 655335, 0, 0, 655336, 0, 0, 655337, 0, 0, 655338, 0, 0, 655339, 0, 0, 655340, 0, 0, 655341, 0, 0, 655342, 0, 0, 655343, 0, 0, 655344, 0, 0, 655345, 0, 0, 655346, 0, 0, 655347, 0, 0, 655348, 0, 0, 655349, 0, 0, 655350, 0, 0, 655351, 0, 0, 655352, 0, 0, 655353, 0, 0, 655354, 0, 0, 655355, 0, 0, 655356, 0, 0, 655357, 0, 0, 655358, 0, 0, 655359, 0, 0, 589824, 0, 0, 589825, 0, 0, 589826, 0, 0, 589827, 0, 0, 589828, 0, 0, 589829, 0, 0, 589830, 0, 0, 589831, 0, 0, 589832, 0, 0, 589833, 0, 0, 589834, 0, 0, 589835, 0, 0, 589836, 0, 0, 589837, 0, 0, 589838, 0, 0, 589839, 0, 0, 589840, 0, 0, 589841, 0, 0, 589842, 0, 0, 589843, 0, 0, 589844, 0, 0, 589845, 0, 0, 589846, 0, 0, 589847, 0, 0, 589848, 0, 0, 589849, 0, 0, 589850, 0, 0, 589851, 0, 0, 589852, 0, 0, 589853, 0, 0, 589854, 0, 0, 589855, 0, 0, 589856, 0, 0, 589857, 0, 0, 589858, 0, 0, 589859, 0, 0, 589860, 0, 0, 589861, 0, 0, 589862, 0, 0, 589863, 0, 0, 589864, 0, 0, 589865, 0, 0, 589866, 0, 0, 589867, 0, 0, 589868, 0, 0, 589869, 0, 0, 589870, 0, 0, 589871, 0, 0, 589872, 0, 0, 589873, 0, 0, 589874, 0, 0, 589875, 0, 0, 589876, 0, 0, 589877, 0, 0, 589878, 0, 0, 589879, 0, 0, 720863, 0, 0, 720864, 0, 0, 720865, 0, 0, 720866, 0, 0, 720867, 0, 0, 720868, 0, 0, 720869, 0, 0, 720870, 0, 0, 720871, 0, 0, 720872, 0, 0, 720873, 0, 0, 720874, 0, 0, 720875, 0, 0, 720876, 0, 0, 720877, 0, 0, 720878, 0, 0, 720879, 0, 0, 720880, 0, 0, 720881, 0, 0, 720882, 0, 0, 720883, 0, 0, 720884, 0, 0, 720885, 0, 0, 720886, 0, 0, 720887, 0, 0, 720888, 0, 0, 720889, 0, 0, 720890, 0, 0, 720891, 0, 0, 720892, 0, 0, 720893, 0, 0, 720894, 0, 0, 720895, 0, 0, 655360, 0, 0, 655361, 0, 0, 655362, 0, 0, 655363, 0, 0, 655364, 0, 0, 655365, 0, 0, 655366, 0, 0, 655367, 0, 0, 655368, 0, 0, 655369, 0, 0, 655370, 0, 0, 655371, 0, 0, 655372, 0, 0, 655373, 0, 0, 655374, 0, 0, 655375, 0, 0, 655376, 0, 0, 655377, 0, 0, 655378, 0, 0, 655379, 0, 0, 655380, 0, 0, 655381, 0, 0, 655382, 0, 0, 655383, 0, 0, 655384, 0, 0, 655385, 0, 0, 655386, 0, 0, 655387, 0, 0, 655388, 0, 0, 655389, 0, 0, 655390, 0, 0, 655391, 0, 0, 655392, 0, 0, 655393, 0, 0, 655394, 0, 0, 655395, 0, 0, 655396, 0, 0, 655397, 0, 0, 655398, 0, 0, 655399, 0, 0, 655400, 0, 0, 655401, 0, 0, 655402, 0, 0, 655403, 0, 0, 655404, 0, 0, 655405, 0, 0, 655406, 0, 0, 655407, 0, 0, 655408, 0, 0, 655409, 0, 0, 655410, 0, 0, 655411, 0, 0, 655412, 0, 0, 655413, 0, 0, 655414, 0, 0, 655415, 0, 0, 786399, 0, 0, 786400, 0, 0, 786401, 0, 0, 786402, 0, 0, 786403, 0, 0, 786404, 0, 0, 786405, 0, 0, 786406, 0, 0, 786407, 0, 0, 786408, 0, 0, 786409, 0, 0, 786410, 0, 0, 786411, 0, 0, 786412, 0, 0, 786413, 0, 0, 786414, 0, 0, 786415, 0, 0, 786416, 0, 0, 786417, 0, 0, 786418, 0, 0, 786419, 0, 0, 786420, 0, 0, 786421, 0, 0, 786422, 0, 0, 786423, 0, 0, 786424, 0, 0, 786425, 0, 0, 786426, 0, 0, 786427, 0, 0, 786428, 0, 0, 786429, 0, 0, 786430, 0, 0, 786431, 0, 0, 720896, 0, 0, 720897, 0, 0, 720898, 0, 0, 720899, 0, 0, 720900, 0, 0, 720901, 0, 0, 720902, 0, 0, 720903, 0, 0, 720904, 0, 0, 720905, 0, 0, 720906, 0, 0, 720907, 0, 0, 720908, 0, 0, 720909, 0, 0, 720910, 0, 0, 720911, 0, 0, 720912, 0, 0, 720913, 0, 0, 720914, 0, 0, 720915, 0, 0, 720916, 0, 0, 720917, 0, 0, 720918, 0, 0, 720919, 0, 0, 720920, 0, 0, 720921, 0, 0, 720922, 0, 0, 720923, 0, 0, 720924, 0, 0, 720925, 0, 0, 720926, 0, 0, 720927, 0, 0, 720928, 0, 0, 720929, 0, 0, 720930, 0, 0, 720931, 0, 0, 720932, 0, 0, 720933, 0, 0, 720934, 0, 0, 720935, 0, 0, 720936, 0, 0, 720937, 0, 0, 720938, 0, 0, 720939, 0, 0, 720940, 0, 0, 720941, 0, 0, 720942, 0, 0, 720943, 0, 0, 720944, 0, 0, 720945, 0, 0, 720946, 0, 0, 720947, 0, 0, 720948, 0, 0, 720949, 0, 0, 720950, 0, 0, 720951, 0, 0, 851934, 0, 0, 851935, 0, 0, 851936, 0, 0, 851942, 0, 0, 851943, 0, 0, 851944, 0, 0, 851945, 0, 0, 851946, 0, 0, 851947, 0, 0, 851948, 0, 0, 851949, 0, 0, 851950, 0, 0, 851951, 0, 0, 851952, 0, 0, 851953, 0, 0, 851954, 0, 0, 851955, 0, 0, 851956, 0, 0, 851957, 0, 0, 851958, 0, 0, 851959, 0, 0, 851960, 0, 0, 851961, 0, 0, 851962, 0, 0, 851963, 0, 0, 851964, 0, 0, 851965, 0, 0, 851966, 0, 0, 851967, 0, 0, 786432, 0, 0, 786433, 0, 0, 786434, 0, 0, 786435, 0, 0, 786436, 0, 0, 786437, 0, 0, 786438, 0, 0, 786439, 0, 0, 786440, 0, 0, 786441, 0, 0, 786442, 0, 0, 786443, 0, 0, 786444, 0, 0, 786445, 0, 0, 786446, 0, 0, 786447, 0, 0, 786448, 0, 0, 786449, 0, 0, 786450, 0, 0, 786451, 0, 0, 786452, 0, 0, 786453, 0, 0, 786454, 0, 0, 786455, 0, 0, 786456, 0, 0, 786457, 0, 0, 786458, 0, 0, 786459, 0, 0, 786460, 0, 0, 786461, 0, 0, 786462, 0, 0, 786463, 0, 0, 786464, 0, 0, 786465, 0, 0, 786466, 0, 0, 786467, 0, 0, 786468, 0, 0, 786469, 0, 0, 786470, 0, 0, 786471, 0, 0, 786472, 0, 0, 786473, 0, 0, 786474, 0, 0, 786475, 0, 0, 786476, 0, 0, 786477, 0, 0, 786478, 0, 0, 786479, 0, 0, 786480, 0, 0, 786481, 0, 0, 786482, 0, 0, 786483, 0, 0, 786484, 0, 0, 786485, 0, 0, 786486, 0, 0, 917472, 0, 0, 917479, 0, 0, 917480, 0, 0, 917481, 0, 0, 917482, 0, 0, 917483, 0, 0, 917484, 0, 0, 917485, 0, 0, 917486, 0, 0, 917487, 0, 0, 917488, 0, 0, 917489, 0, 0, 917490, 0, 0, 917491, 0, 0, 917492, 0, 0, 917493, 0, 0, 917494, 0, 0, 917495, 0, 0, 917496, 0, 0, 917497, 0, 0, 917498, 0, 0, 917499, 0, 0, 917500, 0, 0, 917501, 0, 0, 917502, 0, 0, 917503, 0, 0, 851968, 0, 0, 851969, 0, 0, 851970, 0, 0, 851971, 0, 0, 851972, 0, 0, 851973, 0, 0, 851974, 0, 0, 851975, 0, 0, 851976, 0, 0, 851977, 0, 0, 851978, 0, 0, 851979, 0, 0, 851980, 0, 0, 851981, 0, 0, 851982, 0, 0, 851983, 0, 0, 851984, 0, 0, 851985, 0, 0, 851986, 0, 0, 851987, 0, 0, 851988, 0, 0, 851989, 0, 0, 851990, 0, 0, 851991, 0, 0, 851992, 0, 0, 851993, 0, 0, 851994, 0, 0, 851995, 0, 0, 851996, 0, 0, 851997, 0, 0, 851998, 0, 0, 851999, 0, 0, 852000, 0, 0, 852001, 0, 0, 852002, 0, 0, 852003, 0, 0, 852004, 0, 0, 852005, 0, 0, 852006, 0, 0, 852007, 0, 0, 852008, 0, 0, 852009, 0, 0, 852010, 0, 0, 852011, 0, 0, 852012, 0, 0, 852013, 0, 0, 852014, 0, 0, 852015, 0, 0, 852016, 0, 0, 852017, 0, 0, 852018, 0, 0, 852019, 0, 0, 852020, 0, 0, 852021, 0, 0, 852022, 0, 0, 983008, 0, 0, 983016, 0, 0, 983017, 0, 0, 983018, 0, 0, 983019, 0, 0, 983020, 0, 0, 983021, 0, 0, 983022, 0, 0, 983023, 0, 0, 983024, 0, 0, 983025, 0, 0, 983026, 0, 0, 983027, 0, 0, 983028, 0, 0, 983029, 0, 0, 983030, 0, 0, 983031, 0, 0, 983032, 0, 0, 983033, 0, 0, 983034, 0, 0, 983035, 0, 0, 983036, 0, 0, 983037, 0, 0, 983038, 0, 0, 983039, 0, 0, 917504, 0, 0, 917505, 0, 0, 917506, 0, 0, 917507, 0, 0, 917508, 0, 0, 917509, 0, 0, 917510, 0, 0, 917511, 0, 0, 917512, 0, 0, 917513, 0, 0, 917514, 0, 0, 917515, 0, 0, 917516, 0, 0, 917517, 0, 0, 917518, 0, 0, 917519, 0, 0, 917520, 0, 0, 917521, 0, 0, 917522, 0, 0, 917523, 0, 0, 917524, 0, 0, 917525, 0, 0, 917526, 0, 0, 917527, 0, 0, 917528, 0, 0, 917529, 0, 0, 917530, 0, 0, 917531, 0, 0, 917532, 0, 0, 917533, 0, 0, 917534, 0, 0, 917535, 0, 0, 917536, 0, 0, 917537, 0, 0, 917538, 0, 0, 917539, 0, 0, 917540, 0, 0, 917541, 0, 0, 917542, 0, 0, 917543, 0, 0, 917544, 0, 0, 917545, 0, 0, 917546, 0, 0, 917547, 0, 0, 917548, 0, 0, 917549, 0, 0, 917550, 0, 0, 917551, 0, 0, 917552, 0, 0, 917553, 0, 0, 917554, 0, 0, 917555, 0, 0, 917556, 0, 0, 917557, 0, 0, 917558, 0, 0, 1048545, 2, 0, 1048553, 0, 0, 1048554, 0, 0, 1048555, 0, 0, 1048556, 0, 0, 1048557, 0, 0, 1048558, 0, 0, 1048559, 0, 0, 1048560, 0, 0, 1048561, 0, 0, 1048562, 0, 0, 1048563, 0, 0, 1048564, 0, 0, 1048565, 0, 0, 1048566, 0, 0, 1048567, 0, 0, 1048568, 0, 0, 1048569, 0, 0, 1048570, 0, 0, 1048571, 0, 0, 1048572, 0, 0, 1048573, 0, 0, 1048574, 0, 0, 1048575, 0, 0, 983040, 0, 0, 983041, 0, 0, 983042, 0, 0, 983043, 0, 0, 983044, 0, 0, 983045, 0, 0, 983046, 0, 0, 983047, 0, 0, 983048, 0, 0, 983049, 0, 0, 983050, 0, 0, 983051, 0, 0, 983052, 0, 0, 983053, 0, 0, 983054, 0, 0, 983055, 0, 0, 983056, 0, 0, 983057, 0, 0, 983058, 0, 0, 983059, 0, 0, 983060, 0, 0, 983061, 0, 0, 983062, 0, 0, 983063, 0, 0, 983064, 0, 0, 983065, 0, 0, 983066, 0, 0, 983067, 0, 0, 983068, 0, 0, 983069, 0, 0, 983070, 0, 0, 983071, 0, 0, 983072, 0, 0, 983073, 0, 0, 983074, 0, 0, 983075, 0, 0, 983076, 0, 0, 983077, 0, 0, 983078, 0, 0, 983079, 0, 0, 983080, 0, 0, 983081, 0, 0, 983082, 0, 0, 983083, 0, 0, 983084, 0, 0, 983085, 0, 0, 983086, 0, 0, 983087, 0, 0, 983088, 0, 0, 983089, 0, 0, 983090, 0, 0, 983091, 0, 0, 983092, 0, 0, 983093, 0, 0, 1114081, 2, 0, 1114090, 0, 0, 1114091, 0, 0, 1114092, 0, 0, 1114093, 0, 0, 1114094, 0, 0, 1114095, 0, 0, 1114096, 0, 0, 1114097, 0, 0, 1114098, 0, 0, 1114099, 0, 0, 1114100, 0, 0, 1114101, 0, 0, 1114102, 0, 0, 1114103, 0, 0, 1114104, 0, 0, 1114105, 0, 0, 1114106, 0, 0, 1114107, 0, 0, 1114108, 0, 0, 1114109, 0, 0, 1114110, 0, 0, 1114111, 0, 0, 1048576, 0, 0, 1048577, 0, 0, 1048578, 0, 0, 1048579, 0, 0, 1048580, 0, 0, 1048581, 0, 0, 1048582, 0, 0, 1048583, 0, 0, 1048584, 0, 0, 1048585, 0, 0, 1048586, 0, 0, 1048587, 0, 0, 1048588, 0, 0, 1048589, 0, 0, 1048590, 0, 0, 1048591, 0, 0, 1048592, 0, 0, 1048593, 0, 0, 1048594, 0, 0, 1048595, 0, 0, 1048596, 0, 0, 1048597, 0, 0, 1048598, 0, 0, 1048599, 0, 0, 1048600, 0, 0, 1048601, 0, 0, 1048602, 0, 0, 1048603, 0, 0, 1048604, 0, 0, 1048605, 0, 0, 1048606, 0, 0, 1048607, 0, 0, 1048608, 0, 0, 1048609, 0, 0, 1048610, 0, 0, 1048611, 0, 0, 1048612, 0, 0, 1048613, 0, 0, 1048614, 0, 0, 1048615, 0, 0, 1048616, 0, 0, 1048617, 0, 0, 1048618, 0, 0, 1048619, 0, 0, 1048620, 0, 0, 1048621, 0, 0, 1048622, 0, 0, 1048623, 0, 0, 1048624, 0, 0, 1048625, 0, 0, 1048626, 0, 0, 1048627, 0, 0, 1048628, 0, 0, 1048629, 0, 0, 1179618, 2, 0, 1179627, 0, 0, 1179628, 0, 0, 1179629, 0, 0, 1179630, 0, 0, 1179631, 0, 0, 1179632, 0, 0, 1179633, 0, 0, 1179634, 0, 0, 1179635, 0, 0, 1179636, 0, 0, 1179637, 0, 0, 1179638, 0, 0, 1179639, 0, 0, 1179640, 0, 0, 1179641, 0, 0, 1179642, 0, 0, 1179643, 0, 0, 1179644, 0, 0, 1179645, 0, 0, 1179646, 0, 0, 1179647, 0, 0, 1114112, 0, 0, 1114113, 0, 0, 1114114, 0, 0, 1114115, 0, 0, 1114116, 0, 0, 1114117, 0, 0, 1114118, 0, 0, 1114119, 0, 0, 1114120, 0, 0, 1114121, 0, 0, 1114122, 0, 0, 1114123, 0, 0, 1114124, 0, 0, 1114125, 0, 0, 1114126, 0, 0, 1114127, 0, 0, 1114128, 0, 0, 1114129, 0, 0, 1114130, 0, 0, 1114131, 0, 0, 1114132, 0, 0, 1114133, 0, 0, 1114134, 0, 0, 1114135, 0, 0, 1114136, 0, 0, 1114137, 0, 0, 1114138, 0, 0, 1114139, 0, 0, 1114140, 0, 0, 1114141, 0, 0, 1114142, 0, 0, 1114143, 0, 0, 1114144, 0, 0, 1114145, 0, 0, 1114146, 0, 0, 1114147, 0, 0, 1114148, 0, 0, 1114149, 0, 0, 1114150, 0, 0, 1114151, 0, 0, 1114152, 0, 0, 1114153, 0, 0, 1114154, 0, 0, 1114155, 0, 0, 1114156, 0, 0, 1114157, 0, 0, 1114158, 0, 0, 1114159, 0, 0, 1114160, 0, 0, 1114161, 0, 0, 1114162, 0, 0, 1114163, 0, 0, 1114164, 0, 0, 1114165, 0, 0, 1245154, 2, 0, 1245164, 0, 0, 1245165, 0, 0, 1245166, 0, 0, 1245167, 0, 0, 1245168, 0, 0, 1245169, 0, 0, 1245170, 0, 0, 1245171, 0, 0, 1245172, 0, 0, 1245173, 0, 0, 1245174, 0, 0, 1245175, 0, 0, 1245176, 0, 0, 1245177, 0, 0, 1245178, 0, 0, 1245179, 0, 0, 1245180, 0, 0, 1245181, 0, 0, 1245182, 0, 0, 1245183, 0, 0, 1179648, 0, 0, 1179649, 0, 0, 1179650, 0, 0, 1179651, 0, 0, 1179652, 0, 0, 1179653, 0, 0, 1179654, 0, 0, 1179655, 0, 0, 1179656, 0, 0, 1179657, 0, 0, 1179658, 0, 0, 1179659, 0, 0, 1179660, 0, 0, 1179661, 0, 0, 1179662, 0, 0, 1179663, 0, 0, 1179664, 0, 0, 1179665, 0, 0, 1179666, 0, 0, 1179667, 0, 0, 1179668, 0, 0, 1179669, 0, 0, 1179670, 0, 0, 1179671, 0, 0, 1179672, 0, 0, 1179673, 0, 0, 1179674, 0, 0, 1179675, 0, 0, 1179676, 0, 0, 1179677, 0, 0, 1179678, 0, 0, 1179679, 0, 0, 1179680, 0, 0, 1179681, 0, 0, 1179682, 0, 0, 1179683, 0, 0, 1179684, 0, 0, 1179685, 0, 0, 1179686, 0, 0, 1179687, 0, 0, 1179688, 0, 0, 1179689, 0, 0, 1179690, 0, 0, 1179691, 0, 0, 1179692, 0, 0, 1179693, 0, 0, 1179694, 0, 0, 1179695, 0, 0, 1179696, 0, 0, 1179697, 0, 0, 1179698, 0, 0, 1179699, 0, 0, 1179700, 0, 0, 1179701, 0, 0, 1310690, 2, 0, 1310701, 0, 0, 1310702, 0, 0, 1310703, 0, 0, 1310704, 0, 0, 1310705, 0, 0, 1310706, 0, 0, 1310707, 0, 0, 1310708, 0, 0, 1310709, 0, 0, 1310710, 0, 0, 1310711, 0, 0, 1310712, 0, 0, 1310713, 0, 0, 1310714, 0, 0, 1310715, 0, 0, 1310716, 0, 0, 1310717, 0, 0, 1310718, 0, 0, 1310719, 0, 0, 1245184, 0, 0, 1245185, 0, 0, 1245186, 0, 0, 1245187, 0, 0, 1245188, 0, 0, 1245189, 0, 0, 1245190, 0, 0, 1245191, 0, 0, 1245192, 0, 0, 1245193, 0, 0, 1245194, 0, 0, 1245195, 0, 0, 1245196, 0, 0, 1245197, 0, 0, 1245198, 0, 0, 1245199, 0, 0, 1245200, 0, 0, 1245201, 0, 0, 1245202, 0, 0, 1245203, 0, 0, 1245204, 0, 0, 1245205, 0, 0, 1245206, 0, 0, 1245207, 0, 0, 1245208, 0, 0, 1245209, 0, 0, 1245210, 0, 0, 1245211, 0, 0, 1245212, 0, 0, 1245213, 0, 0, 1245214, 0, 0, 1245215, 0, 0, 1245216, 0, 0, 1245217, 0, 0, 1245218, 0, 0, 1245219, 0, 0, 1245220, 0, 0, 1245221, 0, 0, 1245222, 0, 0, 1245223, 0, 0, 1245224, 0, 0, 1245225, 0, 0, 1245226, 0, 0, 1245227, 0, 0, 1245228, 0, 0, 1245229, 0, 0, 1245230, 0, 0, 1245231, 0, 0, 1245232, 0, 0, 1245233, 0, 0, 1245234, 0, 0, 1245235, 0, 0, 1245236, 0, 0, 1376238, 0, 0, 1376239, 0, 0, 1376240, 0, 0, 1376241, 0, 0, 1376242, 0, 0, 1376243, 0, 0, 1376244, 0, 0, 1376245, 0, 0, 1376246, 0, 0, 1376247, 0, 0, 1376248, 0, 0, 1376249, 0, 0, 1376250, 0, 0, 1376251, 0, 0, 1376252, 0, 0, 1376253, 0, 0, 1376254, 0, 0, 1376255, 0, 0, 1310720, 0, 0, 1310721, 0, 0, 1310722, 0, 0, 1310723, 0, 0, 1310724, 0, 0, 1310725, 0, 0, 1310726, 0, 0, 1310727, 0, 0, 1310728, 0, 0, 1310729, 0, 0, 1310730, 0, 0, 1310731, 0, 0, 1310732, 0, 0, 1310733, 0, 0, 1310734, 0, 0, 1310735, 0, 0, 1310736, 0, 0, 1310737, 0, 0, 1310738, 0, 0, 1310739, 0, 0, 1310740, 0, 0, 1310741, 0, 0, 1310742, 0, 0, 1310743, 0, 0, 1310744, 0, 0, 1310745, 0, 0, 1310746, 0, 0, 1310747, 0, 0, 1310748, 0, 0, 1310749, 0, 0, 1310750, 0, 0, 1310751, 0, 0, 1310752, 0, 0, 1310753, 0, 0, 1310754, 0, 0, 1310755, 0, 0, 1310756, 0, 0, 1310757, 0, 0, 1310758, 0, 0, 1310759, 0, 0, 1310760, 0, 0, 1310761, 0, 0, 1310762, 0, 0, 1310763, 0, 0, 1310764, 0, 0, 1310765, 0, 0, 1310766, 0, 0, 1310767, 0, 0, 1310768, 0, 0, 1310769, 0, 0, 1310770, 0, 0, 1310771, 0, 0, 1310772, 0, 0, 1441775, 0, 0, 1441776, 0, 0, 1441777, 0, 0, 1441778, 0, 0, 1441779, 0, 0, 1441780, 0, 0, 1441781, 0, 0, 1441782, 0, 0, 1441783, 0, 0, 1441784, 0, 0, 1441785, 0, 0, 1441786, 0, 0, 1441787, 0, 0, 1441788, 0, 0, 1441789, 0, 0, 1441790, 0, 0, 1441791, 0, 0, 1376256, 0, 0, 1376257, 0, 0, 1376258, 0, 0, 1376259, 0, 0, 1376260, 0, 0, 1376261, 0, 0, 1376262, 0, 0, 1376263, 0, 0, 1376264, 0, 0, 1376265, 0, 0, 1376266, 0, 0, 1376267, 0, 0, 1376268, 0, 0, 1376269, 0, 0, 1376270, 0, 0, 1376271, 0, 0, 1376272, 0, 0, 1376273, 0, 0, 1376274, 0, 0, 1376275, 0, 0, 1376276, 0, 0, 1376277, 0, 0, 1376278, 0, 0, 1376279, 0, 0, 1376280, 0, 0, 1376281, 0, 0, 1376282, 0, 0, 1376283, 0, 0, 1376284, 0, 0, 1376285, 0, 0, 1376286, 0, 0, 1376287, 0, 0, 1376288, 0, 0, 1376289, 0, 0, 1376290, 0, 0, 1376291, 0, 0, 1376292, 0, 0, 1376293, 0, 0, 1376294, 0, 0, 1376295, 0, 0, 1376296, 0, 0, 1376297, 0, 0, 1376298, 0, 0, 1376299, 0, 0, 1376300, 0, 0, 1376301, 0, 0, 1376302, 0, 0, 1376303, 0, 0, 1376304, 0, 0, 1376305, 0, 0, 1376306, 0, 0, 1376307, 0, 0, 1376308, 0, 0, 1507312, 0, 0, 1507313, 0, 0, 1507314, 0, 0, 1507315, 0, 0, 1507316, 0, 0, 1507317, 0, 0, 1507318, 0, 0, 1507319, 0, 0, 1507320, 0, 0, 1507321, 0, 0, 1507322, 0, 0, 1507323, 0, 0, 1507324, 0, 0, 1507325, 0, 0, 1507326, 0, 0, 1507327, 0, 0, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1441824, 0, 0, 1441825, 0, 0, 1441826, 0, 0, 1441827, 0, 0, 1441828, 0, 0, 1441829, 0, 0, 1441830, 0, 0, 1441831, 0, 0, 1441832, 0, 0, 1441833, 0, 0, 1441834, 0, 0, 1441835, 0, 0, 1441836, 0, 0, 1441837, 0, 0, 1441838, 0, 0, 1441839, 0, 0, 1441840, 0, 0, 1441841, 0, 0, 1441842, 0, 0, 1441843, 0, 0, 1572849, 0, 0, 1572850, 0, 0, 1572851, 0, 0, 1572852, 0, 0, 1572853, 0, 0, 1572854, 0, 0, 1572855, 0, 0, 1572856, 0, 0, 1572857, 0, 0, 1572858, 0, 0, 1572859, 0, 0, 1572860, 0, 0, 1572861, 0, 0, 1572862, 0, 0, 1572863, 0, 0, 1507328, 0, 0, 1507329, 0, 0, 1507330, 0, 0, 1507331, 0, 0, 1507332, 0, 0, 1507333, 0, 0, 1507334, 0, 0, 1507335, 0, 0, 1507336, 0, 0, 1507337, 0, 0, 1507338, 0, 0, 1507339, 0, 0, 1507340, 0, 0, 1507341, 0, 0, 1507342, 0, 0, 1507343, 0, 0, 1507344, 0, 0, 1507345, 0, 0, 1507346, 0, 0, 1507347, 0, 0, 1507348, 0, 0, 1507349, 0, 0, 1507350, 0, 0, 1507351, 0, 0, 1507352, 0, 0, 1507353, 0, 0, 1507354, 0, 0, 1507355, 0, 0, 1507356, 0, 0, 1507357, 0, 0, 1507358, 0, 0, 1507359, 0, 0, 1507360, 0, 0, 1507361, 0, 0, 1507362, 0, 0, 1507363, 0, 0, 1507364, 0, 0, 1507365, 0, 0, 1507366, 0, 0, 1507367, 0, 0, 1507368, 0, 0, 1507369, 0, 0, 1507370, 0, 0, 1507371, 0, 0, 1507372, 0, 0, 1507373, 0, 0, 1507374, 0, 0, 1507375, 0, 0, 1507376, 0, 0, 1507377, 0, 0, 1507378, 0, 0, 1507379, 0, 0, 1638385, 0, 0, 1638386, 0, 0, 1638387, 0, 0, 1638388, 0, 0, 1638389, 0, 0, 1638390, 0, 0, 1638391, 0, 0, 1638392, 0, 0, 1638393, 0, 0, 1638394, 0, 0, 1638395, 0, 0, 1638396, 0, 0, 1638397, 0, 0, 1638398, 0, 0, 1638399, 0, 0, 1572864, 0, 0, 1572865, 0, 0, 1572866, 0, 0, 1572867, 0, 0, 1572868, 0, 0, 1572869, 0, 0, 1572870, 0, 0, 1572871, 0, 0, 1572872, 0, 0, 1572873, 0, 0, 1572874, 0, 0, 1572875, 0, 0, 1572876, 0, 0, 1572877, 0, 0, 1572878, 0, 0, 1572879, 0, 0, 1572880, 0, 0, 1572881, 0, 0, 1572882, 0, 0, 1572883, 0, 0, 1572884, 0, 0, 1572885, 0, 0, 1572886, 0, 0, 1572887, 0, 0, 1572888, 0, 0, 1572889, 0, 0, 1572890, 0, 0, 1572891, 0, 0, 1572892, 0, 0, 1572893, 0, 0, 1572894, 0, 0, 1572895, 0, 0, 1572896, 0, 0, 1572897, 0, 0, 1572898, 0, 0, 1572899, 0, 0, 1572900, 0, 0, 1572901, 0, 0, 1572902, 0, 0, 1572903, 0, 0, 1572904, 0, 0, 1572905, 0, 0, 1572906, 0, 0, 1572907, 0, 0, 1572908, 0, 0, 1572909, 0, 0, 1572910, 0, 0, 1572911, 0, 0, 1572912, 0, 0, 1572913, 0, 0, 1572914, 0, 0, 1703922, 0, 0, 1703923, 0, 0, 1703924, 0, 0, 1703925, 0, 0, 1703926, 0, 0, 1703927, 0, 0, 1703928, 0, 0, 1703929, 0, 0, 1703930, 0, 0, 1703931, 0, 0, 1703932, 0, 0, 1703933, 0, 0, 1703934, 0, 0, 1703935, 0, 0, 1638400, 0, 0, 1638401, 0, 0, 1638402, 0, 0, 1638403, 0, 0, 1638404, 0, 0, 1638405, 0, 0, 1638406, 0, 0, 1638407, 0, 0, 1638408, 0, 0, 1638409, 0, 0, 1638410, 0, 0, 1638411, 0, 0, 1638412, 0, 0, 1638413, 0, 0, 1638414, 0, 0, 1638415, 0, 0, 1638416, 0, 0, 1638417, 0, 0, 1638418, 0, 0, 1638419, 0, 0, 1638420, 0, 0, 1638421, 0, 0, 1638422, 0, 0, 1638423, 0, 0, 1638424, 0, 0, 1638425, 0, 0, 1638426, 0, 0, 1638427, 0, 0, 1638428, 0, 0, 1638429, 0, 0, 1638430, 0, 0, 1638431, 0, 0, 1638432, 0, 0, 1638433, 0, 0, 1638434, 0, 0, 1638435, 0, 0, 1638436, 0, 0, 1638437, 0, 0, 1638438, 0, 0, 1638439, 0, 0, 1638440, 0, 0, 1638441, 0, 0, 1638442, 0, 0, 1638443, 0, 0, 1638444, 0, 0, 1638445, 0, 0, 1638446, 0, 0, 1638447, 0, 0, 1638448, 0, 0, 1638449, 0, 0, 1638450, 0, 0, 1769459, 0, 0, 1769460, 0, 0, 1769461, 0, 0, 1769462, 0, 0, 1769463, 0, 0, 1769464, 0, 0, 1769465, 0, 0, 1769466, 0, 0, 1769467, 0, 0, 1769468, 0, 0, 1769469, 0, 0, 1769470, 0, 0, 1769471, 0, 0, 1703936, 0, 0, 1703937, 0, 0, 1703938, 0, 0, 1703939, 0, 0, 1703940, 0, 0, 1703941, 0, 0, 1703942, 0, 0, 1703943, 0, 0, 1703944, 0, 0, 1703945, 0, 0, 1703946, 0, 0, 1703947, 0, 0, 1703948, 0, 0, 1703949, 0, 0, 1703950, 0, 0, 1703951, 0, 0, 1703952, 0, 0, 1703953, 0, 0, 1703954, 0, 0, 1703955, 0, 0, 1703956, 0, 0, 1703957, 0, 0, 1703958, 0, 0, 1703959, 0, 0, 1703960, 0, 0, 1703961, 0, 0, 1703962, 0, 0, 1703963, 0, 0, 1703964, 0, 0, 1703965, 0, 0, 1703966, 0, 0, 1703967, 0, 0, 1703968, 0, 0, 1703969, 0, 0, 1703970, 0, 0, 1703971, 0, 0, 1703972, 0, 0, 1703973, 0, 0, 1703974, 0, 0, 1703975, 0, 0, 1703976, 0, 0, 1703977, 0, 0, 1703978, 0, 0, 1703979, 0, 0, 1703980, 0, 0, 1703981, 0, 0, 1703982, 0, 0, 1703983, 0, 0, 1703984, 0, 0, 1703985, 0, 0, 1834996, 0, 0, 1834997, 0, 0, 1834998, 0, 0, 1834999, 0, 0, 1835000, 0, 0, 1835001, 0, 0, 1835002, 0, 0, 1835003, 0, 0, 1835004, 0, 0, 1835005, 0, 0, 1835006, 0, 0, 1835007, 0, 0, 1769472, 0, 0, 1769473, 0, 0, 1769474, 0, 0, 1769475, 0, 0, 1769476, 0, 0, 1769477, 0, 0, 1769478, 0, 0, 1769479, 0, 0, 1769480, 0, 0, 1769481, 0, 0, 1769482, 0, 0, 1769483, 0, 0, 1769484, 0, 0, 1769485, 0, 0, 1769486, 0, 0, 1769487, 0, 0, 1769488, 0, 0, 1769489, 0, 0, 1769490, 0, 0, 1769491, 0, 0, 1769492, 0, 0, 1769493, 0, 0, 1769494, 0, 0, 1769495, 0, 0, 1769496, 0, 0, 1769497, 0, 0, 1769498, 0, 0, 1769499, 0, 0, 1769500, 0, 0, 1769501, 0, 0, 1769502, 0, 0, 1769503, 0, 0, 1769504, 0, 0, 1769505, 0, 0, 1769506, 0, 0, 1769507, 0, 0, 1769508, 0, 0, 1769509, 0, 0, 1769510, 0, 0, 1769511, 0, 0, 1769512, 0, 0, 1769513, 0, 0, 1769514, 0, 0, 1769515, 0, 0, 1769516, 0, 0, 1769517, 0, 0, 1769518, 0, 0, 1769519, 0, 0, 1769520, 0, 0, 1769521, 0, 0, 1900533, 0, 0, 1900534, 0, 0, 1900535, 0, 0, 1900536, 0, 0, 1900537, 0, 0, 1900538, 0, 0, 1900539, 0, 0, 1900540, 0, 0, 1900541, 0, 0, 1900542, 0, 0, 1900543, 0, 0, 1835008, 0, 0, 1835009, 0, 0, 1835010, 0, 0, 1835011, 0, 0, 1835012, 0, 0, 1835013, 0, 0, 1835014, 0, 0, 1835015, 0, 0, 1835016, 0, 0, 1835017, 0, 0, 1835018, 0, 0, 1835019, 0, 0, 1835020, 0, 0, 1835021, 0, 0, 1835022, 0, 0, 1835023, 0, 0, 1835024, 0, 0, 1835025, 0, 0, 1835026, 0, 0, 1835027, 0, 0, 1835028, 0, 0, 1835029, 0, 0, 1835030, 0, 0, 1835031, 0, 0, 1835032, 0, 0, 1835033, 0, 0, 1835034, 0, 0, 1835035, 0, 0, 1835036, 0, 0, 1835037, 0, 0, 1835038, 0, 0, 1835039, 0, 0, 1835040, 0, 0, 1835041, 0, 0, 1835042, 0, 0, 1835043, 0, 0, 1835044, 0, 0, 1835045, 0, 0, 1835046, 0, 0, 1835047, 0, 0, 1835048, 0, 0, 1835049, 0, 0, 1835050, 0, 0, 1835051, 0, 0, 1835052, 0, 0, 1835053, 0, 0, 1835054, 0, 0, 1835055, 0, 0, 1835056, 0, 0, 1966070, 0, 0, 1966071, 0, 0, 1966072, 0, 0, 1966073, 0, 0, 1966074, 0, 0, 1966075, 0, 0, 1966076, 0, 0, 1966077, 0, 0, 1966078, 0, 0, 1966079, 0, 0, 1900544, 0, 0, 1900545, 0, 0, 1900546, 0, 0, 1900547, 0, 0, 1900548, 0, 0, 1900549, 0, 0, 1900550, 0, 0, 1900551, 0, 0, 1900552, 0, 0, 1900553, 0, 0, 1900554, 0, 0, 1900555, 0, 0, 1900556, 0, 0, 1900557, 0, 0, 1900558, 0, 0, 1900559, 0, 0, 1900560, 0, 0, 1900561, 0, 0, 1900562, 0, 0, 1900563, 0, 0, 1900564, 0, 0, 1900565, 0, 0, 1900566, 0, 0, 1900567, 0, 0, 1900568, 0, 0, 1900569, 0, 0, 1900570, 0, 0, 1900571, 0, 0, 1900572, 0, 0, 1900573, 0, 0, 1900574, 0, 0, 1900575, 0, 0, 1900576, 0, 0, 1900577, 0, 0, 1900578, 0, 0, 1900579, 0, 0, 1900580, 0, 0, 1900581, 0, 0, 1900582, 0, 0, 1900583, 0, 0, 1900584, 0, 0, 1900585, 0, 0, 1900586, 0, 0, 1900587, 0, 0, 1900588, 0, 0, 1900589, 0, 0, 1900590, 0, 0, 1900591, 0, 0, 1900592, 0, 0, 2031607, 0, 0, 2031608, 0, 0, 2031609, 0, 0, 2031610, 0, 0, 2031611, 0, 0, 2031612, 0, 0, 2031613, 0, 0, 2031614, 0, 0, 2031615, 0, 0, 1966080, 0, 0, 1966081, 0, 0, 1966082, 0, 0, 1966083, 0, 0, 1966084, 0, 0, 1966085, 0, 0, 1966086, 0, 0, 1966087, 0, 0, 1966088, 0, 0, 1966089, 0, 0, 1966090, 0, 0, 1966091, 0, 0, 1966092, 0, 0, 1966093, 0, 0, 1966094, 0, 0, 1966095, 0, 0, 1966096, 0, 0, 1966097, 0, 0, 1966098, 0, 0, 1966099, 0, 0, 1966100, 0, 0, 1966101, 0, 0, 1966102, 0, 0, 1966103, 0, 0, 1966104, 0, 0, 1966105, 0, 0, 1966106, 0, 0, 1966107, 0, 0, 1966108, 0, 0, 1966109, 0, 0, 1966110, 0, 0, 1966111, 0, 0, 1966112, 0, 0, 1966113, 0, 0, 1966114, 0, 0, 1966115, 0, 0, 1966116, 0, 0, 1966117, 0, 0, 1966118, 0, 0, 1966119, 0, 0, 1966120, 0, 0, 1966121, 0, 0, 1966122, 0, 0, 1966123, 0, 0, 1966124, 0, 0, 1966125, 0, 0, 1966126, 0, 0, 1966127, 0, 0, 2097144, 0, 0, 2097145, 0, 0, 2097146, 0, 0, 2097147, 0, 0, 2097148, 0, 0, 2097149, 0, 0, 2097150, 0, 0, 2097151, 0, 0, 2031616, 0, 0, 2031617, 0, 0, 2031618, 0, 0, 2031619, 0, 0, 2031620, 0, 0, 2031621, 0, 0, 2031622, 0, 0, 2031623, 0, 0, 2031624, 0, 0, 2031625, 0, 0, 2031626, 0, 0, 2031627, 0, 0, 2031628, 0, 0, 2031629, 0, 0, 2031630, 0, 0, 2031631, 0, 0, 2031632, 0, 0, 2031633, 0, 0, 2031634, 0, 0, 2031635, 0, 0, 2031636, 0, 0, 2031637, 0, 0, 2031638, 0, 0, 2031639, 0, 0, 2031640, 0, 0, 2031641, 0, 0, 2031642, 0, 0, 2031643, 0, 0, 2031644, 0, 0, 2031645, 0, 0, 2031646, 0, 0, 2031647, 0, 0, 2031648, 0, 0, 2031649, 0, 0, 2031650, 0, 0, 2031651, 0, 0, 2031652, 0, 0, 2031653, 0, 0, 2031654, 0, 0, 2031655, 0, 0, 2031656, 0, 0, 2031657, 0, 0, 2031658, 0, 0, 2031659, 0, 0, 2031660, 0, 0, 2031661, 0, 0, 2031662, 0, 0, 2031663, 0, 0, 2162681, 0, 0, 2162682, 0, 0, 2162683, 0, 0, 2162684, 0, 0, 2162685, 0, 0, 2162686, 0, 0, 2162687, 0, 0, 2097152, 0, 0, 2097153, 0, 0, 2097154, 0, 0, 2097155, 0, 0, 2097156, 0, 0, 2097157, 0, 0, 2097158, 0, 0, 2097159, 0, 0, 2097160, 0, 0, 2097161, 0, 0, 2097162, 0, 0, 2097163, 0, 0, 2097164, 0, 0, 2097165, 0, 0, 2097166, 0, 0, 2097167, 0, 0, 2097168, 0, 0, 2097169, 0, 0, 2097170, 0, 0, 2097171, 0, 0, 2097172, 0, 0, 2097173, 0, 0, 2097174, 0, 0, 2097175, 0, 0, 2097176, 0, 0, 2097177, 0, 0, 2097178, 0, 0, 2097179, 0, 0, 2097180, 0, 0, 2097181, 0, 0, 2097182, 0, 0, 2097183, 0, 0, 2097184, 0, 0, 2097185, 0, 0, 2097186, 0, 0, 2097187, 0, 0, 2097188, 0, 0, 2097189, 0, 0, 2097190, 0, 0, 2097191, 0, 0, 2097192, 0, 0, 2097193, 0, 0, 2097194, 0, 0, 2097195, 0, 0, 2097196, 0, 0, 2097197, 0, 0, 2097198, 0, 0, 2097199, 0, 0, 2228218, 0, 0, 2228219, 0, 0, 2228220, 0, 0, 2228221, 0, 0, 2228222, 0, 0, 2228223, 0, 0, 2162688, 0, 0, 2162689, 0, 0, 2162690, 0, 0, 2162691, 0, 0, 2162692, 0, 0, 2162693, 0, 0, 2162694, 0, 0, 2162695, 0, 0, 2162696, 0, 0, 2162697, 0, 0, 2162698, 0, 0, 2162699, 0, 0, 2162700, 0, 0, 2162701, 0, 0, 2162702, 0, 0, 2162703, 0, 0, 2162704, 0, 0, 2162705, 0, 0, 2162706, 0, 0, 2162707, 0, 0, 2162708, 0, 0, 2162709, 0, 0, 2162710, 0, 0, 2162711, 0, 0, 2162712, 0, 0, 2162713, 0, 0, 2162714, 0, 0, 2162715, 0, 0, 2162716, 0, 0, 2162717, 0, 0, 2162718, 0, 0, 2162719, 0, 0, 2162720, 0, 0, 2162721, 0, 0, 2162722, 0, 0, 2162723, 0, 0, 2162724, 0, 0, 2162725, 0, 0, 2162726, 0, 0, 2162727, 0, 0, 2162728, 0, 0, 2162729, 0, 0, 2162730, 0, 0, 2162731, 0, 0, 2162732, 0, 0, 2162733, 0, 0, 2162734, 0, 0, 2293754, 0, 0, 2293755, 0, 0, 2293756, 0, 0, 2293757, 0, 0, 2293758, 0, 0, 2293759, 0, 0, 2228224, 0, 0, 2228225, 0, 0, 2228226, 0, 0, 2228227, 0, 0, 2228228, 0, 0, 2228229, 0, 0, 2228230, 0, 0, 2228231, 0, 0, 2228232, 0, 0, 2228233, 0, 0, 2228234, 0, 0, 2228235, 0, 0, 2228236, 0, 0, 2228237, 0, 0, 2228238, 0, 0, 2228239, 0, 0, 2228240, 0, 0, 2228241, 0, 0, 2228242, 0, 0, 2228243, 0, 0, 2228244, 0, 0, 2228245, 0, 0, 2228246, 0, 0, 2228247, 0, 0, 2228248, 0, 0, 2228249, 0, 0, 2228250, 0, 0, 2228251, 0, 0, 2228252, 0, 0, 2228253, 0, 0, 2228254, 0, 0, 2228255, 0, 0, 2228256, 0, 0, 2228257, 0, 0, 2228258, 0, 0, 2228259, 0, 0, 2228260, 0, 0, 2228261, 0, 0, 2228262, 0, 0, 2228263, 0, 0, 2228264, 0, 0, 2228265, 0, 0, 2228266, 0, 0, 2228267, 0, 0, 2228268, 0, 0, 2228269, 0, 0, 2228270, 0, 0, 2359291, 0, 0, 2359292, 0, 0, 2359293, 0, 0, 2359294, 0, 0, 2359295, 0, 0, 2293760, 0, 0, 2293761, 0, 0, 2293762, 0, 0, 2293763, 0, 0, 2293764, 0, 0, 2293765, 0, 0, 2293766, 0, 0, 2293767, 0, 0, 2293768, 0, 0, 2293769, 0, 0, 2293770, 0, 0, 2293771, 0, 0, 2293772, 0, 0, 2293773, 0, 0, 2293774, 0, 0, 2293775, 0, 0, 2293776, 0, 0, 2293777, 0, 0, 2293778, 0, 0, 2293779, 0, 0, 2293780, 0, 0, 2293781, 0, 0, 2293782, 0, 0, 2293783, 0, 0, 2293784, 0, 0, 2293785, 0, 0, 2293786, 0, 0, 2293787, 0, 0, 2293788, 0, 0, 2293789, 0, 0, 2293790, 0, 0, 2293791, 0, 0, 2293792, 0, 0, 2293793, 0, 0, 2293794, 0, 0, 2293795, 0, 0, 2293796, 0, 0, 2293797, 0, 0, 2293798, 0, 0, 2293799, 0, 0, 2293800, 0, 0, 2293801, 0, 0, 2293802, 0, 0, 2293803, 0, 0, 2293804, 0, 0, 2293805, 0, 0, 2424828, 0, 0, 2424829, 0, 0, 2424830, 0, 0, 2424831, 0, 0, 2359296, 0, 0, 2359297, 0, 0, 2359298, 0, 0, 2359299, 0, 0, 2359300, 0, 0, 2359301, 0, 0, 2359302, 0, 0, 2359303, 0, 0, 2359304, 0, 0, 2359305, 0, 0, 2359306, 0, 0, 2359307, 0, 0, 2359308, 0, 0, 2359309, 0, 0, 2359310, 0, 0, 2359311, 0, 0, 2359312, 0, 0, 2359313, 0, 0, 2359314, 0, 0, 2359315, 0, 0, 2359316, 0, 0, 2359317, 0, 0, 2359318, 0, 0, 2359319, 0, 0, 2359320, 0, 0, 2359321, 0, 0, 2359322, 0, 0, 2359323, 0, 0, 2359324, 0, 0, 2359325, 0, 0, 2359326, 0, 0, 2359327, 0, 0, 2359328, 0, 0, 2359329, 0, 0, 2359330, 0, 0, 2359331, 0, 0, 2359332, 0, 0, 2359333, 0, 0, 2359334, 0, 0, 2359335, 0, 0, 2359336, 0, 0, 2359337, 0, 0, 2359338, 0, 0, 2359339, 0, 0, 2359340, 0, 0, 2490365, 0, 0, 2490366, 0, 0, 2490367, 0, 0, 2424832, 0, 0, 2424833, 0, 0, 2424834, 0, 0, 2424835, 0, 0, 2424836, 0, 0, 2424837, 0, 0, 2424838, 0, 0, 2424839, 0, 0, 2424840, 0, 0, 2424841, 0, 0, 2424842, 0, 0, 2424843, 0, 0, 2424844, 0, 0, 2424845, 0, 0, 2424846, 0, 0, 2424847, 0, 0, 2424848, 0, 0, 2424849, 0, 0, 2424850, 0, 0, 2424851, 0, 0, 2424852, 0, 0, 2424853, 0, 0, 2424854, 0, 0, 2424855, 0, 0, 2424856, 0, 0, 2424857, 0, 0, 2424858, 0, 0, 2424859, 0, 0, 2424860, 0, 0, 2424861, 0, 0, 2424862, 0, 0, 2424863, 0, 0, 2424864, 0, 0, 2424865, 0, 0, 2424866, 0, 0, 2424867, 0, 0, 2424868, 0, 0, 2424869, 0, 0, 2424870, 0, 0, 2424871, 0, 0, 2424872, 0, 0, 2424873, 0, 0, 2424874, 0, 0, 2424875, 0, 0, 2424876, 0, 0, 2555903, 0, 0, 2490368, 0, 0, 2490369, 0, 0, 2490370, 0, 0, 2490371, 0, 0, 2490372, 0, 0, 2490373, 0, 0, 2490374, 0, 0, 2490375, 0, 0, 2490376, 0, 0, 2490377, 0, 0, 2490378, 0, 0, 2490379, 0, 0, 2490380, 0, 0, 2490381, 0, 0, 2490382, 0, 0, 2490383, 0, 0, 2490384, 0, 0, 2490385, 0, 0, 2490386, 0, 0, 2490387, 0, 0, 2490388, 0, 0, 2490389, 0, 0, 2490390, 0, 0, 2490391, 0, 0, 2490392, 0, 0, 2490393, 0, 0, 2490394, 0, 0, 2490395, 0, 0, 2490396, 0, 0, 2490397, 0, 0, 2490398, 0, 0, 2490399, 0, 0, 2490400, 0, 0, 2490401, 0, 0, 2490402, 0, 0, 2490403, 0, 0, 2490404, 0, 0, 2490405, 0, 0, 2490406, 0, 0, 2490407, 0, 0, 2490408, 0, 0, 2490409, 0, 0, 2490410, 0, 0, 2490411, 0, 0, 2555904, 0, 0, 2555905, 0, 0, 2555906, 0, 0, 2555907, 0, 0, 2555908, 0, 0, 2555909, 0, 0, 2555910, 0, 0, 2555911, 0, 0, 2555912, 0, 0, 2555913, 0, 0, 2555914, 0, 0, 2555915, 0, 0, 2555916, 0, 0, 2555917, 0, 0, 2555918, 0, 0, 2555919, 0, 0, 2555920, 0, 0, 2555921, 0, 0, 2555922, 0, 0, 2555923, 0, 0, 2555924, 0, 0, 2555925, 0, 0, 2555926, 0, 0, 2555927, 0, 0, 2555928, 0, 0, 2555929, 0, 0, 2555930, 0, 0, 2555931, 0, 0, 2555932, 0, 0, 2555933, 0, 0, 2555934, 0, 0, 2555935, 0, 0, 2555936, 0, 0, 2555937, 0, 0, 2555938, 0, 0, 2555939, 0, 0, 2555940, 0, 0, 2555941, 0, 0, 2555942, 0, 0, 2555943, 0, 0, 2555944, 0, 0, 2555945, 0, 0, 2555946, 0, 0, 2555947, 0, 0, 2621441, 0, 0, 2621442, 0, 0, 2621443, 0, 0, 2621444, 0, 0, 2621445, 0, 0, 2621446, 0, 0, 2621447, 0, 0, 2621448, 0, 0, 2621449, 0, 0, 2621450, 0, 0, 2621451, 0, 0, 2621452, 0, 0, 2621453, 0, 0, 2621454, 0, 0, 2621455, 0, 0, 2621456, 0, 0, 2621457, 0, 0, 2621458, 0, 0, 2621459, 0, 0, 2621460, 0, 0, 2621461, 0, 0, 2621462, 0, 0, 2621463, 0, 0, 2621464, 0, 0, 2621465, 0, 0, 2621466, 0, 0, 2621467, 0, 0, 2621468, 0, 0, 2621469, 0, 0, 2621470, 0, 0, 2621471, 0, 0, 2621472, 0, 0, 2621473, 0, 0, 2621474, 0, 0, 2621475, 0, 0, 2621476, 0, 0, 2621477, 0, 0, 2621478, 0, 0, 2621479, 0, 0, 2621480, 0, 0, 2621481, 0, 0, 2621482, 0, 0, 2686979, 0, 0, 2686980, 0, 0, 2686981, 0, 0, 2686982, 0, 0, 2686983, 0, 0, 2686984, 0, 0, 2686985, 0, 0, 2686986, 0, 0, 2686987, 0, 0, 2686988, 0, 0, 2686989, 0, 0, 2686990, 0, 0, 2686991, 0, 0, 2686992, 0, 0, 2686993, 0, 0, 2686994, 0, 0, 2686995, 0, 0, 2686996, 0, 0, 2686997, 0, 0, 2686998, 0, 0, 2686999, 0, 0, 2687000, 0, 0, 2687001, 0, 0, 2687002, 0, 0, 2687003, 0, 0, 2687004, 0, 0, 2687005, 0, 0, 2687006, 0, 0, 2687007, 0, 0, 2687008, 0, 0, 2687009, 0, 0, 2687010, 0, 0, 2687011, 0, 0, 2687012, 0, 0, 2687013, 0, 0, 2687014, 0, 0, 2687015, 0, 0, 2687016, 0, 0, 2687017, 0, 0, 2687018, 0, 0, 2752516, 0, 0, 2752517, 0, 0, 2752518, 0, 0, 2752519, 0, 0, 2752520, 0, 0, 2752521, 0, 0, 2752522, 0, 0, 2752523, 0, 0, 2752524, 0, 0, 2752525, 0, 0, 2752526, 0, 0, 2752527, 0, 0, 2752528, 0, 0, 2752529, 0, 0, 2752530, 0, 0, 2752531, 0, 0, 2752532, 0, 0, 2752533, 0, 0, 2752534, 0, 0, 2752535, 0, 0, 2752536, 0, 0, 2752537, 0, 0, 2752538, 0, 0, 2752539, 0, 0, 2752540, 0, 0, 2752541, 0, 0, 2752542, 0, 0, 2752543, 0, 0, 2752544, 0, 0, 2752545, 0, 0, 2752546, 0, 0, 2752547, 0, 0, 2752548, 0, 0, 2752549, 0, 0, 2752550, 0, 0, 2752551, 0, 0, 2752552, 0, 0, 2752553, 0, 0, 2818053, 0, 0, 2818054, 0, 0, 2818055, 0, 0, 2818056, 0, 0, 2818057, 0, 0, 2818058, 0, 0, 2818059, 0, 0, 2818060, 0, 0, 2818061, 0, 0, 2818062, 0, 0, 2818063, 0, 0, 2818064, 0, 0, 2818065, 0, 0, 2818066, 0, 0, 2818067, 0, 0, 2818068, 0, 0, 2818069, 0, 0, 2818070, 0, 0, 2818071, 0, 0, 2818072, 0, 0, 2818073, 0, 0, 2818074, 0, 0, 2818075, 0, 0, 2818076, 0, 0, 2818077, 0, 0, 2818078, 0, 0, 2818079, 0, 0, 2818080, 0, 0, 2818081, 0, 0, 2818082, 0, 0, 2818083, 0, 0, 2818084, 0, 0, 2818085, 0, 0, 2818086, 0, 0, 2818087, 0, 0, 2818088, 0, 0, 2883591, 0, 0, 2883592, 0, 0, 2883593, 0, 0, 2883594, 0, 0, 2883595, 0, 0, 2883596, 0, 0, 2883597, 0, 0, 2883598, 0, 0, 2883599, 0, 0, 2883600, 0, 0, 2883601, 0, 0, 2883602, 0, 0, 2883603, 0, 0, 2883604, 0, 0, 2883605, 0, 0, 2883606, 0, 0, 2883607, 0, 0, 2883608, 0, 0, 2883609, 0, 0, 2883610, 0, 0, 2883611, 0, 0, 2883612, 0, 0, 2883613, 0, 0, 2883614, 0, 0, 2883615, 0, 0, 2883616, 0, 0, 2883617, 0, 0, 2883618, 0, 0, 2883619, 0, 0, 2883620, 0, 0, 2883621, 0, 0, 2883622, 0, 0, 2949128, 0, 0, 2949129, 0, 0, 2949130, 0, 0, 2949131, 0, 0, 2949132, 0, 0, 2949133, 0, 0, 2949134, 0, 0, 2949135, 0, 0, 2949136, 0, 0, 2949137, 0, 0, 2949138, 0, 0, 2949139, 0, 0, 2949140, 0, 0, 2949141, 0, 0, 2949142, 0, 0, 2949143, 0, 0, 2949144, 0, 0, 2949145, 0, 0, 2949146, 0, 0, 2949147, 0, 0, 2949148, 0, 0, 2949149, 0, 0, 2949150, 0, 0, 2949151, 0, 0, 2949152, 0, 0, 2949153, 0, 0, 2949154, 0, 0, 2949155, 0, 0, 2949156, 0, 0, 2949157, 0, 0, 3014665, 0, 0, 3014666, 0, 0, 3014667, 0, 0, 3014668, 0, 0, 3014669, 0, 0, 3014670, 0, 0, 3014671, 0, 0, 3014672, 0, 0, 3014673, 0, 0, 3014674, 0, 0, 3014675, 0, 0, 3014676, 0, 0, 3014677, 0, 0, 3014678, 0, 0, 3014679, 0, 0, 3014680, 0, 0, 3014681, 0, 0, 3014682, 0, 0, 3014683, 0, 0, 3014684, 0, 0, 3014685, 0, 0, 3014686, 0, 0, 3014687, 0, 0, 3014688, 0, 0, 3014689, 0, 0, 3014690, 0, 0, 3014691, 0, 0, 3014692, 0, 0, 3014693, 0, 0, 3080202, 0, 0, 3080203, 0, 0, 3080204, 0, 0, 3080205, 0, 0, 3080206, 0, 0, 3080207, 0, 0, 3080208, 0, 0, 3080209, 0, 0, 3080210, 0, 0, 3080211, 0, 0, 3080212, 0, 0, 3080213, 0, 0, 3080214, 0, 0, 3080215, 0, 0, 3080216, 0, 0, 3080217, 0, 0, 3080218, 0, 0, 3080219, 0, 0, 3080220, 0, 0, 3080221, 0, 0, 3080222, 0, 0, 3080223, 0, 0, 3080224, 0, 0, 3080225, 0, 0, 3080226, 0, 0, 3080227, 0, 0, 3080228, 0, 0, 3145739, 0, 0, 3145740, 0, 0, 3145741, 0, 0, 3145742, 0, 0, 3145743, 0, 0, 3145744, 0, 0, 3145745, 0, 0, 3145746, 0, 0, 3145747, 0, 0, 3145748, 0, 0, 3145749, 0, 0, 3145750, 0, 0, 3145751, 0, 0, 3145752, 0, 0, 3145753, 0, 0, 3145754, 0, 0, 3145755, 0, 0, 3145756, 0, 0, 3145757, 0, 0, 3145758, 0, 0, 3145759, 0, 0, 3145760, 0, 0, 3145761, 0, 0, 3145762, 0, 0, 3145763, 0, 0, 3211276, 0, 0, 3211277, 0, 0, 3211278, 0, 0, 3211279, 0, 0, 3211280, 0, 0, 3211281, 0, 0, 3211282, 0, 0, 3211283, 0, 0, 3211284, 0, 0, 3211285, 0, 0, 3211286, 0, 0, 3211287, 0, 0, 3211288, 0, 0, 3211289, 0, 0, 3211290, 0, 0, 3211291, 0, 0, 3211292, 0, 0, 3211293, 0, 0, 3211294, 0, 0, 3211295, 0, 0, 3211296, 0, 0, 3211297, 0, 0, 3211298, 0, 0, 3276813, 0, 0, 3276814, 0, 0, 3276815, 0, 0, 3276816, 0, 0, 3276817, 0, 0, 3276818, 0, 0, 3276819, 0, 0, 3276820, 0, 0, 3276821, 0, 0, 3276822, 0, 0, 3276823, 0, 0, 3276824, 0, 0, 3276825, 0, 0, 3276826, 0, 0, 3276827, 0, 0, 3276828, 0, 0, 3276829, 0, 0, 3276830, 0, 0, 3276831, 0, 0, 3276832, 0, 0, 3342351, 0, 0, 3342352, 0, 0, 3342353, 0, 0, 3342354, 0, 0, 3342355, 0, 0, 3342356, 0, 0, 3342357, 0, 0, 3342358, 0, 0, 3342359, 0, 0, 3342360, 0, 0, 3342361, 0, 0, 3342362, 0, 0, 3342363, 0, 0, 3342364, 0, 0, 3342365, 0, 0, 3342366, 0, 0, 3342367, 0, 0, 3407888, 0, 0, 3407889, 0, 0, 3407890, 0, 0, 3407891, 0, 0, 3407892, 0, 0, 3407893, 0, 0, 3407894, 0, 0, 3407895, 0, 0, 3407896, 0, 0, 3407897, 0, 0, 3407898, 0, 0, 3407899, 0, 0, 3407900, 0, 0, 3407901, 0, 0, 3473427, 0, 0, 3473428, 0, 0, 3473429, 0, 0, 3473430, 0, 0, 3473431, 0, 0, 3473432, 0, 0, 3473433, 0, 0, 3473434, 0, 0 ) diff --git a/game/test_iso_tileset/new_tileset.tres b/game/test_iso_tileset/new_tileset.tres new file mode 100644 index 0000000..d576946 --- /dev/null +++ b/game/test_iso_tileset/new_tileset.tres @@ -0,0 +1,145 @@ +[gd_resource type="RTileSet" load_steps=2 format=2] + +[ext_resource path="res://test_iso_tileset/test_tiles.png" type="Texture" id=1] + +[resource] +0/name = "t3" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 106, 15, 52, 27 ) +0/tile_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape_one_way = false +0/shape_one_way_margin = 0.0 +0/shapes = [ ] +0/z_index = 0 +1/name = "t2" +1/texture = ExtResource( 1 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 47, 8, 44, 23 ) +1/tile_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape_one_way = false +1/shape_one_way_margin = 0.0 +1/shapes = [ ] +1/z_index = 0 +2/name = "t1" +2/texture = ExtResource( 1 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 1, 2, 32, 17 ) +2/tile_mode = 0 +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/shape_offset = Vector2( 0, 0 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape_one_way = false +2/shape_one_way_margin = 0.0 +2/shapes = [ ] +2/z_index = 0 +3/name = "test_tiles.png 3" +3/texture = ExtResource( 1 ) +3/tex_offset = Vector2( 0, 0 ) +3/modulate = Color( 1, 1, 1, 1 ) +3/region = Rect2( 59, 39, 46, 25 ) +3/tile_mode = 0 +3/occluder_offset = Vector2( 0, 0 ) +3/navigation_offset = Vector2( 0, 0 ) +3/shape_offset = Vector2( 0, 0 ) +3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +3/shape_one_way = false +3/shape_one_way_margin = 0.0 +3/shapes = [ ] +3/z_index = 0 +4/name = "test_tiles.png 4" +4/texture = ExtResource( 1 ) +4/tex_offset = Vector2( 0, 0 ) +4/modulate = Color( 1, 1, 1, 1 ) +4/region = Rect2( 129, 91, 47, 27 ) +4/tile_mode = 0 +4/occluder_offset = Vector2( 0, 0 ) +4/navigation_offset = Vector2( 0, 0 ) +4/shape_offset = Vector2( 0, 0 ) +4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +4/shape_one_way = false +4/shape_one_way_margin = 0.0 +4/shapes = [ ] +4/z_index = 0 +5/name = "test_tiles.png 5" +5/texture = ExtResource( 1 ) +5/tex_offset = Vector2( 0, 0 ) +5/modulate = Color( 1, 1, 1, 1 ) +5/region = Rect2( 135, 137, 47, 25 ) +5/tile_mode = 0 +5/occluder_offset = Vector2( 0, 0 ) +5/navigation_offset = Vector2( 0, 0 ) +5/shape_offset = Vector2( 0, 0 ) +5/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +5/shape_one_way = false +5/shape_one_way_margin = 0.0 +5/shapes = [ ] +5/z_index = 0 +6/name = "test_tiles.png 6" +6/texture = ExtResource( 1 ) +6/tex_offset = Vector2( 0, 0 ) +6/modulate = Color( 1, 1, 1, 1 ) +6/region = Rect2( 179, 111, 50, 28 ) +6/tile_mode = 0 +6/occluder_offset = Vector2( 0, 0 ) +6/navigation_offset = Vector2( 0, 0 ) +6/shape_offset = Vector2( 0, 0 ) +6/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +6/shape_one_way = false +6/shape_one_way_margin = 0.0 +6/shapes = [ ] +6/z_index = 0 +7/name = "test_tiles.png 7" +7/texture = ExtResource( 1 ) +7/tex_offset = Vector2( 0, 0 ) +7/modulate = Color( 1, 1, 1, 1 ) +7/region = Rect2( 167, 165, 48, 27 ) +7/tile_mode = 0 +7/occluder_offset = Vector2( 0, 0 ) +7/navigation_offset = Vector2( 0, 0 ) +7/shape_offset = Vector2( 0, 0 ) +7/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +7/shape_one_way = false +7/shape_one_way_margin = 0.0 +7/shapes = [ ] +7/z_index = 0 +8/name = "test_tiles.png 8" +8/texture = ExtResource( 1 ) +8/tex_offset = Vector2( 0, 0 ) +8/modulate = Color( 1, 1, 1, 1 ) +8/region = Rect2( 123, 186, 48, 27 ) +8/tile_mode = 0 +8/occluder_offset = Vector2( 0, 0 ) +8/navigation_offset = Vector2( 0, 0 ) +8/shape_offset = Vector2( 0, 0 ) +8/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +8/shape_one_way = false +8/shape_one_way_margin = 0.0 +8/shapes = [ ] +8/z_index = 0 +9/name = "test_tiles.png 9" +9/texture = ExtResource( 1 ) +9/tex_offset = Vector2( 0, 0 ) +9/modulate = Color( 1, 1, 1, 1 ) +9/region = Rect2( 205, 187, 50, 29 ) +9/tile_mode = 0 +9/occluder_offset = Vector2( 0, 0 ) +9/navigation_offset = Vector2( 0, 0 ) +9/shape_offset = Vector2( 0, 0 ) +9/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +9/shape_one_way = false +9/shape_one_way_margin = 0.0 +9/shapes = [ ] +9/z_index = 0 diff --git a/game/test_iso_tileset/test_tiles.png b/game/test_iso_tileset/test_tiles.png new file mode 100644 index 0000000..d37651a Binary files /dev/null and b/game/test_iso_tileset/test_tiles.png differ diff --git a/game/test_iso_tileset/test_tiles.png.import b/game/test_iso_tileset/test_tiles.png.import new file mode 100644 index 0000000..43cbbba --- /dev/null +++ b/game/test_iso_tileset/test_tiles.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/test_tiles.png-5a88da34746bccf98b2c562f5067716b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_iso_tileset/test_tiles.png" +dest_files=[ "res://.import/test_tiles.png-5a88da34746bccf98b2c562f5067716b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/Attributions.xml b/game/test_weapons/Attributions.xml new file mode 100644 index 0000000..5f0c9ce --- /dev/null +++ b/game/test_weapons/Attributions.xml @@ -0,0 +1,45 @@ + + +Test Items + + + +MIT + + + +Cethiel's Weapons 3d +https://opengameart.org/content/cethiels-weapons-3d + +This is a CC0 collection of 3D hand-painted style RPG swords and shields. + +It is based on an awesome CC0 2D weapon collection by Cethiel. Check out his +patreon and Twitter and consider supporting him for making this possible! + +https://twitter.com/Cethyel + +https://www.patreon.com/cethiel + +https://opengameart.org/content/weapons-collection + +I (Drummyfish) have created the 3D models based on selected 2D weapons from +Cethiel's collection and used them as textures as well. I release the models as +CC0 too. + +There are 10 swords and 4 shields, each one in 3 color variants! The models are +low-poly, but the Blender file includes subdivided models if you need a +high-poly version. + +If you want HD versions of the textures, become Cethiel's patreon and you will +get access to his works in HD, which can be used instead of the provided SD +textures -- this has been tested, as Cethiel kindly provided me with the HD +versions. + +Copyright/Attribution Notice: +Not needed. If you want, credit Cethiel & Drummyfish. + + +CC0 + + + \ No newline at end of file diff --git a/game/test_weapons/TestOnehander.tres b/game/test_weapons/TestOnehander.tres new file mode 100644 index 0000000..b9a8972 --- /dev/null +++ b/game/test_weapons/TestOnehander.tres @@ -0,0 +1,8 @@ +[gd_resource type="ModelVisualEntry" load_steps=2 format=2] + +[ext_resource path="res://test_weapons/TestOnehander.tscn" type="PackedScene" id=1] + +[resource] +type = 1 +bone = 14 +entry_0/attachment = ExtResource( 1 ) diff --git a/game/test_weapons/TestOnehander.tscn b/game/test_weapons/TestOnehander.tscn new file mode 100644 index 0000000..d30a06e --- /dev/null +++ b/game/test_weapons/TestOnehander.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://test_weapons/sword_i.mesh" type="ArrayMesh" id=1] + +[node name="MeshInstance" type="MeshInstance"] +transform = Transform( 0.0566188, -0.29807, 0, 0.386498, 0.0264298, 0.31413, -0.31211, -0.0213429, 0.389, 0, 0, 0 ) +mesh = ExtResource( 1 ) +material/0 = null +material/1 = null diff --git a/game/test_weapons/TestOnehander2.tres b/game/test_weapons/TestOnehander2.tres new file mode 100644 index 0000000..5f9a293 --- /dev/null +++ b/game/test_weapons/TestOnehander2.tres @@ -0,0 +1,8 @@ +[gd_resource type="ModelVisualEntry" load_steps=2 format=2] + +[ext_resource path="res://test_weapons/TestOnehander.tscn" type="PackedScene" id=1] + +[resource] +type = 1 +bone = 13 +entry_0/attachment = ExtResource( 1 ) diff --git a/game/test_weapons/TestOnehander2.tscn b/game/test_weapons/TestOnehander2.tscn new file mode 100644 index 0000000..d30a06e --- /dev/null +++ b/game/test_weapons/TestOnehander2.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://test_weapons/sword_i.mesh" type="ArrayMesh" id=1] + +[node name="MeshInstance" type="MeshInstance"] +transform = Transform( 0.0566188, -0.29807, 0, 0.386498, 0.0264298, 0.31413, -0.31211, -0.0213429, 0.389, 0, 0, 0 ) +mesh = ExtResource( 1 ) +material/0 = null +material/1 = null diff --git a/game/test_weapons/TestShield.tres b/game/test_weapons/TestShield.tres new file mode 100644 index 0000000..686fc11 --- /dev/null +++ b/game/test_weapons/TestShield.tres @@ -0,0 +1,8 @@ +[gd_resource type="ModelVisualEntry" load_steps=2 format=2] + +[ext_resource path="res://test_weapons/shield_test.tscn" type="PackedScene" id=1] + +[resource] +type = 1 +bone = 17 +entry_0/attachment = ExtResource( 1 ) diff --git a/game/test_weapons/handpainted weapons 2-80.glb b/game/test_weapons/handpainted weapons 2-80.glb new file mode 100644 index 0000000..010777c Binary files /dev/null and b/game/test_weapons/handpainted weapons 2-80.glb differ diff --git a/game/test_weapons/handpainted weapons 2-80.glb.import b/game/test_weapons/handpainted weapons 2-80.glb.import new file mode 100644 index 0000000..7096f6a --- /dev/null +++ b/game/test_weapons/handpainted weapons 2-80.glb.import @@ -0,0 +1,1064 @@ +[remap] + +importer="scene" +type="PackedScene" +path="res://.import/handpainted weapons 2-80.glb-65973277e120ffe53b0a1f42a0033340.scn" + +[deps] + +source_file="res://test_weapons/handpainted weapons 2-80.glb" +dest_files=[ "res://.import/handpainted weapons 2-80.glb-65973277e120ffe53b0a1f42a0033340.scn" ] + +[params] + +nodes/root_type="Spatial" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +nodes/custom_script="" +nodes/storage=0 +nodes/use_legacy_names=true +materials/location=1 +materials/storage=1 +materials/keep_on_reimport=true +meshes/compress=true +meshes/ensure_tangents=true +meshes/storage=1 +meshes/light_baking=0 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +external_files/store_in_subdir=false +animation/import=true +animation/fps=15 +animation/filter_script="" +animation/storage=false +animation/keep_custom_tracks=false +animation/optimizer/enabled=true +animation/optimizer/max_linear_error=0.05 +animation/optimizer/max_angular_error=0.01 +animation/optimizer/max_angle=22 +animation/optimizer/remove_unused_tracks=true +animation/clips/amount=0 +animation/clip_1/name="" +animation/clip_1/start_frame=0 +animation/clip_1/end_frame=0 +animation/clip_1/loops=false +animation/clip_2/name="" +animation/clip_2/start_frame=0 +animation/clip_2/end_frame=0 +animation/clip_2/loops=false +animation/clip_3/name="" +animation/clip_3/start_frame=0 +animation/clip_3/end_frame=0 +animation/clip_3/loops=false +animation/clip_4/name="" +animation/clip_4/start_frame=0 +animation/clip_4/end_frame=0 +animation/clip_4/loops=false +animation/clip_5/name="" +animation/clip_5/start_frame=0 +animation/clip_5/end_frame=0 +animation/clip_5/loops=false +animation/clip_6/name="" +animation/clip_6/start_frame=0 +animation/clip_6/end_frame=0 +animation/clip_6/loops=false +animation/clip_7/name="" +animation/clip_7/start_frame=0 +animation/clip_7/end_frame=0 +animation/clip_7/loops=false +animation/clip_8/name="" +animation/clip_8/start_frame=0 +animation/clip_8/end_frame=0 +animation/clip_8/loops=false +animation/clip_9/name="" +animation/clip_9/start_frame=0 +animation/clip_9/end_frame=0 +animation/clip_9/loops=false +animation/clip_10/name="" +animation/clip_10/start_frame=0 +animation/clip_10/end_frame=0 +animation/clip_10/loops=false +animation/clip_11/name="" +animation/clip_11/start_frame=0 +animation/clip_11/end_frame=0 +animation/clip_11/loops=false +animation/clip_12/name="" +animation/clip_12/start_frame=0 +animation/clip_12/end_frame=0 +animation/clip_12/loops=false +animation/clip_13/name="" +animation/clip_13/start_frame=0 +animation/clip_13/end_frame=0 +animation/clip_13/loops=false +animation/clip_14/name="" +animation/clip_14/start_frame=0 +animation/clip_14/end_frame=0 +animation/clip_14/loops=false +animation/clip_15/name="" +animation/clip_15/start_frame=0 +animation/clip_15/end_frame=0 +animation/clip_15/loops=false +animation/clip_16/name="" +animation/clip_16/start_frame=0 +animation/clip_16/end_frame=0 +animation/clip_16/loops=false +animation/clip_17/name="" +animation/clip_17/start_frame=0 +animation/clip_17/end_frame=0 +animation/clip_17/loops=false +animation/clip_18/name="" +animation/clip_18/start_frame=0 +animation/clip_18/end_frame=0 +animation/clip_18/loops=false +animation/clip_19/name="" +animation/clip_19/start_frame=0 +animation/clip_19/end_frame=0 +animation/clip_19/loops=false +animation/clip_20/name="" +animation/clip_20/start_frame=0 +animation/clip_20/end_frame=0 +animation/clip_20/loops=false +animation/clip_21/name="" +animation/clip_21/start_frame=0 +animation/clip_21/end_frame=0 +animation/clip_21/loops=false +animation/clip_22/name="" +animation/clip_22/start_frame=0 +animation/clip_22/end_frame=0 +animation/clip_22/loops=false +animation/clip_23/name="" +animation/clip_23/start_frame=0 +animation/clip_23/end_frame=0 +animation/clip_23/loops=false +animation/clip_24/name="" +animation/clip_24/start_frame=0 +animation/clip_24/end_frame=0 +animation/clip_24/loops=false +animation/clip_25/name="" +animation/clip_25/start_frame=0 +animation/clip_25/end_frame=0 +animation/clip_25/loops=false +animation/clip_26/name="" +animation/clip_26/start_frame=0 +animation/clip_26/end_frame=0 +animation/clip_26/loops=false +animation/clip_27/name="" +animation/clip_27/start_frame=0 +animation/clip_27/end_frame=0 +animation/clip_27/loops=false +animation/clip_28/name="" +animation/clip_28/start_frame=0 +animation/clip_28/end_frame=0 +animation/clip_28/loops=false +animation/clip_29/name="" +animation/clip_29/start_frame=0 +animation/clip_29/end_frame=0 +animation/clip_29/loops=false +animation/clip_30/name="" +animation/clip_30/start_frame=0 +animation/clip_30/end_frame=0 +animation/clip_30/loops=false +animation/clip_31/name="" +animation/clip_31/start_frame=0 +animation/clip_31/end_frame=0 +animation/clip_31/loops=false +animation/clip_32/name="" +animation/clip_32/start_frame=0 +animation/clip_32/end_frame=0 +animation/clip_32/loops=false +animation/clip_33/name="" +animation/clip_33/start_frame=0 +animation/clip_33/end_frame=0 +animation/clip_33/loops=false +animation/clip_34/name="" +animation/clip_34/start_frame=0 +animation/clip_34/end_frame=0 +animation/clip_34/loops=false +animation/clip_35/name="" +animation/clip_35/start_frame=0 +animation/clip_35/end_frame=0 +animation/clip_35/loops=false +animation/clip_36/name="" +animation/clip_36/start_frame=0 +animation/clip_36/end_frame=0 +animation/clip_36/loops=false +animation/clip_37/name="" +animation/clip_37/start_frame=0 +animation/clip_37/end_frame=0 +animation/clip_37/loops=false +animation/clip_38/name="" +animation/clip_38/start_frame=0 +animation/clip_38/end_frame=0 +animation/clip_38/loops=false +animation/clip_39/name="" +animation/clip_39/start_frame=0 +animation/clip_39/end_frame=0 +animation/clip_39/loops=false +animation/clip_40/name="" +animation/clip_40/start_frame=0 +animation/clip_40/end_frame=0 +animation/clip_40/loops=false +animation/clip_41/name="" +animation/clip_41/start_frame=0 +animation/clip_41/end_frame=0 +animation/clip_41/loops=false +animation/clip_42/name="" +animation/clip_42/start_frame=0 +animation/clip_42/end_frame=0 +animation/clip_42/loops=false +animation/clip_43/name="" +animation/clip_43/start_frame=0 +animation/clip_43/end_frame=0 +animation/clip_43/loops=false +animation/clip_44/name="" +animation/clip_44/start_frame=0 +animation/clip_44/end_frame=0 +animation/clip_44/loops=false +animation/clip_45/name="" +animation/clip_45/start_frame=0 +animation/clip_45/end_frame=0 +animation/clip_45/loops=false +animation/clip_46/name="" +animation/clip_46/start_frame=0 +animation/clip_46/end_frame=0 +animation/clip_46/loops=false +animation/clip_47/name="" +animation/clip_47/start_frame=0 +animation/clip_47/end_frame=0 +animation/clip_47/loops=false +animation/clip_48/name="" +animation/clip_48/start_frame=0 +animation/clip_48/end_frame=0 +animation/clip_48/loops=false +animation/clip_49/name="" +animation/clip_49/start_frame=0 +animation/clip_49/end_frame=0 +animation/clip_49/loops=false +animation/clip_50/name="" +animation/clip_50/start_frame=0 +animation/clip_50/end_frame=0 +animation/clip_50/loops=false +animation/clip_51/name="" +animation/clip_51/start_frame=0 +animation/clip_51/end_frame=0 +animation/clip_51/loops=false +animation/clip_52/name="" +animation/clip_52/start_frame=0 +animation/clip_52/end_frame=0 +animation/clip_52/loops=false +animation/clip_53/name="" +animation/clip_53/start_frame=0 +animation/clip_53/end_frame=0 +animation/clip_53/loops=false +animation/clip_54/name="" +animation/clip_54/start_frame=0 +animation/clip_54/end_frame=0 +animation/clip_54/loops=false +animation/clip_55/name="" +animation/clip_55/start_frame=0 +animation/clip_55/end_frame=0 +animation/clip_55/loops=false +animation/clip_56/name="" +animation/clip_56/start_frame=0 +animation/clip_56/end_frame=0 +animation/clip_56/loops=false +animation/clip_57/name="" +animation/clip_57/start_frame=0 +animation/clip_57/end_frame=0 +animation/clip_57/loops=false +animation/clip_58/name="" +animation/clip_58/start_frame=0 +animation/clip_58/end_frame=0 +animation/clip_58/loops=false +animation/clip_59/name="" +animation/clip_59/start_frame=0 +animation/clip_59/end_frame=0 +animation/clip_59/loops=false +animation/clip_60/name="" +animation/clip_60/start_frame=0 +animation/clip_60/end_frame=0 +animation/clip_60/loops=false +animation/clip_61/name="" +animation/clip_61/start_frame=0 +animation/clip_61/end_frame=0 +animation/clip_61/loops=false +animation/clip_62/name="" +animation/clip_62/start_frame=0 +animation/clip_62/end_frame=0 +animation/clip_62/loops=false +animation/clip_63/name="" +animation/clip_63/start_frame=0 +animation/clip_63/end_frame=0 +animation/clip_63/loops=false +animation/clip_64/name="" +animation/clip_64/start_frame=0 +animation/clip_64/end_frame=0 +animation/clip_64/loops=false +animation/clip_65/name="" +animation/clip_65/start_frame=0 +animation/clip_65/end_frame=0 +animation/clip_65/loops=false +animation/clip_66/name="" +animation/clip_66/start_frame=0 +animation/clip_66/end_frame=0 +animation/clip_66/loops=false +animation/clip_67/name="" +animation/clip_67/start_frame=0 +animation/clip_67/end_frame=0 +animation/clip_67/loops=false +animation/clip_68/name="" +animation/clip_68/start_frame=0 +animation/clip_68/end_frame=0 +animation/clip_68/loops=false +animation/clip_69/name="" +animation/clip_69/start_frame=0 +animation/clip_69/end_frame=0 +animation/clip_69/loops=false +animation/clip_70/name="" +animation/clip_70/start_frame=0 +animation/clip_70/end_frame=0 +animation/clip_70/loops=false +animation/clip_71/name="" +animation/clip_71/start_frame=0 +animation/clip_71/end_frame=0 +animation/clip_71/loops=false +animation/clip_72/name="" +animation/clip_72/start_frame=0 +animation/clip_72/end_frame=0 +animation/clip_72/loops=false +animation/clip_73/name="" +animation/clip_73/start_frame=0 +animation/clip_73/end_frame=0 +animation/clip_73/loops=false +animation/clip_74/name="" +animation/clip_74/start_frame=0 +animation/clip_74/end_frame=0 +animation/clip_74/loops=false +animation/clip_75/name="" +animation/clip_75/start_frame=0 +animation/clip_75/end_frame=0 +animation/clip_75/loops=false +animation/clip_76/name="" +animation/clip_76/start_frame=0 +animation/clip_76/end_frame=0 +animation/clip_76/loops=false +animation/clip_77/name="" +animation/clip_77/start_frame=0 +animation/clip_77/end_frame=0 +animation/clip_77/loops=false +animation/clip_78/name="" +animation/clip_78/start_frame=0 +animation/clip_78/end_frame=0 +animation/clip_78/loops=false +animation/clip_79/name="" +animation/clip_79/start_frame=0 +animation/clip_79/end_frame=0 +animation/clip_79/loops=false +animation/clip_80/name="" +animation/clip_80/start_frame=0 +animation/clip_80/end_frame=0 +animation/clip_80/loops=false +animation/clip_81/name="" +animation/clip_81/start_frame=0 +animation/clip_81/end_frame=0 +animation/clip_81/loops=false +animation/clip_82/name="" +animation/clip_82/start_frame=0 +animation/clip_82/end_frame=0 +animation/clip_82/loops=false +animation/clip_83/name="" +animation/clip_83/start_frame=0 +animation/clip_83/end_frame=0 +animation/clip_83/loops=false +animation/clip_84/name="" +animation/clip_84/start_frame=0 +animation/clip_84/end_frame=0 +animation/clip_84/loops=false +animation/clip_85/name="" +animation/clip_85/start_frame=0 +animation/clip_85/end_frame=0 +animation/clip_85/loops=false +animation/clip_86/name="" +animation/clip_86/start_frame=0 +animation/clip_86/end_frame=0 +animation/clip_86/loops=false +animation/clip_87/name="" +animation/clip_87/start_frame=0 +animation/clip_87/end_frame=0 +animation/clip_87/loops=false +animation/clip_88/name="" +animation/clip_88/start_frame=0 +animation/clip_88/end_frame=0 +animation/clip_88/loops=false +animation/clip_89/name="" +animation/clip_89/start_frame=0 +animation/clip_89/end_frame=0 +animation/clip_89/loops=false +animation/clip_90/name="" +animation/clip_90/start_frame=0 +animation/clip_90/end_frame=0 +animation/clip_90/loops=false +animation/clip_91/name="" +animation/clip_91/start_frame=0 +animation/clip_91/end_frame=0 +animation/clip_91/loops=false +animation/clip_92/name="" +animation/clip_92/start_frame=0 +animation/clip_92/end_frame=0 +animation/clip_92/loops=false +animation/clip_93/name="" +animation/clip_93/start_frame=0 +animation/clip_93/end_frame=0 +animation/clip_93/loops=false +animation/clip_94/name="" +animation/clip_94/start_frame=0 +animation/clip_94/end_frame=0 +animation/clip_94/loops=false +animation/clip_95/name="" +animation/clip_95/start_frame=0 +animation/clip_95/end_frame=0 +animation/clip_95/loops=false +animation/clip_96/name="" +animation/clip_96/start_frame=0 +animation/clip_96/end_frame=0 +animation/clip_96/loops=false +animation/clip_97/name="" +animation/clip_97/start_frame=0 +animation/clip_97/end_frame=0 +animation/clip_97/loops=false +animation/clip_98/name="" +animation/clip_98/start_frame=0 +animation/clip_98/end_frame=0 +animation/clip_98/loops=false +animation/clip_99/name="" +animation/clip_99/start_frame=0 +animation/clip_99/end_frame=0 +animation/clip_99/loops=false +animation/clip_100/name="" +animation/clip_100/start_frame=0 +animation/clip_100/end_frame=0 +animation/clip_100/loops=false +animation/clip_101/name="" +animation/clip_101/start_frame=0 +animation/clip_101/end_frame=0 +animation/clip_101/loops=false +animation/clip_102/name="" +animation/clip_102/start_frame=0 +animation/clip_102/end_frame=0 +animation/clip_102/loops=false +animation/clip_103/name="" +animation/clip_103/start_frame=0 +animation/clip_103/end_frame=0 +animation/clip_103/loops=false +animation/clip_104/name="" +animation/clip_104/start_frame=0 +animation/clip_104/end_frame=0 +animation/clip_104/loops=false +animation/clip_105/name="" +animation/clip_105/start_frame=0 +animation/clip_105/end_frame=0 +animation/clip_105/loops=false +animation/clip_106/name="" +animation/clip_106/start_frame=0 +animation/clip_106/end_frame=0 +animation/clip_106/loops=false +animation/clip_107/name="" +animation/clip_107/start_frame=0 +animation/clip_107/end_frame=0 +animation/clip_107/loops=false +animation/clip_108/name="" +animation/clip_108/start_frame=0 +animation/clip_108/end_frame=0 +animation/clip_108/loops=false +animation/clip_109/name="" +animation/clip_109/start_frame=0 +animation/clip_109/end_frame=0 +animation/clip_109/loops=false +animation/clip_110/name="" +animation/clip_110/start_frame=0 +animation/clip_110/end_frame=0 +animation/clip_110/loops=false +animation/clip_111/name="" +animation/clip_111/start_frame=0 +animation/clip_111/end_frame=0 +animation/clip_111/loops=false +animation/clip_112/name="" +animation/clip_112/start_frame=0 +animation/clip_112/end_frame=0 +animation/clip_112/loops=false +animation/clip_113/name="" +animation/clip_113/start_frame=0 +animation/clip_113/end_frame=0 +animation/clip_113/loops=false +animation/clip_114/name="" +animation/clip_114/start_frame=0 +animation/clip_114/end_frame=0 +animation/clip_114/loops=false +animation/clip_115/name="" +animation/clip_115/start_frame=0 +animation/clip_115/end_frame=0 +animation/clip_115/loops=false +animation/clip_116/name="" +animation/clip_116/start_frame=0 +animation/clip_116/end_frame=0 +animation/clip_116/loops=false +animation/clip_117/name="" +animation/clip_117/start_frame=0 +animation/clip_117/end_frame=0 +animation/clip_117/loops=false +animation/clip_118/name="" +animation/clip_118/start_frame=0 +animation/clip_118/end_frame=0 +animation/clip_118/loops=false +animation/clip_119/name="" +animation/clip_119/start_frame=0 +animation/clip_119/end_frame=0 +animation/clip_119/loops=false +animation/clip_120/name="" +animation/clip_120/start_frame=0 +animation/clip_120/end_frame=0 +animation/clip_120/loops=false +animation/clip_121/name="" +animation/clip_121/start_frame=0 +animation/clip_121/end_frame=0 +animation/clip_121/loops=false +animation/clip_122/name="" +animation/clip_122/start_frame=0 +animation/clip_122/end_frame=0 +animation/clip_122/loops=false +animation/clip_123/name="" +animation/clip_123/start_frame=0 +animation/clip_123/end_frame=0 +animation/clip_123/loops=false +animation/clip_124/name="" +animation/clip_124/start_frame=0 +animation/clip_124/end_frame=0 +animation/clip_124/loops=false +animation/clip_125/name="" +animation/clip_125/start_frame=0 +animation/clip_125/end_frame=0 +animation/clip_125/loops=false +animation/clip_126/name="" +animation/clip_126/start_frame=0 +animation/clip_126/end_frame=0 +animation/clip_126/loops=false +animation/clip_127/name="" +animation/clip_127/start_frame=0 +animation/clip_127/end_frame=0 +animation/clip_127/loops=false +animation/clip_128/name="" +animation/clip_128/start_frame=0 +animation/clip_128/end_frame=0 +animation/clip_128/loops=false +animation/clip_129/name="" +animation/clip_129/start_frame=0 +animation/clip_129/end_frame=0 +animation/clip_129/loops=false +animation/clip_130/name="" +animation/clip_130/start_frame=0 +animation/clip_130/end_frame=0 +animation/clip_130/loops=false +animation/clip_131/name="" +animation/clip_131/start_frame=0 +animation/clip_131/end_frame=0 +animation/clip_131/loops=false +animation/clip_132/name="" +animation/clip_132/start_frame=0 +animation/clip_132/end_frame=0 +animation/clip_132/loops=false +animation/clip_133/name="" +animation/clip_133/start_frame=0 +animation/clip_133/end_frame=0 +animation/clip_133/loops=false +animation/clip_134/name="" +animation/clip_134/start_frame=0 +animation/clip_134/end_frame=0 +animation/clip_134/loops=false +animation/clip_135/name="" +animation/clip_135/start_frame=0 +animation/clip_135/end_frame=0 +animation/clip_135/loops=false +animation/clip_136/name="" +animation/clip_136/start_frame=0 +animation/clip_136/end_frame=0 +animation/clip_136/loops=false +animation/clip_137/name="" +animation/clip_137/start_frame=0 +animation/clip_137/end_frame=0 +animation/clip_137/loops=false +animation/clip_138/name="" +animation/clip_138/start_frame=0 +animation/clip_138/end_frame=0 +animation/clip_138/loops=false +animation/clip_139/name="" +animation/clip_139/start_frame=0 +animation/clip_139/end_frame=0 +animation/clip_139/loops=false +animation/clip_140/name="" +animation/clip_140/start_frame=0 +animation/clip_140/end_frame=0 +animation/clip_140/loops=false +animation/clip_141/name="" +animation/clip_141/start_frame=0 +animation/clip_141/end_frame=0 +animation/clip_141/loops=false +animation/clip_142/name="" +animation/clip_142/start_frame=0 +animation/clip_142/end_frame=0 +animation/clip_142/loops=false +animation/clip_143/name="" +animation/clip_143/start_frame=0 +animation/clip_143/end_frame=0 +animation/clip_143/loops=false +animation/clip_144/name="" +animation/clip_144/start_frame=0 +animation/clip_144/end_frame=0 +animation/clip_144/loops=false +animation/clip_145/name="" +animation/clip_145/start_frame=0 +animation/clip_145/end_frame=0 +animation/clip_145/loops=false +animation/clip_146/name="" +animation/clip_146/start_frame=0 +animation/clip_146/end_frame=0 +animation/clip_146/loops=false +animation/clip_147/name="" +animation/clip_147/start_frame=0 +animation/clip_147/end_frame=0 +animation/clip_147/loops=false +animation/clip_148/name="" +animation/clip_148/start_frame=0 +animation/clip_148/end_frame=0 +animation/clip_148/loops=false +animation/clip_149/name="" +animation/clip_149/start_frame=0 +animation/clip_149/end_frame=0 +animation/clip_149/loops=false +animation/clip_150/name="" +animation/clip_150/start_frame=0 +animation/clip_150/end_frame=0 +animation/clip_150/loops=false +animation/clip_151/name="" +animation/clip_151/start_frame=0 +animation/clip_151/end_frame=0 +animation/clip_151/loops=false +animation/clip_152/name="" +animation/clip_152/start_frame=0 +animation/clip_152/end_frame=0 +animation/clip_152/loops=false +animation/clip_153/name="" +animation/clip_153/start_frame=0 +animation/clip_153/end_frame=0 +animation/clip_153/loops=false +animation/clip_154/name="" +animation/clip_154/start_frame=0 +animation/clip_154/end_frame=0 +animation/clip_154/loops=false +animation/clip_155/name="" +animation/clip_155/start_frame=0 +animation/clip_155/end_frame=0 +animation/clip_155/loops=false +animation/clip_156/name="" +animation/clip_156/start_frame=0 +animation/clip_156/end_frame=0 +animation/clip_156/loops=false +animation/clip_157/name="" +animation/clip_157/start_frame=0 +animation/clip_157/end_frame=0 +animation/clip_157/loops=false +animation/clip_158/name="" +animation/clip_158/start_frame=0 +animation/clip_158/end_frame=0 +animation/clip_158/loops=false +animation/clip_159/name="" +animation/clip_159/start_frame=0 +animation/clip_159/end_frame=0 +animation/clip_159/loops=false +animation/clip_160/name="" +animation/clip_160/start_frame=0 +animation/clip_160/end_frame=0 +animation/clip_160/loops=false +animation/clip_161/name="" +animation/clip_161/start_frame=0 +animation/clip_161/end_frame=0 +animation/clip_161/loops=false +animation/clip_162/name="" +animation/clip_162/start_frame=0 +animation/clip_162/end_frame=0 +animation/clip_162/loops=false +animation/clip_163/name="" +animation/clip_163/start_frame=0 +animation/clip_163/end_frame=0 +animation/clip_163/loops=false +animation/clip_164/name="" +animation/clip_164/start_frame=0 +animation/clip_164/end_frame=0 +animation/clip_164/loops=false +animation/clip_165/name="" +animation/clip_165/start_frame=0 +animation/clip_165/end_frame=0 +animation/clip_165/loops=false +animation/clip_166/name="" +animation/clip_166/start_frame=0 +animation/clip_166/end_frame=0 +animation/clip_166/loops=false +animation/clip_167/name="" +animation/clip_167/start_frame=0 +animation/clip_167/end_frame=0 +animation/clip_167/loops=false +animation/clip_168/name="" +animation/clip_168/start_frame=0 +animation/clip_168/end_frame=0 +animation/clip_168/loops=false +animation/clip_169/name="" +animation/clip_169/start_frame=0 +animation/clip_169/end_frame=0 +animation/clip_169/loops=false +animation/clip_170/name="" +animation/clip_170/start_frame=0 +animation/clip_170/end_frame=0 +animation/clip_170/loops=false +animation/clip_171/name="" +animation/clip_171/start_frame=0 +animation/clip_171/end_frame=0 +animation/clip_171/loops=false +animation/clip_172/name="" +animation/clip_172/start_frame=0 +animation/clip_172/end_frame=0 +animation/clip_172/loops=false +animation/clip_173/name="" +animation/clip_173/start_frame=0 +animation/clip_173/end_frame=0 +animation/clip_173/loops=false +animation/clip_174/name="" +animation/clip_174/start_frame=0 +animation/clip_174/end_frame=0 +animation/clip_174/loops=false +animation/clip_175/name="" +animation/clip_175/start_frame=0 +animation/clip_175/end_frame=0 +animation/clip_175/loops=false +animation/clip_176/name="" +animation/clip_176/start_frame=0 +animation/clip_176/end_frame=0 +animation/clip_176/loops=false +animation/clip_177/name="" +animation/clip_177/start_frame=0 +animation/clip_177/end_frame=0 +animation/clip_177/loops=false +animation/clip_178/name="" +animation/clip_178/start_frame=0 +animation/clip_178/end_frame=0 +animation/clip_178/loops=false +animation/clip_179/name="" +animation/clip_179/start_frame=0 +animation/clip_179/end_frame=0 +animation/clip_179/loops=false +animation/clip_180/name="" +animation/clip_180/start_frame=0 +animation/clip_180/end_frame=0 +animation/clip_180/loops=false +animation/clip_181/name="" +animation/clip_181/start_frame=0 +animation/clip_181/end_frame=0 +animation/clip_181/loops=false +animation/clip_182/name="" +animation/clip_182/start_frame=0 +animation/clip_182/end_frame=0 +animation/clip_182/loops=false +animation/clip_183/name="" +animation/clip_183/start_frame=0 +animation/clip_183/end_frame=0 +animation/clip_183/loops=false +animation/clip_184/name="" +animation/clip_184/start_frame=0 +animation/clip_184/end_frame=0 +animation/clip_184/loops=false +animation/clip_185/name="" +animation/clip_185/start_frame=0 +animation/clip_185/end_frame=0 +animation/clip_185/loops=false +animation/clip_186/name="" +animation/clip_186/start_frame=0 +animation/clip_186/end_frame=0 +animation/clip_186/loops=false +animation/clip_187/name="" +animation/clip_187/start_frame=0 +animation/clip_187/end_frame=0 +animation/clip_187/loops=false +animation/clip_188/name="" +animation/clip_188/start_frame=0 +animation/clip_188/end_frame=0 +animation/clip_188/loops=false +animation/clip_189/name="" +animation/clip_189/start_frame=0 +animation/clip_189/end_frame=0 +animation/clip_189/loops=false +animation/clip_190/name="" +animation/clip_190/start_frame=0 +animation/clip_190/end_frame=0 +animation/clip_190/loops=false +animation/clip_191/name="" +animation/clip_191/start_frame=0 +animation/clip_191/end_frame=0 +animation/clip_191/loops=false +animation/clip_192/name="" +animation/clip_192/start_frame=0 +animation/clip_192/end_frame=0 +animation/clip_192/loops=false +animation/clip_193/name="" +animation/clip_193/start_frame=0 +animation/clip_193/end_frame=0 +animation/clip_193/loops=false +animation/clip_194/name="" +animation/clip_194/start_frame=0 +animation/clip_194/end_frame=0 +animation/clip_194/loops=false +animation/clip_195/name="" +animation/clip_195/start_frame=0 +animation/clip_195/end_frame=0 +animation/clip_195/loops=false +animation/clip_196/name="" +animation/clip_196/start_frame=0 +animation/clip_196/end_frame=0 +animation/clip_196/loops=false +animation/clip_197/name="" +animation/clip_197/start_frame=0 +animation/clip_197/end_frame=0 +animation/clip_197/loops=false +animation/clip_198/name="" +animation/clip_198/start_frame=0 +animation/clip_198/end_frame=0 +animation/clip_198/loops=false +animation/clip_199/name="" +animation/clip_199/start_frame=0 +animation/clip_199/end_frame=0 +animation/clip_199/loops=false +animation/clip_200/name="" +animation/clip_200/start_frame=0 +animation/clip_200/end_frame=0 +animation/clip_200/loops=false +animation/clip_201/name="" +animation/clip_201/start_frame=0 +animation/clip_201/end_frame=0 +animation/clip_201/loops=false +animation/clip_202/name="" +animation/clip_202/start_frame=0 +animation/clip_202/end_frame=0 +animation/clip_202/loops=false +animation/clip_203/name="" +animation/clip_203/start_frame=0 +animation/clip_203/end_frame=0 +animation/clip_203/loops=false +animation/clip_204/name="" +animation/clip_204/start_frame=0 +animation/clip_204/end_frame=0 +animation/clip_204/loops=false +animation/clip_205/name="" +animation/clip_205/start_frame=0 +animation/clip_205/end_frame=0 +animation/clip_205/loops=false +animation/clip_206/name="" +animation/clip_206/start_frame=0 +animation/clip_206/end_frame=0 +animation/clip_206/loops=false +animation/clip_207/name="" +animation/clip_207/start_frame=0 +animation/clip_207/end_frame=0 +animation/clip_207/loops=false +animation/clip_208/name="" +animation/clip_208/start_frame=0 +animation/clip_208/end_frame=0 +animation/clip_208/loops=false +animation/clip_209/name="" +animation/clip_209/start_frame=0 +animation/clip_209/end_frame=0 +animation/clip_209/loops=false +animation/clip_210/name="" +animation/clip_210/start_frame=0 +animation/clip_210/end_frame=0 +animation/clip_210/loops=false +animation/clip_211/name="" +animation/clip_211/start_frame=0 +animation/clip_211/end_frame=0 +animation/clip_211/loops=false +animation/clip_212/name="" +animation/clip_212/start_frame=0 +animation/clip_212/end_frame=0 +animation/clip_212/loops=false +animation/clip_213/name="" +animation/clip_213/start_frame=0 +animation/clip_213/end_frame=0 +animation/clip_213/loops=false +animation/clip_214/name="" +animation/clip_214/start_frame=0 +animation/clip_214/end_frame=0 +animation/clip_214/loops=false +animation/clip_215/name="" +animation/clip_215/start_frame=0 +animation/clip_215/end_frame=0 +animation/clip_215/loops=false +animation/clip_216/name="" +animation/clip_216/start_frame=0 +animation/clip_216/end_frame=0 +animation/clip_216/loops=false +animation/clip_217/name="" +animation/clip_217/start_frame=0 +animation/clip_217/end_frame=0 +animation/clip_217/loops=false +animation/clip_218/name="" +animation/clip_218/start_frame=0 +animation/clip_218/end_frame=0 +animation/clip_218/loops=false +animation/clip_219/name="" +animation/clip_219/start_frame=0 +animation/clip_219/end_frame=0 +animation/clip_219/loops=false +animation/clip_220/name="" +animation/clip_220/start_frame=0 +animation/clip_220/end_frame=0 +animation/clip_220/loops=false +animation/clip_221/name="" +animation/clip_221/start_frame=0 +animation/clip_221/end_frame=0 +animation/clip_221/loops=false +animation/clip_222/name="" +animation/clip_222/start_frame=0 +animation/clip_222/end_frame=0 +animation/clip_222/loops=false +animation/clip_223/name="" +animation/clip_223/start_frame=0 +animation/clip_223/end_frame=0 +animation/clip_223/loops=false +animation/clip_224/name="" +animation/clip_224/start_frame=0 +animation/clip_224/end_frame=0 +animation/clip_224/loops=false +animation/clip_225/name="" +animation/clip_225/start_frame=0 +animation/clip_225/end_frame=0 +animation/clip_225/loops=false +animation/clip_226/name="" +animation/clip_226/start_frame=0 +animation/clip_226/end_frame=0 +animation/clip_226/loops=false +animation/clip_227/name="" +animation/clip_227/start_frame=0 +animation/clip_227/end_frame=0 +animation/clip_227/loops=false +animation/clip_228/name="" +animation/clip_228/start_frame=0 +animation/clip_228/end_frame=0 +animation/clip_228/loops=false +animation/clip_229/name="" +animation/clip_229/start_frame=0 +animation/clip_229/end_frame=0 +animation/clip_229/loops=false +animation/clip_230/name="" +animation/clip_230/start_frame=0 +animation/clip_230/end_frame=0 +animation/clip_230/loops=false +animation/clip_231/name="" +animation/clip_231/start_frame=0 +animation/clip_231/end_frame=0 +animation/clip_231/loops=false +animation/clip_232/name="" +animation/clip_232/start_frame=0 +animation/clip_232/end_frame=0 +animation/clip_232/loops=false +animation/clip_233/name="" +animation/clip_233/start_frame=0 +animation/clip_233/end_frame=0 +animation/clip_233/loops=false +animation/clip_234/name="" +animation/clip_234/start_frame=0 +animation/clip_234/end_frame=0 +animation/clip_234/loops=false +animation/clip_235/name="" +animation/clip_235/start_frame=0 +animation/clip_235/end_frame=0 +animation/clip_235/loops=false +animation/clip_236/name="" +animation/clip_236/start_frame=0 +animation/clip_236/end_frame=0 +animation/clip_236/loops=false +animation/clip_237/name="" +animation/clip_237/start_frame=0 +animation/clip_237/end_frame=0 +animation/clip_237/loops=false +animation/clip_238/name="" +animation/clip_238/start_frame=0 +animation/clip_238/end_frame=0 +animation/clip_238/loops=false +animation/clip_239/name="" +animation/clip_239/start_frame=0 +animation/clip_239/end_frame=0 +animation/clip_239/loops=false +animation/clip_240/name="" +animation/clip_240/start_frame=0 +animation/clip_240/end_frame=0 +animation/clip_240/loops=false +animation/clip_241/name="" +animation/clip_241/start_frame=0 +animation/clip_241/end_frame=0 +animation/clip_241/loops=false +animation/clip_242/name="" +animation/clip_242/start_frame=0 +animation/clip_242/end_frame=0 +animation/clip_242/loops=false +animation/clip_243/name="" +animation/clip_243/start_frame=0 +animation/clip_243/end_frame=0 +animation/clip_243/loops=false +animation/clip_244/name="" +animation/clip_244/start_frame=0 +animation/clip_244/end_frame=0 +animation/clip_244/loops=false +animation/clip_245/name="" +animation/clip_245/start_frame=0 +animation/clip_245/end_frame=0 +animation/clip_245/loops=false +animation/clip_246/name="" +animation/clip_246/start_frame=0 +animation/clip_246/end_frame=0 +animation/clip_246/loops=false +animation/clip_247/name="" +animation/clip_247/start_frame=0 +animation/clip_247/end_frame=0 +animation/clip_247/loops=false +animation/clip_248/name="" +animation/clip_248/start_frame=0 +animation/clip_248/end_frame=0 +animation/clip_248/loops=false +animation/clip_249/name="" +animation/clip_249/start_frame=0 +animation/clip_249/end_frame=0 +animation/clip_249/loops=false +animation/clip_250/name="" +animation/clip_250/start_frame=0 +animation/clip_250/end_frame=0 +animation/clip_250/loops=false +animation/clip_251/name="" +animation/clip_251/start_frame=0 +animation/clip_251/end_frame=0 +animation/clip_251/loops=false +animation/clip_252/name="" +animation/clip_252/start_frame=0 +animation/clip_252/end_frame=0 +animation/clip_252/loops=false +animation/clip_253/name="" +animation/clip_253/start_frame=0 +animation/clip_253/end_frame=0 +animation/clip_253/loops=false +animation/clip_254/name="" +animation/clip_254/start_frame=0 +animation/clip_254/end_frame=0 +animation/clip_254/loops=false +animation/clip_255/name="" +animation/clip_255/start_frame=0 +animation/clip_255/end_frame=0 +animation/clip_255/loops=false +animation/clip_256/name="" +animation/clip_256/start_frame=0 +animation/clip_256/end_frame=0 +animation/clip_256/loops=false diff --git a/game/test_weapons/handpainted weapons 2-80_shield_a.mesh b/game/test_weapons/handpainted weapons 2-80_shield_a.mesh new file mode 100644 index 0000000..2ef5d41 Binary files /dev/null and b/game/test_weapons/handpainted weapons 2-80_shield_a.mesh differ diff --git a/game/test_weapons/handpainted weapons 2-80_shield_b.mesh b/game/test_weapons/handpainted weapons 2-80_shield_b.mesh new file mode 100644 index 0000000..12feaeb Binary files /dev/null and b/game/test_weapons/handpainted weapons 2-80_shield_b.mesh differ diff --git a/game/test_weapons/handpainted weapons 2-80_shield_c.mesh b/game/test_weapons/handpainted weapons 2-80_shield_c.mesh new file mode 100644 index 0000000..b1f496a Binary files /dev/null and b/game/test_weapons/handpainted weapons 2-80_shield_c.mesh differ diff --git a/game/test_weapons/handpainted weapons 2-80_shield_d.mesh b/game/test_weapons/handpainted weapons 2-80_shield_d.mesh new file mode 100644 index 0000000..cb41b01 Binary files /dev/null and b/game/test_weapons/handpainted weapons 2-80_shield_d.mesh differ diff --git a/game/test_weapons/handpainted weapons 2-80_sword_a.mesh b/game/test_weapons/handpainted weapons 2-80_sword_a.mesh new file mode 100644 index 0000000..d9ae063 Binary files /dev/null and b/game/test_weapons/handpainted weapons 2-80_sword_a.mesh differ diff --git a/game/test_weapons/handpainted weapons 2-80_sword_b.mesh b/game/test_weapons/handpainted weapons 2-80_sword_b.mesh new file mode 100644 index 0000000..3496fe0 Binary files /dev/null and b/game/test_weapons/handpainted weapons 2-80_sword_b.mesh differ diff --git a/game/test_weapons/handpainted weapons 2-80_sword_c.mesh b/game/test_weapons/handpainted weapons 2-80_sword_c.mesh new file mode 100644 index 0000000..b9e606a Binary files /dev/null and b/game/test_weapons/handpainted weapons 2-80_sword_c.mesh differ diff --git a/game/test_weapons/handpainted weapons 2-80_sword_d.mesh b/game/test_weapons/handpainted weapons 2-80_sword_d.mesh new file mode 100644 index 0000000..48da111 Binary files /dev/null and b/game/test_weapons/handpainted weapons 2-80_sword_d.mesh differ diff --git a/game/test_weapons/handpainted weapons 2-80_sword_e.mesh b/game/test_weapons/handpainted weapons 2-80_sword_e.mesh new file mode 100644 index 0000000..cbcd636 Binary files /dev/null and b/game/test_weapons/handpainted weapons 2-80_sword_e.mesh differ diff --git a/game/test_weapons/handpainted weapons 2-80_sword_f.mesh b/game/test_weapons/handpainted weapons 2-80_sword_f.mesh new file mode 100644 index 0000000..8d6ae10 Binary files /dev/null and b/game/test_weapons/handpainted weapons 2-80_sword_f.mesh differ diff --git a/game/test_weapons/handpainted weapons 2-80_sword_g.mesh b/game/test_weapons/handpainted weapons 2-80_sword_g.mesh new file mode 100644 index 0000000..d322c54 Binary files /dev/null and b/game/test_weapons/handpainted weapons 2-80_sword_g.mesh differ diff --git a/game/test_weapons/handpainted weapons 2-80_sword_h.mesh b/game/test_weapons/handpainted weapons 2-80_sword_h.mesh new file mode 100644 index 0000000..c1e9257 Binary files /dev/null and b/game/test_weapons/handpainted weapons 2-80_sword_h.mesh differ diff --git a/game/test_weapons/handpainted weapons 2-80_sword_i.mesh b/game/test_weapons/handpainted weapons 2-80_sword_i.mesh new file mode 100644 index 0000000..c0b6d57 Binary files /dev/null and b/game/test_weapons/handpainted weapons 2-80_sword_i.mesh differ diff --git a/game/test_weapons/handpainted weapons 2-80_sword_j.mesh b/game/test_weapons/handpainted weapons 2-80_sword_j.mesh new file mode 100644 index 0000000..a3d38a7 Binary files /dev/null and b/game/test_weapons/handpainted weapons 2-80_sword_j.mesh differ diff --git a/game/test_weapons/shield_a.material b/game/test_weapons/shield_a.material new file mode 100644 index 0000000..5e02ce3 Binary files /dev/null and b/game/test_weapons/shield_a.material differ diff --git a/game/test_weapons/shield_a.mesh b/game/test_weapons/shield_a.mesh new file mode 100644 index 0000000..77d32cd Binary files /dev/null and b/game/test_weapons/shield_a.mesh differ diff --git a/game/test_weapons/shield_b.material b/game/test_weapons/shield_b.material new file mode 100644 index 0000000..22bb6ea Binary files /dev/null and b/game/test_weapons/shield_b.material differ diff --git a/game/test_weapons/shield_b.mesh b/game/test_weapons/shield_b.mesh new file mode 100644 index 0000000..3f1df28 Binary files /dev/null and b/game/test_weapons/shield_b.mesh differ diff --git a/game/test_weapons/shield_c.material b/game/test_weapons/shield_c.material new file mode 100644 index 0000000..b1cf5cf Binary files /dev/null and b/game/test_weapons/shield_c.material differ diff --git a/game/test_weapons/shield_c.mesh b/game/test_weapons/shield_c.mesh new file mode 100644 index 0000000..76fc6ab Binary files /dev/null and b/game/test_weapons/shield_c.mesh differ diff --git a/game/test_weapons/shield_d.material b/game/test_weapons/shield_d.material new file mode 100644 index 0000000..2e623d5 Binary files /dev/null and b/game/test_weapons/shield_d.material differ diff --git a/game/test_weapons/shield_d.mesh b/game/test_weapons/shield_d.mesh new file mode 100644 index 0000000..1d972f5 Binary files /dev/null and b/game/test_weapons/shield_d.mesh differ diff --git a/game/test_weapons/shield_d_new_material.tres b/game/test_weapons/shield_d_new_material.tres new file mode 100644 index 0000000..d764fc3 --- /dev/null +++ b/game/test_weapons/shield_d_new_material.tres @@ -0,0 +1,9 @@ +[gd_resource type="ShaderMaterial" load_steps=3 format=2] + +[ext_resource path="res://modules/core/shaders/4_standard_character_shader.tres" type="Shader" id=1] +[ext_resource path="res://test_weapons/textures/shield_d.png" type="Texture" id=2] + +[resource] +shader = ExtResource( 1 ) +shader_param/albedo = Color( 0.764706, 0.764706, 0.764706, 1 ) +shader_param/texture_albedo = ExtResource( 2 ) diff --git a/game/test_weapons/shield_test.tscn b/game/test_weapons/shield_test.tscn new file mode 100644 index 0000000..8ce86d0 --- /dev/null +++ b/game/test_weapons/shield_test.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://test_weapons/shield_d.mesh" type="ArrayMesh" id=1] + +[node name="MeshInstance2" type="MeshInstance"] +transform = Transform( -0.430658, 0.00290468, 0.130517, -0.130451, 0.00984704, -0.4306, -0.00563716, -0.449808, -0.00858344, 0, 0, 0 ) +mesh = ExtResource( 1 ) +material/0 = null diff --git a/game/test_weapons/sword_a.material b/game/test_weapons/sword_a.material new file mode 100644 index 0000000..f3ac5c7 Binary files /dev/null and b/game/test_weapons/sword_a.material differ diff --git a/game/test_weapons/sword_a.mesh b/game/test_weapons/sword_a.mesh new file mode 100644 index 0000000..2ae9ded Binary files /dev/null and b/game/test_weapons/sword_a.mesh differ diff --git a/game/test_weapons/sword_a_2.material b/game/test_weapons/sword_a_2.material new file mode 100644 index 0000000..3594033 Binary files /dev/null and b/game/test_weapons/sword_a_2.material differ diff --git a/game/test_weapons/sword_b.material b/game/test_weapons/sword_b.material new file mode 100644 index 0000000..ab53f8f Binary files /dev/null and b/game/test_weapons/sword_b.material differ diff --git a/game/test_weapons/sword_b.mesh b/game/test_weapons/sword_b.mesh new file mode 100644 index 0000000..408b83f Binary files /dev/null and b/game/test_weapons/sword_b.mesh differ diff --git a/game/test_weapons/sword_b_2.material b/game/test_weapons/sword_b_2.material new file mode 100644 index 0000000..c0be332 Binary files /dev/null and b/game/test_weapons/sword_b_2.material differ diff --git a/game/test_weapons/sword_c.material b/game/test_weapons/sword_c.material new file mode 100644 index 0000000..ed36220 Binary files /dev/null and b/game/test_weapons/sword_c.material differ diff --git a/game/test_weapons/sword_c.mesh b/game/test_weapons/sword_c.mesh new file mode 100644 index 0000000..cd28fb2 Binary files /dev/null and b/game/test_weapons/sword_c.mesh differ diff --git a/game/test_weapons/sword_c_2.material b/game/test_weapons/sword_c_2.material new file mode 100644 index 0000000..3321ea6 Binary files /dev/null and b/game/test_weapons/sword_c_2.material differ diff --git a/game/test_weapons/sword_d.material b/game/test_weapons/sword_d.material new file mode 100644 index 0000000..6c42413 Binary files /dev/null and b/game/test_weapons/sword_d.material differ diff --git a/game/test_weapons/sword_d.mesh b/game/test_weapons/sword_d.mesh new file mode 100644 index 0000000..c431626 Binary files /dev/null and b/game/test_weapons/sword_d.mesh differ diff --git a/game/test_weapons/sword_e.material b/game/test_weapons/sword_e.material new file mode 100644 index 0000000..3224572 Binary files /dev/null and b/game/test_weapons/sword_e.material differ diff --git a/game/test_weapons/sword_e.mesh b/game/test_weapons/sword_e.mesh new file mode 100644 index 0000000..c6bbb1a Binary files /dev/null and b/game/test_weapons/sword_e.mesh differ diff --git a/game/test_weapons/sword_e_2.material b/game/test_weapons/sword_e_2.material new file mode 100644 index 0000000..a81c5d8 Binary files /dev/null and b/game/test_weapons/sword_e_2.material differ diff --git a/game/test_weapons/sword_f.material b/game/test_weapons/sword_f.material new file mode 100644 index 0000000..f0c17c5 Binary files /dev/null and b/game/test_weapons/sword_f.material differ diff --git a/game/test_weapons/sword_f.mesh b/game/test_weapons/sword_f.mesh new file mode 100644 index 0000000..2c181ae Binary files /dev/null and b/game/test_weapons/sword_f.mesh differ diff --git a/game/test_weapons/sword_f_2.material b/game/test_weapons/sword_f_2.material new file mode 100644 index 0000000..81a266d Binary files /dev/null and b/game/test_weapons/sword_f_2.material differ diff --git a/game/test_weapons/sword_g.material b/game/test_weapons/sword_g.material new file mode 100644 index 0000000..76380fc Binary files /dev/null and b/game/test_weapons/sword_g.material differ diff --git a/game/test_weapons/sword_g.mesh b/game/test_weapons/sword_g.mesh new file mode 100644 index 0000000..6db679f Binary files /dev/null and b/game/test_weapons/sword_g.mesh differ diff --git a/game/test_weapons/sword_h.material b/game/test_weapons/sword_h.material new file mode 100644 index 0000000..1f49031 Binary files /dev/null and b/game/test_weapons/sword_h.material differ diff --git a/game/test_weapons/sword_h.mesh b/game/test_weapons/sword_h.mesh new file mode 100644 index 0000000..d9a775c Binary files /dev/null and b/game/test_weapons/sword_h.mesh differ diff --git a/game/test_weapons/sword_h_2.material b/game/test_weapons/sword_h_2.material new file mode 100644 index 0000000..8862efe Binary files /dev/null and b/game/test_weapons/sword_h_2.material differ diff --git a/game/test_weapons/sword_i.material b/game/test_weapons/sword_i.material new file mode 100644 index 0000000..653a7b6 Binary files /dev/null and b/game/test_weapons/sword_i.material differ diff --git a/game/test_weapons/sword_i.mesh b/game/test_weapons/sword_i.mesh new file mode 100644 index 0000000..af5004d Binary files /dev/null and b/game/test_weapons/sword_i.mesh differ diff --git a/game/test_weapons/sword_i_2.material b/game/test_weapons/sword_i_2.material new file mode 100644 index 0000000..73d34eb Binary files /dev/null and b/game/test_weapons/sword_i_2.material differ diff --git a/game/test_weapons/sword_j.material b/game/test_weapons/sword_j.material new file mode 100644 index 0000000..a2f8403 Binary files /dev/null and b/game/test_weapons/sword_j.material differ diff --git a/game/test_weapons/sword_j.mesh b/game/test_weapons/sword_j.mesh new file mode 100644 index 0000000..29bc5ed Binary files /dev/null and b/game/test_weapons/sword_j.mesh differ diff --git a/game/test_weapons/sword_j_2.material b/game/test_weapons/sword_j_2.material new file mode 100644 index 0000000..d58a199 Binary files /dev/null and b/game/test_weapons/sword_j_2.material differ diff --git a/game/test_weapons/textures/shield_a.png b/game/test_weapons/textures/shield_a.png new file mode 100644 index 0000000..a9e0051 Binary files /dev/null and b/game/test_weapons/textures/shield_a.png differ diff --git a/game/test_weapons/textures/shield_a.png.import b/game/test_weapons/textures/shield_a.png.import new file mode 100644 index 0000000..d5564e2 --- /dev/null +++ b/game/test_weapons/textures/shield_a.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shield_a.png-90fcdf3921cf324d1619af90885fbdda.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/shield_a.png" +dest_files=[ "res://.import/shield_a.png-90fcdf3921cf324d1619af90885fbdda.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/shield_a_2.png b/game/test_weapons/textures/shield_a_2.png new file mode 100644 index 0000000..a6204e0 Binary files /dev/null and b/game/test_weapons/textures/shield_a_2.png differ diff --git a/game/test_weapons/textures/shield_a_2.png.import b/game/test_weapons/textures/shield_a_2.png.import new file mode 100644 index 0000000..9e63ad4 --- /dev/null +++ b/game/test_weapons/textures/shield_a_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shield_a_2.png-a85068e5a0b2731af5542e35dde9e225.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/shield_a_2.png" +dest_files=[ "res://.import/shield_a_2.png-a85068e5a0b2731af5542e35dde9e225.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/shield_a_3.png b/game/test_weapons/textures/shield_a_3.png new file mode 100644 index 0000000..82b5aca Binary files /dev/null and b/game/test_weapons/textures/shield_a_3.png differ diff --git a/game/test_weapons/textures/shield_a_3.png.import b/game/test_weapons/textures/shield_a_3.png.import new file mode 100644 index 0000000..0efe33f --- /dev/null +++ b/game/test_weapons/textures/shield_a_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shield_a_3.png-a1a5c3f7c478426e9fcfcd8bf8164c61.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/shield_a_3.png" +dest_files=[ "res://.import/shield_a_3.png-a1a5c3f7c478426e9fcfcd8bf8164c61.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/shield_b.png b/game/test_weapons/textures/shield_b.png new file mode 100644 index 0000000..35b36f6 Binary files /dev/null and b/game/test_weapons/textures/shield_b.png differ diff --git a/game/test_weapons/textures/shield_b.png.import b/game/test_weapons/textures/shield_b.png.import new file mode 100644 index 0000000..1176d1a --- /dev/null +++ b/game/test_weapons/textures/shield_b.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shield_b.png-68ee378e2ba995370f623a5f96dcacd8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/shield_b.png" +dest_files=[ "res://.import/shield_b.png-68ee378e2ba995370f623a5f96dcacd8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/shield_b_2.png b/game/test_weapons/textures/shield_b_2.png new file mode 100644 index 0000000..271342a Binary files /dev/null and b/game/test_weapons/textures/shield_b_2.png differ diff --git a/game/test_weapons/textures/shield_b_2.png.import b/game/test_weapons/textures/shield_b_2.png.import new file mode 100644 index 0000000..01708e4 --- /dev/null +++ b/game/test_weapons/textures/shield_b_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shield_b_2.png-e029ff6459694a431c94fc030ae2cad9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/shield_b_2.png" +dest_files=[ "res://.import/shield_b_2.png-e029ff6459694a431c94fc030ae2cad9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/shield_b_3.png b/game/test_weapons/textures/shield_b_3.png new file mode 100644 index 0000000..331008c Binary files /dev/null and b/game/test_weapons/textures/shield_b_3.png differ diff --git a/game/test_weapons/textures/shield_b_3.png.import b/game/test_weapons/textures/shield_b_3.png.import new file mode 100644 index 0000000..c63296a --- /dev/null +++ b/game/test_weapons/textures/shield_b_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shield_b_3.png-f44c225a4c9431cdf441c7c49da14313.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/shield_b_3.png" +dest_files=[ "res://.import/shield_b_3.png-f44c225a4c9431cdf441c7c49da14313.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/shield_c.png b/game/test_weapons/textures/shield_c.png new file mode 100644 index 0000000..03132d4 Binary files /dev/null and b/game/test_weapons/textures/shield_c.png differ diff --git a/game/test_weapons/textures/shield_c.png.import b/game/test_weapons/textures/shield_c.png.import new file mode 100644 index 0000000..8b09f12 --- /dev/null +++ b/game/test_weapons/textures/shield_c.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shield_c.png-18ad20a3776bde4c27d453e4672dc675.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/shield_c.png" +dest_files=[ "res://.import/shield_c.png-18ad20a3776bde4c27d453e4672dc675.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/shield_c_2.png b/game/test_weapons/textures/shield_c_2.png new file mode 100644 index 0000000..5230079 Binary files /dev/null and b/game/test_weapons/textures/shield_c_2.png differ diff --git a/game/test_weapons/textures/shield_c_2.png.import b/game/test_weapons/textures/shield_c_2.png.import new file mode 100644 index 0000000..c10b526 --- /dev/null +++ b/game/test_weapons/textures/shield_c_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shield_c_2.png-bbfa9d1d6102a44f4be9d77f1920943c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/shield_c_2.png" +dest_files=[ "res://.import/shield_c_2.png-bbfa9d1d6102a44f4be9d77f1920943c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/shield_c_3.png b/game/test_weapons/textures/shield_c_3.png new file mode 100644 index 0000000..6911e73 Binary files /dev/null and b/game/test_weapons/textures/shield_c_3.png differ diff --git a/game/test_weapons/textures/shield_c_3.png.import b/game/test_weapons/textures/shield_c_3.png.import new file mode 100644 index 0000000..e70d148 --- /dev/null +++ b/game/test_weapons/textures/shield_c_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shield_c_3.png-9eff7f2e45edcaec173f50df99202f3d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/shield_c_3.png" +dest_files=[ "res://.import/shield_c_3.png-9eff7f2e45edcaec173f50df99202f3d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/shield_d.png b/game/test_weapons/textures/shield_d.png new file mode 100644 index 0000000..ac24434 Binary files /dev/null and b/game/test_weapons/textures/shield_d.png differ diff --git a/game/test_weapons/textures/shield_d.png.import b/game/test_weapons/textures/shield_d.png.import new file mode 100644 index 0000000..169c9f2 --- /dev/null +++ b/game/test_weapons/textures/shield_d.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shield_d.png-3e564c292591c4fd1c7d0c702958fd4a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/shield_d.png" +dest_files=[ "res://.import/shield_d.png-3e564c292591c4fd1c7d0c702958fd4a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/shield_d_2.png b/game/test_weapons/textures/shield_d_2.png new file mode 100644 index 0000000..e90d799 Binary files /dev/null and b/game/test_weapons/textures/shield_d_2.png differ diff --git a/game/test_weapons/textures/shield_d_2.png.import b/game/test_weapons/textures/shield_d_2.png.import new file mode 100644 index 0000000..f037cd5 --- /dev/null +++ b/game/test_weapons/textures/shield_d_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shield_d_2.png-1d1a31bfb2ab730527ae91981015ffe9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/shield_d_2.png" +dest_files=[ "res://.import/shield_d_2.png-1d1a31bfb2ab730527ae91981015ffe9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/shield_d_3.png b/game/test_weapons/textures/shield_d_3.png new file mode 100644 index 0000000..699fa08 Binary files /dev/null and b/game/test_weapons/textures/shield_d_3.png differ diff --git a/game/test_weapons/textures/shield_d_3.png.import b/game/test_weapons/textures/shield_d_3.png.import new file mode 100644 index 0000000..9e99a4a --- /dev/null +++ b/game/test_weapons/textures/shield_d_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shield_d_3.png-6d43e3839d1f84667b3ec82ea681a50b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/shield_d_3.png" +dest_files=[ "res://.import/shield_d_3.png-6d43e3839d1f84667b3ec82ea681a50b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_a.png b/game/test_weapons/textures/sword_a.png new file mode 100644 index 0000000..755cda0 Binary files /dev/null and b/game/test_weapons/textures/sword_a.png differ diff --git a/game/test_weapons/textures/sword_a.png.import b/game/test_weapons/textures/sword_a.png.import new file mode 100644 index 0000000..9312803 --- /dev/null +++ b/game/test_weapons/textures/sword_a.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_a.png-e537e32a8b2e605529682afbec7d1395.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_a.png" +dest_files=[ "res://.import/sword_a.png-e537e32a8b2e605529682afbec7d1395.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_a_2.png b/game/test_weapons/textures/sword_a_2.png new file mode 100644 index 0000000..728bb00 Binary files /dev/null and b/game/test_weapons/textures/sword_a_2.png differ diff --git a/game/test_weapons/textures/sword_a_2.png.import b/game/test_weapons/textures/sword_a_2.png.import new file mode 100644 index 0000000..5d3ea4f --- /dev/null +++ b/game/test_weapons/textures/sword_a_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_a_2.png-9b5c96a8618620f49aff6aa543b95175.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_a_2.png" +dest_files=[ "res://.import/sword_a_2.png-9b5c96a8618620f49aff6aa543b95175.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_a_3.png b/game/test_weapons/textures/sword_a_3.png new file mode 100644 index 0000000..51887ff Binary files /dev/null and b/game/test_weapons/textures/sword_a_3.png differ diff --git a/game/test_weapons/textures/sword_a_3.png.import b/game/test_weapons/textures/sword_a_3.png.import new file mode 100644 index 0000000..d3bafbf --- /dev/null +++ b/game/test_weapons/textures/sword_a_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_a_3.png-d5fdd36669ec30260e308f1eaed8eb61.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_a_3.png" +dest_files=[ "res://.import/sword_a_3.png-d5fdd36669ec30260e308f1eaed8eb61.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_b.png b/game/test_weapons/textures/sword_b.png new file mode 100644 index 0000000..73315b8 Binary files /dev/null and b/game/test_weapons/textures/sword_b.png differ diff --git a/game/test_weapons/textures/sword_b.png.import b/game/test_weapons/textures/sword_b.png.import new file mode 100644 index 0000000..60ffb1d --- /dev/null +++ b/game/test_weapons/textures/sword_b.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_b.png-2adda64a39b69adee0ca16c240589e10.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_b.png" +dest_files=[ "res://.import/sword_b.png-2adda64a39b69adee0ca16c240589e10.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_b_2.png b/game/test_weapons/textures/sword_b_2.png new file mode 100644 index 0000000..72a26bd Binary files /dev/null and b/game/test_weapons/textures/sword_b_2.png differ diff --git a/game/test_weapons/textures/sword_b_2.png.import b/game/test_weapons/textures/sword_b_2.png.import new file mode 100644 index 0000000..c87be7c --- /dev/null +++ b/game/test_weapons/textures/sword_b_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_b_2.png-a96b0d9dd47f10e3153535c590c9fc5f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_b_2.png" +dest_files=[ "res://.import/sword_b_2.png-a96b0d9dd47f10e3153535c590c9fc5f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_b_3.png b/game/test_weapons/textures/sword_b_3.png new file mode 100644 index 0000000..8cc3eac Binary files /dev/null and b/game/test_weapons/textures/sword_b_3.png differ diff --git a/game/test_weapons/textures/sword_b_3.png.import b/game/test_weapons/textures/sword_b_3.png.import new file mode 100644 index 0000000..3c30b6f --- /dev/null +++ b/game/test_weapons/textures/sword_b_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_b_3.png-51b411d9d8cff7ec3e1fd8762befa97d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_b_3.png" +dest_files=[ "res://.import/sword_b_3.png-51b411d9d8cff7ec3e1fd8762befa97d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_c.png b/game/test_weapons/textures/sword_c.png new file mode 100644 index 0000000..a2a564e Binary files /dev/null and b/game/test_weapons/textures/sword_c.png differ diff --git a/game/test_weapons/textures/sword_c.png.import b/game/test_weapons/textures/sword_c.png.import new file mode 100644 index 0000000..a98d669 --- /dev/null +++ b/game/test_weapons/textures/sword_c.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_c.png-e02b8fd40b5ec2d13dab76cfe5bba9d2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_c.png" +dest_files=[ "res://.import/sword_c.png-e02b8fd40b5ec2d13dab76cfe5bba9d2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_c_2.png b/game/test_weapons/textures/sword_c_2.png new file mode 100644 index 0000000..3cc2a9b Binary files /dev/null and b/game/test_weapons/textures/sword_c_2.png differ diff --git a/game/test_weapons/textures/sword_c_2.png.import b/game/test_weapons/textures/sword_c_2.png.import new file mode 100644 index 0000000..7206314 --- /dev/null +++ b/game/test_weapons/textures/sword_c_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_c_2.png-966f66bc4b409fa33ed8ada74dac079b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_c_2.png" +dest_files=[ "res://.import/sword_c_2.png-966f66bc4b409fa33ed8ada74dac079b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_c_3.png b/game/test_weapons/textures/sword_c_3.png new file mode 100644 index 0000000..d01c95a Binary files /dev/null and b/game/test_weapons/textures/sword_c_3.png differ diff --git a/game/test_weapons/textures/sword_c_3.png.import b/game/test_weapons/textures/sword_c_3.png.import new file mode 100644 index 0000000..6be23c7 --- /dev/null +++ b/game/test_weapons/textures/sword_c_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_c_3.png-e90ec3a471c2400fabc5b9220ce4dcc9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_c_3.png" +dest_files=[ "res://.import/sword_c_3.png-e90ec3a471c2400fabc5b9220ce4dcc9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_d.png b/game/test_weapons/textures/sword_d.png new file mode 100644 index 0000000..b8953a8 Binary files /dev/null and b/game/test_weapons/textures/sword_d.png differ diff --git a/game/test_weapons/textures/sword_d.png.import b/game/test_weapons/textures/sword_d.png.import new file mode 100644 index 0000000..80d2aa4 --- /dev/null +++ b/game/test_weapons/textures/sword_d.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_d.png-2c7c5b621fe1d5046462c54040196e70.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_d.png" +dest_files=[ "res://.import/sword_d.png-2c7c5b621fe1d5046462c54040196e70.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_d_2.png b/game/test_weapons/textures/sword_d_2.png new file mode 100644 index 0000000..9f58b31 Binary files /dev/null and b/game/test_weapons/textures/sword_d_2.png differ diff --git a/game/test_weapons/textures/sword_d_2.png.import b/game/test_weapons/textures/sword_d_2.png.import new file mode 100644 index 0000000..df4394e --- /dev/null +++ b/game/test_weapons/textures/sword_d_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_d_2.png-ecb945a8423330048408df0a32920f35.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_d_2.png" +dest_files=[ "res://.import/sword_d_2.png-ecb945a8423330048408df0a32920f35.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_d_3.png b/game/test_weapons/textures/sword_d_3.png new file mode 100644 index 0000000..4db8ade Binary files /dev/null and b/game/test_weapons/textures/sword_d_3.png differ diff --git a/game/test_weapons/textures/sword_d_3.png.import b/game/test_weapons/textures/sword_d_3.png.import new file mode 100644 index 0000000..f6460fe --- /dev/null +++ b/game/test_weapons/textures/sword_d_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_d_3.png-070a57245b23edaf37baa001cd04afa3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_d_3.png" +dest_files=[ "res://.import/sword_d_3.png-070a57245b23edaf37baa001cd04afa3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_e.png b/game/test_weapons/textures/sword_e.png new file mode 100644 index 0000000..94447e7 Binary files /dev/null and b/game/test_weapons/textures/sword_e.png differ diff --git a/game/test_weapons/textures/sword_e.png.import b/game/test_weapons/textures/sword_e.png.import new file mode 100644 index 0000000..55f2d4b --- /dev/null +++ b/game/test_weapons/textures/sword_e.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_e.png-7f8d1f532a03a2fd1124b74154d0ebcb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_e.png" +dest_files=[ "res://.import/sword_e.png-7f8d1f532a03a2fd1124b74154d0ebcb.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_e_2.png b/game/test_weapons/textures/sword_e_2.png new file mode 100644 index 0000000..069da7a Binary files /dev/null and b/game/test_weapons/textures/sword_e_2.png differ diff --git a/game/test_weapons/textures/sword_e_2.png.import b/game/test_weapons/textures/sword_e_2.png.import new file mode 100644 index 0000000..598ebe0 --- /dev/null +++ b/game/test_weapons/textures/sword_e_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_e_2.png-b32d58f3550b3042147d7635e1c5c035.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_e_2.png" +dest_files=[ "res://.import/sword_e_2.png-b32d58f3550b3042147d7635e1c5c035.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_e_3.png b/game/test_weapons/textures/sword_e_3.png new file mode 100644 index 0000000..9e36c90 Binary files /dev/null and b/game/test_weapons/textures/sword_e_3.png differ diff --git a/game/test_weapons/textures/sword_e_3.png.import b/game/test_weapons/textures/sword_e_3.png.import new file mode 100644 index 0000000..f2722b1 --- /dev/null +++ b/game/test_weapons/textures/sword_e_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_e_3.png-86e9e63c392cf3d42088fa312a5eb903.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_e_3.png" +dest_files=[ "res://.import/sword_e_3.png-86e9e63c392cf3d42088fa312a5eb903.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_f.png b/game/test_weapons/textures/sword_f.png new file mode 100644 index 0000000..dfe3e1d Binary files /dev/null and b/game/test_weapons/textures/sword_f.png differ diff --git a/game/test_weapons/textures/sword_f.png.import b/game/test_weapons/textures/sword_f.png.import new file mode 100644 index 0000000..749f451 --- /dev/null +++ b/game/test_weapons/textures/sword_f.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_f.png-46ad8c35dd60dcfdaec4272b3012be5b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_f.png" +dest_files=[ "res://.import/sword_f.png-46ad8c35dd60dcfdaec4272b3012be5b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_f_2.png b/game/test_weapons/textures/sword_f_2.png new file mode 100644 index 0000000..316a9d8 Binary files /dev/null and b/game/test_weapons/textures/sword_f_2.png differ diff --git a/game/test_weapons/textures/sword_f_2.png.import b/game/test_weapons/textures/sword_f_2.png.import new file mode 100644 index 0000000..0df4a4f --- /dev/null +++ b/game/test_weapons/textures/sword_f_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_f_2.png-a6c0b5535767097a0f4714b90063684e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_f_2.png" +dest_files=[ "res://.import/sword_f_2.png-a6c0b5535767097a0f4714b90063684e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_f_3.png b/game/test_weapons/textures/sword_f_3.png new file mode 100644 index 0000000..cd73bdf Binary files /dev/null and b/game/test_weapons/textures/sword_f_3.png differ diff --git a/game/test_weapons/textures/sword_f_3.png.import b/game/test_weapons/textures/sword_f_3.png.import new file mode 100644 index 0000000..6cba502 --- /dev/null +++ b/game/test_weapons/textures/sword_f_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_f_3.png-695201d374782920640f8697f2112ded.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_f_3.png" +dest_files=[ "res://.import/sword_f_3.png-695201d374782920640f8697f2112ded.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_g.png b/game/test_weapons/textures/sword_g.png new file mode 100644 index 0000000..864a2c4 Binary files /dev/null and b/game/test_weapons/textures/sword_g.png differ diff --git a/game/test_weapons/textures/sword_g.png.import b/game/test_weapons/textures/sword_g.png.import new file mode 100644 index 0000000..affcd7b --- /dev/null +++ b/game/test_weapons/textures/sword_g.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_g.png-af9d844ae04c0e807438c86742233742.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_g.png" +dest_files=[ "res://.import/sword_g.png-af9d844ae04c0e807438c86742233742.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_g_2.png b/game/test_weapons/textures/sword_g_2.png new file mode 100644 index 0000000..cfa8037 Binary files /dev/null and b/game/test_weapons/textures/sword_g_2.png differ diff --git a/game/test_weapons/textures/sword_g_2.png.import b/game/test_weapons/textures/sword_g_2.png.import new file mode 100644 index 0000000..676201a --- /dev/null +++ b/game/test_weapons/textures/sword_g_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_g_2.png-f4478a089393e3ccbac1e78ba253ac1e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_g_2.png" +dest_files=[ "res://.import/sword_g_2.png-f4478a089393e3ccbac1e78ba253ac1e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_g_3.png b/game/test_weapons/textures/sword_g_3.png new file mode 100644 index 0000000..66c83eb Binary files /dev/null and b/game/test_weapons/textures/sword_g_3.png differ diff --git a/game/test_weapons/textures/sword_g_3.png.import b/game/test_weapons/textures/sword_g_3.png.import new file mode 100644 index 0000000..92610c2 --- /dev/null +++ b/game/test_weapons/textures/sword_g_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_g_3.png-7a78b0a0eaf0407a5aeb5bb572c243bd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_g_3.png" +dest_files=[ "res://.import/sword_g_3.png-7a78b0a0eaf0407a5aeb5bb572c243bd.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_h.png b/game/test_weapons/textures/sword_h.png new file mode 100644 index 0000000..72a9728 Binary files /dev/null and b/game/test_weapons/textures/sword_h.png differ diff --git a/game/test_weapons/textures/sword_h.png.import b/game/test_weapons/textures/sword_h.png.import new file mode 100644 index 0000000..4c3a17f --- /dev/null +++ b/game/test_weapons/textures/sword_h.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_h.png-7dc9fb68bbb634073c9c49e3c2c61373.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_h.png" +dest_files=[ "res://.import/sword_h.png-7dc9fb68bbb634073c9c49e3c2c61373.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_h_2.png b/game/test_weapons/textures/sword_h_2.png new file mode 100644 index 0000000..2618294 Binary files /dev/null and b/game/test_weapons/textures/sword_h_2.png differ diff --git a/game/test_weapons/textures/sword_h_2.png.import b/game/test_weapons/textures/sword_h_2.png.import new file mode 100644 index 0000000..3dd96e6 --- /dev/null +++ b/game/test_weapons/textures/sword_h_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_h_2.png-042a23dc7f0a0d81c678f813b5e7fac6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_h_2.png" +dest_files=[ "res://.import/sword_h_2.png-042a23dc7f0a0d81c678f813b5e7fac6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_h_3.png b/game/test_weapons/textures/sword_h_3.png new file mode 100644 index 0000000..796598a Binary files /dev/null and b/game/test_weapons/textures/sword_h_3.png differ diff --git a/game/test_weapons/textures/sword_h_3.png.import b/game/test_weapons/textures/sword_h_3.png.import new file mode 100644 index 0000000..3851e68 --- /dev/null +++ b/game/test_weapons/textures/sword_h_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_h_3.png-0a33c53f1f815570918ea8db854be7e1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_h_3.png" +dest_files=[ "res://.import/sword_h_3.png-0a33c53f1f815570918ea8db854be7e1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_i.png b/game/test_weapons/textures/sword_i.png new file mode 100644 index 0000000..359d7ce Binary files /dev/null and b/game/test_weapons/textures/sword_i.png differ diff --git a/game/test_weapons/textures/sword_i.png.import b/game/test_weapons/textures/sword_i.png.import new file mode 100644 index 0000000..bdb1c8b --- /dev/null +++ b/game/test_weapons/textures/sword_i.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_i.png-2e8803d58ea74c5b6c7b3c0f5753ee32.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_i.png" +dest_files=[ "res://.import/sword_i.png-2e8803d58ea74c5b6c7b3c0f5753ee32.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_i_2.png b/game/test_weapons/textures/sword_i_2.png new file mode 100644 index 0000000..a959e3f Binary files /dev/null and b/game/test_weapons/textures/sword_i_2.png differ diff --git a/game/test_weapons/textures/sword_i_2.png.import b/game/test_weapons/textures/sword_i_2.png.import new file mode 100644 index 0000000..14882c6 --- /dev/null +++ b/game/test_weapons/textures/sword_i_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_i_2.png-3f63aaa9e9c41a32ae90b5f54e3d782b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_i_2.png" +dest_files=[ "res://.import/sword_i_2.png-3f63aaa9e9c41a32ae90b5f54e3d782b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_i_3.png b/game/test_weapons/textures/sword_i_3.png new file mode 100644 index 0000000..bca86a6 Binary files /dev/null and b/game/test_weapons/textures/sword_i_3.png differ diff --git a/game/test_weapons/textures/sword_i_3.png.import b/game/test_weapons/textures/sword_i_3.png.import new file mode 100644 index 0000000..8fd80bf --- /dev/null +++ b/game/test_weapons/textures/sword_i_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_i_3.png-b55683b2e049ca0bba7aca0bc942a335.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_i_3.png" +dest_files=[ "res://.import/sword_i_3.png-b55683b2e049ca0bba7aca0bc942a335.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_j.png b/game/test_weapons/textures/sword_j.png new file mode 100644 index 0000000..9621b99 Binary files /dev/null and b/game/test_weapons/textures/sword_j.png differ diff --git a/game/test_weapons/textures/sword_j.png.import b/game/test_weapons/textures/sword_j.png.import new file mode 100644 index 0000000..4205830 --- /dev/null +++ b/game/test_weapons/textures/sword_j.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_j.png-804eae12d215d592fa6d1e50007f4589.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_j.png" +dest_files=[ "res://.import/sword_j.png-804eae12d215d592fa6d1e50007f4589.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_j_2.png b/game/test_weapons/textures/sword_j_2.png new file mode 100644 index 0000000..7dedcdd Binary files /dev/null and b/game/test_weapons/textures/sword_j_2.png differ diff --git a/game/test_weapons/textures/sword_j_2.png.import b/game/test_weapons/textures/sword_j_2.png.import new file mode 100644 index 0000000..9599387 --- /dev/null +++ b/game/test_weapons/textures/sword_j_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_j_2.png-58acfdcad0fe71f364641807b0bbc6c4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_j_2.png" +dest_files=[ "res://.import/sword_j_2.png-58acfdcad0fe71f364641807b0bbc6c4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/test_weapons/textures/sword_j_3.png b/game/test_weapons/textures/sword_j_3.png new file mode 100644 index 0000000..23e1d0b Binary files /dev/null and b/game/test_weapons/textures/sword_j_3.png differ diff --git a/game/test_weapons/textures/sword_j_3.png.import b/game/test_weapons/textures/sword_j_3.png.import new file mode 100644 index 0000000..e661d6e --- /dev/null +++ b/game/test_weapons/textures/sword_j_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sword_j_3.png-e11f540b3b71ff057b9d8cb9016bf62c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_weapons/textures/sword_j_3.png" +dest_files=[ "res://.import/sword_j_3.png-e11f540b3b71ff057b9d8cb9016bf62c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/testsave.png b/game/testsave.png new file mode 100644 index 0000000..a2510c7 Binary files /dev/null and b/game/testsave.png differ diff --git a/game/testsave.png.import b/game/testsave.png.import new file mode 100644 index 0000000..ca83796 --- /dev/null +++ b/game/testsave.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/testsave.png-4896f165f21664f61c0d9c325caba67a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://testsave.png" +dest_files=[ "res://.import/testsave.png-4896f165f21664f61c0d9c325caba67a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/texture_tools/LayeredTextureMaker.gd b/game/texture_tools/LayeredTextureMaker.gd new file mode 100644 index 0000000..b6445eb --- /dev/null +++ b/game/texture_tools/LayeredTextureMaker.gd @@ -0,0 +1,133 @@ +tool +extends Node2D +class_name LayeredTextureMaker + +# Copyright (c) 2020 Péter Magyar +# +# 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. + +export(Vector2) var texture_size : Vector2 = Vector2(16, 16) setget set_tex_size +export(Texture) var texture : Texture = null + +export(float) var refresh_rate : float = 2.0 +export(bool) var save : bool = false setget save_set + +var preview_node : Sprite = null +var viewport : Viewport = null + +var last_refresh : float = 0 +var queued_save : bool = false + +const DEBUG_TREE : bool = false + +func _enter_tree(): + if not Engine.editor_hint: + return + + set_meta("_edit_lock_", true) + #emit_signal("item_lock_status_changed") + create_preview() + set_process(true) + +func create_preview(): + for c in get_children(): + if c.name == "Preview": + c.name = "------" + c.queue_free() + break + + preview_node = Sprite.new() as Sprite + preview_node.name = "Preview" + preview_node.centered = false + add_child(preview_node) + + if Engine.editor_hint and DEBUG_TREE: + preview_node.owner = get_tree().edited_scene_root + + viewport = Viewport.new() + preview_node.add_child(viewport) + + if Engine.editor_hint and DEBUG_TREE: + viewport.owner = get_tree().edited_scene_root + + viewport.set_vflip(true) + viewport.set_size(texture_size) + preview_node.set_texture(null) + preview_node.set_texture(viewport.get_texture()) + + set_process(true) + +func _process(delta): + if (queued_save): + save() + + #not the best solution, but works for now + last_refresh += delta + + if (last_refresh > refresh_rate): + last_refresh -= refresh_rate + + for ch in viewport.get_children(): + ch.queue_free() + + for ch in get_children(): + if ch.name == "Preview": + continue + + var n = ch.duplicate() + viewport.add_child(n) + + if Engine.editor_hint and DEBUG_TREE: + n.owner = get_tree().edited_scene_root + + if get_children().has(preview_node) and get_child(get_child_count() - 1) != preview_node: + move_child(preview_node, get_child_count() - 1) + + #queued_save = true + + +func save() -> void: + #queued_save = false + + if texture == null: + #print("LayeredTextureMaker: Set a target texture!") + return + + #texture.set_data(viewport.get_texture().get_data()) + viewport.get_texture().get_data().save_png(texture.resource_path) +# texture.property_list_changed_notify() + +func preview_refresh() -> void: + for ch in viewport.get_children(): + ch.queue_free() + + for ch in get_children(): + if ch.name == "Preview": + continue + + viewport.add_child(ch.duplicate()) + +func set_tex_size(size : Vector2) -> void: + texture_size = size + + create_preview() + +func save_set(val): + if val: + save() diff --git a/game/texture_tools/test/ToolTest.tscn b/game/texture_tools/test/ToolTest.tscn new file mode 100644 index 0000000..ee86078 --- /dev/null +++ b/game/texture_tools/test/ToolTest.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://texture_tools/LayeredTextureMaker.gd" type="Script" id=1] +[ext_resource path="res://icon.png" type="Texture" id=2] +[ext_resource path="res://texture_tools/test/new_packerimageresource.tres" type="Texture" id=3] + +[node name="LayeredTextureMaker" type="Node2D"] +script = ExtResource( 1 ) +__meta__ = { +"_edit_lock_": true +} +texture = ExtResource( 3 ) +refresh_rate = 2.0 + +[node name="Sprite" type="Sprite" parent="."] +modulate = Color( 0.780392, 0.478431, 0.478431, 1 ) +self_modulate = Color( 0.454902, 1, 0.796078, 1 ) +position = Vector2( 8.29768, 10.7308 ) +rotation = 0.724902 +scale = Vector2( 0.152605, 0.115388 ) +texture = ExtResource( 2 ) diff --git a/game/texture_tools/test/new_packerimageresource.tres b/game/texture_tools/test/new_packerimageresource.tres new file mode 100644 index 0000000..876b3d9 --- /dev/null +++ b/game/texture_tools/test/new_packerimageresource.tres @@ -0,0 +1,13 @@ +[gd_resource type="PackerImageResource" load_steps=2 format=2] + +[sub_resource type="Image" id=1] +data = { +"data": PoolByteArray( 73, 101, 123, 70, 79, 86, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 80, 135, 173, 73, 111, 137, 73, 77, 79, 75, 75, 76, 76, 76, 76, 76, 76, 76, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 81, 139, 180, 81, 135, 174, 72, 97, 115, 74, 75, 76, 76, 76, 76, 75, 75, 75, 74, 74, 74, 74, 75, 75, 71, 77, 82, 72, 75, 78, 74, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 81, 140, 181, 81, 139, 180, 80, 125, 157, 73, 93, 106, 74, 77, 79, 72, 74, 76, 73, 75, 76, 67, 79, 87, 69, 109, 136, 73, 109, 134, 70, 88, 100, 72, 76, 78, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 81, 140, 181, 81, 140, 181, 81, 138, 179, 79, 132, 168, 74, 120, 152, 73, 103, 124, 70, 92, 108, 72, 106, 130, 73, 125, 161, 72, 135, 176, 74, 134, 174, 75, 113, 139, 70, 81, 89, 74, 74, 74, 76, 76, 76, 76, 76, 76, 81, 140, 181, 81, 140, 181, 81, 141, 181, 78, 139, 182, 75, 136, 185, 72, 135, 187, 73, 133, 177, 74, 131, 170, 73, 136, 179, 74, 141, 187, 74, 141, 187, 74, 138, 182, 75, 124, 158, 71, 85, 94, 74, 74, 74, 76, 76, 76, 82, 142, 182, 81, 141, 181, 81, 140, 182, 75, 139, 187, 73, 138, 190, 72, 138, 191, 72, 137, 190, 73, 140, 188, 74, 141, 188, 74, 142, 189, 74, 142, 189, 74, 141, 188, 74, 134, 176, 73, 105, 127, 72, 75, 76, 75, 75, 75, 120, 169, 200, 91, 146, 185, 110, 136, 158, 89, 135, 174, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 73, 140, 190, 74, 142, 189, 74, 142, 189, 74, 142, 189, 74, 139, 184, 67, 96, 115, 73, 74, 75, 76, 76, 76, 206, 224, 232, 189, 208, 221, 175, 183, 189, 132, 139, 151, 93, 134, 171, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 73, 140, 190, 74, 142, 189, 74, 141, 188, 74, 138, 181, 72, 105, 127, 72, 76, 78, 75, 75, 75, 159, 166, 172, 169, 171, 179, 197, 204, 210, 171, 181, 187, 126, 134, 147, 96, 133, 166, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 139, 191, 74, 142, 189, 74, 141, 187, 74, 133, 173, 68, 95, 113, 73, 75, 77, 77, 78, 80, 86, 88, 91, 111, 115, 118, 206, 210, 216, 141, 146, 157, 118, 127, 141, 96, 133, 165, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 139, 191, 74, 142, 189, 74, 141, 187, 74, 134, 175, 69, 99, 122, 87, 89, 91, 69, 69, 70, 76, 78, 80, 116, 117, 121, 203, 207, 212, 131, 144, 158, 90, 136, 171, 73, 141, 190, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 139, 191, 74, 142, 189, 74, 141, 188, 74, 135, 177, 167, 174, 175, 98, 101, 103, 71, 72, 74, 131, 133, 135, 222, 226, 233, 125, 165, 193, 76, 143, 189, 74, 142, 189, 74, 141, 189, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 74, 141, 189, 74, 142, 189, 153, 160, 162, 191, 197, 199, 148, 151, 153, 178, 182, 183, 128, 161, 183, 80, 144, 187, 74, 142, 189, 75, 142, 189, 74, 142, 189, 74, 142, 189, 72, 139, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 73, 141, 190, 96, 143, 174, 122, 125, 130, 155, 162, 163, 139, 169, 187, 87, 144, 183, 82, 144, 186, 79, 144, 189, 77, 143, 189, 77, 143, 189, 75, 142, 189, 74, 142, 189, 72, 139, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 86, 145, 185, 91, 142, 177, 106, 133, 153, 91, 146, 182, 86, 145, 185, 87, 147, 188, 86, 148, 190, 86, 149, 192, 97, 155, 196, 78, 143, 189, 75, 143, 189, 74, 142, 189, 72, 139, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191 ), +"format": "RGB8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[resource] +data = SubResource( 1 ) diff --git a/game/tilesets/Terrarin.tscn b/game/tilesets/Terrarin.tscn new file mode 100644 index 0000000..ba774a0 --- /dev/null +++ b/game/tilesets/Terrarin.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://tilesets/tileset.tres" type="RTileSet" id=1] + +[node name="Terrarin" type="RTileMap"] +z_index = -10 +tile_set = ExtResource( 1 ) +cell_size = Vector2( 32, 32 ) +format = 1 +tile_data = PoolIntArray( -1572897, 0, 0, -1572896, 0, 0, -1572895, 0, 0, -1572894, 0, 0, -1572893, 0, 0, -1572892, 0, 0, -1572891, 0, 0, -1572890, 0, 0, -1572889, 0, 0, -1572888, 0, 0, -1572887, 0, 0, -1572886, 0, 0, -1572885, 0, 0, -1572884, 0, 0, -1572883, 0, 0, -1572882, 0, 0, -1572881, 0, 0, -1572880, 0, 0, -1572879, 0, 0, -1572878, 0, 0, -1572877, 0, 0, -1572876, 0, 0, -1572875, 0, 0, -1572874, 0, 0, -1572873, 0, 0, -1572872, 0, 0, -1572871, 0, 0, -1572870, 0, 0, -1572869, 0, 0, -1572868, 0, 0, -1572867, 0, 0, -1572866, 0, 0, -1572865, 0, 0, -1638400, 0, 0, -1638399, 0, 0, -1507362, 0, 0, -1507361, 0, 0, -1507360, 0, 0, -1507359, 0, 0, -1507358, 0, 0, -1507357, 0, 0, -1507356, 0, 0, -1507355, 0, 0, -1507354, 0, 0, -1507353, 0, 0, -1507352, 0, 0, -1507351, 0, 0, -1507350, 0, 0, -1507349, 0, 0, -1507348, 0, 0, -1507347, 0, 0, -1507346, 0, 0, -1507345, 0, 0, -1507344, 0, 0, -1507343, 0, 0, -1507342, 0, 0, -1507341, 0, 0, -1507340, 0, 0, -1507339, 0, 0, -1507338, 0, 0, -1507337, 0, 0, -1507336, 0, 0, -1507335, 0, 0, -1507334, 0, 0, -1507333, 0, 0, -1507332, 0, 0, -1507331, 0, 0, -1507330, 0, 0, -1507329, 0, 0, -1572864, 0, 0, -1572863, 0, 0, -1572862, 0, 0, -1572861, 0, 0, -1572860, 0, 0, -1572859, 0, 0, -1572858, 0, 0, -1572857, 0, 0, -1572856, 0, 0, -1572855, 0, 0, -1572820, 0, 0, -1441826, 0, 0, -1441825, 0, 0, -1441824, 0, 0, -1441823, 0, 0, -1441822, 0, 0, -1441821, 0, 0, -1441820, 0, 0, -1441819, 0, 0, -1441818, 0, 0, -1441817, 0, 0, -1441816, 0, 0, -1441815, 0, 0, -1441814, 0, 0, -1441813, 0, 0, -1441812, 0, 0, -1441811, 0, 0, -1441810, 0, 0, -1441809, 0, 0, -1441808, 0, 0, -1441807, 0, 0, -1441806, 0, 0, -1441805, 0, 0, -1441804, 0, 0, -1441803, 0, 0, -1441802, 0, 0, -1441801, 0, 0, -1441800, 0, 0, -1441799, 0, 0, -1441798, 0, 0, -1441797, 0, 0, -1441796, 0, 0, -1441795, 0, 0, -1441794, 0, 0, -1441793, 0, 0, -1507328, 0, 0, -1507327, 0, 0, -1507326, 0, 0, -1507325, 0, 0, -1507324, 0, 0, -1507323, 0, 0, -1507322, 0, 0, -1507321, 0, 0, -1507320, 0, 0, -1507319, 0, 0, -1507318, 0, 0, -1507317, 0, 0, -1507316, 0, 0, -1507315, 0, 0, -1507314, 0, 0, -1507313, 0, 0, -1507312, 0, 0, -1507311, 0, 0, -1507310, 0, 0, -1507309, 0, 0, -1507308, 0, 0, -1507307, 0, 0, -1507306, 0, 0, -1507305, 0, 0, -1507304, 0, 0, -1507303, 0, 0, -1507284, 0, 0, -1507272, 0, 0, -1507271, 0, 0, -1507270, 0, 0, -1507269, 0, 0, -1507268, 0, 0, -1376291, 0, 0, -1376290, 0, 0, -1376289, 0, 0, -1376288, 0, 0, -1376287, 0, 0, -1376286, 0, 0, -1376285, 0, 0, -1376284, 0, 0, -1376283, 0, 0, -1376282, 0, 0, -1376281, 0, 0, -1376280, 0, 0, -1376279, 0, 0, -1376278, 0, 0, -1376277, 0, 0, -1376276, 0, 0, -1376275, 0, 0, -1376274, 0, 0, -1376273, 0, 0, -1376272, 0, 0, -1376271, 0, 0, -1376270, 0, 0, -1376269, 0, 0, -1376268, 0, 0, -1376267, 0, 0, -1376266, 0, 0, -1376265, 0, 0, -1376264, 0, 0, -1376263, 0, 0, -1376262, 0, 0, -1376261, 0, 0, -1376260, 0, 0, -1376259, 0, 0, -1376258, 0, 0, -1376257, 0, 0, -1441792, 0, 0, -1441791, 0, 0, -1441790, 0, 0, -1441789, 0, 0, -1441788, 0, 0, -1441787, 0, 0, -1441786, 0, 0, -1441785, 0, 0, -1441784, 0, 0, -1441783, 0, 0, -1441782, 0, 0, -1441781, 0, 0, -1441780, 0, 0, -1441779, 0, 0, -1441778, 0, 0, -1441777, 0, 0, -1441776, 0, 0, -1441775, 0, 0, -1441774, 0, 0, -1441773, 0, 0, -1441772, 0, 0, -1441771, 0, 0, -1441770, 0, 0, -1441769, 0, 0, -1441768, 0, 0, -1441767, 0, 0, -1441766, 0, 0, -1441765, 0, 0, -1441764, 0, 0, -1441763, 0, 0, -1441762, 0, 0, -1441761, 0, 0, -1441760, 0, 0, -1441759, 0, 0, -1441758, 0, 0, -1441757, 0, 0, -1441756, 0, 0, -1441755, 0, 0, -1441754, 0, 0, -1441753, 0, 0, -1441752, 0, 0, -1441751, 0, 0, -1441750, 0, 0, -1441749, 0, 0, -1441748, 0, 0, -1441747, 0, 0, -1441746, 0, 0, -1441745, 0, 0, -1441744, 0, 0, -1441743, 0, 0, -1441742, 0, 0, -1441741, 0, 0, -1441740, 0, 0, -1441739, 0, 0, -1441738, 0, 0, -1441737, 0, 0, -1441736, 0, 0, -1441735, 0, 0, -1441734, 0, 0, -1441733, 0, 0, -1310755, 0, 0, -1310754, 0, 0, -1310753, 0, 0, -1310752, 0, 0, -1310751, 0, 0, -1310750, 0, 0, -1310749, 0, 0, -1310748, 0, 0, -1310747, 0, 0, -1310746, 0, 0, -1310745, 0, 0, -1310744, 0, 0, -1310743, 0, 0, -1310742, 0, 0, -1310741, 0, 0, -1310740, 0, 0, -1310739, 0, 0, -1310738, 0, 0, -1310737, 0, 0, -1310736, 0, 0, -1310735, 0, 0, -1310734, 0, 0, -1310733, 0, 0, -1310732, 0, 0, -1310731, 0, 0, -1310730, 0, 0, -1310729, 0, 0, -1310728, 0, 0, -1310727, 0, 0, -1310726, 0, 0, -1310725, 0, 0, -1310724, 0, 0, -1310723, 0, 0, -1310722, 0, 0, -1310721, 0, 0, -1376256, 0, 0, -1376255, 0, 0, -1376254, 0, 0, -1376253, 0, 0, -1376252, 0, 0, -1376251, 0, 0, -1376250, 0, 0, -1376249, 0, 0, -1376248, 0, 0, -1376247, 0, 0, -1376246, 0, 0, -1376245, 0, 0, -1376244, 0, 0, -1376243, 0, 0, -1376242, 0, 0, -1376241, 0, 0, -1376240, 0, 0, -1376239, 0, 0, -1376238, 0, 0, -1376237, 0, 0, -1376236, 0, 0, -1376235, 0, 0, -1376234, 0, 0, -1376233, 0, 0, -1376232, 0, 0, -1376231, 0, 0, -1376230, 0, 0, -1376229, 0, 0, -1376228, 0, 0, -1376227, 0, 0, -1376226, 0, 0, -1376225, 0, 0, -1376224, 0, 0, -1376223, 0, 0, -1376222, 0, 0, -1376221, 0, 0, -1376220, 0, 0, -1376219, 0, 0, -1376218, 0, 0, -1376217, 0, 0, -1376216, 0, 0, -1376215, 0, 0, -1376214, 0, 0, -1376213, 0, 0, -1376212, 0, 0, -1376211, 0, 0, -1376210, 0, 0, -1376209, 0, 0, -1376208, 0, 0, -1376207, 0, 0, -1376206, 0, 0, -1376205, 0, 0, -1376204, 0, 0, -1376203, 0, 0, -1376202, 0, 0, -1376201, 0, 0, -1376200, 0, 0, -1376199, 0, 0, -1376198, 0, 0, -1376197, 0, 0, -1245219, 0, 0, -1245218, 0, 0, -1245217, 0, 0, -1245216, 0, 0, -1245215, 0, 0, -1245214, 0, 0, -1245213, 0, 0, -1245212, 0, 0, -1245211, 0, 0, -1245210, 0, 0, -1245209, 0, 0, -1245208, 0, 0, -1245207, 0, 0, -1245206, 0, 0, -1245205, 0, 0, -1245204, 0, 0, -1245203, 0, 0, -1245202, 0, 0, -1245201, 0, 0, -1245200, 0, 0, -1245199, 0, 0, -1245198, 0, 0, -1245197, 0, 0, -1245196, 0, 0, -1245195, 0, 0, -1245194, 0, 0, -1245193, 0, 0, -1245192, 0, 0, -1245191, 0, 0, -1245190, 0, 0, -1245189, 0, 0, -1245188, 0, 0, -1245187, 0, 0, -1245186, 0, 0, -1245185, 0, 0, -1310720, 0, 0, -1310719, 0, 0, -1310718, 0, 0, -1310717, 0, 0, -1310716, 0, 0, -1310715, 0, 0, -1310714, 0, 0, -1310713, 0, 0, -1310712, 0, 0, -1310711, 0, 0, -1310710, 0, 0, -1310709, 0, 0, -1310708, 0, 0, -1310707, 0, 0, -1310706, 0, 0, -1310705, 0, 0, -1310704, 0, 0, -1310703, 0, 0, -1310702, 0, 0, -1310701, 0, 0, -1310700, 0, 0, -1310699, 0, 0, -1310698, 0, 0, -1310697, 0, 0, -1310696, 0, 0, -1310695, 0, 0, -1310694, 0, 0, -1310693, 0, 0, -1310692, 0, 0, -1310691, 0, 0, -1310690, 0, 0, -1310689, 0, 0, -1310688, 0, 0, -1310687, 0, 0, -1310686, 0, 0, -1310685, 0, 0, -1310684, 0, 0, -1310683, 0, 0, -1310682, 0, 0, -1310681, 0, 0, -1310680, 0, 0, -1310679, 0, 0, -1310678, 0, 0, -1310677, 0, 0, -1310676, 0, 0, -1310675, 0, 0, -1310674, 0, 0, -1310673, 0, 0, -1310672, 0, 0, -1310671, 0, 0, -1310670, 0, 0, -1310669, 0, 0, -1310668, 0, 0, -1310667, 0, 0, -1310666, 0, 0, -1310665, 0, 0, -1310664, 0, 0, -1310663, 0, 0, -1310662, 0, 0, -1310661, 0, 0, -1179683, 0, 0, -1179682, 0, 0, -1179681, 0, 0, -1179680, 0, 0, -1179679, 0, 0, -1179678, 0, 0, -1179677, 0, 0, -1179676, 0, 0, -1179675, 0, 0, -1179674, 0, 0, -1179673, 0, 0, -1179672, 0, 0, -1179671, 0, 0, -1179670, 0, 0, -1179669, 0, 0, -1179668, 0, 0, -1179667, 0, 0, -1179666, 0, 0, -1179665, 0, 0, -1179664, 0, 0, -1179663, 0, 0, -1179662, 0, 0, -1179661, 0, 0, -1179660, 0, 0, -1179659, 0, 0, -1179658, 0, 0, -1179657, 0, 0, -1179656, 0, 0, -1179655, 0, 0, -1179654, 0, 0, -1179653, 0, 0, -1179652, 0, 0, -1179651, 0, 0, -1179650, 0, 0, -1179649, 0, 0, -1245184, 0, 0, -1245183, 0, 0, -1245182, 0, 0, -1245181, 0, 0, -1245180, 0, 0, -1245179, 0, 0, -1245178, 0, 0, -1245177, 0, 0, -1245176, 0, 0, -1245175, 0, 0, -1245174, 0, 0, -1245173, 0, 0, -1245172, 0, 0, -1245171, 0, 0, -1245170, 0, 0, -1245169, 0, 0, -1245168, 0, 0, -1245167, 0, 0, -1245166, 0, 0, -1245165, 0, 0, -1245164, 0, 0, -1245163, 0, 0, -1245162, 0, 0, -1245161, 0, 0, -1245160, 0, 0, -1245159, 0, 0, -1245158, 0, 0, -1245157, 0, 0, -1245156, 0, 0, -1245155, 0, 0, -1245154, 0, 0, -1245153, 0, 0, -1245152, 0, 0, -1245151, 0, 0, -1245150, 0, 0, -1245149, 0, 0, -1245148, 0, 0, -1245147, 0, 0, -1245146, 0, 0, -1245145, 0, 0, -1245144, 0, 0, -1245143, 0, 0, -1245142, 0, 0, -1245141, 0, 0, -1245140, 0, 0, -1245139, 0, 0, -1245138, 0, 0, -1245137, 0, 0, -1245136, 0, 0, -1245135, 0, 0, -1245134, 0, 0, -1245133, 0, 0, -1245132, 0, 0, -1245131, 0, 0, -1245130, 0, 0, -1245129, 0, 0, -1245128, 0, 0, -1245127, 0, 0, -1245126, 0, 0, -1114148, 0, 0, -1114147, 0, 0, -1114146, 0, 0, -1114145, 0, 0, -1114144, 0, 0, -1114143, 0, 0, -1114142, 0, 0, -1114141, 0, 0, -1114140, 0, 0, -1114139, 0, 0, -1114138, 0, 0, -1114137, 0, 0, -1114136, 0, 0, -1114135, 0, 0, -1114134, 0, 0, -1114133, 0, 0, -1114132, 0, 0, -1114131, 0, 0, -1114130, 0, 0, -1114129, 0, 0, -1114128, 0, 0, -1114127, 0, 0, -1114126, 0, 0, -1114125, 0, 0, -1114124, 0, 0, -1114123, 0, 0, -1114122, 0, 0, -1114121, 0, 0, -1114120, 0, 0, -1114119, 0, 0, -1114118, 0, 0, -1114117, 0, 0, -1114116, 0, 0, -1114115, 0, 0, -1114114, 0, 0, -1114113, 0, 0, -1179648, 0, 0, -1179647, 0, 0, -1179646, 0, 0, -1179645, 0, 0, -1179644, 0, 0, -1179643, 0, 0, -1179642, 0, 0, -1179641, 0, 0, -1179640, 0, 0, -1179639, 0, 0, -1179638, 2, 0, -1179637, 2, 0, -1179636, 0, 0, -1179635, 0, 0, -1179634, 0, 0, -1179633, 0, 0, -1179632, 0, 0, -1179631, 2, 0, -1179630, 2, 0, -1179629, 0, 0, -1179628, 0, 0, -1179627, 0, 0, -1179626, 0, 0, -1179625, 0, 0, -1179624, 0, 0, -1179623, 0, 0, -1179622, 0, 0, -1179621, 0, 0, -1179620, 0, 0, -1179619, 0, 0, -1179618, 0, 0, -1179617, 0, 0, -1179616, 0, 0, -1179615, 0, 0, -1179614, 0, 0, -1179613, 0, 0, -1179612, 0, 0, -1179611, 0, 0, -1179610, 0, 0, -1179609, 0, 0, -1179608, 0, 0, -1179607, 0, 0, -1179606, 0, 0, -1179605, 0, 0, -1179604, 0, 0, -1179603, 0, 0, -1179602, 0, 0, -1179601, 0, 0, -1179600, 0, 0, -1179599, 0, 0, -1179598, 0, 0, -1179597, 0, 0, -1179596, 0, 0, -1179595, 0, 0, -1179594, 0, 0, -1179593, 0, 0, -1179592, 0, 0, -1179591, 0, 0, -1048612, 0, 0, -1048611, 0, 0, -1048610, 0, 0, -1048609, 0, 0, -1048608, 0, 0, -1048607, 0, 0, -1048606, 0, 0, -1048605, 0, 0, -1048604, 0, 0, -1048603, 0, 0, -1048602, 0, 0, -1048601, 0, 0, -1048600, 0, 0, -1048599, 0, 0, -1048598, 0, 0, -1048597, 0, 0, -1048596, 0, 0, -1048595, 0, 0, -1048594, 0, 0, -1048593, 0, 0, -1048592, 0, 0, -1048591, 0, 0, -1048590, 0, 0, -1048589, 0, 0, -1048588, 0, 0, -1048587, 0, 0, -1048586, 0, 0, -1048585, 0, 0, -1048584, 0, 0, -1048583, 0, 0, -1048582, 0, 0, -1048581, 0, 0, -1048580, 0, 0, -1048579, 0, 0, -1048578, 0, 0, -1048577, 0, 0, -1114112, 0, 0, -1114111, 0, 0, -1114110, 0, 0, -1114109, 0, 0, -1114108, 0, 0, -1114107, 0, 0, -1114106, 0, 0, -1114105, 0, 0, -1114104, 0, 0, -1114103, 0, 0, -1114102, 2, 0, -1114101, 0, 0, -1114100, 0, 0, -1114099, 0, 0, -1114098, 0, 0, -1114097, 0, 0, -1114096, 0, 0, -1114095, 0, 0, -1114094, 0, 0, -1114093, 0, 0, -1114092, 2, 0, -1114091, 2, 0, -1114090, 2, 0, -1114089, 0, 0, -1114088, 0, 0, -1114087, 0, 0, -1114086, 0, 0, -1114085, 0, 0, -1114084, 0, 0, -1114083, 0, 0, -1114082, 0, 0, -1114081, 0, 0, -1114080, 0, 0, -1114079, 0, 0, -1114078, 0, 0, -1114077, 0, 0, -1114076, 0, 0, -1114075, 0, 0, -1114074, 0, 0, -1114073, 0, 0, -1114072, 0, 0, -1114071, 0, 0, -1114070, 0, 0, -1114069, 0, 0, -1114068, 0, 0, -1114067, 0, 0, -1114066, 0, 0, -1114065, 0, 0, -1114064, 0, 0, -1114063, 0, 0, -1114062, 0, 0, -1114061, 0, 0, -1114060, 0, 0, -1114059, 0, 0, -1114058, 0, 0, -1114057, 0, 0, -1114056, 0, 0, -1114055, 0, 0, -983076, 0, 0, -983075, 0, 0, -983074, 0, 0, -983073, 0, 0, -983072, 0, 0, -983071, 0, 0, -983070, 0, 0, -983069, 0, 0, -983068, 0, 0, -983067, 0, 0, -983066, 0, 0, -983065, 0, 0, -983064, 0, 0, -983063, 0, 0, -983062, 0, 0, -983061, 0, 0, -983060, 0, 0, -983059, 0, 0, -983058, 0, 0, -983057, 0, 0, -983056, 0, 0, -983055, 0, 0, -983054, 0, 0, -983053, 0, 0, -983052, 0, 0, -983051, 0, 0, -983050, 0, 0, -983049, 0, 0, -983048, 0, 0, -983047, 0, 0, -983046, 0, 0, -983045, 0, 0, -983044, 0, 0, -983043, 0, 0, -983042, 0, 0, -983041, 0, 0, -1048576, 0, 0, -1048575, 0, 0, -1048574, 0, 0, -1048573, 0, 0, -1048572, 0, 0, -1048571, 0, 0, -1048570, 0, 0, -1048569, 0, 0, -1048568, 0, 0, -1048567, 0, 0, -1048566, 2, 0, -1048565, 0, 0, -1048564, 0, 0, -1048563, 0, 0, -1048562, 0, 0, -1048561, 0, 0, -1048560, 0, 0, -1048559, 0, 0, -1048558, 2, 0, -1048557, 2, 0, -1048556, 2, 0, -1048555, 2, 0, -1048554, 2, 0, -1048553, 0, 0, -1048552, 0, 0, -1048551, 0, 0, -1048550, 0, 0, -1048549, 0, 0, -1048548, 0, 0, -1048547, 0, 0, -1048546, 0, 0, -1048545, 0, 0, -1048544, 0, 0, -1048543, 0, 0, -1048542, 0, 0, -1048541, 0, 0, -1048540, 0, 0, -1048539, 0, 0, -1048538, 0, 0, -1048537, 0, 0, -1048536, 0, 0, -1048535, 0, 0, -1048534, 0, 0, -1048533, 0, 0, -1048532, 0, 0, -1048531, 0, 0, -1048530, 0, 0, -1048529, 0, 0, -1048528, 0, 0, -1048527, 0, 0, -1048526, 0, 0, -1048525, 0, 0, -1048524, 0, 0, -1048523, 0, 0, -1048522, 0, 0, -1048521, 0, 0, -1048520, 0, 0, -1048519, 0, 0, -917540, 0, 0, -917539, 0, 0, -917538, 0, 0, -917537, 0, 0, -917536, 0, 0, -917535, 0, 0, -917534, 0, 0, -917533, 0, 0, -917532, 0, 0, -917531, 0, 0, -917530, 0, 0, -917529, 0, 0, -917528, 0, 0, -917527, 0, 0, -917526, 0, 0, -917525, 0, 0, -917524, 0, 0, -917523, 0, 0, -917522, 0, 0, -917521, 0, 0, -917520, 0, 0, -917519, 0, 0, -917518, 0, 0, -917517, 0, 0, -917516, 0, 0, -917515, 0, 0, -917514, 0, 0, -917513, 0, 0, -917512, 0, 0, -917511, 0, 0, -917510, 0, 0, -917509, 0, 0, -917508, 0, 0, -917507, 0, 0, -917506, 0, 0, -917505, 0, 0, -983040, 0, 0, -983039, 0, 0, -983038, 0, 0, -983037, 0, 0, -983036, 0, 0, -983035, 0, 0, -983034, 0, 0, -983033, 0, 0, -983032, 0, 0, -983031, 0, 0, -983030, 0, 0, -983029, 0, 0, -983028, 0, 0, -983027, 0, 0, -983026, 0, 0, -983025, 0, 0, -983024, 0, 0, -983023, 0, 0, -983022, 2, 0, -983021, 1, 0, -983020, 1, 0, -983019, 2, 0, -983018, 2, 0, -983017, 0, 0, -983016, 0, 0, -983015, 0, 0, -983014, 0, 0, -983013, 0, 0, -983012, 0, 0, -983011, 0, 0, -983010, 0, 0, -983009, 0, 0, -983008, 0, 0, -983007, 0, 0, -983006, 0, 0, -983005, 0, 0, -983004, 0, 0, -983003, 0, 0, -983002, 0, 0, -983001, 0, 0, -983000, 0, 0, -982999, 0, 0, -982998, 0, 0, -982997, 0, 0, -982996, 0, 0, -982995, 0, 0, -982994, 0, 0, -982993, 0, 0, -982992, 0, 0, -982991, 0, 0, -982990, 0, 0, -982989, 0, 0, -982988, 0, 0, -982987, 0, 0, -982986, 0, 0, -982985, 0, 0, -982984, 0, 0, -982983, 0, 0, -852004, 0, 0, -852003, 0, 0, -852002, 0, 0, -852001, 0, 0, -852000, 0, 0, -851999, 0, 0, -851998, 0, 0, -851997, 0, 0, -851996, 0, 0, -851995, 0, 0, -851994, 0, 0, -851993, 0, 0, -851992, 0, 0, -851991, 0, 0, -851990, 0, 0, -851989, 0, 0, -851988, 0, 0, -851987, 0, 0, -851986, 0, 0, -851985, 0, 0, -851984, 0, 0, -851983, 0, 0, -851982, 0, 0, -851981, 0, 0, -851980, 0, 0, -851979, 0, 0, -851978, 0, 0, -851977, 0, 0, -851976, 0, 0, -851975, 0, 0, -851974, 0, 0, -851973, 0, 0, -851972, 0, 0, -851971, 0, 0, -851970, 0, 0, -851969, 0, 0, -917504, 0, 0, -917503, 0, 0, -917502, 0, 0, -917501, 0, 0, -917500, 0, 0, -917499, 0, 0, -917498, 0, 0, -917497, 0, 0, -917496, 0, 0, -917495, 0, 0, -917494, 0, 0, -917493, 0, 0, -917492, 0, 0, -917491, 0, 0, -917490, 0, 0, -917489, 2, 0, -917488, 2, 0, -917487, 2, 0, -917486, 2, 0, -917485, 1, 0, -917484, 1, 0, -917483, 2, 0, -917482, 2, 0, -917481, 0, 0, -917480, 2, 0, -917479, 0, 0, -917478, 0, 0, -917477, 0, 0, -917476, 0, 0, -917475, 0, 0, -917474, 0, 0, -917473, 0, 0, -917472, 0, 0, -917471, 0, 0, -917470, 0, 0, -917469, 0, 0, -917468, 0, 0, -917467, 0, 0, -917466, 0, 0, -917465, 0, 0, -917464, 0, 0, -917463, 0, 0, -917462, 0, 0, -917461, 0, 0, -917460, 0, 0, -917459, 0, 0, -917458, 0, 0, -917457, 0, 0, -917456, 0, 0, -917455, 0, 0, -917454, 0, 0, -917453, 0, 0, -917452, 0, 0, -917451, 0, 0, -917450, 0, 0, -917449, 0, 0, -917448, 0, 0, -917447, 0, 0, -786468, 0, 0, -786467, 0, 0, -786466, 0, 0, -786465, 0, 0, -786464, 0, 0, -786463, 0, 0, -786462, 0, 0, -786461, 0, 0, -786460, 0, 0, -786459, 0, 0, -786458, 0, 0, -786457, 0, 0, -786456, 0, 0, -786455, 0, 0, -786454, 0, 0, -786453, 0, 0, -786452, 0, 0, -786451, 0, 0, -786450, 0, 0, -786449, 0, 0, -786448, 0, 0, -786447, 0, 0, -786446, 0, 0, -786445, 0, 0, -786444, 0, 0, -786443, 0, 0, -786442, 0, 0, -786441, 0, 0, -786440, 0, 0, -786439, 0, 0, -786438, 0, 0, -786437, 0, 0, -786436, 0, 0, -786435, 0, 0, -786434, 0, 0, -786433, 0, 0, -851968, 0, 0, -851967, 0, 0, -851966, 0, 0, -851965, 0, 0, -851964, 0, 0, -851963, 0, 0, -851962, 0, 0, -851961, 0, 0, -851960, 0, 0, -851959, 0, 0, -851958, 0, 0, -851957, 0, 0, -851956, 0, 0, -851955, 0, 0, -851954, 0, 0, -851953, 2, 0, -851952, 2, 0, -851951, 0, 0, -851950, 2, 0, -851949, 2, 0, -851948, 1, 0, -851947, 1, 0, -851946, 2, 0, -851945, 2, 0, -851944, 2, 0, -851943, 0, 0, -851942, 0, 0, -851941, 0, 0, -851940, 0, 0, -851939, 0, 0, -851938, 0, 0, -851937, 0, 0, -851936, 0, 0, -851935, 0, 0, -851934, 0, 0, -851933, 0, 0, -851932, 0, 0, -851931, 0, 0, -851930, 0, 0, -851929, 0, 0, -851928, 0, 0, -851927, 0, 0, -851926, 0, 0, -851925, 0, 0, -851924, 0, 0, -851923, 0, 0, -851922, 0, 0, -851921, 0, 0, -851920, 0, 0, -851919, 0, 0, -851918, 0, 0, -851917, 0, 0, -851916, 0, 0, -851915, 0, 0, -851914, 0, 0, -851913, 0, 0, -851912, 0, 0, -851911, 0, 0, -720933, 0, 0, -720932, 0, 0, -720931, 0, 0, -720930, 0, 0, -720929, 0, 0, -720928, 0, 0, -720927, 0, 0, -720926, 0, 0, -720925, 0, 0, -720924, 0, 0, -720923, 0, 0, -720922, 0, 0, -720921, 0, 0, -720920, 0, 0, -720919, 0, 0, -720918, 0, 0, -720917, 0, 0, -720916, 0, 0, -720915, 0, 0, -720914, 0, 0, -720913, 0, 0, -720912, 0, 0, -720911, 0, 0, -720910, 0, 0, -720909, 0, 0, -720908, 0, 0, -720907, 0, 0, -720906, 0, 0, -720905, 0, 0, -720904, 0, 0, -720903, 0, 0, -720902, 0, 0, -720901, 0, 0, -720900, 0, 0, -720899, 0, 0, -720898, 0, 0, -720897, 0, 0, -786432, 0, 0, -786431, 0, 0, -786430, 0, 0, -786429, 0, 0, -786428, 0, 0, -786427, 0, 0, -786426, 0, 0, -786425, 0, 0, -786424, 0, 0, -786423, 0, 0, -786422, 0, 0, -786421, 0, 0, -786420, 0, 0, -786419, 2, 0, -786418, 0, 0, -786417, 0, 0, -786416, 0, 0, -786415, 0, 0, -786414, 0, 0, -786413, 2, 0, -786412, 1, 0, -786411, 1, 0, -786410, 2, 0, -786409, 2, 0, -786408, 2, 0, -786407, 0, 0, -786406, 0, 0, -786405, 0, 0, -786404, 0, 0, -786403, 0, 0, -786402, 0, 0, -786401, 0, 0, -786400, 0, 0, -786399, 0, 0, -786398, 0, 0, -786397, 0, 0, -786396, 0, 0, -786395, 0, 0, -786394, 0, 0, -786393, 0, 0, -786392, 0, 0, -786391, 0, 0, -786390, 0, 0, -786389, 0, 0, -786388, 0, 0, -786387, 0, 0, -786386, 0, 0, -786385, 0, 0, -786384, 0, 0, -786383, 0, 0, -786382, 0, 0, -786381, 0, 0, -786380, 0, 0, -786379, 0, 0, -786378, 0, 0, -786377, 0, 0, -786376, 0, 0, -655397, 0, 0, -655396, 0, 0, -655395, 0, 0, -655394, 0, 0, -655393, 0, 0, -655392, 0, 0, -655391, 0, 0, -655390, 0, 0, -655389, 0, 0, -655388, 0, 0, -655387, 0, 0, -655386, 0, 0, -655385, 0, 0, -655384, 0, 0, -655383, 0, 0, -655382, 0, 0, -655381, 0, 0, -655380, 0, 0, -655379, 0, 0, -655378, 0, 0, -655377, 0, 0, -655376, 0, 0, -655375, 0, 0, -655374, 0, 0, -655373, 0, 0, -655372, 0, 0, -655371, 0, 0, -655370, 0, 0, -655369, 0, 0, -655368, 0, 0, -655367, 0, 0, -655366, 0, 0, -655365, 0, 0, -655364, 0, 0, -655363, 0, 0, -655362, 0, 0, -655361, 0, 0, -720896, 0, 0, -720895, 0, 0, -720894, 0, 0, -720893, 0, 0, -720892, 0, 0, -720891, 0, 0, -720890, 0, 0, -720889, 0, 0, -720888, 0, 0, -720887, 0, 0, -720886, 2, 0, -720885, 0, 0, -720884, 0, 0, -720883, 2, 0, -720882, 2, 0, -720881, 2, 0, -720880, 0, 0, -720879, 0, 0, -720878, 0, 0, -720877, 2, 0, -720876, 2, 0, -720875, 2, 0, -720874, 2, 0, -720873, 2, 0, -720872, 0, 0, -720871, 0, 0, -720870, 0, 0, -720869, 0, 0, -720868, 0, 0, -720867, 0, 0, -720866, 0, 0, -720865, 0, 0, -720864, 0, 0, -720863, 0, 0, -720862, 0, 0, -720861, 0, 0, -720860, 0, 0, -720859, 0, 0, -720858, 0, 0, -720857, 0, 0, -720856, 0, 0, -720855, 0, 0, -720854, 0, 0, -720853, 0, 0, -720852, 0, 0, -720851, 0, 0, -720850, 0, 0, -720849, 0, 0, -720848, 0, 0, -720847, 0, 0, -720846, 0, 0, -720845, 0, 0, -720844, 0, 0, -720843, 0, 0, -720842, 0, 0, -720841, 0, 0, -720840, 0, 0, -589861, 0, 0, -589860, 0, 0, -589859, 0, 0, -589858, 0, 0, -589857, 0, 0, -589856, 0, 0, -589855, 0, 0, -589854, 0, 0, -589853, 0, 0, -589852, 0, 0, -589851, 0, 0, -589850, 0, 0, -589849, 0, 0, -589848, 0, 0, -589847, 0, 0, -589846, 0, 0, -589845, 0, 0, -589844, 0, 0, -589843, 0, 0, -589842, 0, 0, -589841, 0, 0, -589840, 0, 0, -589839, 0, 0, -589838, 0, 0, -589837, 0, 0, -589836, 0, 0, -589835, 0, 0, -589834, 0, 0, -589833, 2, 0, -589832, 2, 0, -589831, 0, 0, -589830, 0, 0, -589829, 0, 0, -589828, 0, 0, -589827, 0, 0, -589826, 0, 0, -589825, 0, 0, -655360, 0, 0, -655359, 0, 0, -655358, 2, 0, -655357, 2, 0, -655356, 2, 0, -655355, 2, 0, -655354, 0, 0, -655353, 0, 0, -655352, 0, 0, -655351, 0, 0, -655350, 2, 0, -655349, 2, 0, -655348, 2, 0, -655347, 0, 0, -655346, 0, 0, -655345, 0, 0, -655344, 0, 0, -655343, 0, 0, -655342, 0, 0, -655341, 0, 0, -655340, 2, 0, -655339, 2, 0, -655338, 2, 0, -655337, 0, 0, -655336, 0, 0, -655335, 0, 0, -655334, 0, 0, -655333, 0, 0, -655332, 0, 0, -655331, 0, 0, -655330, 0, 0, -655329, 0, 0, -655328, 0, 0, -655327, 0, 0, -655326, 0, 0, -655325, 0, 0, -655324, 0, 0, -655323, 0, 0, -655322, 0, 0, -655321, 0, 0, -655320, 0, 0, -655319, 0, 0, -655318, 0, 0, -655317, 0, 0, -655316, 0, 0, -655315, 0, 0, -655314, 0, 0, -655313, 0, 0, -655312, 0, 0, -655311, 0, 0, -655310, 0, 0, -655309, 0, 0, -655308, 0, 0, -655307, 0, 0, -655306, 0, 0, -655305, 0, 0, -655304, 0, 0, -524325, 0, 0, -524324, 0, 0, -524323, 0, 0, -524322, 0, 0, -524321, 0, 0, -524320, 0, 0, -524319, 0, 0, -524318, 0, 0, -524317, 0, 0, -524316, 0, 0, -524315, 0, 0, -524314, 0, 0, -524313, 0, 0, -524312, 0, 0, -524311, 0, 0, -524310, 0, 0, -524309, 0, 0, -524308, 0, 0, -524307, 0, 0, -524306, 0, 0, -524305, 0, 0, -524304, 0, 0, -524303, 0, 0, -524302, 0, 0, -524301, 0, 0, -524300, 0, 0, -524299, 0, 0, -524298, 0, 0, -524297, 2, 0, -524296, 2, 0, -524295, 0, 0, -524294, 0, 0, -524293, 0, 0, -524292, 0, 0, -524291, 0, 0, -524290, 0, 0, -524289, 0, 0, -589824, 0, 0, -589823, 0, 0, -589822, 2, 0, -589821, 2, 0, -589820, 2, 0, -589819, 2, 0, -589818, 0, 0, -589817, 2, 0, -589816, 0, 0, -589815, 0, 0, -589814, 0, 0, -589813, 0, 0, -589812, 0, 0, -589811, 0, 0, -589810, 0, 0, -589809, 0, 0, -589808, 0, 0, -589807, 0, 0, -589806, 0, 0, -589805, 0, 0, -589804, 0, 0, -589803, 2, 0, -589802, 2, 0, -589801, 2, 0, -589800, 0, 0, -589799, 0, 0, -589798, 0, 0, -589797, 0, 0, -589796, 0, 0, -589795, 0, 0, -589794, 0, 0, -589793, 0, 0, -589792, 0, 0, -589791, 0, 0, -589790, 0, 0, -589789, 0, 0, -589788, 0, 0, -589787, 0, 0, -589786, 0, 0, -589785, 0, 0, -589784, 0, 0, -589783, 0, 0, -589782, 0, 0, -589781, 0, 0, -589780, 0, 0, -589779, 0, 0, -589778, 0, 0, -589777, 0, 0, -589776, 0, 0, -589775, 0, 0, -589774, 0, 0, -589773, 0, 0, -589772, 0, 0, -589771, 0, 0, -589770, 0, 0, -589769, 0, 0, -589768, 0, 0, -458788, 0, 0, -458787, 0, 0, -458786, 0, 0, -458785, 0, 0, -458784, 0, 0, -458783, 0, 0, -458782, 0, 0, -458781, 0, 0, -458780, 0, 0, -458779, 0, 0, -458778, 0, 0, -458777, 0, 0, -458776, 0, 0, -458775, 0, 0, -458774, 0, 0, -458773, 0, 0, -458772, 0, 0, -458771, 0, 0, -458770, 0, 0, -458769, 0, 0, -458768, 0, 0, -458767, 0, 0, -458766, 0, 0, -458765, 0, 0, -458764, 0, 0, -458763, 2, 0, -458762, 2, 0, -458761, 0, 0, -458760, 0, 0, -458759, 2, 0, -458758, 2, 0, -458757, 0, 0, -458756, 0, 0, -458755, 2, 0, -458754, 0, 0, -458753, 0, 0, -524288, 2, 0, -524287, 0, 0, -524286, 2, 0, -524285, 2, 0, -524284, 2, 0, -524283, 2, 0, -524282, 0, 0, -524281, 2, 0, -524280, 0, 0, -524279, 0, 0, -524278, 0, 0, -524277, 0, 0, -524276, 0, 0, -524275, 0, 0, -524274, 2, 0, -524273, 0, 0, -524272, 0, 0, -524271, 0, 0, -524270, 0, 0, -524269, 0, 0, -524268, 0, 0, -524267, 0, 0, -524266, 0, 0, -524265, 0, 0, -524264, 0, 0, -524263, 0, 0, -524262, 0, 0, -524261, 0, 0, -524260, 0, 0, -524259, 0, 0, -524258, 0, 0, -524257, 0, 0, -524256, 0, 0, -524255, 0, 0, -524254, 0, 0, -524253, 0, 0, -524252, 0, 0, -524251, 0, 0, -524250, 0, 0, -524249, 0, 0, -524248, 0, 0, -524247, 0, 0, -524246, 0, 0, -524245, 0, 0, -524244, 0, 0, -524243, 0, 0, -524242, 0, 0, -524241, 0, 0, -524240, 0, 0, -524239, 0, 0, -524238, 0, 0, -524237, 0, 0, -524236, 0, 0, -524235, 0, 0, -524234, 0, 0, -524233, 0, 0, -524232, 0, 0, -393252, 0, 0, -393251, 0, 0, -393250, 0, 0, -393249, 0, 0, -393248, 0, 0, -393247, 0, 0, -393246, 0, 0, -393245, 0, 0, -393244, 0, 0, -393243, 0, 0, -393242, 0, 0, -393241, 0, 0, -393240, 0, 0, -393239, 0, 0, -393238, 0, 0, -393237, 0, 0, -393236, 0, 0, -393235, 0, 0, -393234, 0, 0, -393233, 0, 0, -393232, 0, 0, -393231, 0, 0, -393230, 0, 0, -393229, 0, 0, -393228, 0, 0, -393227, 0, 0, -393226, 0, 0, -393225, 2, 0, -393224, 2, 0, -393223, 2, 0, -393222, 2, 0, -393221, 2, 0, -393220, 2, 0, -393219, 2, 0, -393218, 2, 0, -393217, 0, 0, -458752, 2, 0, -458751, 2, 0, -458750, 2, 0, -458749, 2, 0, -458748, 2, 0, -458747, 0, 0, -458746, 2, 0, -458745, 0, 0, -458744, 0, 0, -458743, 0, 0, -458742, 0, 0, -458741, 0, 0, -458740, 0, 0, -458739, 0, 0, -458738, 0, 0, -458737, 2, 0, -458736, 2, 0, -458735, 0, 0, -458734, 0, 0, -458733, 0, 0, -458732, 0, 0, -458731, 0, 0, -458730, 0, 0, -458729, 0, 0, -458728, 0, 0, -458727, 0, 0, -458726, 0, 0, -458725, 0, 0, -458724, 0, 0, -458723, 0, 0, -458722, 0, 0, -458721, 0, 0, -458720, 0, 0, -458719, 0, 0, -458718, 0, 0, -458717, 0, 0, -458716, 0, 0, -458715, 0, 0, -458714, 0, 0, -458713, 0, 0, -458712, 0, 0, -458711, 0, 0, -458710, 0, 0, -458709, 0, 0, -458708, 0, 0, -458707, 0, 0, -458706, 0, 0, -458705, 0, 0, -458704, 0, 0, -458703, 0, 0, -458702, 0, 0, -458701, 0, 0, -458700, 0, 0, -458699, 0, 0, -458698, 0, 0, -458697, 0, 0, -458696, 0, 0, -327716, 0, 0, -327715, 0, 0, -327714, 0, 0, -327713, 0, 0, -327712, 0, 0, -327711, 0, 0, -327710, 0, 0, -327709, 0, 0, -327708, 0, 0, -327707, 0, 0, -327706, 0, 0, -327705, 0, 0, -327704, 0, 0, -327703, 0, 0, -327702, 0, 0, -327701, 0, 0, -327700, 0, 0, -327699, 0, 0, -327698, 0, 0, -327697, 0, 0, -327696, 0, 0, -327695, 0, 0, -327694, 0, 0, -327693, 0, 0, -327692, 0, 0, -327691, 0, 0, -327690, 2, 0, -327689, 2, 0, -327688, 2, 0, -327687, 1, 0, -327686, 1, 0, -327685, 2, 0, -327684, 2, 0, -327683, 2, 0, -327682, 2, 0, -327681, 0, 0, -393216, 0, 0, -393215, 2, 0, -393214, 2, 0, -393213, 1, 0, -393212, 2, 0, -393211, 2, 0, -393210, 0, 0, -393209, 0, 0, -393208, 0, 0, -393207, 2, 0, -393206, 2, 0, -393205, 0, 0, -393204, 0, 0, -393203, 0, 0, -393202, 0, 0, -393201, 0, 0, -393200, 0, 0, -393199, 0, 0, -393198, 0, 0, -393197, 0, 0, -393196, 0, 0, -393195, 0, 0, -393194, 0, 0, -393193, 0, 0, -393192, 0, 0, -393191, 0, 0, -393190, 0, 0, -393189, 0, 0, -393188, 0, 0, -393187, 0, 0, -393186, 0, 0, -393185, 0, 0, -393184, 0, 0, -393183, 0, 0, -393182, 0, 0, -393181, 0, 0, -393180, 0, 0, -393179, 0, 0, -393178, 0, 0, -393177, 0, 0, -393176, 0, 0, -393175, 0, 0, -393174, 0, 0, -393173, 0, 0, -393172, 0, 0, -393171, 0, 0, -393170, 0, 0, -393169, 0, 0, -393168, 0, 0, -393167, 0, 0, -393166, 0, 0, -393165, 0, 0, -393164, 0, 0, -393163, 0, 0, -393162, 0, 0, -393161, 0, 0, -262180, 0, 0, -262179, 0, 0, -262178, 0, 0, -262177, 0, 0, -262176, 0, 0, -262175, 0, 0, -262174, 0, 0, -262173, 0, 0, -262172, 0, 0, -262171, 0, 0, -262170, 0, 0, -262169, 0, 0, -262168, 0, 0, -262167, 0, 0, -262166, 0, 0, -262165, 0, 0, -262164, 0, 0, -262163, 0, 0, -262162, 0, 0, -262161, 0, 0, -262160, 0, 0, -262159, 2, 0, -262158, 0, 0, -262157, 0, 0, -262156, 0, 0, -262155, 0, 0, -262154, 0, 0, -262153, 2, 0, -262152, 2, 0, -262151, 1, 0, -262150, 1, 0, -262149, 1, 0, -262148, 2, 0, -262147, 0, 0, -262146, 0, 0, -262145, 0, 0, -327680, 2, 0, -327679, 2, 0, -327678, 2, 0, -327677, 1, 0, -327676, 2, 0, -327675, 2, 0, -327674, 0, 0, -327673, 0, 0, -327672, 2, 0, -327671, 1, 0, -327670, 1, 0, -327669, 2, 0, -327668, 0, 0, -327667, 0, 0, -327666, 0, 0, -327665, 0, 0, -327664, 0, 0, -327663, 0, 0, -327662, 0, 0, -327661, 0, 0, -327660, 0, 0, -327659, 0, 0, -327658, 0, 0, -327657, 0, 0, -327656, 0, 0, -327655, 0, 0, -327654, 0, 0, -327653, 0, 0, -327652, 0, 0, -327651, 0, 0, -327650, 0, 0, -327649, 0, 0, -327648, 0, 0, -327647, 0, 0, -327646, 0, 0, -327645, 0, 0, -327644, 0, 0, -327643, 0, 0, -327642, 0, 0, -327641, 0, 0, -327640, 0, 0, -327639, 0, 0, -327638, 0, 0, -327637, 0, 0, -327636, 0, 0, -327635, 0, 0, -327634, 0, 0, -327633, 0, 0, -327632, 0, 0, -327631, 0, 0, -327630, 0, 0, -327629, 0, 0, -327628, 0, 0, -327627, 0, 0, -327626, 0, 0, -327625, 0, 0, -196644, 0, 0, -196643, 0, 0, -196642, 0, 0, -196641, 0, 0, -196640, 0, 0, -196639, 0, 0, -196638, 0, 0, -196637, 0, 0, -196636, 0, 0, -196635, 0, 0, -196634, 0, 0, -196633, 0, 0, -196632, 0, 0, -196631, 0, 0, -196630, 0, 0, -196629, 0, 0, -196628, 0, 0, -196627, 0, 0, -196626, 0, 0, -196625, 2, 0, -196624, 2, 0, -196623, 2, 0, -196622, 2, 0, -196621, 0, 0, -196620, 0, 0, -196619, 0, 0, -196618, 0, 0, -196617, 2, 0, -196616, 2, 0, -196615, 1, 0, -196614, 1, 0, -196613, 1, 0, -196612, 2, 0, -196611, 0, 0, -196610, 0, 0, -196609, 0, 0, -262144, 2, 0, -262143, 0, 0, -262142, 2, 0, -262141, 1, 0, -262140, 2, 0, -262139, 0, 0, -262138, 0, 0, -262137, 2, 0, -262136, 1, 0, -262135, 1, 0, -262134, 1, 0, -262133, 1, 0, -262132, 2, 0, -262131, 2, 0, -262130, 0, 0, -262129, 0, 0, -262128, 0, 0, -262127, 0, 0, -262126, 0, 0, -262125, 0, 0, -262124, 0, 0, -262123, 0, 0, -262122, 0, 0, -262121, 0, 0, -262120, 0, 0, -262119, 0, 0, -262118, 0, 0, -262117, 0, 0, -262116, 0, 0, -262115, 0, 0, -262114, 0, 0, -262113, 0, 0, -262112, 0, 0, -262111, 0, 0, -262110, 0, 0, -262109, 0, 0, -262108, 0, 0, -262107, 0, 0, -262106, 0, 0, -262105, 0, 0, -262104, 0, 0, -262103, 0, 0, -262102, 0, 0, -262101, 0, 0, -262100, 0, 0, -262099, 0, 0, -262098, 0, 0, -262097, 0, 0, -262096, 0, 0, -262095, 0, 0, -262094, 0, 0, -262093, 0, 0, -262092, 0, 0, -262091, 0, 0, -262090, 0, 0, -131108, 0, 0, -131107, 0, 0, -131106, 0, 0, -131105, 0, 0, -131104, 0, 0, -131103, 0, 0, -131102, 0, 0, -131101, 0, 0, -131100, 0, 0, -131099, 0, 0, -131098, 0, 0, -131097, 0, 0, -131096, 0, 0, -131095, 0, 0, -131094, 0, 0, -131093, 0, 0, -131092, 0, 0, -131091, 0, 0, -131090, 0, 0, -131089, 2, 0, -131088, 2, 0, -131087, 2, 0, -131086, 2, 0, -131085, 0, 0, -131084, 0, 0, -131083, 2, 0, -131082, 0, 0, -131081, 2, 0, -131080, 2, 0, -131079, 2, 0, -131078, 2, 0, -131077, 2, 0, -131076, 2, 0, -131075, 0, 0, -131074, 2, 0, -131073, 0, 0, -196608, 0, 0, -196607, 0, 0, -196606, 2, 0, -196605, 2, 0, -196604, 2, 0, -196603, 0, 0, -196602, 2, 0, -196601, 2, 0, -196600, 1, 0, -196599, 1, 0, -196598, 1, 0, -196597, 1, 0, -196596, 1, 0, -196595, 2, 0, -196594, 0, 0, -196593, 0, 0, -196592, 0, 0, -196591, 0, 0, -196590, 0, 0, -196589, 0, 0, -196588, 0, 0, -196587, 0, 0, -196586, 0, 0, -196585, 0, 0, -196584, 0, 0, -196583, 0, 0, -196582, 0, 0, -196581, 0, 0, -196580, 0, 0, -196579, 0, 0, -196578, 0, 0, -196577, 0, 0, -196576, 0, 0, -196575, 0, 0, -196574, 0, 0, -196573, 0, 0, -196572, 0, 0, -196571, 0, 0, -196570, 0, 0, -196569, 0, 0, -196568, 0, 0, -196567, 0, 0, -196566, 0, 0, -196565, 0, 0, -196564, 0, 0, -196563, 0, 0, -196562, 0, 0, -196561, 0, 0, -196560, 0, 0, -196559, 0, 0, -196558, 0, 0, -196557, 0, 0, -196556, 0, 0, -196555, 0, 0, -196554, 0, 0, -65572, 0, 0, -65571, 0, 0, -65570, 0, 0, -65569, 0, 0, -65568, 0, 0, -65567, 0, 0, -65566, 0, 0, -65565, 0, 0, -65564, 0, 0, -65563, 0, 0, -65562, 0, 0, -65561, 0, 0, -65560, 0, 0, -65559, 0, 0, -65558, 0, 0, -65557, 0, 0, -65556, 0, 0, -65555, 0, 0, -65554, 2, 0, -65553, 2, 0, -65552, 2, 0, -65551, 2, 0, -65550, 2, 0, -65549, 2, 0, -65548, 2, 0, -65547, 2, 0, -65546, 0, 0, -65545, 0, 0, -65544, 2, 0, -65543, 2, 0, -65542, 2, 0, -65541, 2, 0, -65540, 0, 0, -65539, 0, 0, -65538, 2, 0, -65537, 2, 0, -131072, 0, 0, -131071, 0, 0, -131070, 0, 0, -131069, 0, 0, -131068, 0, 0, -131067, 0, 0, -131066, 2, 0, -131065, 2, 0, -131064, 2, 0, -131063, 2, 0, -131062, 2, 0, -131061, 2, 0, -131060, 2, 0, -131059, 2, 0, -131058, 0, 0, -131057, 0, 0, -131056, 0, 0, -131055, 0, 0, -131054, 0, 0, -131053, 0, 0, -131052, 0, 0, -131051, 0, 0, -131050, 0, 0, -131049, 0, 0, -131048, 0, 0, -131047, 0, 0, -131046, 0, 0, -131045, 0, 0, -131044, 0, 0, -131043, 0, 0, -131042, 0, 0, -131041, 0, 0, -131040, 0, 0, -131039, 0, 0, -131038, 0, 0, -131037, 0, 0, -131036, 0, 0, -131035, 0, 0, -131034, 0, 0, -131033, 0, 0, -131032, 0, 0, -131031, 0, 0, -131030, 0, 0, -131029, 0, 0, -131028, 0, 0, -131027, 0, 0, -131026, 0, 0, -131025, 0, 0, -131024, 0, 0, -131023, 0, 0, -131022, 0, 0, -131021, 0, 0, -131020, 0, 0, -131019, 0, 0, -131018, 0, 0, -36, 0, 0, -35, 0, 0, -34, 0, 0, -33, 0, 0, -32, 0, 0, -31, 0, 0, -30, 0, 0, -29, 0, 0, -28, 0, 0, -27, 0, 0, -26, 0, 0, -25, 0, 0, -24, 0, 0, -23, 0, 0, -22, 0, 0, -21, 0, 0, -20, 0, 0, -19, 0, 0, -18, 2, 0, -17, 2, 0, -16, 2, 0, -15, 1, 0, -14, 1, 0, -13, 2, 0, -12, 2, 0, -11, 0, 0, -10, 0, 0, -9, 0, 0, -8, 0, 0, -7, 0, 0, -6, 0, 0, -5, 0, 0, -4, 0, 0, -3, 0, 0, -2, 0, 0, -1, 0, 0, -65536, 2, 0, -65535, 0, 0, -65534, 2, 0, -65533, 0, 0, -65532, 0, 0, -65531, 0, 0, -65530, 0, 0, -65529, 0, 0, -65528, 0, 0, -65527, 0, 0, -65526, 0, 0, -65525, 0, 0, -65524, 0, 0, -65523, 0, 0, -65522, 0, 0, -65521, 0, 0, -65520, 0, 0, -65519, 0, 0, -65518, 0, 0, -65517, 0, 0, -65516, 0, 0, -65515, 0, 0, -65514, 0, 0, -65513, 0, 0, -65512, 0, 0, -65511, 0, 0, -65510, 0, 0, -65509, 0, 0, -65508, 0, 0, -65507, 0, 0, -65506, 0, 0, -65505, 0, 0, -65504, 0, 0, -65503, 0, 0, -65502, 0, 0, -65501, 0, 0, -65500, 0, 0, -65499, 0, 0, -65498, 0, 0, -65497, 0, 0, -65496, 0, 0, -65495, 0, 0, -65494, 0, 0, -65493, 0, 0, -65492, 0, 0, -65491, 0, 0, -65490, 0, 0, -65489, 0, 0, -65488, 0, 0, -65487, 0, 0, -65486, 0, 0, -65485, 0, 0, -65484, 0, 0, -65483, 0, 0, -65482, 0, 0, 65500, 0, 0, 65501, 0, 0, 65502, 0, 0, 65503, 0, 0, 65504, 0, 0, 65505, 0, 0, 65506, 0, 0, 65507, 0, 0, 65508, 0, 0, 65509, 0, 0, 65510, 0, 0, 65511, 0, 0, 65512, 0, 0, 65513, 0, 0, 65514, 0, 0, 65515, 0, 0, 65516, 0, 0, 65517, 0, 0, 65518, 2, 0, 65519, 2, 0, 65520, 2, 0, 65521, 1, 0, 65522, 1, 0, 65523, 2, 0, 65524, 2, 0, 65525, 2, 0, 65526, 0, 0, 65527, 0, 0, 65528, 0, 0, 65529, 0, 0, 65530, 0, 0, 65531, 0, 0, 65532, 2, 0, 65533, 2, 0, 65534, 0, 0, 65535, 0, 0, 0, 0, 0, 1, 0, 0, 2, 2, 0, 3, 2, 0, 4, 2, 0, 5, 0, 0, 6, 0, 0, 7, 0, 0, 8, 0, 0, 9, 0, 0, 10, 0, 0, 11, 0, 0, 12, 0, 0, 13, 0, 0, 14, 0, 0, 15, 0, 0, 16, 0, 0, 17, 0, 0, 18, 0, 0, 19, 0, 0, 20, 0, 0, 21, 0, 0, 22, 0, 0, 23, 0, 0, 24, 0, 0, 25, 0, 0, 26, 0, 0, 27, 0, 0, 28, 0, 0, 29, 0, 0, 30, 0, 0, 31, 0, 0, 32, 0, 0, 33, 0, 0, 34, 0, 0, 35, 0, 0, 36, 0, 0, 37, 0, 0, 38, 0, 0, 39, 0, 0, 40, 0, 0, 41, 0, 0, 42, 0, 0, 43, 0, 0, 44, 0, 0, 45, 0, 0, 46, 0, 0, 47, 0, 0, 48, 0, 0, 49, 0, 0, 50, 0, 0, 51, 0, 0, 52, 0, 0, 53, 0, 0, 131036, 0, 0, 131037, 0, 0, 131038, 0, 0, 131039, 0, 0, 131040, 0, 0, 131041, 0, 0, 131042, 0, 0, 131043, 0, 0, 131044, 0, 0, 131045, 0, 0, 131046, 0, 0, 131047, 0, 0, 131048, 0, 0, 131049, 0, 0, 131050, 0, 0, 131051, 0, 0, 131052, 0, 0, 131053, 0, 0, 131054, 2, 0, 131055, 2, 0, 131056, 2, 0, 131057, 1, 0, 131058, 1, 0, 131059, 2, 0, 131060, 2, 0, 131061, 2, 0, 131062, 2, 0, 131063, 0, 0, 131064, 0, 0, 131065, 2, 0, 131066, 0, 0, 131067, 0, 0, 131068, 0, 0, 131069, 2, 0, 131070, 2, 0, 131071, 2, 0, 65536, 2, 0, 65537, 0, 0, 65538, 0, 0, 65539, 0, 0, 65540, 0, 0, 65541, 0, 0, 65542, 2, 0, 65543, 0, 0, 65544, 0, 0, 65545, 0, 0, 65546, 0, 0, 65547, 0, 0, 65548, 0, 0, 65549, 0, 0, 65550, 0, 0, 65551, 0, 0, 65552, 0, 0, 65553, 0, 0, 65554, 0, 0, 65555, 0, 0, 65556, 0, 0, 65557, 0, 0, 65558, 0, 0, 65559, 0, 0, 65560, 0, 0, 65561, 0, 0, 65562, 0, 0, 65563, 0, 0, 65564, 0, 0, 65565, 0, 0, 65566, 0, 0, 65567, 0, 0, 65568, 0, 0, 65569, 0, 0, 65570, 0, 0, 65571, 0, 0, 65572, 0, 0, 65573, 0, 0, 65574, 0, 0, 65575, 0, 0, 65576, 0, 0, 65577, 0, 0, 65578, 0, 0, 65579, 0, 0, 65580, 0, 0, 65581, 0, 0, 65582, 0, 0, 65583, 0, 0, 65584, 0, 0, 65585, 0, 0, 65586, 0, 0, 65587, 0, 0, 65588, 0, 0, 65589, 0, 0, 196572, 0, 0, 196573, 0, 0, 196574, 0, 0, 196575, 0, 0, 196576, 0, 0, 196577, 0, 0, 196578, 0, 0, 196579, 0, 0, 196580, 0, 0, 196581, 0, 0, 196582, 0, 0, 196583, 0, 0, 196584, 0, 0, 196585, 0, 0, 196586, 0, 0, 196587, 0, 0, 196588, 0, 0, 196589, 0, 0, 196590, 2, 0, 196591, 2, 0, 196592, 2, 0, 196593, 2, 0, 196594, 2, 0, 196595, 2, 0, 196596, 0, 0, 196597, 0, 0, 196598, 0, 0, 196599, 2, 0, 196600, 0, 0, 196601, 0, 0, 196602, 2, 0, 196603, 2, 0, 196604, 2, 0, 196605, 2, 0, 196606, 2, 0, 196607, 2, 0, 131072, 2, 0, 131073, 2, 0, 131074, 2, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0, 131078, 0, 0, 131079, 0, 0, 131080, 0, 0, 131081, 2, 0, 131082, 2, 0, 131083, 0, 0, 131084, 0, 0, 131085, 2, 0, 131086, 2, 0, 131087, 2, 0, 131088, 0, 0, 131089, 0, 0, 131090, 0, 0, 131091, 0, 0, 131092, 0, 0, 131093, 0, 0, 131094, 0, 0, 131095, 0, 0, 131096, 0, 0, 131097, 0, 0, 131098, 0, 0, 131099, 0, 0, 131100, 0, 0, 131101, 0, 0, 131102, 0, 0, 131103, 0, 0, 131104, 0, 0, 131105, 0, 0, 131106, 0, 0, 131107, 0, 0, 131108, 0, 0, 131109, 0, 0, 131110, 0, 0, 131111, 0, 0, 131112, 0, 0, 131113, 0, 0, 131114, 0, 0, 131115, 0, 0, 131116, 0, 0, 131117, 0, 0, 131118, 0, 0, 131119, 0, 0, 131120, 0, 0, 131121, 0, 0, 131122, 0, 0, 131123, 0, 0, 131124, 0, 0, 131125, 0, 0, 262108, 0, 0, 262109, 0, 0, 262110, 0, 0, 262111, 0, 0, 262112, 0, 0, 262113, 0, 0, 262114, 0, 0, 262115, 0, 0, 262116, 0, 0, 262117, 0, 0, 262118, 0, 0, 262119, 0, 0, 262120, 0, 0, 262121, 0, 0, 262122, 0, 0, 262123, 0, 0, 262124, 0, 0, 262125, 0, 0, 262126, 0, 0, 262127, 0, 0, 262128, 0, 0, 262129, 2, 0, 262130, 0, 0, 262131, 0, 0, 262132, 0, 0, 262133, 0, 0, 262134, 0, 0, 262135, 0, 0, 262136, 0, 0, 262137, 0, 0, 262138, 0, 0, 262139, 2, 0, 262140, 1, 0, 262141, 1, 0, 262142, 1, 0, 262143, 1, 0, 196608, 1, 0, 196609, 2, 0, 196610, 2, 0, 196611, 2, 0, 196612, 0, 0, 196613, 0, 0, 196614, 2, 0, 196615, 0, 0, 196616, 0, 0, 196617, 0, 0, 196618, 0, 0, 196619, 0, 0, 196620, 0, 0, 196621, 0, 0, 196622, 0, 0, 196623, 0, 0, 196624, 0, 0, 196625, 0, 0, 196626, 2, 0, 196627, 2, 0, 196628, 0, 0, 196629, 0, 0, 196630, 0, 0, 196631, 0, 0, 196632, 0, 0, 196633, 0, 0, 196634, 0, 0, 196635, 0, 0, 196636, 0, 0, 196637, 0, 0, 196638, 0, 0, 196639, 0, 0, 196640, 0, 0, 196641, 0, 0, 196642, 0, 0, 196643, 0, 0, 196644, 0, 0, 196645, 0, 0, 196646, 0, 0, 196647, 0, 0, 196648, 0, 0, 196649, 0, 0, 196650, 0, 0, 196651, 0, 0, 196652, 0, 0, 196653, 0, 0, 196654, 0, 0, 196655, 0, 0, 196656, 0, 0, 196657, 0, 0, 196658, 0, 0, 196659, 0, 0, 196660, 0, 0, 327644, 0, 0, 327645, 0, 0, 327646, 0, 0, 327647, 0, 0, 327648, 0, 0, 327649, 0, 0, 327650, 0, 0, 327651, 0, 0, 327652, 0, 0, 327653, 0, 0, 327654, 0, 0, 327655, 0, 0, 327656, 0, 0, 327657, 0, 0, 327658, 0, 0, 327659, 0, 0, 327660, 0, 0, 327661, 0, 0, 327662, 2, 0, 327663, 2, 0, 327664, 2, 0, 327665, 2, 0, 327666, 2, 0, 327667, 2, 0, 327668, 2, 0, 327669, 2, 0, 327670, 2, 0, 327671, 2, 0, 327672, 0, 0, 327673, 0, 0, 327674, 0, 0, 327675, 2, 0, 327676, 2, 0, 327677, 1, 0, 327678, 1, 0, 327679, 1, 0, 262144, 1, 0, 262145, 2, 0, 262146, 2, 0, 262147, 2, 0, 262148, 0, 0, 262149, 0, 0, 262150, 2, 0, 262151, 0, 0, 262152, 0, 0, 262153, 0, 0, 262154, 2, 0, 262155, 0, 0, 262156, 0, 0, 262157, 0, 0, 262158, 0, 0, 262159, 0, 0, 262160, 0, 0, 262161, 0, 0, 262162, 2, 0, 262163, 0, 0, 262164, 0, 0, 262165, 0, 0, 262166, 0, 0, 262167, 0, 0, 262168, 2, 0, 262169, 0, 0, 262170, 0, 0, 262171, 0, 0, 262172, 0, 0, 262173, 0, 0, 262174, 0, 0, 262175, 0, 0, 262176, 0, 0, 262177, 0, 0, 262178, 0, 0, 262179, 0, 0, 262180, 0, 0, 262181, 0, 0, 262182, 0, 0, 262183, 0, 0, 262184, 0, 0, 262185, 0, 0, 262186, 0, 0, 262187, 0, 0, 262188, 0, 0, 262189, 0, 0, 262190, 0, 0, 262191, 0, 0, 262192, 0, 0, 262193, 0, 0, 262194, 0, 0, 262195, 0, 0, 262196, 0, 0, 393180, 0, 0, 393181, 0, 0, 393182, 0, 0, 393183, 0, 0, 393184, 0, 0, 393185, 0, 0, 393186, 0, 0, 393187, 0, 0, 393188, 0, 0, 393189, 0, 0, 393190, 0, 0, 393191, 0, 0, 393192, 0, 0, 393193, 0, 0, 393194, 0, 0, 393195, 0, 0, 393196, 0, 0, 393197, 0, 0, 393198, 2, 0, 393199, 2, 0, 393200, 2, 0, 393201, 2, 0, 393202, 2, 0, 393203, 2, 0, 393204, 2, 0, 393205, 2, 0, 393206, 2, 0, 393207, 2, 0, 393208, 0, 0, 393209, 0, 0, 393210, 0, 0, 393211, 2, 0, 393212, 2, 0, 393213, 2, 0, 393214, 2, 0, 393215, 2, 0, 327680, 2, 0, 327681, 2, 0, 327682, 2, 0, 327683, 2, 0, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0, 327687, 0, 0, 327688, 0, 0, 327689, 0, 0, 327690, 2, 0, 327691, 0, 0, 327692, 2, 0, 327693, 0, 0, 327694, 0, 0, 327695, 0, 0, 327696, 0, 0, 327697, 0, 0, 327698, 0, 0, 327699, 2, 0, 327700, 2, 0, 327701, 2, 0, 327702, 0, 0, 327703, 2, 0, 327704, 2, 0, 327705, 0, 0, 327706, 0, 0, 327707, 0, 0, 327708, 0, 0, 327709, 0, 0, 327710, 0, 0, 327711, 0, 0, 327712, 0, 0, 327713, 0, 0, 327714, 0, 0, 327715, 0, 0, 327716, 0, 0, 327717, 0, 0, 327718, 0, 0, 327719, 0, 0, 327720, 0, 0, 327721, 0, 0, 327722, 0, 0, 327723, 0, 0, 327724, 0, 0, 327725, 0, 0, 327726, 0, 0, 327727, 0, 0, 327728, 0, 0, 327729, 0, 0, 327730, 0, 0, 327731, 0, 0, 458716, 0, 0, 458717, 0, 0, 458718, 0, 0, 458719, 0, 0, 458720, 0, 0, 458721, 0, 0, 458722, 0, 0, 458723, 0, 0, 458724, 0, 0, 458725, 0, 0, 458726, 0, 0, 458727, 0, 0, 458728, 0, 0, 458729, 0, 0, 458730, 0, 0, 458731, 0, 0, 458732, 0, 0, 458733, 2, 0, 458734, 2, 0, 458735, 2, 0, 458736, 1, 0, 458737, 1, 0, 458738, 1, 0, 458739, 1, 0, 458740, 1, 0, 458741, 1, 0, 458742, 2, 0, 458743, 2, 0, 458744, 2, 0, 458745, 0, 0, 458746, 0, 0, 458747, 0, 0, 458748, 2, 0, 458749, 2, 0, 458750, 2, 0, 458751, 2, 0, 393216, 2, 0, 393217, 2, 0, 393218, 2, 0, 393219, 0, 0, 393220, 0, 0, 393221, 0, 0, 393222, 0, 0, 393223, 0, 0, 393224, 0, 0, 393225, 0, 0, 393226, 0, 0, 393227, 0, 0, 393228, 0, 0, 393229, 0, 0, 393230, 0, 0, 393231, 0, 0, 393232, 2, 0, 393233, 2, 0, 393234, 0, 0, 393235, 0, 0, 393236, 0, 0, 393237, 0, 0, 393238, 0, 0, 393239, 0, 0, 393240, 2, 0, 393241, 0, 0, 393242, 0, 0, 393243, 0, 0, 393244, 0, 0, 393245, 0, 0, 393246, 0, 0, 393247, 0, 0, 393248, 0, 0, 393249, 0, 0, 393250, 0, 0, 393251, 0, 0, 393252, 0, 0, 393253, 0, 0, 393254, 0, 0, 393255, 0, 0, 393256, 0, 0, 393257, 0, 0, 393258, 0, 0, 393259, 0, 0, 393260, 0, 0, 393261, 0, 0, 393262, 0, 0, 393263, 0, 0, 393264, 0, 0, 393265, 0, 0, 393266, 0, 0, 393267, 0, 0, 524252, 0, 0, 524253, 0, 0, 524254, 0, 0, 524255, 0, 0, 524256, 0, 0, 524257, 0, 0, 524258, 0, 0, 524259, 0, 0, 524260, 0, 0, 524261, 0, 0, 524262, 0, 0, 524263, 0, 0, 524264, 0, 0, 524265, 0, 0, 524266, 0, 0, 524267, 0, 0, 524268, 0, 0, 524269, 2, 0, 524270, 2, 0, 524271, 2, 0, 524272, 1, 0, 524273, 1, 0, 524274, 1, 0, 524275, 1, 0, 524276, 1, 0, 524277, 1, 0, 524278, 1, 0, 524279, 2, 0, 524280, 2, 0, 524281, 0, 0, 524282, 0, 0, 524283, 0, 0, 524284, 0, 0, 524285, 0, 0, 524286, 0, 0, 524287, 0, 0, 458752, 0, 0, 458753, 0, 0, 458754, 0, 0, 458755, 0, 0, 458756, 0, 0, 458757, 2, 0, 458758, 2, 0, 458759, 2, 0, 458760, 2, 0, 458761, 2, 0, 458762, 2, 0, 458763, 2, 0, 458764, 0, 0, 458765, 0, 0, 458766, 0, 0, 458767, 0, 0, 458768, 0, 0, 458769, 2, 0, 458770, 0, 0, 458771, 0, 0, 458772, 0, 0, 458773, 0, 0, 458774, 0, 0, 458775, 2, 0, 458776, 2, 0, 458777, 0, 0, 458778, 0, 0, 458779, 0, 0, 458780, 0, 0, 458781, 0, 0, 458782, 0, 0, 458783, 0, 0, 458784, 0, 0, 458785, 0, 0, 458786, 0, 0, 458787, 0, 0, 458788, 0, 0, 458789, 0, 0, 458790, 0, 0, 458791, 0, 0, 458792, 0, 0, 458793, 0, 0, 458794, 0, 0, 458795, 0, 0, 458796, 0, 0, 458797, 0, 0, 458798, 0, 0, 458799, 0, 0, 458800, 0, 0, 458801, 0, 0, 458802, 0, 0, 458803, 0, 0, 589788, 0, 0, 589789, 0, 0, 589790, 0, 0, 589791, 0, 0, 589792, 0, 0, 589793, 0, 0, 589794, 0, 0, 589795, 0, 0, 589796, 0, 0, 589797, 0, 0, 589798, 0, 0, 589799, 0, 0, 589800, 0, 0, 589801, 0, 0, 589802, 0, 0, 589803, 0, 0, 589804, 0, 0, 589805, 2, 0, 589806, 2, 0, 589807, 2, 0, 589808, 1, 0, 589809, 1, 0, 589810, 1, 0, 589811, 1, 0, 589812, 1, 0, 589813, 2, 0, 589814, 2, 0, 589815, 2, 0, 589816, 2, 0, 589817, 0, 0, 589818, 0, 0, 589819, 0, 0, 589820, 2, 0, 589821, 0, 0, 589822, 0, 0, 589823, 0, 0, 524288, 0, 0, 524289, 0, 0, 524290, 0, 0, 524291, 0, 0, 524292, 2, 0, 524293, 2, 0, 524294, 1, 0, 524295, 1, 0, 524296, 1, 0, 524297, 1, 0, 524298, 2, 0, 524299, 2, 0, 524300, 0, 0, 524301, 0, 0, 524302, 0, 0, 524303, 0, 0, 524304, 0, 0, 524305, 0, 0, 524306, 2, 0, 524307, 0, 0, 524308, 0, 0, 524309, 0, 0, 524310, 2, 0, 524311, 2, 0, 524312, 0, 0, 524313, 0, 0, 524314, 0, 0, 524315, 0, 0, 524316, 0, 0, 524317, 0, 0, 524318, 0, 0, 524319, 0, 0, 524320, 0, 0, 524321, 0, 0, 524322, 0, 0, 524323, 0, 0, 524324, 0, 0, 524325, 0, 0, 524326, 0, 0, 524327, 0, 0, 524328, 0, 0, 524329, 0, 0, 524330, 0, 0, 524331, 0, 0, 524332, 0, 0, 524333, 0, 0, 524334, 0, 0, 524335, 0, 0, 524336, 0, 0, 524337, 0, 0, 524338, 0, 0, 524339, 0, 0, 655324, 0, 0, 655325, 0, 0, 655326, 0, 0, 655327, 0, 0, 655328, 0, 0, 655329, 0, 0, 655330, 0, 0, 655331, 0, 0, 655332, 0, 0, 655333, 0, 0, 655334, 0, 0, 655335, 0, 0, 655336, 0, 0, 655337, 0, 0, 655338, 0, 0, 655339, 0, 0, 655340, 0, 0, 655341, 2, 0, 655342, 2, 0, 655343, 2, 0, 655344, 2, 0, 655345, 2, 0, 655346, 2, 0, 655347, 2, 0, 655348, 2, 0, 655349, 2, 0, 655350, 2, 0, 655351, 2, 0, 655352, 2, 0, 655353, 0, 0, 655354, 0, 0, 655355, 0, 0, 655356, 2, 0, 655357, 2, 0, 655358, 0, 0, 655359, 0, 0, 589824, 0, 0, 589825, 0, 0, 589826, 0, 0, 589827, 0, 0, 589828, 2, 0, 589829, 2, 0, 589830, 1, 0, 589831, 1, 0, 589832, 1, 0, 589833, 2, 0, 589834, 2, 0, 589835, 2, 0, 589836, 0, 0, 589837, 0, 0, 589838, 0, 0, 589839, 0, 0, 589840, 0, 0, 589841, 0, 0, 589842, 2, 0, 589843, 2, 0, 589844, 0, 0, 589845, 0, 0, 589846, 2, 0, 589847, 0, 0, 589848, 0, 0, 589849, 0, 0, 589850, 0, 0, 589851, 0, 0, 589852, 0, 0, 589853, 0, 0, 589854, 0, 0, 589855, 0, 0, 589856, 0, 0, 589857, 0, 0, 589858, 0, 0, 589859, 0, 0, 589860, 0, 0, 589861, 0, 0, 589862, 0, 0, 589863, 0, 0, 589864, 0, 0, 589865, 0, 0, 589866, 0, 0, 589867, 0, 0, 589868, 0, 0, 589869, 0, 0, 589870, 0, 0, 589871, 0, 0, 589872, 0, 0, 589873, 0, 0, 589874, 0, 0, 720860, 0, 0, 720861, 0, 0, 720862, 0, 0, 720863, 0, 0, 720864, 0, 0, 720865, 0, 0, 720866, 0, 0, 720867, 0, 0, 720868, 0, 0, 720869, 0, 0, 720870, 0, 0, 720871, 0, 0, 720872, 0, 0, 720873, 0, 0, 720874, 0, 0, 720875, 0, 0, 720876, 0, 0, 720877, 2, 0, 720878, 2, 0, 720879, 2, 0, 720880, 2, 0, 720881, 2, 0, 720882, 2, 0, 720883, 2, 0, 720884, 2, 0, 720885, 2, 0, 720886, 2, 0, 720887, 2, 0, 720888, 2, 0, 720889, 2, 0, 720890, 0, 0, 720891, 0, 0, 720892, 0, 0, 720893, 2, 0, 720894, 2, 0, 720895, 0, 0, 655360, 0, 0, 655361, 0, 0, 655362, 0, 0, 655363, 0, 0, 655364, 2, 0, 655365, 2, 0, 655366, 2, 0, 655367, 2, 0, 655368, 2, 0, 655369, 2, 0, 655370, 2, 0, 655371, 2, 0, 655372, 0, 0, 655373, 0, 0, 655374, 0, 0, 655375, 0, 0, 655376, 0, 0, 655377, 2, 0, 655378, 2, 0, 655379, 0, 0, 655380, 0, 0, 655381, 0, 0, 655382, 0, 0, 655383, 0, 0, 655384, 0, 0, 655385, 0, 0, 655386, 0, 0, 655387, 0, 0, 655388, 0, 0, 655389, 0, 0, 655390, 0, 0, 655391, 0, 0, 655392, 0, 0, 655393, 0, 0, 655394, 0, 0, 655395, 0, 0, 655396, 0, 0, 655397, 0, 0, 655398, 0, 0, 655399, 0, 0, 655400, 0, 0, 655401, 0, 0, 655402, 0, 0, 655403, 0, 0, 655404, 0, 0, 655405, 0, 0, 655406, 0, 0, 655407, 0, 0, 655408, 0, 0, 655409, 0, 0, 655410, 0, 0, 786396, 0, 0, 786397, 0, 0, 786398, 0, 0, 786399, 0, 0, 786400, 0, 0, 786401, 0, 0, 786402, 0, 0, 786403, 0, 0, 786404, 0, 0, 786405, 0, 0, 786406, 0, 0, 786407, 0, 0, 786408, 0, 0, 786409, 0, 0, 786410, 0, 0, 786411, 0, 0, 786412, 0, 0, 786413, 0, 0, 786414, 2, 0, 786415, 2, 0, 786416, 2, 0, 786417, 2, 0, 786418, 2, 0, 786419, 0, 0, 786420, 2, 0, 786421, 2, 0, 786422, 2, 0, 786423, 2, 0, 786424, 0, 0, 786425, 0, 0, 786426, 0, 0, 786427, 0, 0, 786428, 2, 0, 786429, 0, 0, 786430, 2, 0, 786431, 0, 0, 720896, 0, 0, 720897, 0, 0, 720898, 0, 0, 720899, 0, 0, 720900, 2, 0, 720901, 2, 0, 720902, 2, 0, 720903, 2, 0, 720904, 2, 0, 720905, 2, 0, 720906, 2, 0, 720907, 2, 0, 720908, 2, 0, 720909, 0, 0, 720910, 0, 0, 720911, 0, 0, 720912, 0, 0, 720913, 0, 0, 720914, 0, 0, 720915, 0, 0, 720916, 0, 0, 720917, 0, 0, 720918, 0, 0, 720919, 0, 0, 720920, 0, 0, 720921, 0, 0, 720922, 0, 0, 720923, 0, 0, 720924, 0, 0, 720925, 0, 0, 720926, 0, 0, 720927, 0, 0, 720928, 0, 0, 720929, 0, 0, 720930, 0, 0, 720931, 0, 0, 720932, 0, 0, 720933, 0, 0, 720934, 0, 0, 720935, 0, 0, 720936, 0, 0, 720937, 0, 0, 720938, 0, 0, 720939, 0, 0, 720940, 0, 0, 720941, 0, 0, 720942, 0, 0, 720943, 0, 0, 720944, 0, 0, 720945, 0, 0, 720946, 0, 0, 851932, 0, 0, 851933, 0, 0, 851934, 0, 0, 851935, 0, 0, 851936, 0, 0, 851937, 0, 0, 851938, 0, 0, 851939, 0, 0, 851940, 0, 0, 851941, 0, 0, 851942, 0, 0, 851943, 0, 0, 851944, 0, 0, 851945, 0, 0, 851946, 0, 0, 851947, 0, 0, 851948, 0, 0, 851949, 0, 0, 851950, 0, 0, 851951, 0, 0, 851952, 0, 0, 851953, 0, 0, 851954, 0, 0, 851955, 0, 0, 851956, 0, 0, 851957, 0, 0, 851958, 0, 0, 851959, 0, 0, 851960, 0, 0, 851961, 0, 0, 851962, 0, 0, 851963, 0, 0, 851964, 2, 0, 851965, 2, 0, 851966, 2, 0, 851967, 0, 0, 786432, 0, 0, 786433, 0, 0, 786434, 0, 0, 786435, 0, 0, 786436, 0, 0, 786437, 0, 0, 786438, 0, 0, 786439, 0, 0, 786440, 0, 0, 786441, 0, 0, 786442, 0, 0, 786443, 0, 0, 786444, 0, 0, 786445, 0, 0, 786446, 0, 0, 786447, 0, 0, 786448, 0, 0, 786449, 0, 0, 786450, 0, 0, 786451, 0, 0, 786452, 0, 0, 786453, 0, 0, 786454, 0, 0, 786455, 0, 0, 786456, 0, 0, 786457, 0, 0, 786458, 0, 0, 786459, 0, 0, 786460, 0, 0, 786461, 0, 0, 786462, 0, 0, 786463, 0, 0, 786464, 0, 0, 786465, 0, 0, 786466, 0, 0, 786467, 0, 0, 786468, 0, 0, 786469, 0, 0, 786470, 0, 0, 786471, 0, 0, 786472, 0, 0, 786473, 0, 0, 786474, 0, 0, 786475, 0, 0, 786476, 0, 0, 786477, 0, 0, 786478, 0, 0, 786479, 0, 0, 786480, 0, 0, 786481, 0, 0, 786482, 0, 0, 917468, 0, 0, 917469, 0, 0, 917470, 0, 0, 917471, 0, 0, 917472, 0, 0, 917473, 0, 0, 917474, 0, 0, 917475, 0, 0, 917476, 0, 0, 917477, 0, 0, 917478, 0, 0, 917479, 0, 0, 917480, 0, 0, 917481, 0, 0, 917482, 0, 0, 917483, 0, 0, 917484, 0, 0, 917485, 0, 0, 917486, 0, 0, 917487, 0, 0, 917488, 0, 0, 917489, 0, 0, 917490, 0, 0, 917491, 0, 0, 917492, 0, 0, 917493, 0, 0, 917494, 0, 0, 917495, 0, 0, 917496, 0, 0, 917497, 0, 0, 917498, 0, 0, 917499, 0, 0, 917500, 0, 0, 917501, 2, 0, 917502, 2, 0, 917503, 2, 0, 851968, 0, 0, 851969, 0, 0, 851970, 0, 0, 851971, 0, 0, 851972, 0, 0, 851973, 0, 0, 851974, 0, 0, 851975, 0, 0, 851976, 0, 0, 851977, 0, 0, 851978, 0, 0, 851979, 0, 0, 851980, 0, 0, 851981, 0, 0, 851982, 0, 0, 851983, 0, 0, 851984, 0, 0, 851985, 0, 0, 851986, 0, 0, 851987, 0, 0, 851988, 0, 0, 851989, 0, 0, 851990, 0, 0, 851991, 0, 0, 851992, 0, 0, 851993, 0, 0, 851994, 0, 0, 851995, 0, 0, 851996, 0, 0, 851997, 0, 0, 851998, 0, 0, 851999, 0, 0, 852000, 0, 0, 852001, 0, 0, 852002, 0, 0, 852003, 0, 0, 852004, 0, 0, 852005, 0, 0, 852006, 0, 0, 852007, 0, 0, 852008, 0, 0, 852009, 0, 0, 852010, 0, 0, 852011, 0, 0, 852012, 0, 0, 852013, 0, 0, 852014, 0, 0, 852015, 0, 0, 852016, 0, 0, 852017, 0, 0, 852018, 0, 0, 983004, 0, 0, 983005, 0, 0, 983006, 0, 0, 983007, 0, 0, 983008, 0, 0, 983009, 0, 0, 983010, 0, 0, 983011, 0, 0, 983012, 0, 0, 983013, 0, 0, 983014, 0, 0, 983015, 0, 0, 983016, 0, 0, 983017, 0, 0, 983018, 0, 0, 983019, 0, 0, 983020, 0, 0, 983021, 0, 0, 983022, 0, 0, 983023, 0, 0, 983024, 0, 0, 983025, 0, 0, 983026, 0, 0, 983027, 0, 0, 983028, 0, 0, 983029, 0, 0, 983030, 0, 0, 983031, 0, 0, 983032, 0, 0, 983033, 0, 0, 983034, 0, 0, 983035, 0, 0, 983036, 2, 0, 983037, 2, 0, 983038, 2, 0, 983039, 0, 0, 917504, 0, 0, 917505, 0, 0, 917506, 0, 0, 917507, 0, 0, 917508, 0, 0, 917509, 0, 0, 917510, 0, 0, 917511, 0, 0, 917512, 0, 0, 917513, 0, 0, 917514, 0, 0, 917515, 0, 0, 917516, 0, 0, 917517, 0, 0, 917518, 0, 0, 917519, 0, 0, 917520, 0, 0, 917521, 0, 0, 917522, 2, 0, 917523, 0, 0, 917524, 0, 0, 917525, 0, 0, 917526, 0, 0, 917527, 0, 0, 917528, 0, 0, 917529, 0, 0, 917530, 0, 0, 917531, 0, 0, 917532, 0, 0, 917533, 0, 0, 917534, 0, 0, 917535, 0, 0, 917536, 0, 0, 917537, 0, 0, 917538, 0, 0, 917539, 0, 0, 917540, 0, 0, 917541, 0, 0, 917542, 0, 0, 917543, 0, 0, 917544, 0, 0, 917545, 0, 0, 917546, 0, 0, 917547, 0, 0, 917548, 0, 0, 917549, 0, 0, 917550, 0, 0, 917551, 0, 0, 917552, 0, 0, 917553, 0, 0, 917554, 0, 0, 1048540, 0, 0, 1048541, 0, 0, 1048542, 0, 0, 1048543, 0, 0, 1048544, 0, 0, 1048545, 0, 0, 1048546, 0, 0, 1048547, 0, 0, 1048548, 0, 0, 1048549, 0, 0, 1048550, 0, 0, 1048551, 0, 0, 1048552, 0, 0, 1048553, 0, 0, 1048554, 0, 0, 1048555, 0, 0, 1048556, 0, 0, 1048557, 0, 0, 1048558, 0, 0, 1048559, 0, 0, 1048560, 0, 0, 1048561, 0, 0, 1048562, 0, 0, 1048563, 0, 0, 1048564, 0, 0, 1048565, 0, 0, 1048566, 0, 0, 1048567, 0, 0, 1048568, 0, 0, 1048569, 0, 0, 1048570, 0, 0, 1048571, 0, 0, 1048572, 0, 0, 1048573, 2, 0, 1048574, 2, 0, 1048575, 0, 0, 983040, 0, 0, 983041, 0, 0, 983042, 0, 0, 983043, 0, 0, 983044, 0, 0, 983045, 0, 0, 983046, 0, 0, 983047, 0, 0, 983048, 0, 0, 983049, 0, 0, 983050, 0, 0, 983051, 0, 0, 983052, 0, 0, 983053, 0, 0, 983054, 0, 0, 983055, 2, 0, 983056, 2, 0, 983057, 2, 0, 983058, 2, 0, 983059, 0, 0, 983060, 0, 0, 983061, 0, 0, 983062, 0, 0, 983063, 0, 0, 983064, 0, 0, 983065, 0, 0, 983066, 0, 0, 983067, 0, 0, 983068, 0, 0, 983069, 0, 0, 983070, 0, 0, 983071, 0, 0, 983072, 0, 0, 983073, 0, 0, 983074, 0, 0, 983075, 0, 0, 983076, 0, 0, 983077, 0, 0, 983078, 0, 0, 983079, 0, 0, 983080, 0, 0, 983081, 0, 0, 983082, 0, 0, 983083, 0, 0, 983084, 0, 0, 983085, 0, 0, 983086, 0, 0, 983087, 0, 0, 983088, 0, 0, 983089, 0, 0, 983090, 0, 0, 1114076, 0, 0, 1114077, 0, 0, 1114078, 0, 0, 1114079, 0, 0, 1114080, 0, 0, 1114081, 0, 0, 1114082, 0, 0, 1114083, 0, 0, 1114084, 0, 0, 1114085, 0, 0, 1114086, 0, 0, 1114087, 0, 0, 1114088, 0, 0, 1114089, 0, 0, 1114090, 0, 0, 1114091, 0, 0, 1114092, 0, 0, 1114093, 0, 0, 1114094, 0, 0, 1114095, 0, 0, 1114096, 0, 0, 1114097, 0, 0, 1114098, 0, 0, 1114099, 0, 0, 1114100, 0, 0, 1114101, 0, 0, 1114102, 0, 0, 1114103, 0, 0, 1114104, 0, 0, 1114105, 0, 0, 1114106, 0, 0, 1114107, 0, 0, 1114108, 0, 0, 1114109, 0, 0, 1114110, 0, 0, 1114111, 0, 0, 1048576, 0, 0, 1048577, 2, 0, 1048578, 2, 0, 1048579, 0, 0, 1048580, 0, 0, 1048581, 0, 0, 1048582, 0, 0, 1048583, 0, 0, 1048584, 0, 0, 1048585, 0, 0, 1048586, 0, 0, 1048587, 0, 0, 1048588, 0, 0, 1048589, 0, 0, 1048590, 2, 0, 1048591, 0, 0, 1048592, 0, 0, 1048593, 2, 0, 1048594, 0, 0, 1048595, 0, 0, 1048596, 0, 0, 1048597, 0, 0, 1048598, 0, 0, 1048599, 0, 0, 1048600, 0, 0, 1048601, 0, 0, 1048602, 0, 0, 1048603, 0, 0, 1048604, 0, 0, 1048605, 0, 0, 1048606, 0, 0, 1048607, 0, 0, 1048608, 0, 0, 1048609, 0, 0, 1048610, 0, 0, 1048611, 0, 0, 1048612, 0, 0, 1048613, 0, 0, 1048614, 0, 0, 1048615, 0, 0, 1048616, 0, 0, 1048617, 0, 0, 1048618, 0, 0, 1048619, 0, 0, 1048620, 0, 0, 1048621, 0, 0, 1048622, 0, 0, 1048623, 0, 0, 1048624, 0, 0, 1048625, 0, 0, 1048626, 0, 0, 1179613, 0, 0, 1179614, 0, 0, 1179615, 0, 0, 1179616, 0, 0, 1179617, 0, 0, 1179618, 0, 0, 1179619, 0, 0, 1179620, 0, 0, 1179621, 0, 0, 1179622, 0, 0, 1179623, 0, 0, 1179624, 0, 0, 1179625, 0, 0, 1179626, 0, 0, 1179627, 0, 0, 1179628, 0, 0, 1179629, 0, 0, 1179630, 0, 0, 1179631, 0, 0, 1179632, 0, 0, 1179633, 0, 0, 1179634, 0, 0, 1179635, 0, 0, 1179636, 0, 0, 1179637, 0, 0, 1179638, 0, 0, 1179639, 0, 0, 1179640, 0, 0, 1179641, 0, 0, 1179642, 0, 0, 1179643, 0, 0, 1179644, 0, 0, 1179645, 0, 0, 1179646, 0, 0, 1179647, 0, 0, 1114112, 0, 0, 1114113, 0, 0, 1114114, 2, 0, 1114115, 2, 0, 1114116, 2, 0, 1114117, 2, 0, 1114118, 0, 0, 1114119, 0, 0, 1114120, 0, 0, 1114121, 0, 0, 1114122, 0, 0, 1114123, 0, 0, 1114124, 0, 0, 1114125, 0, 0, 1114126, 0, 0, 1114127, 2, 0, 1114128, 0, 0, 1114129, 2, 0, 1114130, 2, 0, 1114131, 0, 0, 1114132, 0, 0, 1114133, 0, 0, 1114134, 0, 0, 1114135, 0, 0, 1114136, 0, 0, 1114137, 0, 0, 1114138, 0, 0, 1114139, 0, 0, 1114140, 0, 0, 1114141, 0, 0, 1114142, 0, 0, 1114143, 0, 0, 1114144, 0, 0, 1114145, 0, 0, 1114146, 0, 0, 1114147, 0, 0, 1114148, 0, 0, 1114149, 0, 0, 1114150, 0, 0, 1114151, 0, 0, 1114152, 0, 0, 1114153, 0, 0, 1114154, 0, 0, 1114155, 0, 0, 1114156, 0, 0, 1114157, 0, 0, 1114158, 0, 0, 1114159, 0, 0, 1114160, 0, 0, 1114161, 0, 0, 1114162, 0, 0, 1245149, 0, 0, 1245150, 0, 0, 1245151, 0, 0, 1245152, 0, 0, 1245153, 0, 0, 1245154, 0, 0, 1245155, 0, 0, 1245156, 0, 0, 1245157, 0, 0, 1245158, 0, 0, 1245159, 0, 0, 1245160, 0, 0, 1245161, 0, 0, 1245162, 0, 0, 1245163, 0, 0, 1245164, 0, 0, 1245165, 0, 0, 1245166, 0, 0, 1245167, 0, 0, 1245168, 0, 0, 1245169, 0, 0, 1245170, 0, 0, 1245171, 0, 0, 1245172, 0, 0, 1245173, 0, 0, 1245174, 0, 0, 1245175, 0, 0, 1245176, 0, 0, 1245177, 0, 0, 1245178, 0, 0, 1245179, 0, 0, 1245180, 0, 0, 1245181, 0, 0, 1245182, 0, 0, 1245183, 0, 0, 1179648, 0, 0, 1179649, 0, 0, 1179650, 0, 0, 1179651, 0, 0, 1179652, 2, 0, 1179653, 2, 0, 1179654, 2, 0, 1179655, 0, 0, 1179656, 0, 0, 1179657, 0, 0, 1179658, 0, 0, 1179659, 0, 0, 1179660, 0, 0, 1179661, 0, 0, 1179662, 0, 0, 1179663, 0, 0, 1179664, 2, 0, 1179665, 2, 0, 1179666, 2, 0, 1179667, 0, 0, 1179668, 0, 0, 1179669, 0, 0, 1179670, 0, 0, 1179671, 0, 0, 1179672, 0, 0, 1179673, 0, 0, 1179674, 0, 0, 1179675, 0, 0, 1179676, 0, 0, 1179677, 0, 0, 1179678, 0, 0, 1179679, 0, 0, 1179680, 0, 0, 1179681, 0, 0, 1179682, 0, 0, 1179683, 0, 0, 1179684, 0, 0, 1179685, 0, 0, 1179686, 0, 0, 1179687, 0, 0, 1179688, 0, 0, 1179689, 0, 0, 1179690, 0, 0, 1179691, 0, 0, 1179692, 0, 0, 1179693, 0, 0, 1179694, 0, 0, 1179695, 0, 0, 1179696, 0, 0, 1179697, 0, 0, 1310685, 0, 0, 1310686, 0, 0, 1310687, 0, 0, 1310688, 0, 0, 1310689, 0, 0, 1310690, 0, 0, 1310691, 0, 0, 1310692, 0, 0, 1310693, 0, 0, 1310694, 0, 0, 1310695, 0, 0, 1310696, 0, 0, 1310697, 0, 0, 1310698, 0, 0, 1310699, 0, 0, 1310700, 0, 0, 1310701, 0, 0, 1310702, 0, 0, 1310703, 0, 0, 1310704, 0, 0, 1310705, 0, 0, 1310706, 0, 0, 1310707, 0, 0, 1310708, 0, 0, 1310709, 0, 0, 1310710, 0, 0, 1310711, 0, 0, 1310712, 0, 0, 1310713, 0, 0, 1310714, 0, 0, 1310715, 0, 0, 1310716, 0, 0, 1310717, 0, 0, 1310718, 0, 0, 1310719, 0, 0, 1245184, 0, 0, 1245185, 0, 0, 1245186, 0, 0, 1245187, 0, 0, 1245188, 0, 0, 1245189, 2, 0, 1245190, 0, 0, 1245191, 0, 0, 1245192, 0, 0, 1245193, 0, 0, 1245194, 0, 0, 1245195, 0, 0, 1245196, 0, 0, 1245197, 0, 0, 1245198, 0, 0, 1245199, 0, 0, 1245200, 2, 0, 1245201, 0, 0, 1245202, 0, 0, 1245203, 0, 0, 1245204, 0, 0, 1245205, 0, 0, 1245206, 0, 0, 1245207, 0, 0, 1245208, 0, 0, 1245209, 0, 0, 1245210, 0, 0, 1245211, 0, 0, 1245212, 0, 0, 1245213, 0, 0, 1245214, 0, 0, 1245215, 0, 0, 1245216, 0, 0, 1245217, 0, 0, 1245218, 0, 0, 1245219, 0, 0, 1245220, 0, 0, 1245221, 0, 0, 1245222, 0, 0, 1245223, 0, 0, 1245224, 0, 0, 1245225, 0, 0, 1245226, 0, 0, 1245227, 0, 0, 1245228, 0, 0, 1245229, 0, 0, 1245230, 0, 0, 1245231, 0, 0, 1245232, 0, 0, 1376221, 0, 0, 1376222, 0, 0, 1376223, 0, 0, 1376224, 0, 0, 1376225, 0, 0, 1376226, 0, 0, 1376227, 0, 0, 1376228, 0, 0, 1376229, 0, 0, 1376230, 0, 0, 1376231, 0, 0, 1376232, 0, 0, 1376233, 0, 0, 1376234, 0, 0, 1376235, 0, 0, 1376236, 0, 0, 1376237, 0, 0, 1376238, 0, 0, 1376239, 0, 0, 1376240, 0, 0, 1376241, 0, 0, 1376242, 0, 0, 1376243, 0, 0, 1376244, 0, 0, 1376245, 0, 0, 1376246, 0, 0, 1376247, 0, 0, 1376248, 0, 0, 1376249, 0, 0, 1376250, 0, 0, 1376251, 0, 0, 1376252, 0, 0, 1376253, 0, 0, 1376254, 0, 0, 1376255, 0, 0, 1310720, 0, 0, 1310721, 0, 0, 1310722, 0, 0, 1310723, 0, 0, 1310724, 2, 0, 1310725, 2, 0, 1310726, 0, 0, 1310727, 0, 0, 1310728, 0, 0, 1310729, 0, 0, 1310730, 0, 0, 1310731, 0, 0, 1310732, 0, 0, 1310733, 0, 0, 1310734, 0, 0, 1310735, 0, 0, 1310736, 0, 0, 1310737, 0, 0, 1310738, 0, 0, 1310739, 0, 0, 1310740, 0, 0, 1310741, 0, 0, 1310742, 0, 0, 1310743, 0, 0, 1310744, 0, 0, 1310745, 0, 0, 1310746, 0, 0, 1310747, 0, 0, 1310748, 0, 0, 1310749, 0, 0, 1310750, 0, 0, 1310751, 0, 0, 1310752, 0, 0, 1310753, 0, 0, 1310754, 0, 0, 1310755, 0, 0, 1310756, 0, 0, 1310757, 0, 0, 1310758, 0, 0, 1310759, 0, 0, 1310760, 0, 0, 1310761, 0, 0, 1310762, 0, 0, 1310763, 0, 0, 1310764, 0, 0, 1310765, 0, 0, 1310766, 0, 0, 1310767, 0, 0, 1310768, 0, 0, 1441757, 0, 0, 1441758, 0, 0, 1441759, 0, 0, 1441760, 0, 0, 1441761, 0, 0, 1441762, 0, 0, 1441763, 0, 0, 1441764, 0, 0, 1441765, 0, 0, 1441766, 0, 0, 1441767, 0, 0, 1441768, 0, 0, 1441769, 0, 0, 1441770, 0, 0, 1441771, 0, 0, 1441772, 0, 0, 1441773, 0, 0, 1441774, 0, 0, 1441775, 0, 0, 1441776, 0, 0, 1441777, 0, 0, 1441778, 0, 0, 1441779, 0, 0, 1441780, 0, 0, 1441781, 0, 0, 1441782, 0, 0, 1441783, 0, 0, 1441784, 0, 0, 1441785, 0, 0, 1441786, 0, 0, 1441787, 0, 0, 1441788, 0, 0, 1441789, 0, 0, 1441790, 0, 0, 1441791, 0, 0, 1376256, 0, 0, 1376257, 0, 0, 1376258, 0, 0, 1376259, 0, 0, 1376260, 0, 0, 1376261, 0, 0, 1376262, 0, 0, 1376263, 0, 0, 1376264, 0, 0, 1376265, 0, 0, 1376266, 0, 0, 1376267, 0, 0, 1376268, 0, 0, 1376269, 0, 0, 1376270, 0, 0, 1376271, 0, 0, 1376272, 0, 0, 1376273, 0, 0, 1376274, 0, 0, 1376275, 0, 0, 1376276, 0, 0, 1376277, 0, 0, 1376278, 0, 0, 1376279, 0, 0, 1376280, 0, 0, 1376281, 0, 0, 1376282, 0, 0, 1376283, 0, 0, 1376284, 0, 0, 1376285, 0, 0, 1376286, 0, 0, 1376287, 0, 0, 1376288, 0, 0, 1376289, 0, 0, 1376290, 0, 0, 1376291, 0, 0, 1376292, 0, 0, 1376293, 0, 0, 1376294, 0, 0, 1376295, 0, 0, 1376296, 0, 0, 1376297, 0, 0, 1376298, 0, 0, 1376299, 0, 0, 1376300, 0, 0, 1376301, 0, 0, 1376302, 0, 0, 1376303, 0, 0, 1376304, 0, 0, 1507293, 0, 0, 1507294, 0, 0, 1507295, 0, 0, 1507296, 0, 0, 1507297, 0, 0, 1507298, 0, 0, 1507299, 0, 0, 1507300, 0, 0, 1507301, 0, 0, 1507302, 0, 0, 1507303, 0, 0, 1507304, 0, 0, 1507305, 0, 0, 1507306, 0, 0, 1507307, 0, 0, 1507308, 0, 0, 1507309, 0, 0, 1507310, 0, 0, 1507311, 0, 0, 1507312, 0, 0, 1507313, 0, 0, 1507314, 0, 0, 1507315, 0, 0, 1507316, 0, 0, 1507317, 0, 0, 1507318, 0, 0, 1507319, 0, 0, 1507320, 0, 0, 1507321, 0, 0, 1507322, 0, 0, 1507323, 0, 0, 1507324, 0, 0, 1507325, 0, 0, 1507326, 0, 0, 1507327, 0, 0, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1441824, 0, 0, 1441825, 0, 0, 1441826, 0, 0, 1441827, 0, 0, 1441828, 0, 0, 1441829, 0, 0, 1441830, 0, 0, 1441831, 0, 0, 1441832, 0, 0, 1441833, 0, 0, 1441834, 0, 0, 1441835, 0, 0, 1441836, 0, 0, 1441837, 0, 0, 1441838, 0, 0, 1441839, 0, 0, 1441840, 0, 0, 1572829, 0, 0, 1572830, 0, 0, 1572831, 0, 0, 1572832, 0, 0, 1572833, 0, 0, 1572834, 0, 0, 1572835, 0, 0, 1572836, 0, 0, 1572837, 0, 0, 1572838, 0, 0, 1572839, 0, 0, 1572840, 0, 0, 1572841, 0, 0, 1572842, 0, 0, 1572843, 0, 0, 1572844, 0, 0, 1572845, 0, 0, 1572846, 0, 0, 1572847, 0, 0, 1572848, 0, 0, 1572849, 0, 0, 1572850, 0, 0, 1572851, 0, 0, 1572852, 0, 0, 1572853, 0, 0, 1572854, 0, 0, 1572855, 0, 0, 1572856, 0, 0, 1572857, 0, 0, 1572858, 0, 0, 1572859, 0, 0, 1572860, 0, 0, 1572861, 0, 0, 1572862, 0, 0, 1572863, 0, 0, 1507328, 0, 0, 1507329, 0, 0, 1507330, 0, 0, 1507331, 0, 0, 1507332, 0, 0, 1507333, 0, 0, 1507334, 0, 0, 1507335, 0, 0, 1507336, 0, 0, 1507337, 0, 0, 1507338, 0, 0, 1507339, 0, 0, 1507340, 0, 0, 1507341, 0, 0, 1507342, 0, 0, 1507343, 0, 0, 1507344, 0, 0, 1507345, 0, 0, 1507346, 0, 0, 1507347, 0, 0, 1507348, 0, 0, 1507349, 0, 0, 1507350, 0, 0, 1507351, 0, 0, 1507352, 0, 0, 1507353, 0, 0, 1507354, 0, 0, 1507355, 0, 0, 1507356, 0, 0, 1507357, 0, 0, 1507358, 0, 0, 1507359, 0, 0, 1507360, 0, 0, 1507361, 0, 0, 1507362, 0, 0, 1507363, 0, 0, 1507364, 0, 0, 1507365, 0, 0, 1507366, 0, 0, 1507367, 0, 0, 1507368, 0, 0, 1507369, 0, 0, 1507370, 0, 0, 1507371, 0, 0, 1507372, 0, 0, 1507373, 0, 0, 1507374, 0, 0, 1507375, 0, 0, 1507376, 0, 0, 1638365, 0, 0, 1638366, 0, 0, 1638367, 0, 0, 1638368, 0, 0, 1638369, 0, 0, 1638370, 0, 0, 1638371, 0, 0, 1638372, 0, 0, 1638373, 0, 0, 1638374, 0, 0, 1638375, 0, 0, 1638376, 0, 0, 1638377, 0, 0, 1638378, 0, 0, 1638379, 0, 0, 1638380, 0, 0, 1638381, 0, 0, 1638382, 0, 0, 1638383, 0, 0, 1638384, 0, 0, 1638385, 0, 0, 1638386, 0, 0, 1638387, 0, 0, 1638388, 0, 0, 1638389, 0, 0, 1638390, 0, 0, 1638391, 0, 0, 1638392, 0, 0, 1638393, 0, 0, 1638394, 0, 0, 1638395, 0, 0, 1638396, 0, 0, 1638397, 0, 0, 1638398, 0, 0, 1638399, 0, 0, 1572864, 0, 0, 1572865, 0, 0, 1572866, 0, 0, 1572867, 0, 0, 1572868, 0, 0, 1572869, 0, 0, 1572870, 0, 0, 1572871, 0, 0, 1572872, 0, 0, 1572873, 0, 0, 1572874, 0, 0, 1572875, 0, 0, 1572876, 0, 0, 1572877, 0, 0, 1572878, 0, 0, 1572879, 0, 0, 1572880, 0, 0, 1572881, 0, 0, 1572882, 0, 0, 1572883, 0, 0, 1572884, 0, 0, 1572885, 0, 0, 1572886, 0, 0, 1572887, 0, 0, 1572888, 0, 0, 1572889, 0, 0, 1572890, 0, 0, 1572891, 0, 0, 1572892, 0, 0, 1572893, 0, 0, 1572894, 0, 0, 1572895, 0, 0, 1572896, 0, 0, 1572897, 0, 0, 1572898, 0, 0, 1572899, 0, 0, 1572900, 0, 0, 1572901, 0, 0, 1572902, 0, 0, 1572903, 0, 0, 1572904, 0, 0, 1572905, 0, 0, 1572906, 0, 0, 1572907, 0, 0, 1572908, 0, 0, 1572909, 0, 0, 1572910, 0, 0, 1572911, 0, 0, 1572912, 0, 0, 1703902, 0, 0, 1703903, 0, 0, 1703904, 0, 0, 1703905, 0, 0, 1703906, 0, 0, 1703907, 0, 0, 1703908, 0, 0, 1703909, 0, 0, 1703910, 0, 0, 1703911, 0, 0, 1703912, 0, 0, 1703913, 0, 0, 1703914, 0, 0, 1703915, 0, 0, 1703916, 0, 0, 1703917, 0, 0, 1703918, 0, 0, 1703919, 0, 0, 1703920, 0, 0, 1703921, 0, 0, 1703922, 0, 0, 1703923, 0, 0, 1703924, 0, 0, 1703925, 0, 0, 1703926, 0, 0, 1703927, 0, 0, 1703928, 0, 0, 1703929, 0, 0, 1703930, 0, 0, 1703931, 0, 0, 1703932, 0, 0, 1703933, 0, 0, 1703934, 0, 0, 1703935, 0, 0, 1638400, 0, 0, 1638401, 0, 0, 1638402, 0, 0, 1638403, 0, 0, 1638404, 0, 0, 1638405, 0, 0, 1638406, 0, 0, 1638407, 0, 0, 1638408, 0, 0, 1638409, 0, 0, 1638410, 0, 0, 1638411, 0, 0, 1638412, 0, 0, 1638413, 0, 0, 1638414, 0, 0, 1638415, 0, 0, 1638416, 0, 0, 1638417, 0, 0, 1638418, 0, 0, 1638419, 0, 0, 1638420, 0, 0, 1638421, 0, 0, 1638422, 0, 0, 1638423, 0, 0, 1638424, 0, 0, 1638425, 0, 0, 1638426, 0, 0, 1638427, 0, 0, 1638428, 0, 0, 1638429, 0, 0, 1638430, 0, 0, 1638431, 0, 0, 1638432, 0, 0, 1638433, 0, 0, 1638434, 0, 0, 1638435, 0, 0, 1638436, 0, 0, 1638437, 0, 0, 1638438, 0, 0, 1638439, 0, 0, 1638440, 0, 0, 1638441, 0, 0, 1638442, 0, 0, 1638443, 0, 0, 1638444, 0, 0, 1638445, 0, 0, 1638446, 0, 0, 1638447, 0, 0, 1638448, 0, 0, 1769438, 0, 0, 1769439, 0, 0, 1769440, 0, 0, 1769441, 0, 0, 1769442, 0, 0, 1769443, 0, 0, 1769444, 0, 0, 1769445, 0, 0, 1769446, 0, 0, 1769447, 0, 0, 1769448, 0, 0, 1769449, 0, 0, 1769450, 0, 0, 1769451, 0, 0, 1769452, 0, 0, 1769453, 0, 0, 1769454, 0, 0, 1769455, 0, 0, 1769456, 0, 0, 1769457, 0, 0, 1769458, 0, 0, 1769459, 0, 0, 1769460, 0, 0, 1769461, 0, 0, 1769462, 0, 0, 1769463, 0, 0, 1769464, 0, 0, 1769465, 0, 0, 1769466, 0, 0, 1769467, 0, 0, 1769468, 0, 0, 1769469, 0, 0, 1769470, 0, 0, 1769471, 0, 0, 1703936, 0, 0, 1703937, 0, 0, 1703938, 0, 0, 1703939, 0, 0, 1703940, 0, 0, 1703941, 0, 0, 1703942, 0, 0, 1703943, 0, 0, 1703944, 0, 0, 1703945, 0, 0, 1703946, 0, 0, 1703947, 0, 0, 1703948, 0, 0, 1703949, 0, 0, 1703950, 0, 0, 1703951, 0, 0, 1703952, 0, 0, 1703953, 0, 0, 1703954, 0, 0, 1703955, 0, 0, 1703956, 0, 0, 1703957, 0, 0, 1703958, 0, 0, 1703959, 0, 0, 1703960, 0, 0, 1703961, 0, 0, 1703962, 0, 0, 1703963, 0, 0, 1703964, 0, 0, 1703965, 0, 0, 1703966, 0, 0, 1703967, 0, 0, 1703968, 0, 0, 1703969, 0, 0, 1703970, 0, 0, 1703971, 0, 0, 1703972, 0, 0, 1703973, 0, 0, 1703974, 0, 0, 1703975, 0, 0, 1703976, 0, 0, 1703977, 0, 0, 1703978, 0, 0, 1703979, 0, 0, 1703980, 0, 0, 1703981, 0, 0, 1703982, 0, 0, 1703983, 0, 0, 1703984, 0, 0, 1834974, 0, 0, 1834975, 0, 0, 1834976, 0, 0, 1834977, 0, 0, 1834978, 0, 0, 1834979, 0, 0, 1834980, 0, 0, 1834981, 0, 0, 1834982, 0, 0, 1834983, 0, 0, 1834984, 0, 0, 1834985, 0, 0, 1834986, 0, 0, 1834987, 0, 0, 1834988, 0, 0, 1834989, 0, 0, 1834990, 0, 0, 1834991, 0, 0, 1834992, 0, 0, 1834993, 0, 0, 1834994, 0, 0, 1834995, 0, 0, 1834996, 0, 0, 1834997, 0, 0, 1834998, 0, 0, 1834999, 0, 0, 1835000, 0, 0, 1835001, 0, 0, 1835002, 0, 0, 1835003, 0, 0, 1835004, 0, 0, 1835005, 0, 0, 1835006, 0, 0, 1835007, 0, 0, 1769472, 0, 0, 1769473, 0, 0, 1769474, 0, 0, 1769475, 0, 0, 1769476, 0, 0, 1769477, 0, 0, 1769478, 0, 0, 1769479, 0, 0, 1769480, 0, 0, 1769481, 0, 0, 1769482, 0, 0, 1769483, 0, 0, 1769484, 0, 0, 1769485, 0, 0, 1769486, 0, 0, 1769487, 0, 0, 1769488, 0, 0, 1769489, 0, 0, 1769490, 0, 0, 1769491, 0, 0, 1769492, 0, 0, 1769493, 0, 0, 1769494, 0, 0, 1769495, 0, 0, 1769496, 0, 0, 1769497, 0, 0, 1769498, 0, 0, 1769499, 0, 0, 1769500, 0, 0, 1769501, 0, 0, 1769502, 0, 0, 1769503, 0, 0, 1769504, 0, 0, 1769505, 0, 0, 1769506, 0, 0, 1769507, 0, 0, 1769508, 0, 0, 1769509, 0, 0, 1769510, 0, 0, 1769511, 0, 0, 1769512, 0, 0, 1769513, 0, 0, 1769514, 0, 0, 1769515, 0, 0, 1769516, 0, 0, 1769517, 0, 0, 1769518, 0, 0, 1769519, 0, 0, 1900511, 0, 0, 1900512, 0, 0, 1900513, 0, 0, 1900514, 0, 0, 1900515, 0, 0, 1900516, 0, 0, 1900517, 0, 0, 1900518, 0, 0, 1900519, 0, 0, 1900520, 0, 0, 1900521, 0, 0, 1900522, 0, 0, 1900523, 0, 0, 1900524, 0, 0, 1900525, 0, 0, 1900526, 0, 0, 1900527, 0, 0, 1900528, 0, 0, 1900529, 0, 0, 1900530, 0, 0, 1900531, 0, 0, 1900532, 0, 0, 1900533, 0, 0, 1900534, 0, 0, 1900535, 0, 0, 1900536, 0, 0, 1900537, 0, 0, 1900538, 0, 0, 1900539, 0, 0, 1900540, 0, 0, 1900541, 0, 0, 1900542, 0, 0, 1900543, 0, 0, 1835008, 0, 0, 1835009, 0, 0, 1835010, 0, 0, 1835011, 0, 0, 1835012, 0, 0, 1835013, 0, 0, 1835014, 0, 0, 1835015, 0, 0, 1835016, 0, 0, 1835017, 0, 0, 1835018, 0, 0, 1835019, 0, 0, 1835020, 0, 0, 1835021, 0, 0, 1835022, 0, 0, 1835023, 0, 0, 1835024, 0, 0, 1835025, 0, 0, 1835026, 0, 0, 1835027, 0, 0, 1835028, 0, 0, 1835029, 0, 0, 1835030, 0, 0, 1835031, 0, 0, 1835032, 0, 0, 1835033, 0, 0, 1835034, 0, 0, 1835035, 0, 0, 1835036, 0, 0, 1835037, 0, 0, 1835038, 0, 0, 1835039, 0, 0, 1835040, 0, 0, 1835041, 0, 0, 1835042, 0, 0, 1835043, 0, 0, 1835044, 0, 0, 1835045, 0, 0, 1835046, 0, 0, 1835047, 0, 0, 1835048, 0, 0, 1835049, 0, 0, 1835050, 0, 0, 1835051, 0, 0, 1835052, 0, 0, 1835053, 0, 0, 1835054, 0, 0, 1835055, 0, 0, 1966047, 0, 0, 1966048, 0, 0, 1966049, 0, 0, 1966050, 0, 0, 1966051, 0, 0, 1966052, 0, 0, 1966053, 0, 0, 1966054, 0, 0, 1966055, 0, 0, 1966056, 0, 0, 1966057, 0, 0, 1966058, 0, 0, 1966059, 0, 0, 1966060, 0, 0, 1966061, 0, 0, 1966062, 0, 0, 1966063, 0, 0, 1966064, 0, 0, 1966065, 0, 0, 1966066, 0, 0, 1966067, 0, 0, 1966068, 0, 0, 1966069, 0, 0, 1966070, 0, 0, 1966071, 0, 0, 1966072, 0, 0, 1966073, 0, 0, 1966074, 0, 0, 1966075, 0, 0, 1966076, 0, 0, 1966077, 0, 0, 1966078, 0, 0, 1966079, 0, 0, 1900544, 0, 0, 1900545, 0, 0, 1900546, 0, 0, 1900547, 0, 0, 1900548, 0, 0, 1900549, 0, 0, 1900550, 0, 0, 1900551, 0, 0, 1900552, 0, 0, 1900553, 0, 0, 1900554, 0, 0, 1900555, 0, 0, 1900556, 0, 0, 1900557, 0, 0, 1900558, 0, 0, 1900559, 0, 0, 1900560, 0, 0, 1900561, 0, 0, 1900562, 0, 0, 1900563, 0, 0, 1900564, 0, 0, 1900565, 0, 0, 1900566, 0, 0, 1900567, 0, 0, 1900568, 0, 0, 1900569, 0, 0, 1900570, 0, 0, 1900571, 0, 0, 1900572, 0, 0, 1900573, 0, 0, 1900574, 0, 0, 1900575, 0, 0, 1900576, 0, 0, 1900577, 0, 0, 1900578, 0, 0, 1900579, 0, 0, 1900580, 0, 0, 1900581, 0, 0, 1900582, 0, 0, 1900583, 0, 0, 1900584, 0, 0, 1900585, 0, 0, 1900586, 0, 0, 1900587, 0, 0, 1900588, 0, 0, 1900589, 0, 0, 1900590, 0, 0, 1900591, 0, 0, 2031583, 0, 0, 2031584, 0, 0, 2031585, 0, 0, 2031586, 0, 0, 2031587, 0, 0, 2031588, 0, 0, 2031589, 0, 0, 2031590, 0, 0, 2031591, 0, 0, 2031592, 0, 0, 2031593, 0, 0, 2031594, 0, 0, 2031595, 0, 0, 2031596, 0, 0, 2031597, 0, 0, 2031598, 0, 0, 2031599, 0, 0, 2031600, 0, 0, 2031601, 0, 0, 2031602, 0, 0, 2031603, 0, 0, 2031604, 0, 0, 2031605, 0, 0, 2031606, 0, 0, 2031607, 0, 0, 2031608, 0, 0, 2031609, 0, 0, 2031610, 0, 0, 2031611, 0, 0, 2031612, 0, 0, 2031613, 0, 0, 2031614, 0, 0, 2031615, 0, 0, 1966080, 0, 0, 1966081, 0, 0, 1966082, 0, 0, 1966083, 0, 0, 1966084, 0, 0, 1966085, 0, 0, 1966086, 0, 0, 1966087, 0, 0, 1966088, 0, 0, 1966089, 0, 0, 1966090, 0, 0, 1966091, 0, 0, 1966092, 0, 0, 1966093, 0, 0, 1966094, 0, 0, 1966095, 0, 0, 1966096, 0, 0, 1966097, 0, 0, 1966098, 0, 0, 1966099, 0, 0, 1966100, 0, 0, 1966101, 0, 0, 1966102, 0, 0, 1966103, 0, 0, 1966104, 0, 0, 1966105, 0, 0, 1966106, 0, 0, 1966107, 0, 0, 1966108, 0, 0, 1966109, 0, 0, 1966110, 0, 0, 1966111, 0, 0, 1966112, 0, 0, 1966113, 0, 0, 1966114, 0, 0, 1966115, 0, 0, 1966116, 0, 0, 1966117, 0, 0, 1966118, 0, 0, 1966119, 0, 0, 1966120, 0, 0, 1966121, 0, 0, 1966122, 0, 0, 1966123, 0, 0, 1966124, 0, 0, 1966125, 0, 0, 1966126, 0, 0, 1966127, 0, 0, 2097119, 0, 0, 2097120, 0, 0, 2097121, 0, 0, 2097122, 0, 0, 2097123, 0, 0, 2097124, 0, 0, 2097125, 0, 0, 2097126, 0, 0, 2097127, 0, 0, 2097128, 0, 0, 2097129, 0, 0, 2097130, 0, 0, 2097131, 0, 0, 2097132, 0, 0, 2097133, 0, 0, 2097134, 0, 0, 2097135, 0, 0, 2097136, 0, 0, 2097137, 0, 0, 2097138, 0, 0, 2097139, 0, 0, 2097140, 0, 0, 2097141, 0, 0, 2097142, 0, 0, 2097143, 0, 0, 2097144, 0, 0, 2097145, 0, 0, 2097146, 0, 0, 2097147, 0, 0, 2097148, 0, 0, 2097149, 0, 0, 2097150, 0, 0, 2097151, 0, 0, 2031616, 0, 0, 2031617, 0, 0, 2031618, 0, 0, 2031619, 0, 0, 2031620, 0, 0, 2031621, 0, 0, 2031622, 0, 0, 2031623, 0, 0, 2031624, 0, 0, 2031625, 0, 0, 2031626, 0, 0, 2031627, 0, 0, 2031628, 0, 0, 2031629, 0, 0, 2031630, 0, 0, 2031631, 0, 0, 2031632, 0, 0, 2031633, 0, 0, 2031634, 0, 0, 2031635, 0, 0, 2031636, 0, 0, 2031637, 0, 0, 2031638, 0, 0, 2031639, 0, 0, 2031640, 0, 0, 2031641, 0, 0, 2031642, 0, 0, 2031643, 0, 0, 2031644, 0, 0, 2031645, 0, 0, 2031646, 0, 0, 2031647, 0, 0, 2031648, 0, 0, 2031649, 0, 0, 2031650, 0, 0, 2031651, 0, 0, 2031652, 0, 0, 2031653, 0, 0, 2031654, 0, 0, 2031655, 0, 0, 2031656, 0, 0, 2031657, 0, 0, 2031658, 0, 0, 2031659, 0, 0, 2031660, 0, 0, 2031661, 0, 0, 2031662, 0, 0, 2031663, 0, 0, 2162655, 0, 0, 2162656, 0, 0, 2162657, 0, 0, 2162658, 0, 0, 2162659, 0, 0, 2162660, 0, 0, 2162661, 0, 0, 2162662, 0, 0, 2162663, 0, 0, 2162664, 0, 0, 2162665, 0, 0, 2162666, 0, 0, 2162667, 0, 0, 2162668, 0, 0, 2162669, 0, 0, 2162670, 0, 0, 2162671, 0, 0, 2162672, 0, 0, 2162673, 0, 0, 2162674, 0, 0, 2162675, 0, 0, 2162676, 0, 0, 2162677, 0, 0, 2162678, 0, 0, 2162679, 0, 0, 2162680, 0, 0, 2162681, 0, 0, 2162682, 0, 0, 2162683, 0, 0, 2162684, 0, 0, 2162685, 0, 0, 2162686, 0, 0, 2162687, 0, 0, 2097152, 0, 0, 2097153, 0, 0, 2097154, 0, 0, 2097155, 0, 0, 2097156, 0, 0, 2097157, 0, 0, 2097158, 0, 0, 2097159, 0, 0, 2097160, 0, 0, 2097161, 0, 0, 2097162, 0, 0, 2097163, 0, 0, 2097164, 0, 0, 2097165, 0, 0, 2097166, 0, 0, 2097167, 0, 0, 2097168, 0, 0, 2097169, 0, 0, 2097170, 0, 0, 2097171, 0, 0, 2097172, 0, 0, 2097173, 0, 0, 2097174, 0, 0, 2097175, 0, 0, 2097176, 0, 0, 2097177, 0, 0, 2097178, 0, 0, 2097179, 0, 0, 2097180, 0, 0, 2097181, 0, 0, 2097182, 0, 0, 2097183, 0, 0, 2097184, 0, 0, 2097185, 0, 0, 2097186, 0, 0, 2097187, 0, 0, 2097188, 0, 0, 2097189, 0, 0, 2097190, 0, 0, 2097191, 0, 0, 2097192, 0, 0, 2097193, 0, 0, 2097194, 0, 0, 2097195, 0, 0, 2097196, 0, 0, 2097197, 0, 0, 2097198, 0, 0, 2097199, 0, 0, 2097200, 0, 0, 2228191, 0, 0, 2228192, 0, 0, 2228193, 0, 0, 2228194, 0, 0, 2228195, 0, 0, 2228196, 0, 0, 2228197, 0, 0, 2228198, 0, 0, 2228199, 0, 0, 2228200, 0, 0, 2228201, 0, 0, 2228202, 0, 0, 2228203, 0, 0, 2228204, 0, 0, 2228205, 0, 0, 2228206, 0, 0, 2228207, 0, 0, 2228208, 0, 0, 2228209, 0, 0, 2228210, 0, 0, 2228219, 0, 0, 2228220, 0, 0, 2228221, 0, 0, 2228222, 0, 0, 2228223, 0, 0, 2162688, 0, 0, 2162689, 0, 0, 2162690, 0, 0, 2162691, 0, 0, 2162692, 0, 0, 2162693, 0, 0, 2162694, 0, 0, 2162695, 0, 0, 2162696, 0, 0, 2162697, 0, 0, 2162698, 0, 0, 2162699, 0, 0, 2162700, 0, 0, 2162701, 0, 0, 2162702, 0, 0, 2162703, 0, 0, 2162704, 0, 0, 2162705, 0, 0, 2162706, 0, 0, 2162707, 0, 0, 2162708, 0, 0, 2162709, 0, 0, 2162710, 0, 0, 2162711, 0, 0, 2162712, 0, 0, 2162713, 0, 0, 2162714, 0, 0, 2162715, 0, 0, 2162716, 0, 0, 2162717, 0, 0, 2162718, 0, 0, 2162719, 0, 0, 2162720, 0, 0, 2162721, 0, 0, 2162722, 0, 0, 2162723, 0, 0, 2162724, 0, 0, 2162725, 0, 0, 2162726, 0, 0, 2162727, 0, 0, 2162728, 0, 0, 2162729, 0, 0, 2162730, 0, 0, 2162731, 0, 0, 2162732, 0, 0, 2162733, 0, 0, 2162734, 0, 0, 2162735, 0, 0, 2162736, 0, 0, 2293727, 0, 0, 2293728, 0, 0, 2293729, 0, 0, 2293730, 0, 0, 2293731, 0, 0, 2293732, 0, 0, 2293733, 0, 0, 2293734, 0, 0, 2293735, 0, 0, 2293736, 0, 0, 2293737, 0, 0, 2293738, 0, 0, 2293739, 0, 0, 2293740, 0, 0, 2293741, 0, 0, 2293742, 0, 0, 2228225, 0, 0, 2228226, 0, 0, 2228227, 0, 0, 2228228, 0, 0, 2228229, 0, 0, 2228230, 0, 0, 2228231, 0, 0, 2228232, 0, 0, 2228233, 0, 0, 2228234, 0, 0, 2228235, 0, 0, 2228236, 0, 0, 2228237, 0, 0, 2228238, 0, 0, 2228239, 0, 0, 2228240, 0, 0, 2228241, 0, 0, 2228242, 0, 0, 2228243, 0, 0, 2228244, 0, 0, 2228245, 0, 0, 2228246, 0, 0, 2228247, 0, 0, 2228248, 0, 0, 2228249, 0, 0, 2228250, 0, 0, 2228251, 0, 0, 2228252, 0, 0, 2228253, 0, 0, 2228254, 0, 0, 2228255, 0, 0, 2228256, 0, 0, 2228257, 0, 0, 2228258, 0, 0, 2228259, 0, 0, 2228260, 0, 0, 2228261, 0, 0, 2228262, 0, 0, 2228263, 0, 0, 2228264, 0, 0, 2228265, 0, 0, 2228266, 0, 0, 2228267, 0, 0, 2228268, 0, 0, 2228269, 0, 0, 2228270, 0, 0, 2228271, 0, 0, 2228272, 0, 0, 2359263, 0, 0, 2359264, 0, 0, 2359265, 0, 0, 2359266, 0, 0, 2359267, 0, 0, 2359268, 0, 0, 2359269, 0, 0, 2359270, 0, 0, 2359271, 0, 0, 2359272, 0, 0, 2293773, 0, 0, 2293774, 0, 0, 2293775, 0, 0, 2293776, 0, 0, 2293777, 0, 0, 2293778, 0, 0, 2293779, 0, 0, 2293780, 0, 0, 2293781, 0, 0, 2293782, 0, 0, 2293783, 0, 0, 2293784, 0, 0, 2293785, 0, 0, 2293786, 0, 0, 2293787, 0, 0, 2293788, 0, 0, 2293789, 0, 0, 2293790, 0, 0, 2293791, 0, 0, 2293792, 0, 0, 2293793, 0, 0, 2293794, 0, 0, 2293795, 0, 0, 2293796, 0, 0, 2293797, 0, 0, 2293798, 0, 0, 2293799, 0, 0, 2293800, 0, 0, 2293801, 0, 0, 2293802, 0, 0, 2293803, 0, 0, 2293804, 0, 0, 2293805, 0, 0, 2293806, 0, 0, 2293807, 0, 0, 2293808, 0, 0, 2424799, 0, 0, 2424800, 0, 0, 2424801, 0, 0, 2424802, 0, 0, 2424803, 0, 0, 2359323, 0, 0, 2359324, 0, 0, 2359325, 0, 0, 2359326, 0, 0, 2359327, 0, 0, 2359328, 0, 0, 2359329, 0, 0, 2359330, 0, 0, 2359331, 0, 0, 2359332, 0, 0, 2359333, 0, 0, 2359334, 0, 0, 2359335, 0, 0, 2359336, 0, 0, 2359337, 0, 0, 2359338, 0, 0, 2359339, 0, 0, 2359340, 0, 0, 2359341, 0, 0, 2359342, 0, 0, 2359343, 0, 0, 2359344, 0, 0, 2424866, 0, 0, 2424867, 0, 0, 2424868, 0, 0, 2424869, 0, 0, 2424870, 0, 0, 2424871, 0, 0, 2424872, 0, 0, 2424873, 0, 0, 2424874, 0, 0, 2424875, 0, 0, 2424876, 0, 0 ) diff --git a/game/tilesets/tiles.png b/game/tilesets/tiles.png new file mode 100644 index 0000000..fed0305 Binary files /dev/null and b/game/tilesets/tiles.png differ diff --git a/game/tilesets/tiles.png.import b/game/tilesets/tiles.png.import new file mode 100644 index 0000000..dae24e3 --- /dev/null +++ b/game/tilesets/tiles.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tiles.png-5d675a2fb09e0df27dbb24e34fa9fb00.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tilesets/tiles.png" +dest_files=[ "res://.import/tiles.png-5d675a2fb09e0df27dbb24e34fa9fb00.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/tilesets/tileset.tres b/game/tilesets/tileset.tres new file mode 100644 index 0000000..4f89be4 --- /dev/null +++ b/game/tilesets/tileset.tres @@ -0,0 +1,65 @@ +[gd_resource type="RTileSet" load_steps=6 format=2] + +[ext_resource path="res://tilesets/tiles.png" type="Texture" id=1] + +[sub_resource type="NavigationPolygon" id=1] +vertices = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 ) +polygons = [ PoolIntArray( 0, 1, 2, 3 ) ] + +[sub_resource type="NavigationPolygon" id=2] +vertices = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 ) +polygons = [ PoolIntArray( 0, 1, 2, 3 ) ] + +[sub_resource type="NavigationPolygon" id=3] +vertices = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 ) +polygons = [ PoolIntArray( 0, 1, 2, 3 ) ] + +[sub_resource type="FastnoiseNoiseParams" id=4] + +[resource] +noise = SubResource( 4 ) +0/name = "Grass" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 32, 32, 32, 32 ) +0/tile_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/navigation = SubResource( 1 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape_one_way = false +0/shape_one_way_margin = 0.0 +0/shapes = [ ] +0/z_index = 0 +1/name = "Grass Variant" +1/texture = ExtResource( 1 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 96, 0, 32, 32 ) +1/tile_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/navigation = SubResource( 2 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape_one_way = false +1/shape_one_way_margin = 0.0 +1/shapes = [ ] +1/z_index = 0 +2/name = "Grass Variant 2" +2/texture = ExtResource( 1 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 96, 32, 32, 32 ) +2/tile_mode = 0 +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/navigation = SubResource( 3 ) +2/shape_offset = Vector2( 0, 0 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape_one_way = false +2/shape_one_way_margin = 0.0 +2/shapes = [ ] +2/z_index = 0 diff --git a/game/ui/about/About.tscn b/game/ui/about/About.tscn new file mode 100644 index 0000000..35ac75e --- /dev/null +++ b/game/ui/about/About.tscn @@ -0,0 +1,263 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://ui/about/GodotAuthors.gd" type="Script" id=1] +[ext_resource path="res://ui/about/GodotDonors.gd" type="Script" id=2] +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=3] +[ext_resource path="res://ui/about/GodotLicense.gd" type="Script" id=4] +[ext_resource path="res://ui/about/GodotThirdPartyLicenses.gd" type="Script" id=5] +[ext_resource path="res://ui/about/Authors.gd" type="Script" id=6] +[ext_resource path="res://ui/about/Third-Party Licenses.gd" type="Script" id=7] + +[node name="About" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +theme = ExtResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="PanelContainer" type="PanelContainer" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -368.0 +margin_top = -236.5 +margin_right = 368.0 +margin_bottom = 236.5 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 732.0 +margin_bottom = 469.0 + +[node name="TabContainer" type="TabContainer" parent="PanelContainer/VBoxContainer"] +margin_right = 728.0 +margin_bottom = 431.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +tab_align = 0 + +[node name="Authors" type="ScrollContainer" parent="PanelContainer/VBoxContainer/TabContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 31.0 +margin_right = -4.0 +margin_bottom = -4.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/TabContainer/Authors"] +margin_right = 720.0 +size_flags_horizontal = 3 +script = ExtResource( 6 ) + +[node name="License" type="ScrollContainer" parent="PanelContainer/VBoxContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 31.0 +margin_right = -4.0 +margin_bottom = -4.0 + +[node name="RichTextLabel" type="RichTextLabel" parent="PanelContainer/VBoxContainer/TabContainer/License"] +margin_right = 720.0 +margin_bottom = 396.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Copyright (c) 2019-2020 Péter Magyar + +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." + +[node name="Third-Party Licenses" type="VBoxContainer" parent="PanelContainer/VBoxContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 31.0 +margin_right = -4.0 +margin_bottom = -4.0 +size_flags_horizontal = 3 +script = ExtResource( 7 ) +tree_path = NodePath("HBoxContainer/Tree") +rtl_path = NodePath("HBoxContainer/PanelContainer/RichTextLabel") + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/TabContainer/Third-Party Licenses"] +margin_right = 720.0 +margin_bottom = 51.0 +text = "This project relies on a number of third-party free and open source assets/components, all compatible with the terms of its MIT license. The following is an exhaustive list of all such third-party components with their respective copyright statements and license terms." +autowrap = true + +[node name="HBoxContainer" type="HSplitContainer" parent="PanelContainer/VBoxContainer/TabContainer/Third-Party Licenses"] +margin_top = 59.0 +margin_right = 720.0 +margin_bottom = 396.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +split_offset = -88 + +[node name="Tree" type="Tree" parent="PanelContainer/VBoxContainer/TabContainer/Third-Party Licenses/HBoxContainer"] +margin_right = 266.0 +margin_bottom = 337.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +hide_folding = true +hide_root = true + +[node name="PanelContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer/TabContainer/Third-Party Licenses/HBoxContainer"] +margin_left = 278.0 +margin_right = 720.0 +margin_bottom = 337.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="RichTextLabel" type="RichTextLabel" parent="PanelContainer/VBoxContainer/TabContainer/Third-Party Licenses/HBoxContainer/PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 438.0 +margin_bottom = 333.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Godot" type="TabContainer" parent="PanelContainer/VBoxContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 31.0 +margin_right = -4.0 +margin_bottom = -4.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Authors" type="ScrollContainer" parent="PanelContainer/VBoxContainer/TabContainer/Godot"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 31.0 +margin_right = -4.0 +margin_bottom = -4.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/TabContainer/Godot/Authors"] +margin_right = 712.0 +size_flags_horizontal = 3 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Donors" type="ScrollContainer" parent="PanelContainer/VBoxContainer/TabContainer/Godot"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 31.0 +margin_right = -4.0 +margin_bottom = -4.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/TabContainer/Godot/Donors"] +margin_right = 712.0 +size_flags_horizontal = 3 +script = ExtResource( 2 ) + +[node name="License" type="ScrollContainer" parent="PanelContainer/VBoxContainer/TabContainer/Godot"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 31.0 +margin_right = -4.0 +margin_bottom = -4.0 + +[node name="RichTextLabel" type="RichTextLabel" parent="PanelContainer/VBoxContainer/TabContainer/Godot/License"] +margin_right = 712.0 +margin_bottom = 361.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = " +" +script = ExtResource( 4 ) + +[node name="Third-Party Licenses" type="VBoxContainer" parent="PanelContainer/VBoxContainer/TabContainer/Godot"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 31.0 +margin_right = -4.0 +margin_bottom = -4.0 +size_flags_horizontal = 3 +script = ExtResource( 5 ) +tree_path = NodePath("HBoxContainer/Tree") +rtl_path = NodePath("HBoxContainer/PanelContainer/RichTextLabel") + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/TabContainer/Godot/Third-Party Licenses"] +margin_right = 712.0 +margin_bottom = 51.0 +text = "Godot Engine relies on a number of third-party free and open source libraries, all compatible with the terms of its MIT license. The following is an exhaustive list of all such third-party components with their respective copyright statements and license terms." +autowrap = true + +[node name="HBoxContainer" type="HSplitContainer" parent="PanelContainer/VBoxContainer/TabContainer/Godot/Third-Party Licenses"] +margin_top = 59.0 +margin_right = 712.0 +margin_bottom = 361.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +split_offset = -88 + +[node name="Tree" type="Tree" parent="PanelContainer/VBoxContainer/TabContainer/Godot/Third-Party Licenses/HBoxContainer"] +margin_right = 262.0 +margin_bottom = 302.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +hide_folding = true +hide_root = true + +[node name="PanelContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer/TabContainer/Godot/Third-Party Licenses/HBoxContainer"] +margin_left = 274.0 +margin_right = 712.0 +margin_bottom = 302.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="RichTextLabel" type="RichTextLabel" parent="PanelContainer/VBoxContainer/TabContainer/Godot/Third-Party Licenses/HBoxContainer/PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 434.0 +margin_bottom = 298.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Close" type="Button" parent="PanelContainer/VBoxContainer"] +margin_top = 439.0 +margin_right = 728.0 +margin_bottom = 465.57 +text = "Close" +[connection signal="pressed" from="PanelContainer/VBoxContainer/Close" to="." method="hide"] diff --git a/game/ui/about/Authors.gd b/game/ui/about/Authors.gd new file mode 100644 index 0000000..e7dadf4 --- /dev/null +++ b/game/ui/about/Authors.gd @@ -0,0 +1,38 @@ +extends VBoxContainer + +#this will be parsed from a central file eventually, when it's worth doing it +var data = { + "Lead Developer / Project Owner": [ + "Magyar Péter (Relintai)" + ] +} + +var populated : bool = false + +func _enter_tree(): + connect("visibility_changed", self, "on_visibility_changed") + +func on_visibility_changed(): + if visible: + populate() + +func populate(): + if populated: + return + + populated = true + + for key in data: + var l : Label = Label.new() + l.text = key + add_child(l) + + var il : ItemList = ItemList.new() + il.size_flags_horizontal = Control.SIZE_EXPAND_FILL + il.mouse_filter = MOUSE_FILTER_IGNORE + il.auto_height = true + + for e in data[key]: + il.add_item(e) + + add_child(il) diff --git a/game/ui/about/GodotAuthors.gd b/game/ui/about/GodotAuthors.gd new file mode 100644 index 0000000..e09af15 --- /dev/null +++ b/game/ui/about/GodotAuthors.gd @@ -0,0 +1,31 @@ +extends VBoxContainer + +var populated : bool = false + +func _enter_tree(): + connect("visibility_changed", self, "on_visibility_changed") + +func on_visibility_changed(): + if visible: + populate() + +func populate(): + if populated: + return + + populated = true + + for key in Engine.get_author_info(): + var l : Label = Label.new() + l.text = key + add_child(l) + + var il : ItemList = ItemList.new() + il.size_flags_horizontal = Control.SIZE_EXPAND_FILL + il.mouse_filter = MOUSE_FILTER_IGNORE + il.auto_height = true + + for e in Engine.get_author_info()[key]: + il.add_item(e) + + add_child(il) diff --git a/game/ui/about/GodotDonors.gd b/game/ui/about/GodotDonors.gd new file mode 100644 index 0000000..3c74f43 --- /dev/null +++ b/game/ui/about/GodotDonors.gd @@ -0,0 +1,31 @@ +extends VBoxContainer + +var populated : bool = false + +func _enter_tree(): + connect("visibility_changed", self, "on_visibility_changed") + +func on_visibility_changed(): + if visible: + populate() + +func populate(): + if populated: + return + + populated = true + + for key in Engine.get_donor_info(): + var l : Label = Label.new() + l.text = key + add_child(l) + + var il : ItemList = ItemList.new() + il.size_flags_horizontal = Control.SIZE_EXPAND_FILL + il.mouse_filter = MOUSE_FILTER_IGNORE + il.auto_height = true + + for e in Engine.get_donor_info()[key]: + il.add_item(e) + + add_child(il) diff --git a/game/ui/about/GodotLicense.gd b/game/ui/about/GodotLicense.gd new file mode 100644 index 0000000..9daa4e3 --- /dev/null +++ b/game/ui/about/GodotLicense.gd @@ -0,0 +1,18 @@ +extends RichTextLabel + +var populated : bool = false + +func _enter_tree(): + connect("visibility_changed", self, "on_visibility_changed") + +func on_visibility_changed(): + if visible: + populate() + +func populate(): + if populated: + return + + populated = true + + text = Engine.get_license_text() diff --git a/game/ui/about/GodotThirdPartyLicenses.gd b/game/ui/about/GodotThirdPartyLicenses.gd new file mode 100644 index 0000000..37ef73d --- /dev/null +++ b/game/ui/about/GodotThirdPartyLicenses.gd @@ -0,0 +1,51 @@ +extends VBoxContainer + +export(NodePath) var tree_path : NodePath +var tree : Tree + +export(NodePath) var rtl_path : NodePath +var rtl : RichTextLabel + +var populated : bool = false + +func _enter_tree(): + tree = get_node(tree_path) as Tree + rtl = get_node(rtl_path) as RichTextLabel + + connect("visibility_changed", self, "on_visibility_changed") + tree.connect("item_selected", self, "on_item_selected") + +func on_visibility_changed(): + if visible: + populate() + +func on_item_selected(): + rtl.text = tree.get_selected().get_metadata(0) + +func populate(): + if populated: + return + + populated = true + + tree.create_item() + + for info in Engine.get_copyright_info(): + var ti : TreeItem = tree.create_item() + + var st : String = info["name"] + "\n\n" + + for p in info["parts"]: + for k in p: + st += k + ":\n\n" + + if p[k] is Array: + for it in p[k]: + st += String(it) + "\n" + else: + st += String(p[k]) + "\n" + + st += "\n\n" + + ti.set_metadata(0, st) + ti.set_text(0, info["name"]) diff --git a/game/ui/about/Third-Party Licenses.gd b/game/ui/about/Third-Party Licenses.gd new file mode 100644 index 0000000..e22312c --- /dev/null +++ b/game/ui/about/Third-Party Licenses.gd @@ -0,0 +1,147 @@ +extends VBoxContainer + +export(NodePath) var tree_path : NodePath +var tree : Tree + +export(NodePath) var rtl_path : NodePath +var rtl : RichTextLabel + +var populated : bool = false + +var _data : Array = Array() + +enum AttibutionIndex { + ATTRIBUTION_INDEX_NAME = 0, + ATTRIBUTION_INDEX_URL = 1, + ATTRIBUTION_INDEX_DESCRIPTION = 2, + ATTRIBUTION_INDEX_LICENSES = 3, + ATTRIBUTION_INDEX_FILES = 4, + ATTRIBUTION_INDEX_MAX = 5, +} + +func _enter_tree(): + tree = get_node(tree_path) as Tree + rtl = get_node(rtl_path) as RichTextLabel + + connect("visibility_changed", self, "on_visibility_changed") + tree.connect("item_selected", self, "on_item_selected") + +func on_visibility_changed(): + if visible: + populate() + +func on_item_selected(): + rtl.text = tree.get_selected().get_metadata(0) + +func populate(): + if populated: + return + + populated = true + + #root + tree.create_item() + + _data.clear() + load_all_xmls("res://") + + for entry in _data: + var main : TreeItem = tree.create_item() + + main.set_text(0, entry[0][0]) + main.set_metadata(0, data_arr_to_string(entry[0])) + + for i in range(1, entry.size()): + var curr : TreeItem = tree.create_item(main) + + curr.set_text(0, entry[i][0]) + curr.set_metadata(0, data_arr_to_string(entry[i])) + +func load_all_xmls(path : String) -> void: + var dir = Directory.new() + if dir.open(path) == OK: + dir.list_dir_begin() + var file_name = dir.get_next() + while file_name != "": + if file_name == "." or file_name == "..": + file_name = dir.get_next() + continue + + if dir.current_is_dir(): + if path == "res://": + load_all_xmls(path + file_name) + else: + load_all_xmls(path + "/" + file_name) + else: + if file_name == "Attributions.xml": + if path == "res://": + load_xml(path + file_name) + else: + load_xml(path + "/" + file_name) + + file_name = dir.get_next() + else: + print("An error occurred when trying to access the path: " + path) + +func load_xml(path : String) -> void: + var parser : XMLParser = XMLParser.new() + var err = parser.open(path) + + if err != OK: + print("Couldn't open file: " + path + " Err: " + err) + return + + var attributions : Array = Array() + attributions.resize(1) + var attrib : PoolStringArray = PoolStringArray() + attrib.resize(AttibutionIndex.ATTRIBUTION_INDEX_MAX) + var curr_element : String = "" + while parser.read() == OK: + if parser.get_node_type() == XMLParser.NODE_ELEMENT: + curr_element = parser.get_node_name() + + elif parser.get_node_type() == XMLParser.NODE_TEXT: + if curr_element == "Name": + attrib[AttibutionIndex.ATTRIBUTION_INDEX_NAME] = parser.get_node_data() + elif curr_element == "Description": + attrib[AttibutionIndex.ATTRIBUTION_INDEX_DESCRIPTION] = parser.get_node_data() + elif curr_element == "Licenses": + attrib[AttibutionIndex.ATTRIBUTION_INDEX_LICENSES] = parser.get_node_data() + elif curr_element == "URL": + attrib[AttibutionIndex.ATTRIBUTION_INDEX_URL] = parser.get_node_data() + elif curr_element == "Files": + attrib[AttibutionIndex.ATTRIBUTION_INDEX_FILES] = parser.get_node_data() + + elif parser.get_node_type() == XMLParser.NODE_ELEMENT_END: + if parser.get_node_name() == "Attribution": + attributions.push_back(attrib) + attrib = PoolStringArray() + attrib.resize(AttibutionIndex.ATTRIBUTION_INDEX_MAX) + elif parser.get_node_name() == "Module": + attributions[0] = attrib + attrib = PoolStringArray() + attrib.resize(AttibutionIndex.ATTRIBUTION_INDEX_MAX) + + if attributions[0] == null: + print("Attributions file does not have a Module tag! Path: " + path) + + _data.push_back(attributions) + +func data_arr_to_string(arr : Array) -> String: + var s : String = "" + + s += arr[AttibutionIndex.ATTRIBUTION_INDEX_NAME] + "\n\n" + + if arr[AttibutionIndex.ATTRIBUTION_INDEX_URL] != "": + s += "url: " + arr[AttibutionIndex.ATTRIBUTION_INDEX_URL] + "\n\n" + + s += arr[AttibutionIndex.ATTRIBUTION_INDEX_DESCRIPTION] + "\n\n" + + s += "License(s):\n" + s += arr[AttibutionIndex.ATTRIBUTION_INDEX_LICENSES] + "\n\n" + + if arr[AttibutionIndex.ATTRIBUTION_INDEX_FILES] != "": + s += "File(s):\n\n" + s += arr[AttibutionIndex.ATTRIBUTION_INDEX_FILES] + + return s diff --git a/game/ui/actionbars/ActionBar.gd b/game/ui/actionbars/ActionBar.gd new file mode 100644 index 0000000..e69ed0d --- /dev/null +++ b/game/ui/actionbars/ActionBar.gd @@ -0,0 +1,46 @@ +extends Control + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export (PackedScene) var action_bar_entry_scene +export (NodePath) var child_container_path +var child_container + +func _ready() -> void: + child_container = get_node(child_container_path) + +func set_actionbar_entry(action_bar_entry : ActionBarEntry, player: Entity) -> void: + + for i in range(action_bar_entry.slot_num): + var b : ActionBarButtonEntry = action_bar_entry.get_button_for_slotid(i) + + #for i in range(action_bar_entry.get_action_bar_entry_count()): + #var b = action_bar_entry.get_button(i) + + var s : Node = action_bar_entry_scene.instance() + + child_container.add_child(s) + + s.set_player(player) + s.set_button_entry(b, player) + + s.owner = child_container + diff --git a/game/ui/actionbars/ActionBar.tscn b/game/ui/actionbars/ActionBar.tscn new file mode 100644 index 0000000..3a2b8da --- /dev/null +++ b/game/ui/actionbars/ActionBar.tscn @@ -0,0 +1,33 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/actionbars/ActionBarEntry.tscn" type="PackedScene" id=1] +[ext_resource path="res://ui/actionbars/ActionBar.gd" type="Script" id=2] + +[node name="ActionBar" type="VBoxContainer"] +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -40.0 +margin_top = -553.0 +mouse_filter = 2 +custom_constants/separation = 0 +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} +action_bar_entry_scene = ExtResource( 1 ) +child_container_path = NodePath("GridContainer") + +[node name="Control" type="Control" parent="."] +margin_right = 40.0 +margin_bottom = 553.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="GridContainer" type="GridContainer" parent="."] +margin_top = 553.0 +margin_right = 40.0 +margin_bottom = 553.0 +custom_constants/vseparation = 0 +custom_constants/hseparation = 0 diff --git a/game/ui/actionbars/ActionBarEntry.gd b/game/ui/actionbars/ActionBarEntry.gd new file mode 100644 index 0000000..e3b10c2 --- /dev/null +++ b/game/ui/actionbars/ActionBarEntry.gd @@ -0,0 +1,388 @@ +extends Button + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export (NodePath) var button_path : NodePath +export (NodePath) var icon_path : NodePath +export (NodePath) var cooldown_indicator_path : NodePath +export (NodePath) var cooldown_text_path : NodePath +export (NodePath) var keybind_text_path : NodePath + +var button : Button +var icon_rect : TextureRect +var cooldown_indicator : TextureProgress +var cooldown_text : Label +var keybind_text : Label + +var button_entry : ActionBarButtonEntry +var player : Entity + +var spell_id : int = 0 +var spell_type : int = 0 + +var cd : float = 0 +var categ_cd : float = 0 + +var has_gcd : bool = false +var gcd : float = 0.0 + +func _ready() -> void: + button = get_node(button_path) as Button + icon_rect = get_node(icon_path) as TextureRect + + cooldown_indicator = get_node(cooldown_indicator_path) as TextureProgress + cooldown_text = get_node(cooldown_text_path) as Label + keybind_text = get_node(keybind_text_path) as Label + + button.connect("pressed", self, "_on_button_pressed") + + ProfileManager.connect("keybinds_changed", self, "on_keybinds_changed") + +func _exit_tree(): + if icon_rect.texture != null: + ThemeAtlas.unref_texture(icon_rect.texture) + +func _process(delta : float) -> void: + if cd > 0: + cd -= delta + + if categ_cd > 0: + categ_cd -= delta + + if cd < 0.02 and categ_cd < 0.02 and gcd < 0.001: + set_process(false) + hide_cooldown_timer() + return + + if gcd > 0.001: + gcd -= delta + + if gcd < 0: + gcd = 0 + + var value : float = gcd + + if cd > value: + value = cd + + if categ_cd > value: + value = categ_cd + + set_cooldown_time(value) + +func set_cooldown_time(time : float) -> void: + cooldown_indicator.value = time + cooldown_text.text = str(int(time)) + +func show_cooldown_timer(max_time : float) -> void: + if cooldown_indicator.visible and cooldown_indicator.max_value < max_time: + cooldown_indicator.max_value = max_time + + if not cooldown_indicator.visible: + cooldown_indicator.max_value = max_time + + cooldown_indicator.show() + cooldown_text.show() + +func hide_cooldown_timer() -> void: + cooldown_indicator.hide() + cooldown_text.hide() + +func set_button_entry(action_bar_button_entry: ActionBarButtonEntry, p_player: Entity) -> void: + player = p_player + + button_entry = action_bar_button_entry + + var iea : InputEventAction = InputEventAction.new() + + var action_name : String = "actionbar_" + str(action_bar_button_entry.action_bar_id) + "_" + str(action_bar_button_entry.slot_id) + + if not InputMap.has_action(action_name): + InputMap.add_action(action_name) + + on_keybinds_changed() + + iea.action = action_name + iea.pressed = true + var sc : ShortCut = ShortCut.new() + sc.shortcut = iea + shortcut = sc + + setup_icon() + refresh_known() + +func on_keybinds_changed(): + var action_name : String = "actionbar_" + str(button_entry.action_bar_id) + "_" + str(button_entry.slot_id) + + keybind_text.text = "" + + if not InputMap.has_action(action_name): + return + + var action_list : Array = InputMap.get_action_list(action_name) + + keybind_text.text = "" + + for action in action_list: + if action is InputEventKey: + var s : String = "" + + if action.shift: + s += "S-" + + if action.alt: + s += "A-" + + if action.control: + s += "C-" + + if action.command: + s += "Co-" + + if action.meta: + s += "M-" + + s += char(action.scancode) + + keybind_text.text = s + +func setup_icon() -> void: + if (button_entry.type == ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_NONE): + if icon_rect.texture != null: + ThemeAtlas.unref_texture(icon_rect.texture) + + icon_rect.texture = null + elif (button_entry.type == ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_SPELL): + if (button_entry.item_path == ""): + if icon_rect.texture != null: + ThemeAtlas.unref_texture(icon_rect.texture) + + icon_rect.texture = null + return + + if icon_rect.texture != null: + ThemeAtlas.unref_texture(icon_rect.texture) + icon_rect.texture = null + + var spell = ESS.resource_db.get_spell_path(button_entry.item_path) + + if spell == null: + return + + if spell.icon != null: + icon_rect.texture = ThemeAtlas.add_texture(spell.icon) +# icon_rect.texture = spell.icon + + spell_id = spell.id + spell_type = spell.spell_type + has_gcd = spell.cooldown_global_cooldown_enabled + elif (button_entry.type == ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_ITEM): + if (button_entry.item_path == ""): + if icon_rect.texture != null: + ThemeAtlas.unref_texture(icon_rect.texture) + + icon_rect.texture = null + return + + if icon_rect.texture != null: + ThemeAtlas.unref_texture(icon_rect.texture) + icon_rect.texture = null + + var item : ItemTemplate = ESS.get_resource_db().get_item_template_path(button_entry.item_path) + + if item.icon != null: + icon_rect.texture = ThemeAtlas.add_texture(item.icon) +# icon_rect.texture = item.icon + + spell_id = item.use_spell.id + spell_type = item.use_spell.spell_type + has_gcd = item.use_spell.cooldown_global_cooldown_enabled + +func _on_button_pressed() -> void: + if button_entry.type == ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_SPELL: + if (button_entry.item_path == ""): + return + + player.spell_crequest_cast(ESS.resource_db.spell_path_to_id(button_entry.item_path)) + + elif button_entry.type == ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_ITEM: + if (button_entry.item_path == ""): + return + + player.item_crequest_use(ESS.resource_db.item_template_path_to_id(button_entry.item_path)) + +func set_button_entry_data(type: int, item_path: String) -> void: + button_entry.type = type + button_entry.item_path = item_path + + setup_icon() + +func get_drag_data(pos: Vector2) -> Object: + if (button_entry.type == ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_NONE): + return null + + if player.actionbar_locked: + return null + + var tr = TextureRect.new() + tr.texture = icon_rect.texture + tr.expand = true + + tr.rect_size = icon_rect.rect_size + set_drag_preview(tr) + + var esd = ESDragAndDrop.new() + + if (button_entry.type == ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_SPELL): + esd.type = ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_SPELL + elif (button_entry.type == ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_ITEM): + esd.type = ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_ITEM + + esd.item_path = button_entry.item_path + + button_entry.type = ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_NONE + button_entry.item_path = "" + +# Profiles.save() + + setup_icon() + + return esd + +func can_drop_data(pos, data) -> bool: + return data.is_class("ESDragAndDrop") + + +func drop_data(pos, esd) -> void: + if esd.type == ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_SPELL and button_entry.item_path == esd.item_path: + return + + if esd.type == ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_SPELL: + button_entry.type = ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_SPELL + button_entry.item_path = esd.item_path + elif esd.type == ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_ITEM or esd.type == ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_INVENTORY_ITEM or esd.type == ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_EQUIPPED_ITEM: + button_entry.type = ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_ITEM + + if button_entry.item_path != esd.item_path: + var it : ItemTemplate = ESS.get_resource_db().get_item_template_path(esd.item_path) + + if it == null or it.use_spell == null: + button_entry.item_path = "" + else: + button_entry.item_path = esd.item_path + + + setup_icon() + refresh_known() + +func refresh_known(): + if !player: + set_known(true) + return + + if (button_entry.type == ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_NONE): + set_known(true) + elif (button_entry.type == ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_SPELL): + var spell = ESS.resource_db.get_spell_path(button_entry.item_path) + + set_known(player.spell_hasc(spell)) + elif (button_entry.type == ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_ITEM): + set_known(true) + +func set_known(val : bool): + if val: + icon_rect.modulate = Color(1, 1, 1, 1) + else: + icon_rect.modulate = Color(0.5, 0.5, 0.5, 1) + +func set_player(p_player: Entity) -> void: + if not player == null: + player.disconnect("ccooldown_added", self, "_ccooldown_added") + player.disconnect("ccooldown_removed", self, "_ccooldown_removed") + player.disconnect("ccategory_cooldown_added", self, "_ccategory_cooldown_added") + player.disconnect("ccategory_cooldown_removed", self, "_ccategory_cooldown_removed") + + player.disconnect("cgcd_started", self, "_cgcd_started") + player.disconnect("cgcd_finished", self, "_cgcd_finished") + + player.disconnect("cspell_added", self, "_cspell_added") + player.disconnect("cspell_removed", self, "_cspell_removed") + + player = null + + player = p_player + + if player == null: + return + +# for i in range(player.cooldown_getc_count()): +# var cooldown : Cooldown = player.cooldown_getc(i) + + player.connect("ccooldown_added", self, "_ccooldown_added") + player.connect("ccooldown_removed", self, "_ccooldown_removed") + player.connect("ccategory_cooldown_added", self, "_ccategory_cooldown_added") + player.connect("ccategory_cooldown_removed", self, "_ccategory_cooldown_removed") + + player.connect("cgcd_started", self, "_cgcd_started") + player.connect("cgcd_finished", self, "_cgcd_finished") + + player.connect("cspell_added", self, "_cspell_added") + player.connect("cspell_removed", self, "_cspell_removed") + +func _cspell_added(entity: Entity, spell: Spell): + if button_entry.type == ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_SPELL && button_entry.item_path == spell.resource_path: + set_known(true) + +func _cspell_removed(entity: Entity, spell: Spell): + if button_entry.type == ActionBarButtonEntry.ACTION_BAR_BUTTON_ENTRY_TYPE_SPELL && button_entry.item_path == spell.resource_path: + set_known(false) + +func _ccooldown_added(id : int, value : float) -> void: + if id == spell_id: + cd = value + set_process(true) + show_cooldown_timer(value) + +func _ccooldown_removed(id : int, value : float) -> void: + if id == spell_id: + cd = 0 + +func _ccategory_cooldown_added(id : int, value : float) -> void: + if id == spell_type: + categ_cd = value + set_process(true) + show_cooldown_timer(value) + +func _ccategory_cooldown_removed(id : int, value : float) -> void: + if id == spell_type: + categ_cd = 0 + + +func _cgcd_started(e : Entity, value :float) -> void: + if not has_gcd: + return + + gcd = value + show_cooldown_timer(value) + set_process(true) + +func _cgcd_finished(val) -> void: + gcd = 0 diff --git a/game/ui/actionbars/ActionBarEntry.tscn b/game/ui/actionbars/ActionBarEntry.tscn new file mode 100644 index 0000000..06aa5e9 --- /dev/null +++ b/game/ui/actionbars/ActionBarEntry.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://ui/actionbars/ActionBarEntry.gd" type="Script" id=1] +[ext_resource path="res://ui/theme/cooldown_progress.png" type="Texture" id=2] +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=3] +[ext_resource path="res://ui/theme/actionbar_dynamicfont.tres" type="DynamicFont" id=5] + +[node name="ActionBarEntry" type="TouchButton"] +margin_right = 46.0 +margin_bottom = 46.0 +rect_min_size = Vector2( 46, 46 ) +focus_mode = 0 +theme = ExtResource( 3 ) +shortcut_in_tooltip = false +action_mode = 0 +button_mask = 3 +enabled_focus_mode = 0 +keep_pressed_outside = true +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +button_path = NodePath(".") +icon_path = NodePath("MarginContainer/TextureRect") +cooldown_indicator_path = NodePath("CooldownIndicator") +cooldown_text_path = NodePath("CooldownText") +keybind_text_path = NodePath("KeybindText") + +[node name="MarginContainer" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +custom_constants/margin_right = 2 +custom_constants/margin_top = 2 +custom_constants/margin_left = 2 +custom_constants/margin_bottom = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="TextureRect" type="TextureRect" parent="MarginContainer"] +margin_left = 2.0 +margin_top = 2.0 +margin_right = 44.0 +margin_bottom = 44.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +expand = true + +[node name="CooldownIndicator" type="TextureProgress" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +step = 0.0 +texture_progress = ExtResource( 2 ) +fill_mode = 5 +nine_patch_stretch = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CooldownText" type="Label" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_fonts/font = ExtResource( 5 ) +align = 1 +valign = 1 +clip_text = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="KeybindText" type="Label" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 2.0 +margin_top = 2.0 +margin_right = -2.0 +margin_bottom = -2.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/game/ui/actionbars/Actionbars.gd b/game/ui/actionbars/Actionbars.gd new file mode 100644 index 0000000..2e0c96d --- /dev/null +++ b/game/ui/actionbars/Actionbars.gd @@ -0,0 +1,70 @@ +extends Node + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(PackedScene) var actionbar_scene + +var _player : Entity +var _abp : ActionBarProfile + +func set_player(p_player: Entity) -> void: + if not _player == null: + clear_actionbars() + _player.disconnect("centity_data_changed", self, "_centity_data_changed") + _player = null + + _player = p_player + + if _player == null: + return + + _centity_data_changed(_player.centity_data) + _player.connect("centity_data_changed", self, "_centity_data_changed") + +func _centity_data_changed(cls: EntityData) -> void: + if _abp != null: + _abp.disconnect("changed", self, "on_changed") + + clear_actionbars() + + if cls == null: + return + + _abp = _player.get_action_bar_profile() + + for i in range(_abp.get_action_bar_count()): + var abe = _abp.get_action_bar(i) + var s = actionbar_scene.instance() + + add_child(s) + + s.set_actionbar_entry(abe, _player) + + s.owner = self + + +func clear_actionbars() -> void: + var children = get_children() + + for c in children: + c.queue_free() + + diff --git a/game/ui/actionbars/Actionbars.tscn b/game/ui/actionbars/Actionbars.tscn new file mode 100644 index 0000000..af3f2b7 --- /dev/null +++ b/game/ui/actionbars/Actionbars.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/actionbars/Actionbars.gd" type="Script" id=1] +[ext_resource path="res://ui/actionbars/ActionBar.tscn" type="PackedScene" id=2] + +[node name="Actionbars" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_constants/separation = 0 +alignment = 2 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +actionbar_scene = ExtResource( 2 ) diff --git a/game/ui/actionbars/EditorKeybindSetup.gd b/game/ui/actionbars/EditorKeybindSetup.gd new file mode 100644 index 0000000..df71843 --- /dev/null +++ b/game/ui/actionbars/EditorKeybindSetup.gd @@ -0,0 +1,53 @@ +tool +extends Node + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(bool) var create = false setget createf +export(bool) var delete = false setget deletef + + +func createf(value : bool) -> void: + if not value: + return + + for i in range(6): + for j in range(12): + var actionstr : String = "input/actionbar_" + str(i) + "_" + str(j) + + var action : Dictionary = Dictionary() + action["events"] = Array() + action["deadzone"] = 0.5 + + ProjectSettings.set(name, actionstr) + ProjectSettings.save() + + +func deletef(value : bool) -> void: + if not value: + return + + for i in range(6): + for j in range(12): + var action : String = "input/actionbar_" + str(i) + "_" + str(j) + + ProjectSettings.clear(action) + ProjectSettings.save() diff --git a/game/ui/actionbars/game_module.tres b/game/ui/actionbars/game_module.tres new file mode 100644 index 0000000..a301a86 --- /dev/null +++ b/game/ui/actionbars/game_module.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" load_steps=3 format=2] + +[ext_resource path="res://scripts/game_modules/ui_gui_child_module.gd" type="Script" id=1] +[ext_resource path="res://ui/actionbars/Actionbars.tscn" type="PackedScene" id=2] + +[resource] +script = ExtResource( 1 ) +enabled = true +scene = ExtResource( 2 ) +hide = false diff --git a/game/ui/auraframe/AuraEntry.gd b/game/ui/auraframe/AuraEntry.gd new file mode 100644 index 0000000..dd35fba --- /dev/null +++ b/game/ui/auraframe/AuraEntry.gd @@ -0,0 +1,95 @@ +extends VBoxContainer + +# Copyright (c) 2019-2021 Péter Magyar +# +# 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. + +export (NodePath) var texture_rect_path : NodePath +export (NodePath) var tooltip_node_path : NodePath +export (NodePath) var time_label_path : NodePath + +export (NodePath) var magic_bg_path : NodePath +export (NodePath) var bleed_bg_path : NodePath +export (NodePath) var poison_bg_path : NodePath +export (NodePath) var physical_bg_path : NodePath +export (NodePath) var curse_bg_path : NodePath + +var texture_rect : TextureRect +var tooltip_node : Control +var time_label : Label + +var magic_bg : Node +var bleed_bg : Node +var poison_bg : Node +var physical_bg : Node +var curse_bg : Node + +var aura_data : AuraData + +func _ready(): + set_process(false) + + texture_rect = get_node(texture_rect_path) as TextureRect + tooltip_node = get_node(tooltip_node_path) as Control + time_label = get_node(time_label_path) as Label + + magic_bg = get_node(magic_bg_path) as Node + bleed_bg = get_node(bleed_bg_path) as Node + poison_bg = get_node(poison_bg_path) as Node + physical_bg = get_node(physical_bg_path) as Node + curse_bg = get_node(curse_bg_path) as Node + +func _process(delta): +# if not aura_data.is_timed: +# return + + time_label.text = str(int(aura_data.remaining_time)) + "s" + + if (aura_data.remaining_time <= 0): + queue_free() + +func set_aura_data(paura_data : AuraData): + aura_data = paura_data + + if aura_data.is_timed: + set_process(true) + time_label.text = str(aura_data.remaining_time) + else: + set_process(false) + time_label.text = "" + + tooltip_node.hint_tooltip = aura_data.aura.aura_text_description + texture_rect.texture = aura_data.aura.icon + + if aura_data.aura.aura_debuff: + var aura_type : int = aura_data.aura.aura_type + + if aura_type == SpellEnums.AURA_TYPE_MAGIC: + magic_bg.visible = true + elif aura_type == SpellEnums.AURA_TYPE_BLEED: + bleed_bg.visible = true + elif aura_type == SpellEnums.AURA_TYPE_CURSE: + curse_bg.visible = true + elif aura_type == SpellEnums.AURA_TYPE_PHYSICAL: + physical_bg.visible = true + elif aura_type == SpellEnums.AURA_TYPE_POISON: + poison_bg.visible = true + +func get_aura_data() -> AuraData: + return aura_data diff --git a/game/ui/auraframe/AuraEntry.tscn b/game/ui/auraframe/AuraEntry.tscn new file mode 100644 index 0000000..7154325 --- /dev/null +++ b/game/ui/auraframe/AuraEntry.tscn @@ -0,0 +1,94 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/auraframe/AuraEntry.gd" type="Script" id=1] +[ext_resource path="res://ui/theme/ui_dynamicfont_small.tres" type="DynamicFont" id=2] + +[node name="AuraEntry" type="VBoxContainer"] +margin_right = 30.0 +margin_bottom = 51.0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +texture_rect_path = NodePath("MarginContainer/MarginContainer/TextureRect") +tooltip_node_path = NodePath("MarginContainer/MarginContainer") +time_label_path = NodePath("MarginContainer2/Label") +magic_bg_path = NodePath("MarginContainer/MagicBG") +bleed_bg_path = NodePath("MarginContainer/BleedBG") +poison_bg_path = NodePath("MarginContainer/PoisonBG") +physical_bg_path = NodePath("MarginContainer/PhysicalBG") +curse_bg_path = NodePath("MarginContainer/CurseBG") + +[node name="MarginContainer" type="MarginContainer" parent="."] +margin_right = 30.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 30, 30 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="MagicBG" type="ColorRect" parent="MarginContainer"] +visible = false +margin_right = 30.0 +margin_bottom = 30.0 +color = Color( 0.215686, 0.0666667, 0.772549, 1 ) + +[node name="BleedBG" type="ColorRect" parent="MarginContainer"] +visible = false +margin_right = 30.0 +margin_bottom = 30.0 +color = Color( 0.541176, 0, 0, 1 ) + +[node name="PoisonBG" type="ColorRect" parent="MarginContainer"] +visible = false +margin_right = 30.0 +margin_bottom = 30.0 +color = Color( 0, 0.301961, 0.027451, 1 ) + +[node name="PhysicalBG" type="ColorRect" parent="MarginContainer"] +visible = false +margin_right = 30.0 +margin_bottom = 30.0 +color = Color( 0.27451, 0.0627451, 0.0627451, 1 ) + +[node name="CurseBG" type="ColorRect" parent="MarginContainer"] +visible = false +margin_right = 30.0 +margin_bottom = 30.0 +color = Color( 0.172549, 0.0588235, 0.262745, 1 ) + +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer"] +margin_right = 30.0 +margin_bottom = 30.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_constants/margin_right = 1 +custom_constants/margin_top = 1 +custom_constants/margin_left = 1 +custom_constants/margin_bottom = 1 + +[node name="TextureRect" type="TextureRect" parent="MarginContainer/MarginContainer"] +margin_left = 1.0 +margin_top = 1.0 +margin_right = 29.0 +margin_bottom = 29.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +expand = true + +[node name="MarginContainer2" type="MarginContainer" parent="."] +margin_top = 38.0 +margin_right = 30.0 +margin_bottom = 51.0 +rect_min_size = Vector2( 30, 10 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="MarginContainer2"] +margin_right = 30.0 +margin_bottom = 13.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_fonts/font = ExtResource( 2 ) +align = 1 +valign = 1 +max_lines_visible = 1 diff --git a/game/ui/auraframe/AuraFrame.gd b/game/ui/auraframe/AuraFrame.gd new file mode 100644 index 0000000..5c96e23 --- /dev/null +++ b/game/ui/auraframe/AuraFrame.gd @@ -0,0 +1,74 @@ +extends Control + +# Copyright (c) 2019-2021 Péter Magyar +# +# 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. + +export (PackedScene) var aura_entry_scene : PackedScene + +export (NodePath) var buff_container_path : NodePath +export (NodePath) var debuff_container_path : NodePath + +var buff_container_node : Node +var debuff_container_node : Node + +var buff_nodes : Array +var debuff_nodes : Array + +var entity : Entity + +func _ready(): + buff_container_node = get_node(buff_container_path) + debuff_container_node = get_node(debuff_container_path) + +func set_target(pentity : Entity) -> void: + if entity != null: + pass + + entity = pentity + entity.connect("notification_caura", self, "on_notification_caura") + +func on_notification_caura(what :int, aura_data : AuraData) -> void: + if what == SpellEnums.NOTIFICATION_AURA_ADDED: + var created_node : Node = aura_entry_scene.instance() + + if (not aura_data.aura.aura_debuff): + buff_container_node.add_child(created_node) + created_node.owner = buff_container_node + else: + debuff_container_node.add_child(created_node) + created_node.owner = debuff_container_node + + created_node.set_aura_data(aura_data) + elif what == SpellEnums.NOTIFICATION_AURA_REMOVED: + if (not aura_data.aura.aura_debuff): + for bn in buff_container_node.get_children(): + if bn.get_aura_data() == aura_data: + buff_container_node.remove_child(bn) + bn.queue_free() + return + else: + for bn in debuff_container_node.get_children(): + if bn.get_aura_data() == aura_data: + debuff_container_node.remove_child(bn) + bn.queue_free() + return + +func set_player(player : Entity) -> void: + set_target(player) diff --git a/game/ui/auraframe/AuraFrame.tscn b/game/ui/auraframe/AuraFrame.tscn new file mode 100644 index 0000000..3290e0a --- /dev/null +++ b/game/ui/auraframe/AuraFrame.tscn @@ -0,0 +1,44 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/auraframe/AuraFrame.gd" type="Script" id=1] +[ext_resource path="res://ui/auraframe/AuraEntry.tscn" type="PackedScene" id=2] + +[node name="AuraFrame" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +aura_entry_scene = ExtResource( 2 ) +buff_container_path = NodePath("MarginContainer/VBoxContainer/Buffs") +debuff_container_path = NodePath("MarginContainer/VBoxContainer/Debuffs") + +[node name="MarginContainer" type="MarginContainer" parent="."] +anchor_left = 1.0 +anchor_right = 1.0 +margin_left = -335.0 +margin_bottom = 157.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +margin_right = 335.0 +margin_bottom = 157.0 +mouse_filter = 2 + +[node name="Buffs" type="GridContainer" parent="MarginContainer/VBoxContainer"] +margin_right = 335.0 +margin_bottom = 76.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +columns = 9 + +[node name="Debuffs" type="GridContainer" parent="MarginContainer/VBoxContainer"] +margin_top = 80.0 +margin_right = 335.0 +margin_bottom = 157.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +columns = 9 diff --git a/game/ui/auraframe/game_module.tres b/game/ui/auraframe/game_module.tres new file mode 100644 index 0000000..bf19038 --- /dev/null +++ b/game/ui/auraframe/game_module.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" load_steps=3 format=2] + +[ext_resource path="res://scripts/game_modules/ui_gui_child_module.gd" type="Script" id=1] +[ext_resource path="res://ui/auraframe/AuraFrame.tscn" type="PackedScene" id=2] + +[resource] +script = ExtResource( 1 ) +enabled = true +scene = ExtResource( 2 ) +hide = false diff --git a/game/ui/autoload/SettingsManager.gd b/game/ui/autoload/SettingsManager.gd new file mode 100644 index 0000000..665f517 --- /dev/null +++ b/game/ui/autoload/SettingsManager.gd @@ -0,0 +1,227 @@ +extends Node + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +signal setting_changed(section, key, value) +signal settings_loaded() + +const SAVE_PATH : String = "user://settings.cfg" + +var loaded : bool = false + +var _config_file : ConfigFile = ConfigFile.new() +var _settings : Dictionary = { + "rendering" : { + "window_size" : OS.window_size, + "window_position" : OS.window_position, + + "viewport_scale" : ProjectSettings.get("display/window/size/viewport_scale"), + "thread_model" : ProjectSettings.get("rendering/threads/thread_model"), + "borderless" : ProjectSettings.get("display/window/size/borderless"), + "fullscreen" : ProjectSettings.get("display/window/size/fullscreen"), + "always_on_top" : ProjectSettings.get("display/window/size/always_on_top"), + "shadows_enabled" : ProjectSettings.get("rendering/quality/shadows/enabled"), + "use_vsync" : ProjectSettings.get("display/window/vsync/use_vsync"), + "vsync_via_compositor" : ProjectSettings.get("display/window/vsync/vsync_via_compositor"), + }, + "ui" : { + "touchscreen_mode" : OS.has_touchscreen_ui_hint(), + "ui_scale" : ProjectSettings.get("display/window/size/ui_scale"), + "ui_scale_touch" : ProjectSettings.get("display/window/size/ui_scale_touch"), + }, + "debug" : { + "debug_info" : false + } +} + +func _ready(): + load_settings() + + var actions : Array = InputMap.get_actions() + + for action in actions: + var acts : Array = InputMap.get_action_list(action) + + for i in range(len(acts)): + var a = acts[i] + if a is InputEventKey: + var nie : BSInputEventKey = BSInputEventKey.new() + nie.from_input_event_key(a as InputEventKey) + acts[i] = nie + + InputMap.action_erase_event(action, a) + InputMap.action_add_event(action, nie) + + set_stretch() + setup_window() + +func _exit_tree(): + if OS.window_fullscreen: + return + + var wp : Vector2 = OS.window_position + var ws : Vector2 = OS.window_size + + var wpr = get_value("rendering", "window_position") + var wsr = get_value("rendering", "window_size") + + if int(wp.x) != int(wpr.x) || \ + int(wp.y) != int(wpr.y) || \ + int(ws.x) != int(wsr.x) || \ + int(ws.y) != int(wsr.y): + + #don't use set_value() here, as the app is quitting + _settings["rendering"]["window_size"] = ws + _settings["rendering"]["window_position"] = wp + + save_settings() + +func set_value(section, key, value) -> void: + _settings[section][key] = value + + if has_method("set_" + section + "_" + key): + call("set_" + section + "_" + key, value) + + save_settings() + + emit_signal("setting_changed", section, key, value) + +func get_value(section, key): + return _settings[section][key] + +func _set_value(section, key, value) -> void: + _settings[section][key] = value + + if has_method("set_" + section + "_" + key): + call("set_" + section + "_" + key, value) + +func save_settings() -> void: + for section in _settings.keys(): + for key in _settings[section]: + _config_file.set_value(section, key, _settings[section][key]) + + _config_file.save(SAVE_PATH) + +func load_settings() -> void: + var error : int = _config_file.load(SAVE_PATH) + + if error != OK: +# print("Failed to load the settings file! Error code %s" % error) + return + + for section in _settings.keys(): + for key in _settings[section]: + _set_value(section, key, _config_file.get_value(section, key, _settings[section][key])) + + loaded = true + emit_signal("settings_loaded") + +func set_rendering_thread_model(value : int) -> void: + ProjectSettings.set("rendering/threads/thread_model", value) + +func set_rendering_borderless(value : bool) -> void: + ProjectSettings.set("display/window/size/borderless", value) + OS.window_borderless = value + +func set_rendering_fullscreen(value : bool) -> void: + ProjectSettings.set("display/window/size/fullscreen", value) + OS.window_fullscreen = value + + if !value: + setup_window() + +func set_rendering_always_on_top(value : bool) -> void: + ProjectSettings.set("display/window/size/always_on_top", value) + OS.set_window_always_on_top(value) + +func set_rendering_viewport_scale(value : int) -> void: + ProjectSettings.set("rendering/window/size/viewport_scale", value) + var v: Vector2 = OS.get_window_size() + v *= value * 0.01 + + get_tree().get_root().size = v + +func set_rendering_shadows_enabled(value : bool) -> void: + ProjectSettings.set("rendering/quality/shadows/enabled", value) + +func set_rendering_use_vsync(value : bool) -> void: + ProjectSettings.set("display/window/vsync/use_vsync", value) + + OS.vsync_enabled = value + +func set_rendering_vsync_via_compositor(value : bool) -> void: + ProjectSettings.set("display/window/vsync/vsync_via_compositor", value) + + OS.vsync_via_compositor = value + +func set_ui_touchscreen_mode(value : bool) -> void: + set_stretch() + +func set_ui_ui_scale(value : float) -> void: + ProjectSettings.set("rendering/window/size/ui_scale", value) + set_stretch() + +func set_ui_ui_scale_touch(value : float) -> void: + ProjectSettings.set("rendering/window/size/ui_scale_touch", value) + set_stretch() + +func set_stretch(): + if !loaded: + return + + var stretch_mode : String = ProjectSettings.get("display/window/stretch/mode") + var stretch_aspect : String = ProjectSettings.get("display/window/stretch/aspect") + var stretch_size : Vector2 = Vector2(ProjectSettings.get("display/window/size/width"), ProjectSettings.get("display/window/size/height")) + var stretch_shrink : float = ProjectSettings.get("display/window/stretch/shrink") + + var uiscale : float = 1 + + if !get_value("ui", "touchscreen_mode"): + uiscale = get_value("ui", "ui_scale") + else: + uiscale = get_value("ui", "ui_scale_touch") + + stretch_size *= uiscale + + var sml_sm = SceneTree.STRETCH_MODE_DISABLED; + if (stretch_mode == "2d"): + sml_sm = SceneTree.STRETCH_MODE_2D; + elif (stretch_mode == "viewport"): + sml_sm = SceneTree.STRETCH_MODE_VIEWPORT; + + var sml_aspect = SceneTree.STRETCH_ASPECT_IGNORE; + if (stretch_aspect == "keep"): + sml_aspect = SceneTree.STRETCH_ASPECT_KEEP; + elif (stretch_aspect == "keep_width"): + sml_aspect = SceneTree.STRETCH_ASPECT_KEEP_WIDTH; + elif (stretch_aspect == "keep_height"): + sml_aspect = SceneTree.STRETCH_ASPECT_KEEP_HEIGHT; + elif (stretch_aspect == "expand"): + sml_aspect = SceneTree.STRETCH_ASPECT_EXPAND; + + get_tree().set_screen_stretch(sml_sm, sml_aspect, stretch_size, stretch_shrink) + +func setup_window(): + if OS.window_fullscreen: + return + + OS.window_position = get_value("rendering", "window_position") + OS.window_size = get_value("rendering", "window_size") diff --git a/game/ui/autoload/SettingsManager.tscn b/game/ui/autoload/SettingsManager.tscn new file mode 100644 index 0000000..3fd9984 --- /dev/null +++ b/game/ui/autoload/SettingsManager.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/autoload/SettingsManager.gd" type="Script" id=1] + +[node name="SettingsManager" type="Node"] +script = ExtResource( 1 ) diff --git a/game/ui/autoload/ThemeAtlas.gd b/game/ui/autoload/ThemeAtlas.gd new file mode 100644 index 0000000..a343294 --- /dev/null +++ b/game/ui/autoload/ThemeAtlas.gd @@ -0,0 +1,30 @@ +extends TextureMerger + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +#func _texture_added(texture): +# print("added") +# +#func _texture_removed(): +# print("removed") + +func _texture_merged(): + $Sprite.texture = get_generated_texture(0) diff --git a/game/ui/autoload/ThemeAtlas.tscn b/game/ui/autoload/ThemeAtlas.tscn new file mode 100644 index 0000000..1f171c9 --- /dev/null +++ b/game/ui/autoload/ThemeAtlas.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=18 format=2] + +[ext_resource path="res://ui/theme/scrollbar_grabber_atlas.tres" type="Texture" id=2] +[ext_resource path="res://ui/theme/h_scroll_bar_texture.tres" type="Texture" id=3] +[ext_resource path="res://ui/theme/panel_bg_atlas.tres" type="Texture" id=4] +[ext_resource path="res://ui/theme/scrollbar_bg_atlas.tres" type="Texture" id=5] +[ext_resource path="res://ui/theme/separator_texture.tres" type="Texture" id=6] +[ext_resource path="res://ui/theme/button_bg_atlas.tres" type="Texture" id=7] +[ext_resource path="res://ui/theme/bag_icon.tres" type="Texture" id=8] +[ext_resource path="res://ui/theme/locked_icon.tres" type="Texture" id=9] +[ext_resource path="res://ui/theme/unlocked_icon.tres" type="Texture" id=10] +[ext_resource path="res://ui/theme/spellbook_icon.tres" type="Texture" id=11] +[ext_resource path="res://ui/theme/radio_texture.tres" type="Texture" id=12] +[ext_resource path="res://ui/theme/radio_checked_texture.tres" type="Texture" id=13] +[ext_resource path="res://ui/theme/checkbox_texture.tres" type="Texture" id=14] +[ext_resource path="res://ui/theme/dropdown_icon.tres" type="Texture" id=15] +[ext_resource path="res://ui/theme/checkbox_checked_texture.tres" type="Texture" id=16] +[ext_resource path="res://ui/theme/window_bg_atlas.tres" type="Texture" id=17] +[ext_resource path="res://ui/theme/window_bg_bg.tres" type="Texture" id=18] + +[node name="ThemeAtlas" type="TextureMerger"] +texture_flags = 0 +keep_original_atlases = true +automatic_merge = true +textures = [ ExtResource( 8 ), ExtResource( 7 ), ExtResource( 16 ), ExtResource( 14 ), ExtResource( 15 ), ExtResource( 3 ), ExtResource( 9 ), ExtResource( 4 ), ExtResource( 13 ), ExtResource( 12 ), ExtResource( 5 ), ExtResource( 2 ), ExtResource( 6 ), ExtResource( 11 ), ExtResource( 10 ), ExtResource( 17 ), ExtResource( 18 ) ] diff --git a/game/ui/autoload/WorldNumbers.gd b/game/ui/autoload/WorldNumbers.gd new file mode 100644 index 0000000..c27b707 --- /dev/null +++ b/game/ui/autoload/WorldNumbers.gd @@ -0,0 +1,54 @@ +extends Node + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(PackedScene) var number_scene + +func damage(entity_position : Vector3, entity_height : float, value : int, crit : bool) -> void: + var scene : Node = number_scene.instance() + + add_child(scene) + scene.owner = self + + entity_position.y += entity_height + (0.2 * randf()) + entity_position.x += entity_height * 0.4 - entity_height * 0.8 * randf() + entity_position.z += entity_height * 0.4 - entity_height * 0.8 * randf() + + scene.damage(entity_position, value, crit) + +func heal(entity_position : Vector3, entity_height : float, value : int, crit : bool) -> void: + var scene : Node = number_scene.instance() + + add_child(scene) + scene.owner = self + + randomize() + + entity_position.y += entity_height + (0.3 * randf()) + entity_position.x += entity_height * 0.4 - entity_height * 0.8 * randf() + entity_position.z += entity_height * 0.4 - entity_height * 0.8 * randf() + + + scene.heal(entity_position, value, crit) + +func clear() -> void: + for child in get_children(): + child.queue_free() diff --git a/game/ui/autoload/WorldNumbers.tscn b/game/ui/autoload/WorldNumbers.tscn new file mode 100644 index 0000000..2281e4d --- /dev/null +++ b/game/ui/autoload/WorldNumbers.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/numbers/Number.tscn" type="PackedScene" id=1] +[ext_resource path="res://ui/autoload/WorldNumbers.gd" type="Script" id=2] + +[node name="WorldNumbers" type="Node"] +script = ExtResource( 2 ) +number_scene = ExtResource( 1 ) diff --git a/game/ui/bags/Bag.tscn b/game/ui/bags/Bag.tscn new file mode 100644 index 0000000..08de2b7 --- /dev/null +++ b/game/ui/bags/Bag.tscn @@ -0,0 +1,265 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/bags/InventoryGUI.gd" type="Script" id=2] +[ext_resource path="res://ui/bags/BagEntry.tscn" type="PackedScene" id=3] +[ext_resource path="res://ui/bags/EquipmentSlot.tscn" type="PackedScene" id=4] +[ext_resource path="res://ui/bags/ItemTooltip.tscn" type="PackedScene" id=5] + +[node name="Inventory" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +theme = ExtResource( 1 ) +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} +inventory_item_scene = ExtResource( 3 ) +inventory_item_container_path = NodePath("PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer2/VBoxContainer/ScrollContainer/GridContainer") +item_tooltip_path = NodePath("ItemTooltip") +inventory_slots = [ NodePath("PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer/Head"), NodePath("PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer2/Neck"), NodePath("PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer2/Shoulder"), NodePath("PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer3/Chest"), NodePath("PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer2/Hands"), NodePath("PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer4/Belt"), NodePath("PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer5/Legs"), NodePath("PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer5/Feet"), NodePath("PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer3/Ring1"), NodePath("PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer3/Ring2"), NodePath("PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer4/Trinket1"), NodePath("PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer4/Trinket2"), NodePath("PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer6/PanelContainer/HBoxContainer/MainHand"), NodePath("PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer6/PanelContainer/HBoxContainer/OffHand") ] + +[node name="PanelContainer" type="PanelContainer" parent="."] +margin_left = 103.0 +margin_top = 37.0 +margin_right = 692.0 +margin_bottom = 527.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 585.0 +margin_bottom = 486.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +margin_right = 581.0 +margin_bottom = 26.0 + +[node name="BagName" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer"] +margin_top = 5.0 +margin_right = 547.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +text = "Inventory" +align = 1 + +[node name="CloseButton" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer"] +margin_left = 551.0 +margin_right = 581.0 +margin_bottom = 26.5702 +rect_min_size = Vector2( 30, 20 ) +text = "X" + +[node name="HBoxContainer3" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +margin_top = 34.0 +margin_right = 581.0 +margin_bottom = 482.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +alignment = 1 + +[node name="PanelContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer/HBoxContainer3"] +margin_right = 227.96 +margin_bottom = 448.0 +rect_min_size = Vector2( 227.96, 0 ) + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 223.96 +margin_bottom = 444.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_constants/separation = 10 +alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer"] +margin_top = 41.0 +margin_right = 219.0 +margin_bottom = 91.0 +size_flags_horizontal = 3 +alignment = 1 + +[node name="Head" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer" instance=ExtResource( 4 )] + +[node name="HBoxContainer2" type="HBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer"] +margin_top = 101.0 +margin_right = 219.0 +margin_bottom = 151.0 +size_flags_horizontal = 3 +alignment = 1 + +[node name="Shoulder" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer2" instance=ExtResource( 4 )] +margin_left = 30.0 +margin_right = 80.0 +text = "sh" +equip_slot = 2 + +[node name="Neck" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer2" instance=ExtResource( 4 )] +text = "Neck" +equip_slot = 1 + +[node name="Hands" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer2" instance=ExtResource( 4 )] +margin_left = 138.0 +margin_right = 188.0 +text = "Hands" +equip_slot = 4 + +[node name="HBoxContainer3" type="HBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer"] +margin_top = 161.0 +margin_right = 219.0 +margin_bottom = 211.0 +size_flags_horizontal = 3 +alignment = 1 + +[node name="Ring1" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer3" instance=ExtResource( 4 )] +margin_left = 30.0 +margin_right = 80.0 +text = "Ring" +equip_slot = 8 +texture_path = NodePath("../Ring1/MarginContainer/TextureRect") + +[node name="Chest" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer3" instance=ExtResource( 4 )] +text = "Chest" +equip_slot = 3 + +[node name="Ring2" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer3" instance=ExtResource( 4 )] +margin_left = 138.0 +margin_right = 188.0 +text = "Ring" +equip_slot = 9 + +[node name="HBoxContainer4" type="HBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer"] +margin_top = 221.0 +margin_right = 219.0 +margin_bottom = 271.0 +size_flags_horizontal = 3 +alignment = 1 + +[node name="Trinket1" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer4" instance=ExtResource( 4 )] +margin_left = 30.0 +margin_right = 80.0 +text = "Tr" +equip_slot = 10 + +[node name="Belt" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer4" instance=ExtResource( 4 )] +text = "Belt" +equip_slot = 5 + +[node name="Trinket2" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer4" instance=ExtResource( 4 )] +margin_left = 138.0 +margin_right = 188.0 +text = "Tr" +equip_slot = 11 + +[node name="HBoxContainer5" type="HBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer"] +margin_top = 281.0 +margin_right = 219.0 +margin_bottom = 331.0 +size_flags_horizontal = 3 +alignment = 1 + +[node name="Legs" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer5" instance=ExtResource( 4 )] +margin_left = 57.0 +margin_right = 107.0 +text = "Legs" +equip_slot = 6 + +[node name="Feet" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer5" instance=ExtResource( 4 )] +margin_left = 111.0 +margin_right = 161.0 +text = "Feet" +equip_slot = 7 + +[node name="HBoxContainer6" type="HBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer"] +margin_top = 341.0 +margin_right = 219.0 +margin_bottom = 399.0 +size_flags_horizontal = 3 +alignment = 1 + +[node name="PanelContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer6"] +margin_left = 53.0 +margin_right = 165.0 +margin_bottom = 58.0 +size_flags_horizontal = 0 +size_flags_vertical = 0 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer6/PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 108.0 +margin_bottom = 54.0 + +[node name="MainHand" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer6/PanelContainer/HBoxContainer" instance=ExtResource( 4 )] +margin_left = 0.0 +margin_right = 50.0 +text = "MH" +equip_slot = 12 + +[node name="OffHand" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer/VBoxContainer/HBoxContainer6/PanelContainer/HBoxContainer" instance=ExtResource( 4 )] +margin_left = 54.0 +margin_right = 104.0 +text = "OH" +equip_slot = 13 + +[node name="PanelContainer2" type="PanelContainer" parent="PanelContainer/VBoxContainer/HBoxContainer3"] +margin_left = 231.0 +margin_right = 581.0 +margin_bottom = 448.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer2"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 346.0 +margin_bottom = 444.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="ScrollContainer" type="ScrollContainer" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer2/VBoxContainer"] +margin_right = 342.0 +margin_bottom = 406.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +scroll_horizontal_enabled = false + +[node name="GridContainer" type="GridContainer" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer2/VBoxContainer/ScrollContainer"] +size_flags_horizontal = 2 +size_flags_vertical = 2 +custom_constants/vseparation = 5 +custom_constants/hseparation = 5 +columns = 6 + +[node name="HBoxContainer2" type="HBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer2/VBoxContainer"] +margin_top = 414.0 +margin_right = 342.0 +margin_bottom = 440.0 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer2/VBoxContainer/HBoxContainer2"] +margin_top = 5.0 +margin_right = 308.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 +text = "190 " +align = 2 + +[node name="ResizeButton" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer3/PanelContainer2/VBoxContainer/HBoxContainer2"] +margin_left = 312.0 +margin_right = 342.0 +margin_bottom = 26.5702 +rect_min_size = Vector2( 30, 20 ) + +[node name="ItemTooltip" parent="." instance=ExtResource( 5 )] +toplevel = false +margin_left = 4.0 +margin_top = 4.0 +margin_right = 299.0 +margin_bottom = 227.0 + +[connection signal="pressed" from="PanelContainer/VBoxContainer/HBoxContainer/CloseButton" to="." method="hide"] diff --git a/game/ui/bags/BagEntry.gd b/game/ui/bags/BagEntry.gd new file mode 100644 index 0000000..e502bbe --- /dev/null +++ b/game/ui/bags/BagEntry.gd @@ -0,0 +1,256 @@ +extends Button + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export (NodePath) var button_path : NodePath +export (NodePath) var icon_path : NodePath + +export (NodePath) var cooldown_indicator_path : NodePath +export (NodePath) var cooldown_text_path : NodePath + +export (NodePath) var stack_counter : NodePath +var _stack_counter : Label + +var _tooltip : Popup + +var button : Button +var icon_rect : TextureRect +var cooldown_indicator : TextureProgress +var cooldown_text : Label + +var slot_id : int = 0 +var item : ItemInstance +var player : Entity + +var spell_id : int = 0 +#var spell_type : int = 0 + +var cd : float = 0 + +var has_gcd : bool = false +var gcd : float = 0.0 + +func _ready() -> void: + button = get_node(button_path) as Button + icon_rect = get_node(icon_path) as TextureRect + + cooldown_indicator = get_node(cooldown_indicator_path) as TextureProgress + cooldown_text = get_node(cooldown_text_path) as Label + + _stack_counter = get_node(stack_counter) as Label + + button.connect("button_up", self, "_on_button_pressed") + +#func _exit_tree(): +# if item != null: +# item.disconnect("stack_size_changed", self, "stack_size_changed") + +func _process(delta : float) -> void: + if cd > 0: + cd -= delta + + if cd < 0: + cd = 0 + + if cd < 0.02 and gcd < 0.001: + set_process(false) + hide_cooldown_timer() + return + + if gcd > 0.001: + gcd -= delta + + if gcd < 0: + gcd = 0 + + var value : float = gcd + + if cd > value: + value = cd + + set_cooldown_time(value) + +func set_cooldown_time(time : float) -> void: + cooldown_indicator.value = time + cooldown_text.text = str(int(time)) + +func show_cooldown_timer(max_time : float) -> void: + if cooldown_indicator.visible and cooldown_indicator.max_value < max_time: + cooldown_indicator.max_value = max_time + + if not cooldown_indicator.visible: + cooldown_indicator.max_value = max_time + + cooldown_indicator.show() + cooldown_text.show() + +func hide_cooldown_timer() -> void: + cooldown_indicator.hide() + cooldown_text.hide() + +func set_item_instance(pitem : ItemInstance) -> void: + if item != null and item.item_template.stack_size > 1: + item.disconnect("stack_size_changed", self, "stack_size_changed") + _stack_counter.hide() + + item = pitem + + setup_icon() + + if item != null and item.item_template.stack_size > 1: + item.connect("stack_size_changed", self, "stack_size_changed") + _stack_counter.show() + stack_size_changed(item) + +func setup_icon() -> void: + if (item == null): + icon_rect.texture = null + else: + if (item.get_item_template() == null): + icon_rect.texture = null + return + + if item.item_template.use_spell != null: + var spell : Spell = item.item_template.use_spell + spell_id = spell.id + has_gcd = spell.cooldown_global_cooldown_enabled + else: + spell_id = 0 + has_gcd = false + + icon_rect.texture = item.item_template.icon + + + + +func set_button_entry_data(ii : ItemInstance) -> void: + if item != null and item.item_template.stack_size > 1: + item.disconnect("stack_size_changed", self, "stack_size_changed") + _stack_counter.hide() + + item = ii + + setup_icon() + + if item != null and item.item_template.stack_size > 1: + item.connect("stack_size_changed", self, "stack_size_changed") + _stack_counter.show() + stack_size_changed(item) + +func stack_size_changed(ii : ItemInstance) -> void: + _stack_counter.text = str(ii.stack_size) + +func get_drag_data(pos: Vector2) -> Object: + if item == null: + return null + + var tr = TextureRect.new() + tr.texture = icon_rect.texture + tr.expand = true + + tr.rect_size = icon_rect.rect_size + set_drag_preview(tr) + + var esd = ESDragAndDrop.new() + + esd.origin = self + esd.type = ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_INVENTORY_ITEM + esd.item_path = item.item_template.resource_path + esd.set_meta("slot_id", slot_id) + + setup_icon() + + return esd + +func can_drop_data(pos, data) -> bool: + return (data.is_class("ESDragAndDrop") and (data.type == ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_INVENTORY_ITEM or + data.type == ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_EQUIPPED_ITEM)) + + +func drop_data(pos, esd) -> void: + if esd.type == ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_INVENTORY_ITEM: + player.item_crequest_swap(slot_id, esd.get_meta("slot_id")) + setup_icon() + elif esd.type == ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_EQUIPPED_ITEM: + player.equip_crequest(ESS.resource_db.get_item_template_path(esd.item_path).equip_slot, slot_id) + setup_icon() + +func set_slot_id(pslot_id : int) -> void: + slot_id = pslot_id + +func set_player(p_player: Entity) -> void: + if not player == null: + player.disconnect("ccooldown_added", self, "_ccooldown_added") + player.disconnect("ccooldown_removed", self, "_ccooldown_removed") + + player.disconnect("cgcd_started", self, "_cgcd_started") + player.disconnect("cgcd_finished", self, "_cgcd_finished") + + player = null + + player = p_player + + if player == null: + return + +# for i in range(player.cooldown_getc_count()): +# var cooldown : Cooldown = player.cooldown_getc(i) + + player.connect("ccooldown_added", self, "_ccooldown_added") + player.connect("ccooldown_removed", self, "_ccooldown_removed") + + player.connect("cgcd_started", self, "_cgcd_started") + player.connect("cgcd_finished", self, "_cgcd_finished") + + +func _ccooldown_added(id : int, value : float) -> void: + if id == spell_id: + cd = value + set_process(true) + show_cooldown_timer(value) + +func _ccooldown_removed(id : int, value : float) -> void: + if id == spell_id: + cd = 0 + +func _cgcd_started(entity: Entity, value :float) -> void: + if not has_gcd: + return + + gcd = value + show_cooldown_timer(value) + set_process(true) + +func _cgcd_finished(entity) -> void: + gcd = 0 + +func _on_button_pressed() -> void: +#func _pressed(): + if _tooltip != null and item != null: + var pos : Vector2 = rect_global_position + pos.x += rect_size.x + + _tooltip.set_item(player, item) + _tooltip.popup(Rect2(pos, _tooltip.rect_size)) +# _tooltip.pac + +func set_tooltip_node(tooltip : Popup) -> void: + _tooltip = tooltip diff --git a/game/ui/bags/BagEntry.tscn b/game/ui/bags/BagEntry.tscn new file mode 100644 index 0000000..bd0587b --- /dev/null +++ b/game/ui/bags/BagEntry.tscn @@ -0,0 +1,104 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://ui/bags/BagEntry.gd" type="Script" id=1] +[ext_resource path="res://ui/theme/cooldown_progress.png" type="Texture" id=2] +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=3] +[ext_resource path="res://ui/theme/actionbar_dynamicfont.tres" type="DynamicFont" id=5] + +[node name="BagEntry" type="Button"] +margin_top = 1.0 +margin_right = 45.0 +margin_bottom = 46.0 +rect_min_size = Vector2( 45, 45 ) +focus_mode = 0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme = ExtResource( 3 ) +shortcut_in_tooltip = false +action_mode = 0 +button_mask = 3 +enabled_focus_mode = 0 +keep_pressed_outside = true +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +button_path = NodePath(".") +icon_path = NodePath("MarginContainer/TextureRect") +cooldown_indicator_path = NodePath("CooldownIndicator") +cooldown_text_path = NodePath("CooldownText") +stack_counter = NodePath("MarginContainer2/StackCounter") + +[node name="MarginContainer" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +custom_constants/margin_right = 2 +custom_constants/margin_top = 2 +custom_constants/margin_left = 2 +custom_constants/margin_bottom = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="TextureRect" type="TextureRect" parent="MarginContainer"] +margin_left = 2.0 +margin_top = 2.0 +margin_right = 43.0 +margin_bottom = 43.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +expand = true + +[node name="CooldownIndicator" type="TextureProgress" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +step = 0.0 +texture_progress = ExtResource( 2 ) +fill_mode = 5 +nine_patch_stretch = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CooldownText" type="Label" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_fonts/font = ExtResource( 5 ) +align = 1 +valign = 1 +clip_text = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="MarginContainer2" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +custom_constants/margin_right = 4 +custom_constants/margin_top = 4 +custom_constants/margin_left = 4 +custom_constants/margin_bottom = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="StackCounter" type="Label" parent="MarginContainer2"] +visible = false +margin_left = 4.0 +margin_top = 4.0 +margin_right = 41.0 +margin_bottom = 42.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +align = 2 +valign = 2 diff --git a/game/ui/bags/BagFrame.gd b/game/ui/bags/BagFrame.gd new file mode 100644 index 0000000..f276638 --- /dev/null +++ b/game/ui/bags/BagFrame.gd @@ -0,0 +1,29 @@ +extends Control + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(PackedScene) var bag_scene : PackedScene +export(NodePath) var container_path : NodePath = "BagContainerFrame" + +var container : Control + +func _ready() -> void: + container = get_node(container_path) as Control diff --git a/game/ui/bags/BagFrame.tscn b/game/ui/bags/BagFrame.tscn new file mode 100644 index 0000000..69607ab --- /dev/null +++ b/game/ui/bags/BagFrame.tscn @@ -0,0 +1,51 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/bags/Bag.tscn" type="PackedScene" id=1] +[ext_resource path="res://ui/bags/BagFrame.gd" type="Script" id=2] + +[node name="BagFrame" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +script = ExtResource( 2 ) +__meta__ = { +"_edit_lock_": true, +"_edit_use_anchors_": false +} +bag_scene = ExtResource( 1 ) +container_path = NodePath("") + +[node name="BagOpenerFrame" type="HBoxContainer" parent="."] +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -39.0 +margin_top = -37.0 +grow_horizontal = 0 +grow_vertical = 0 +size_flags_horizontal = 0 +size_flags_vertical = 0 +alignment = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Button" type="Button" parent="BagOpenerFrame"] +margin_right = 40.0 +margin_bottom = 40.0 +rect_min_size = Vector2( 40, 40 ) +text = "B" + +[node name="Bag" parent="." instance=ExtResource( 1 )] +visible = false +margin_left = 68.0 +margin_top = 115.0 +margin_right = 551.0 +margin_bottom = 432.0 +grow_horizontal = 0 +grow_vertical = 0 +rect_min_size = Vector2( 100, 0 ) +size_flags_horizontal = 10 +size_flags_vertical = 10 +[connection signal="pressed" from="BagOpenerFrame/Button" to="Bag" method="show"] diff --git a/game/ui/bags/BaseWindow.tscn b/game/ui/bags/BaseWindow.tscn new file mode 100644 index 0000000..a5a7286 --- /dev/null +++ b/game/ui/bags/BaseWindow.tscn @@ -0,0 +1,79 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] + +[node name="BaseWindow" type="Panel"] +margin_right = 523.0 +margin_bottom = 427.0 +theme = ExtResource( 1 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="MarginContainer" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_lock_": true +} + +[node name="VSplitContainer" type="VSplitContainer" parent="MarginContainer"] +margin_right = 523.0 +margin_bottom = 427.0 +dragger_visibility = 2 + +[node name="Header" type="MarginContainer" parent="MarginContainer/VSplitContainer"] +margin_right = 523.0 +margin_bottom = 32.0 + +[node name="VSplitContainer" type="VSplitContainer" parent="MarginContainer/VSplitContainer/Header"] +margin_right = 523.0 +margin_bottom = 32.0 +size_flags_horizontal = 3 +collapsed = true +dragger_visibility = 2 + +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/VSplitContainer/Header/VSplitContainer"] +margin_right = 523.0 +margin_bottom = 24.0 +custom_constants/margin_right = 2 +custom_constants/margin_top = 2 +custom_constants/margin_left = 2 +custom_constants/margin_bottom = 1 + +[node name="HSplitContainer" type="HSplitContainer" parent="MarginContainer/VSplitContainer/Header/VSplitContainer/MarginContainer"] +margin_left = 2.0 +margin_top = 2.0 +margin_right = 521.0 +margin_bottom = 23.0 +dragger_visibility = 2 + +[node name="Label" type="Label" parent="MarginContainer/VSplitContainer/Header/VSplitContainer/MarginContainer/HSplitContainer"] +margin_right = 485.0 +margin_bottom = 21.0 +size_flags_horizontal = 3 +size_flags_vertical = 5 +text = "Header" +valign = 1 + +[node name="Button" type="Button" parent="MarginContainer/VSplitContainer/Header/VSplitContainer/MarginContainer/HSplitContainer"] +margin_left = 485.0 +margin_right = 519.0 +margin_bottom = 21.0 +hint_tooltip = "Close" +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.07 +text = "X" + +[node name="HSeparator" type="HSeparator" parent="MarginContainer/VSplitContainer/Header/VSplitContainer"] +margin_top = 24.0 +margin_right = 523.0 +margin_bottom = 32.0 +size_flags_horizontal = 3 +size_flags_vertical = 0 + +[node name="Content" type="MarginContainer" parent="MarginContainer/VSplitContainer"] +margin_top = 32.0 +margin_right = 523.0 +margin_bottom = 427.0 diff --git a/game/ui/bags/EquipmentSlot.gd b/game/ui/bags/EquipmentSlot.gd new file mode 100644 index 0000000..3112fa0 --- /dev/null +++ b/game/ui/bags/EquipmentSlot.gd @@ -0,0 +1,118 @@ +extends Button + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(int) var equip_slot : int + +export(NodePath) var texture_path : NodePath + +var _texture : TextureRect +var _tooltip : Popup + +var _player : Entity + +var _item_instance : ItemInstance + +func _ready(): + _texture = get_node(texture_path) as TextureRect + + connect("button_up", self, "_on_button_pressed") + +func set_tooltip_node(tooltip : Popup) -> void: + _tooltip = tooltip + +func set_player(player: Entity) -> void: + if _player != null: + _player.disconnect("equip_con_success", self, "equip_con_success") + + _player = player + + if _player == null: + return + + _player.connect("equip_con_success", self, "equip_con_success") + + equip_con_success(player, equip_slot, player.equip_getc_slot(equip_slot), null, 0) + +func drop_data(position, data): + if _player == null: + return + + var dd : ESDragAndDrop = data as ESDragAndDrop + + if dd.type == ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_EQUIPPED_ITEM: + #todo + return + + if dd.type == ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_INVENTORY_ITEM: + _player.equip_crequest(equip_slot, dd.get_meta("slot_id")) + +func can_drop_data(position, data): + if _player == null: + return false + + if data is ESDragAndDrop and (data.type == ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_EQUIPPED_ITEM or + data.type == ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_INVENTORY_ITEM): + return true + + return false + +func get_drag_data(position): + if _item_instance == null: + return null + + var tr = TextureRect.new() + tr.texture = _texture.texture + tr.expand = true + + tr.rect_size = _texture.rect_size + set_drag_preview(tr) + + var esd = ESDragAndDrop.new() + + esd.origin = self + esd.type = ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_EQUIPPED_ITEM + esd.item_path = _item_instance.item_template.resource_path + esd.set_meta("equip_slot_id", equip_slot) + + return esd + +func equip_con_success(entity: Entity, pequip_slot: int, item: ItemInstance, old_item: ItemInstance, bag_slot: int): + if equip_slot != pequip_slot: + return + + _item_instance = item + + if item == null: + _texture.texture = null + return + + _texture.texture = item.item_template.icon + +func _on_button_pressed() -> void: +#func _pressed(): + if _tooltip != null and _item_instance != null: + var pos : Vector2 = rect_global_position + pos.x += rect_size.x + + _tooltip.set_item(_player, _item_instance) + _tooltip.popup(Rect2(pos, _tooltip.rect_size)) +# _tooltip.pac diff --git a/game/ui/bags/EquipmentSlot.tscn b/game/ui/bags/EquipmentSlot.tscn new file mode 100644 index 0000000..971fc46 --- /dev/null +++ b/game/ui/bags/EquipmentSlot.tscn @@ -0,0 +1,37 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/bags/EquipmentSlot.gd" type="Script" id=1] + +[node name="EquipmentSlot" type="Button"] +margin_left = 84.0 +margin_right = 134.0 +margin_bottom = 50.0 +rect_min_size = Vector2( 50, 50 ) +text = "Head" +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +texture_path = NodePath("MarginContainer/TextureRect") + +[node name="MarginContainer" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +custom_constants/margin_right = 5 +custom_constants/margin_top = 5 +custom_constants/margin_left = 5 +custom_constants/margin_bottom = 5 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="TextureRect" type="TextureRect" parent="MarginContainer"] +margin_left = 5.0 +margin_top = 5.0 +margin_right = 45.0 +margin_bottom = 45.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +expand = true diff --git a/game/ui/bags/InventoryGUI.gd b/game/ui/bags/InventoryGUI.gd new file mode 100644 index 0000000..9d2df43 --- /dev/null +++ b/game/ui/bags/InventoryGUI.gd @@ -0,0 +1,149 @@ +extends Control + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +var opener_button : BaseButton + +export(PackedScene) var inventory_item_scene : PackedScene +export(NodePath) var inventory_item_container_path : NodePath +export(NodePath) var item_tooltip_path : NodePath +export(Array, NodePath) var inventory_slots : Array + +var _inventory_slots : Array +var _inventory_item_container : Node +var _tooltip : Popup + +var _player : Entity = null +var _bag : Bag = null + +func _ready() -> void: + _inventory_item_container = get_node(inventory_item_container_path) + _tooltip = get_node(item_tooltip_path) + + for np in inventory_slots: + var es : Control = get_node(np) as Control + es.set_tooltip_node(_tooltip) + _inventory_slots.append(es) + + connect("visibility_changed", self, "on_visibility_changed") + +func set_player(p_player: Entity) -> void: + if _player != null: + _player.disconnect("cbag_changed", self, "cbag_changed") + _player.disconnect("equip_con_success", self, "equip_con_success") + + for ie in _inventory_item_container.get_children(): + ie.queue_free() + + _player = p_player + + _player.connect("cbag_changed", self, "cbag_changed") + _player.connect("equip_con_success", self, "equip_con_success") + + cbag_changed(_player, _player.cbag) + + for np in _inventory_slots: + np.set_player(_player) + + refresh_bags() + +func refresh_bags() -> void: + if _bag == null: + return + + if not visible: + return + +# if _bag.size == _inventory_item_container.get_child_count(): +# return + + for ie in _inventory_item_container.get_children(): + ie.queue_free() + + for i in range(_bag.get_size()): + var n : Node = inventory_item_scene.instance() + + _inventory_item_container.add_child(n) + n.owner = _inventory_item_container + + n.set_slot_id(i) + n.set_tooltip_node(_tooltip) + n.set_player(_player) + n.set_item_instance(_bag.get_item(i)) + +func cbag_changed(entity: Entity, bag: Bag) -> void: + if _bag != null: + _bag.disconnect("size_changed", self, "bag_size_changed") + _bag.disconnect("item_added", self, "bag_item_added") + _bag.disconnect("item_count_changed", self, "item_count_changed") + _bag.disconnect("item_removed", self, "item_removed") + _bag.disconnect("item_swapped", self, "item_swapped") + + _bag = entity.cbag + + if _bag == null: + return + + _bag.connect("size_changed", self, "bag_size_changed") + _bag.connect("item_added", self, "bag_item_added") + _bag.connect("item_count_changed", self, "item_count_changed") + _bag.connect("item_removed", self, "item_removed") + _bag.connect("item_swapped", self, "item_swapped") + +# overburden_removed(bag: Bag) +# overburdened(bag: Bag) + +func bag_size_changed(bag: Bag) -> void: + refresh_bags() + +func bag_item_added(bag: Bag, item: ItemInstance, slot_id: int) -> void: + refresh_bags() + +func item_count_changed(bag: Bag, item: ItemInstance, slot_id: int) -> void: + refresh_bags() + +func item_removed(bag: Bag, item: ItemInstance, slot_id: int) -> void: + refresh_bags() + +func item_swapped(bag: Bag, item1_slot : int, item2_slot: int) -> void: + refresh_bags() + +func equip_con_success(entity, equip_slot, item, old_item, bag_slot) -> void: + refresh_bags() + +func on_visibility_changed(): + refresh_bags() + + if opener_button: + if visible && !opener_button.pressed: + opener_button.pressed = true + return + + if !visible && opener_button.pressed: + opener_button.pressed = false + +func _on_button_toggled(button_pressed): + if button_pressed: + if !visible: + show() + else: + if visible: + hide() diff --git a/game/ui/bags/InventoryWindow.tscn b/game/ui/bags/InventoryWindow.tscn new file mode 100644 index 0000000..7b090e4 --- /dev/null +++ b/game/ui/bags/InventoryWindow.tscn @@ -0,0 +1,127 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/bags/ItemEntry.tscn" type="PackedScene" id=1] +[ext_resource path="res://ui/bags/BaseWindow.tscn" type="PackedScene" id=2] + + + +[node name="InventoryWindow" type="Control"] +margin_right = 888.0 +margin_bottom = 463.0 + +[node name="BaseWindow" parent="." instance=ExtResource( 2 )] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_right = 0.0 +margin_bottom = 0.0 + +[node name="VSplitContainer" parent="BaseWindow/MarginContainer" index="0"] +margin_right = 888.0 +margin_bottom = 463.0 + +[node name="Header" parent="BaseWindow/MarginContainer/VSplitContainer" index="0"] +margin_right = 888.0 + +[node name="VSplitContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Header" index="0"] +margin_right = 888.0 + +[node name="MarginContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Header/VSplitContainer" index="0"] +margin_right = 888.0 + +[node name="HSplitContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Header/VSplitContainer/MarginContainer" index="0"] +margin_right = 886.0 + +[node name="Label" parent="BaseWindow/MarginContainer/VSplitContainer/Header/VSplitContainer/MarginContainer/HSplitContainer" index="0"] +margin_right = 826.0 + +[node name="Button" parent="BaseWindow/MarginContainer/VSplitContainer/Header/VSplitContainer/MarginContainer/HSplitContainer" index="1"] +margin_left = 826.0 +margin_right = 884.0 + +[node name="HSeparator" parent="BaseWindow/MarginContainer/VSplitContainer/Header/VSplitContainer" index="1"] +margin_right = 888.0 + +[node name="Content" parent="BaseWindow/MarginContainer/VSplitContainer" index="1"] +margin_right = 888.0 +margin_bottom = 463.0 + +[node name="PanelContainer" type="MarginContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Content" index="0"] +margin_right = 888.0 +margin_bottom = 431.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Content/PanelContainer"] +margin_right = 888.0 +margin_bottom = 431.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="PanelContainer" type="PanelContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Content/PanelContainer/HBoxContainer"] +margin_right = 432.0 +margin_bottom = 431.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="ScrollContainer" type="ScrollContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Content/PanelContainer/HBoxContainer/PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 428.0 +margin_bottom = 427.0 + +[node name="ItemContainer" type="VBoxContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Content/PanelContainer/HBoxContainer/PanelContainer/ScrollContainer"] +margin_right = 424.0 +margin_bottom = 47.0 +size_flags_horizontal = 3 + +[node name="ItemEntry" parent="BaseWindow/MarginContainer/VSplitContainer/Content/PanelContainer/HBoxContainer/PanelContainer/ScrollContainer/ItemContainer" instance=ExtResource( 1 )] +margin_right = 424.0 +margin_bottom = 47.0 + +[node name="Filter" type="PanelContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Content/PanelContainer/HBoxContainer"] +margin_left = 440.0 +margin_right = 448.0 +margin_bottom = 431.0 +size_flags_vertical = 3 + +[node name="PanelContainer2" type="PanelContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Content/PanelContainer/HBoxContainer"] +margin_left = 456.0 +margin_right = 888.0 +margin_bottom = 431.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Content/PanelContainer/HBoxContainer/PanelContainer2"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 428.0 +margin_bottom = 427.0 + +[node name="HeadSlot" type="PanelContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Content/PanelContainer/HBoxContainer/PanelContainer2/VBoxContainer"] +margin_right = 424.0 +margin_bottom = 8.0 + +[node name="MarginContainer" type="MarginContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Content/PanelContainer/HBoxContainer/PanelContainer2/VBoxContainer"] +margin_top = 16.0 +margin_right = 424.0 +margin_bottom = 24.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Content/PanelContainer/HBoxContainer/PanelContainer2/VBoxContainer/MarginContainer"] +margin_right = 424.0 +margin_bottom = 8.0 + +[node name="PanelContainer" type="PanelContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Content/PanelContainer/HBoxContainer/PanelContainer2/VBoxContainer/MarginContainer/HBoxContainer"] +margin_right = 8.0 +margin_bottom = 8.0 + +[node name="Control" type="Control" parent="BaseWindow/MarginContainer/VSplitContainer/Content/PanelContainer/HBoxContainer/PanelContainer2/VBoxContainer/MarginContainer/HBoxContainer"] +margin_left = 16.0 +margin_right = 408.0 +margin_bottom = 8.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="PanelContainer2" type="PanelContainer" parent="BaseWindow/MarginContainer/VSplitContainer/Content/PanelContainer/HBoxContainer/PanelContainer2/VBoxContainer/MarginContainer/HBoxContainer"] +margin_left = 416.0 +margin_right = 424.0 +margin_bottom = 8.0 + +[editable path="BaseWindow"] diff --git a/game/ui/bags/ItemEntry.tscn b/game/ui/bags/ItemEntry.tscn new file mode 100644 index 0000000..ba1094a --- /dev/null +++ b/game/ui/bags/ItemEntry.tscn @@ -0,0 +1,54 @@ +[gd_scene format=2] + +[node name="ItemEntry" type="PanelContainer"] +margin_right = 398.0 +margin_bottom = 97.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +margin_left = 14.0 +margin_top = 14.0 +margin_right = 384.0 +margin_bottom = 83.0 + +[node name="PanelContainer" type="PanelContainer" parent="HBoxContainer"] +margin_right = 28.0 +margin_bottom = 69.0 + +[node name="TextureRect" type="TextureRect" parent="HBoxContainer/PanelContainer"] +margin_left = 14.0 +margin_top = 14.0 +margin_right = 14.0 +margin_bottom = 55.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer"] +margin_left = 36.0 +margin_right = 370.0 +margin_bottom = 69.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="PanelContainer" type="PanelContainer" parent="HBoxContainer/VBoxContainer"] +margin_right = 334.0 +margin_bottom = 53.0 + +[node name="Name" type="Label" parent="HBoxContainer/VBoxContainer/PanelContainer"] +margin_left = 14.0 +margin_top = 14.0 +margin_right = 320.0 +margin_bottom = 39.0 +text = "Sword of Big Damage" + +[node name="StatsGrid" type="GridContainer" parent="HBoxContainer/VBoxContainer"] +margin_top = 61.0 +margin_right = 334.0 +margin_bottom = 61.0 + +[node name="SpellsContainer" type="VBoxContainer" parent="HBoxContainer/VBoxContainer"] +margin_top = 69.0 +margin_right = 334.0 +margin_bottom = 69.0 diff --git a/game/ui/bags/ItemPupop.gd b/game/ui/bags/ItemPupop.gd new file mode 100644 index 0000000..203d15d --- /dev/null +++ b/game/ui/bags/ItemPupop.gd @@ -0,0 +1,52 @@ +extends PopupPanel + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var name_path : NodePath +export(NodePath) var description_path : NodePath +export(NodePath) var use_button_path : NodePath + +var _name : RichTextLabel +var _description : RichTextLabel +var _use_button : Button + +var _entity : Entity +var _item : ItemInstance + +func _ready(): + _name = get_node(name_path) as RichTextLabel + _description = get_node(description_path) as RichTextLabel + _use_button = get_node(use_button_path) as Button + +func set_item(entity : Entity, item : ItemInstance) -> void: + _entity = entity + _item = item + + _name.bbcode_text = item.item_template.text_name +# _description.text = item.item_template. + + if item.item_template.use_spell != null: + _use_button.show() + else: + _use_button.hide() + +func use_button_pressed(): + _entity.item_crequest_use(_item.item_template.id) diff --git a/game/ui/bags/ItemTooltip.tscn b/game/ui/bags/ItemTooltip.tscn new file mode 100644 index 0000000..ac37109 --- /dev/null +++ b/game/ui/bags/ItemTooltip.tscn @@ -0,0 +1,76 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/bags/ItemPupop.gd" type="Script" id=1] + +[node name="ItemTooltip" type="PopupPanel"] +margin_right = 295.0 +margin_bottom = 223.0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +name_path = NodePath("../ItemTooltip/VBoxContainer/HBoxContainer/VBoxContainer/NameLabel") +description_path = NodePath("../ItemTooltip/VBoxContainer/DescriptionLabel") +use_button_path = NodePath("VBoxContainer/UseButton") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 291.0 +margin_bottom = 219.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +margin_right = 287.0 +margin_bottom = 26.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"] +margin_right = 253.0 +margin_bottom = 26.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +alignment = 1 + +[node name="NameLabel" type="RichTextLabel" parent="VBoxContainer/HBoxContainer/VBoxContainer"] +margin_top = 4.0 +margin_right = 253.0 +margin_bottom = 22.0 +rect_min_size = Vector2( 0, 18 ) +size_flags_horizontal = 3 +bbcode_enabled = true + +[node name="Button" type="Button" parent="VBoxContainer/HBoxContainer"] +margin_left = 257.0 +margin_right = 287.0 +margin_bottom = 26.269 +rect_min_size = Vector2( 30, 20 ) +text = "X" + +[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] +margin_top = 34.0 +margin_right = 287.0 +margin_bottom = 38.0 +size_flags_horizontal = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="UseButton" type="Button" parent="VBoxContainer"] +margin_top = 46.0 +margin_right = 287.0 +margin_bottom = 72.269 +text = "Use" + +[node name="DescriptionLabel" type="RichTextLabel" parent="VBoxContainer"] +margin_top = 80.0 +margin_right = 287.0 +margin_bottom = 215.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +bbcode_enabled = true +[connection signal="pressed" from="VBoxContainer/HBoxContainer/Button" to="." method="hide"] +[connection signal="pressed" from="VBoxContainer/UseButton" to="." method="use_button_pressed"] diff --git a/game/ui/bags/game_module.tres b/game/ui/bags/game_module.tres new file mode 100644 index 0000000..3c5777c --- /dev/null +++ b/game/ui/bags/game_module.tres @@ -0,0 +1,13 @@ +[gd_resource type="Resource" load_steps=4 format=2] + +[ext_resource path="res://ui/theme/bag_icon.tres" type="Texture" id=1] +[ext_resource path="res://scripts/game_modules/ui_window_module.gd" type="Script" id=2] +[ext_resource path="res://ui/bags/Bag.tscn" type="PackedScene" id=3] + +[resource] +script = ExtResource( 2 ) +enabled = true +scene = ExtResource( 3 ) +opener_button_texture = ExtResource( 1 ) +index = 3 +add_button = true diff --git a/game/ui/bags/weapon_set_button_group.tres b/game/ui/bags/weapon_set_button_group.tres new file mode 100644 index 0000000..0e55d74 --- /dev/null +++ b/game/ui/bags/weapon_set_button_group.tres @@ -0,0 +1,3 @@ +[gd_resource type="ButtonGroup" format=2] + +[resource] diff --git a/game/ui/buttons/Buttons.gd b/game/ui/buttons/Buttons.gd new file mode 100644 index 0000000..f69ae56 --- /dev/null +++ b/game/ui/buttons/Buttons.gd @@ -0,0 +1,75 @@ +extends Control + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export (PackedScene) var image_button : PackedScene + +export (NodePath) var spell_book_path +export (NodePath) var spell_book_button_path +var spell_book +var spell_book_button + +export (NodePath) var lock_button_path +var lock_button + +var player : Entity + +func _ready(): + lock_button = get_node(lock_button_path) + lock_button.connect("pressed", self, "_lock_button_click") + +func add_image_button(texture : Texture, index : int = -1) -> Button: + var button : Button = image_button.instance() as Button + + button.set_meta("button_index", index) + + button.get_child(0).texture = texture + + add_child(button) + + for ch in get_children(): + var button_index : int = get_child_count() + + if ch.has_meta("button_index"): + button_index = ch.get_meta("button_index") + + if button_index != -1: + move_child(ch, button_index) + + return button + +func set_player(p_player): + player = p_player + + +func _lock_button_click(): + if player == null: + return + + var cls = player.centity_data + + if cls == null: + return + + var profile = ProfileManager.getc_player_profile().get_class_profile(cls.resource_path) + + profile.actionbar_locked = not profile.actionbar_locked + diff --git a/game/ui/buttons/ImageButton.tscn b/game/ui/buttons/ImageButton.tscn new file mode 100644 index 0000000..30a2305 --- /dev/null +++ b/game/ui/buttons/ImageButton.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/theme/character_icon.tres" type="Texture" id=1] + +[node name="ImageButton" type="Button"] +margin_right = 25.0 +margin_bottom = 40.0 +rect_min_size = Vector2( 25, 30 ) +hint_tooltip = "Inventory" +focus_mode = 0 +toggle_mode = true +enabled_focus_mode = 0 +keep_pressed_outside = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="TextureRect" type="TextureRect" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 1 ) +expand = true +stretch_mode = 6 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/game/ui/castbar/Castbar.gd b/game/ui/castbar/Castbar.gd new file mode 100644 index 0000000..1e464bd --- /dev/null +++ b/game/ui/castbar/Castbar.gd @@ -0,0 +1,80 @@ +extends VBoxContainer + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export (NodePath) var progress_bar_path +export (NodePath) var label_path + +var progress_bar : ProgressBar +var label : Label + +var player : Entity = null +var spell_cast_info : SpellCastInfo = null + +func _ready() -> void: + progress_bar = get_node(progress_bar_path) + progress_bar.min_value = 0 + label = get_node(label_path) + hide() + set_process(false) + +func _process(delta: float) -> void: + if not spell_cast_info.is_casting: + hide() + set_process(false) + + progress_bar.value = spell_cast_info.current_cast_time + + +func set_player(p_player: Entity) -> void: + if not player == null: + player.disconnect("notification_ccast", self, "on_notification_ccast") + + player = p_player + + player.connect("notification_ccast", self, "on_notification_ccast") + + +func on_notification_ccast(what : int, pspell_cast_info: SpellCastInfo) -> void: + if what == SpellEnums.NOTIFICATION_CAST_STARTED: + set_process(true) + + spell_cast_info = pspell_cast_info + + label.text = spell_cast_info.spell.get_name() + + progress_bar.value = spell_cast_info.current_cast_time + progress_bar.max_value = spell_cast_info.cast_time + + show() + elif what == SpellEnums.NOTIFICATION_CAST_FAILED: + set_process(false) + hide() + elif what == SpellEnums.NOTIFICATION_CAST_FINISHED: + set_process(false) + hide() + elif what == SpellEnums.NOTIFICATION_CAST_INTERRUPTED: + set_process(false) + hide() + + + + diff --git a/game/ui/castbar/Castbar.tscn b/game/ui/castbar/Castbar.tscn new file mode 100644 index 0000000..d5bf1f4 --- /dev/null +++ b/game/ui/castbar/Castbar.tscn @@ -0,0 +1,52 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/castbar/Castbar.gd" type="Script" id=1] +[ext_resource path="res://ui/theme/scrollbar_grabber_blue.tres" type="StyleBox" id=2] + +[node name="Castbar" type="VBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +progress_bar_path = NodePath("HBoxContainer/ProgressBar") +label_path = NodePath("HBoxContainer/ProgressBar/Label") + +[node name="Spacer" type="Control" parent="."] +margin_right = 1024.0 +margin_bottom = 447.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 3.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +margin_top = 451.0 +margin_right = 1024.0 +margin_bottom = 600.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +alignment = 1 + +[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer"] +margin_left = 402.0 +margin_right = 622.0 +margin_bottom = 20.0 +rect_min_size = Vector2( 220, 20 ) +mouse_filter = 2 +custom_styles/fg = ExtResource( 2 ) +percent_visible = false + +[node name="Label" type="Label" parent="HBoxContainer/ProgressBar"] +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/game/ui/castbar/game_module.tres b/game/ui/castbar/game_module.tres new file mode 100644 index 0000000..2d4c9e7 --- /dev/null +++ b/game/ui/castbar/game_module.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" load_steps=3 format=2] + +[ext_resource path="res://scripts/game_modules/ui_gui_child_module.gd" type="Script" id=1] +[ext_resource path="res://ui/castbar/Castbar.tscn" type="PackedScene" id=2] + +[resource] +script = ExtResource( 1 ) +enabled = true +scene = ExtResource( 2 ) +hide = true diff --git a/game/ui/character/CharacterWindow.gd b/game/ui/character/CharacterWindow.gd new file mode 100644 index 0000000..b6f6d9d --- /dev/null +++ b/game/ui/character/CharacterWindow.gd @@ -0,0 +1,33 @@ +extends Control + +#export(NodePath) var opener_button_path : NodePath +var opener_button : BaseButton + +export(NodePath) var container_path : NodePath +var container : Node + +var _player : Entity + +func _ready(): +# opener_button = get_node_or_null(opener_button_path) as BaseButton + container = get_node(container_path) + +func set_player(p_player: Entity) -> void: + _player = p_player + + for c in container.get_children(): + if c.has_method("set_player"): + c.set_player(_player) + +func _on_button_toggled(button_pressed): + if button_pressed: + show() + else: + hide() + + +func _on_Button_pressed(): + if opener_button: + opener_button.pressed = false + + hide() diff --git a/game/ui/character/CharacterWindow.tscn b/game/ui/character/CharacterWindow.tscn new file mode 100644 index 0000000..25abd6d --- /dev/null +++ b/game/ui/character/CharacterWindow.tscn @@ -0,0 +1,385 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/character/CharacterWindow.gd" type="Script" id=2] +[ext_resource path="res://ui/character/SingleStatRow.tscn" type="PackedScene" id=3] + +[node name="CharacterWindow" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +theme = ExtResource( 1 ) +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} +container_path = NodePath("Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer") + +[node name="Panel" type="PanelContainer" parent="."] +margin_left = 52.0 +margin_top = 54.0 +margin_right = 288.0 +margin_bottom = 421.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 232.0 +margin_bottom = 363.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="Panel/VBoxContainer"] +margin_right = 228.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 0, 30 ) + +[node name="Label" type="Label" parent="Panel/VBoxContainer/HBoxContainer"] +margin_top = 7.0 +margin_right = 194.0 +margin_bottom = 22.0 +size_flags_horizontal = 3 +text = "Character" + +[node name="Button" type="Button" parent="Panel/VBoxContainer/HBoxContainer"] +margin_left = 198.0 +margin_right = 228.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 30, 30 ) +text = "X" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HBoxContainer2" type="HBoxContainer" parent="Panel/VBoxContainer"] +margin_top = 38.0 +margin_right = 228.0 +margin_bottom = 359.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="ScrollContainer" type="ScrollContainer" parent="Panel/VBoxContainer/HBoxContainer2"] +margin_right = 228.0 +margin_bottom = 321.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="MarginContainer" type="MarginContainer" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer"] +margin_right = 218.0 +margin_bottom = 1066.0 +size_flags_horizontal = 3 +custom_constants/margin_right = 8 +custom_constants/margin_left = 6 + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer"] +margin_left = 6.0 +margin_right = 210.0 +margin_bottom = 1066.0 +size_flags_horizontal = 3 + +[node name="Agility" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_right = 204.0 +stat_name = "Agility" + +[node name="Strength" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 23.0 +margin_right = 204.0 +margin_bottom = 38.0 +stat_name = "Strength" + +[node name="Stamina" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 46.0 +margin_right = 204.0 +margin_bottom = 61.0 +stat_name = "Stamina" + +[node name="Intellect" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 69.0 +margin_right = 204.0 +margin_bottom = 84.0 +stat_name = "Intellect" + +[node name="Spirit" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 92.0 +margin_right = 204.0 +margin_bottom = 107.0 +stat_name = "Spirit" + +[node name="Separator" type="Control" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer"] +margin_top = 115.0 +margin_right = 204.0 +margin_bottom = 119.0 +rect_min_size = Vector2( 0, 4 ) + +[node name="Health" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 127.0 +margin_right = 204.0 +margin_bottom = 142.0 +stat_name = "Health" + +[node name="Mana" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 150.0 +margin_right = 204.0 +margin_bottom = 165.0 +stat_name = "Mana" + +[node name="Speed" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 173.0 +margin_right = 204.0 +margin_bottom = 188.0 +stat_name = "Speed" + +[node name="Haste" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 196.0 +margin_right = 204.0 +margin_bottom = 211.0 +stat_name = "Haste" + +[node name="HasteRating" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 219.0 +margin_right = 204.0 +margin_bottom = 234.0 +stat_name = "Haste Rating" + +[node name="Separator2" type="Control" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer"] +margin_top = 242.0 +margin_right = 204.0 +margin_bottom = 246.0 +rect_min_size = Vector2( 0, 4 ) + +[node name="Resilience" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 254.0 +margin_right = 204.0 +margin_bottom = 269.0 +stat_name = "Resilience" + +[node name="Armor" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 277.0 +margin_right = 204.0 +margin_bottom = 292.0 +stat_name = "Armor" + +[node name="Separator4" type="Control" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer"] +margin_top = 300.0 +margin_right = 204.0 +margin_bottom = 304.0 +rect_min_size = Vector2( 0, 4 ) + +[node name="AttackPower" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 312.0 +margin_right = 204.0 +margin_bottom = 327.0 +stat_name = "Attack Power" + +[node name="SpellPower" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 335.0 +margin_right = 204.0 +margin_bottom = 350.0 +stat_name = "Spell Power" + +[node name="MeleeCrit" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 358.0 +margin_right = 204.0 +margin_bottom = 373.0 +stat_name = "Melee Crit" + +[node name="MeleeCritBonus" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 381.0 +margin_right = 204.0 +margin_bottom = 396.0 +stat_name = "Melee Crit Bonus" + +[node name="SpellCrit" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 404.0 +margin_right = 204.0 +margin_bottom = 419.0 +stat_name = "Spell Crit" + +[node name="SpellCritBonus" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 427.0 +margin_right = 204.0 +margin_bottom = 442.0 +stat_name = "Spell Crit Bonus" + +[node name="Separator3" type="Control" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer"] +margin_top = 450.0 +margin_right = 204.0 +margin_bottom = 454.0 +rect_min_size = Vector2( 0, 4 ) + +[node name="Block" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 462.0 +margin_right = 204.0 +margin_bottom = 477.0 +stat_name = "Block" + +[node name="Parry" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 485.0 +margin_right = 204.0 +margin_bottom = 500.0 +stat_name = "Parry" + +[node name="DamageReduction" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 508.0 +margin_right = 204.0 +margin_bottom = 523.0 +stat_name = "Damage Reduction" + +[node name="MeleeDamageReduction" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 531.0 +margin_right = 204.0 +margin_bottom = 546.0 +stat_name = "Melee Damage Reduction" + +[node name="SpellDamageReduction" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 554.0 +margin_right = 204.0 +margin_bottom = 569.0 +stat_name = "Spell Damage Reduction" + +[node name="Separator5" type="Control" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer"] +margin_top = 577.0 +margin_right = 204.0 +margin_bottom = 581.0 +rect_min_size = Vector2( 0, 4 ) + +[node name="DamageTaken" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 589.0 +margin_right = 204.0 +margin_bottom = 604.0 +stat_name = "Damage Taken" + +[node name="HealTaken" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 612.0 +margin_right = 204.0 +margin_bottom = 627.0 +stat_name = "Heal Taken" + +[node name="Separator6" type="Control" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer"] +margin_top = 635.0 +margin_right = 204.0 +margin_bottom = 639.0 +rect_min_size = Vector2( 0, 4 ) + +[node name="MeleeDamage" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 647.0 +margin_right = 204.0 +margin_bottom = 662.0 +stat_name = "Melee Damage" + +[node name="SpellDamage" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 670.0 +margin_right = 204.0 +margin_bottom = 685.0 +stat_name = "Spell Damage" + +[node name="Separator7" type="Control" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer"] +margin_top = 693.0 +margin_right = 204.0 +margin_bottom = 697.0 +rect_min_size = Vector2( 0, 4 ) + +[node name="HolyResist" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 705.0 +margin_right = 204.0 +margin_bottom = 720.0 +stat_name = "Holy Resist" + +[node name="ShadowResist" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 728.0 +margin_right = 204.0 +margin_bottom = 743.0 +stat_name = "Shadow Resist" + +[node name="NatureResist" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 751.0 +margin_right = 204.0 +margin_bottom = 766.0 +stat_name = "Nature Resist" + +[node name="FireResist" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 774.0 +margin_right = 204.0 +margin_bottom = 789.0 +stat_name = "Fire Resist" + +[node name="FrostResist" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 797.0 +margin_right = 204.0 +margin_bottom = 812.0 +stat_name = "Frost Resist" + +[node name="LightningResist" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 820.0 +margin_right = 204.0 +margin_bottom = 835.0 +stat_name = "Lightning Resist" + +[node name="ChaosResist" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 843.0 +margin_right = 204.0 +margin_bottom = 858.0 +stat_name = "Chaos Resist" + +[node name="SilenceResist" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 866.0 +margin_right = 204.0 +margin_bottom = 881.0 +stat_name = "Silence Resist" + +[node name="FearResist" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 889.0 +margin_right = 204.0 +margin_bottom = 904.0 +stat_name = "Fear Resist" + +[node name="StunResist" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 912.0 +margin_right = 204.0 +margin_bottom = 927.0 +stat_name = "Stun Resist" + +[node name="Separator8" type="Control" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer"] +margin_top = 935.0 +margin_right = 204.0 +margin_bottom = 939.0 +rect_min_size = Vector2( 0, 4 ) + +[node name="Energy" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 947.0 +margin_right = 204.0 +margin_bottom = 962.0 +stat_name = "Energy" + +[node name="Rage" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 970.0 +margin_right = 204.0 +margin_bottom = 985.0 +stat_name = "Rage" + +[node name="XPRate" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 993.0 +margin_right = 204.0 +margin_bottom = 1008.0 +stat_name = "XP Rate" + +[node name="Separator9" type="Control" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer"] +margin_top = 1016.0 +margin_right = 204.0 +margin_bottom = 1020.0 +rect_min_size = Vector2( 0, 4 ) + +[node name="WeaponDamageMin" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 1028.0 +margin_right = 204.0 +margin_bottom = 1043.0 +stat_name = "Weapon Damage Min" + +[node name="WeaponDamageMax" parent="Panel/VBoxContainer/HBoxContainer2/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource( 3 )] +margin_top = 1051.0 +margin_right = 204.0 +margin_bottom = 1066.0 +stat_name = "Weapon Damage Max" + +[connection signal="pressed" from="Panel/VBoxContainer/HBoxContainer/Button" to="." method="_on_Button_pressed"] diff --git a/game/ui/character/SingleStatRow.gd b/game/ui/character/SingleStatRow.gd new file mode 100644 index 0000000..053938d --- /dev/null +++ b/game/ui/character/SingleStatRow.gd @@ -0,0 +1,38 @@ +extends HBoxContainer + +export(String) var stat_name : String +var stat_id : int + +onready var stat_name_label : Label = $StatName as Label +onready var stat_value_label : Label = $Stat as Label + +var _player : Entity + +func _ready(): + stat_id = ESS.stat_get_id(stat_name) + + stat_name_label.text = stat_name + + connect("visibility_changed", self, "on_visibility_changed") + +func on_visibility_changed(): + if _player: + stat_value_label.text = str(_player.stat_getc_current(stat_id)) + " " + else: + stat_value_label.text = str(0) + " " + +func set_player(p_player: Entity) -> void: + _player = p_player + + on_visibility_changed() + +""" +Agility,Strength,Stamina,Intellect,Spirit, +Health,Mana,Speed,Global Cooldown,Haste,Haste Rating, +Resilience,Armor,Attack Power,Spell Power,Melee Crit, +Melee Crit Bonus,Spell Crit,Spell Crit Bonus,Block,Parry,Damage Reduction, +Melee Damage Reduction,Spell Damage Reduction,Damage Taken,Heal Taken, +Melee Damage,Spell Damage,Holy Resist,Shadow Resist,Nature Resist, +Fire Resist,Frost Resist,Lightning Resist,Chaos Resist,Silence Resist,Fear Resist, +Stun Resist,Energy,Rage,XP Rate,Weapon Damage Min,Weapon Damage Max +""" diff --git a/game/ui/character/SingleStatRow.tscn b/game/ui/character/SingleStatRow.tscn new file mode 100644 index 0000000..af3ffed --- /dev/null +++ b/game/ui/character/SingleStatRow.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/character/SingleStatRow.gd" type="Script" id=1] + +[node name="SingleStatRow" type="HBoxContainer"] +margin_right = 1016.0 +margin_bottom = 15.0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="StatName" type="Label" parent="."] +margin_right = 506.0 +margin_bottom = 14.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +valign = 1 + +[node name="Stat" type="Label" parent="."] +margin_left = 510.0 +margin_right = 1016.0 +margin_bottom = 14.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +align = 2 +valign = 1 diff --git a/game/ui/character/game_module.tres b/game/ui/character/game_module.tres new file mode 100644 index 0000000..3efffa8 --- /dev/null +++ b/game/ui/character/game_module.tres @@ -0,0 +1,13 @@ +[gd_resource type="Resource" load_steps=4 format=2] + +[ext_resource path="res://scripts/game_modules/ui_window_module.gd" type="Script" id=1] +[ext_resource path="res://ui/character/CharacterWindow.tscn" type="PackedScene" id=2] +[ext_resource path="res://ui/theme/character_icon.tres" type="Texture" id=3] + +[resource] +script = ExtResource( 1 ) +enabled = true +scene = ExtResource( 2 ) +opener_button_texture = ExtResource( 3 ) +index = 0 +add_button = true diff --git a/game/ui/crafting/CraftItemDescription.gd b/game/ui/crafting/CraftItemDescription.gd new file mode 100644 index 0000000..3f5e0e7 --- /dev/null +++ b/game/ui/crafting/CraftItemDescription.gd @@ -0,0 +1,42 @@ +extends HBoxContainer + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var icon_path : NodePath +export(NodePath) var name_label_path : NodePath +export(NodePath) var description_label_path : NodePath + +var _icon : TextureRect +var _name_label : Label +var _description_label : RichTextLabel + +func _ready(): + _icon = get_node(icon_path) as TextureRect + _name_label = get_node(name_label_path) as Label + _description_label = get_node(description_label_path) as RichTextLabel + +func set_item(item: CraftRecipeHelper) -> void: + if item == null: + return + + _icon.texture = item.item.icon + _name_label.text = item.item.text_name + _description_label.text = item.item.text_name diff --git a/game/ui/crafting/CraftingWindow.gd b/game/ui/crafting/CraftingWindow.gd new file mode 100644 index 0000000..0080c41 --- /dev/null +++ b/game/ui/crafting/CraftingWindow.gd @@ -0,0 +1,162 @@ +extends Control + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +var opener_button : BaseButton + +export(PackedScene) var item_entry_scene : PackedScene +export(PackedScene) var recipe_selector_scene : PackedScene + +export(NodePath) var item_container_path : NodePath +export(NodePath) var tools_container_path : NodePath +export(NodePath) var materials_container_path : NodePath +export(NodePath) var recipe_selector_container_path : NodePath + +export(NodePath) var recipe_selector_main_on : NodePath +export(NodePath) var recipe_selector_main_off : NodePath +export(NodePath) var materials_container_main_on : NodePath +export(NodePath) var materials_container_main_off : NodePath + +var _item_container : Node +var _tools_container : Node +var _materials_container : Node +var _recipe_selector_container : Node + +var _selected_craft_recipe : CraftRecipe + +var _player : Entity + +var _recipe_selector_main_on : Node +var _recipe_selector_main_off : Node +var _materials_container_main_on : Node +var _materials_container_main_off : Node + +func _ready(): + connect("visibility_changed", self, "on_visibility_changed") + + _item_container = get_node(item_container_path) + _tools_container = get_node(tools_container_path) + _materials_container = get_node(materials_container_path) + _recipe_selector_container = get_node(recipe_selector_container_path) + + _recipe_selector_main_on = get_node(recipe_selector_main_on) + _recipe_selector_main_off = get_node(recipe_selector_main_off) + _materials_container_main_on = get_node(materials_container_main_on) + _materials_container_main_off = get_node(materials_container_main_off) + +func set_player(entity: Entity) -> void: + _player = entity + + set_category(CraftRecipe.CRAFT_CATEGORY_ALCHEMY) + +func set_category(category: int) -> void: + for ch in _recipe_selector_container.get_children(): + ch.queue_free() + + var count : int = 0 + for i in range(_player.craft_gets_recipe_count()): + var cr : CraftRecipe = _player.craft_gets_recipe(i) + + if cr.category == category: + var rss : Node = recipe_selector_scene.instance() + _recipe_selector_container.add_child(rss) + rss.owner = _recipe_selector_container + + rss.set_recipe(cr, self) + + count += 1 + + if count == 0: + _recipe_selector_main_on.visible = false + _recipe_selector_main_off.visible = true + else: + _recipe_selector_main_on.visible = true + _recipe_selector_main_off.visible = false + + +func request_craft() -> void: + _player.craft_crequest(_selected_craft_recipe.id) + + for ch in _tools_container.get_children(): + ch.refresh() + + for ch in _materials_container.get_children(): + ch.refresh() + +func select_recipe(recipe : CraftRecipe) -> void: + _selected_craft_recipe = recipe + + if _selected_craft_recipe == null: + _materials_container_main_on.visible = false + _materials_container_main_off.visible = true + + return + else: + _materials_container_main_on.visible = true + _materials_container_main_off.visible = false + + _item_container.set_item(recipe.item) + + for ch in _tools_container.get_children(): + ch.queue_free() + + for ch in _materials_container.get_children(): + ch.queue_free() + + for i in range(recipe.get_required_tools_count()): + var ih : CraftRecipeHelper = recipe.get_required_tool(i) + + if ih == null: + continue + + var ie : Node = item_entry_scene.instance() + _tools_container.add_child(ie) + ie.owner = _tools_container + ie.set_item(_player, ih) + + for i in range(recipe.get_required_materials_count()): + var ih : CraftRecipeHelper = recipe.get_required_material(i) + + if ih == null: + continue + + var ie : Node = item_entry_scene.instance() + _materials_container.add_child(ie) + ie.owner = _materials_container + ie.set_item(_player, ih) + + +func on_visibility_changed(): + if opener_button: + if visible && !opener_button.pressed: + opener_button.pressed = true + return + + if !visible && opener_button.pressed: + opener_button.pressed = false + +func _on_button_toggled(button_pressed): + if button_pressed: + if !visible: + show() + else: + if visible: + hide() diff --git a/game/ui/crafting/CraftingWindow.tscn b/game/ui/crafting/CraftingWindow.tscn new file mode 100644 index 0000000..e8d411b --- /dev/null +++ b/game/ui/crafting/CraftingWindow.tscn @@ -0,0 +1,319 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/crafting/CraftingWindow.gd" type="Script" id=2] +[ext_resource path="res://ui/crafting/RecipeSelector.tscn" type="PackedScene" id=3] +[ext_resource path="res://ui/crafting/ItemEntry.tscn" type="PackedScene" id=4] +[ext_resource path="res://ui/crafting/CraftItemDescription.gd" type="Script" id=5] + +[sub_resource type="ButtonGroup" id=1] + +[node name="CraftingWindow" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +theme = ExtResource( 1 ) +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} +item_entry_scene = ExtResource( 4 ) +recipe_selector_scene = ExtResource( 3 ) +item_container_path = NodePath("PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer/VBoxContainer2/CraftItemDescription") +tools_container_path = NodePath("PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer/VBoxContainer2/ToolsContainer") +materials_container_path = NodePath("PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer/VBoxContainer2/MaterialContainer") +recipe_selector_container_path = NodePath("PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer2/Recipes/VBoxContainer") +recipe_selector_main_on = NodePath("PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer2/Recipes") +recipe_selector_main_off = NodePath("PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer2/CenterContainer2") +materials_container_main_on = NodePath("PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry") +materials_container_main_off = NodePath("PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CenterContainer") + +[node name="PanelContainer" type="PanelContainer" parent="."] +margin_left = 43.0 +margin_top = 36.0 +margin_right = 995.0 +margin_bottom = 577.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 948.0 +margin_bottom = 537.0 + +[node name="Header" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +margin_right = 944.0 +margin_bottom = 30.0 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/Header"] +margin_top = 7.0 +margin_right = 900.0 +margin_bottom = 22.0 +size_flags_horizontal = 3 +text = "Crafting" + +[node name="Button" type="Button" parent="PanelContainer/VBoxContainer/Header"] +margin_left = 904.0 +margin_right = 944.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 40, 30 ) +text = "X" + +[node name="Categories" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +margin_top = 38.0 +margin_right = 944.0 +margin_bottom = 64.0 + +[node name="HBoxContainer2" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Categories"] +margin_right = 944.0 +margin_bottom = 26.0 +rect_min_size = Vector2( 0, 20 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +alignment = 1 + +[node name="Alchemy" type="Button" parent="PanelContainer/VBoxContainer/Categories/HBoxContainer2"] +margin_left = 162.0 +margin_right = 262.0 +margin_bottom = 26.5702 +rect_min_size = Vector2( 100, 0 ) +toggle_mode = true +pressed = true +group = SubResource( 1 ) +text = "Alchemy" + +[node name="Smithing" type="Button" parent="PanelContainer/VBoxContainer/Categories/HBoxContainer2"] +margin_left = 266.0 +margin_right = 366.0 +margin_bottom = 26.5702 +rect_min_size = Vector2( 100, 0 ) +toggle_mode = true +group = SubResource( 1 ) +text = "Smithing" + +[node name="Enchanting" type="Button" parent="PanelContainer/VBoxContainer/Categories/HBoxContainer2"] +margin_left = 370.0 +margin_right = 470.0 +margin_bottom = 26.5702 +rect_min_size = Vector2( 100, 0 ) +toggle_mode = true +group = SubResource( 1 ) +text = "Enchantig" + +[node name="Engineering" type="Button" parent="PanelContainer/VBoxContainer/Categories/HBoxContainer2"] +margin_left = 474.0 +margin_right = 574.0 +margin_bottom = 26.5702 +rect_min_size = Vector2( 100, 0 ) +toggle_mode = true +group = SubResource( 1 ) +text = "Engineering" + +[node name="Tailoring" type="Button" parent="PanelContainer/VBoxContainer/Categories/HBoxContainer2"] +margin_left = 578.0 +margin_right = 678.0 +margin_bottom = 26.5702 +rect_min_size = Vector2( 100, 0 ) +toggle_mode = true +group = SubResource( 1 ) +text = "Tailoring" + +[node name="Other" type="Button" parent="PanelContainer/VBoxContainer/Categories/HBoxContainer2"] +margin_left = 682.0 +margin_right = 782.0 +margin_bottom = 26.5702 +rect_min_size = Vector2( 100, 0 ) +toggle_mode = true +group = SubResource( 1 ) +text = "Other" + +[node name="VBoxContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer"] +margin_top = 72.0 +margin_right = 944.0 +margin_bottom = 533.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer"] +margin_right = 944.0 +margin_bottom = 461.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="PanelContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer"] +margin_right = 626.0 +margin_bottom = 461.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="CraftEntry" type="VBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer"] +visible = false +margin_left = 4.0 +margin_top = 4.0 +margin_right = 718.0 +margin_bottom = 516.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.6 +custom_constants/separation = 10 + +[node name="ScrollContainer" type="ScrollContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry"] +margin_right = 714.0 +margin_bottom = 472.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +scroll_horizontal_enabled = false + +[node name="VBoxContainer2" type="VBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer"] +margin_right = 714.0 +margin_bottom = 122.0 +size_flags_horizontal = 3 + +[node name="CraftItemDescription" type="HBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer/VBoxContainer2"] +margin_right = 714.0 +margin_bottom = 60.0 +alignment = 1 +script = ExtResource( 5 ) +icon_path = NodePath("VBoxContainer/PanelContainer/TextureRect") +name_label_path = NodePath("PanelContainer2/VBoxContainer/Label") +description_label_path = NodePath("PanelContainer2/VBoxContainer/RichTextLabel") + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer/VBoxContainer2/CraftItemDescription"] +margin_left = 175.0 +margin_right = 235.0 +margin_bottom = 60.0 + +[node name="PanelContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer/VBoxContainer2/CraftItemDescription/VBoxContainer"] +margin_right = 60.0 +margin_bottom = 60.0 +rect_min_size = Vector2( 60, 60 ) + +[node name="TextureRect" type="TextureRect" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer/VBoxContainer2/CraftItemDescription/VBoxContainer/PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 56.0 +margin_bottom = 56.0 +expand = true + +[node name="PanelContainer2" type="PanelContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer/VBoxContainer2/CraftItemDescription"] +margin_left = 239.0 +margin_right = 539.0 +margin_bottom = 60.0 +rect_min_size = Vector2( 300, 0 ) + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer/VBoxContainer2/CraftItemDescription/PanelContainer2"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 296.0 +margin_bottom = 56.0 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer/VBoxContainer2/CraftItemDescription/PanelContainer2/VBoxContainer"] +margin_right = 292.0 +margin_bottom = 15.0 + +[node name="RichTextLabel" type="RichTextLabel" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer/VBoxContainer2/CraftItemDescription/PanelContainer2/VBoxContainer"] +margin_top = 23.0 +margin_right = 292.0 +margin_bottom = 52.0 +size_flags_vertical = 3 +text = " +" +scroll_active = false + +[node name="Label2" type="Label" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer/VBoxContainer2"] +margin_top = 68.0 +margin_right = 714.0 +margin_bottom = 83.0 +text = "Tools" + +[node name="ToolsContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer/VBoxContainer2"] +margin_top = 91.0 +margin_right = 714.0 +margin_bottom = 91.0 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer/VBoxContainer2"] +margin_top = 99.0 +margin_right = 714.0 +margin_bottom = 114.0 +text = "Materials" + +[node name="MaterialContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/ScrollContainer/VBoxContainer2"] +margin_top = 122.0 +margin_right = 714.0 +margin_bottom = 122.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry"] +margin_top = 482.0 +margin_right = 714.0 +margin_bottom = 512.0 +alignment = 1 + +[node name="CraftButton" type="Button" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/HBoxContainer"] +margin_left = 307.0 +margin_right = 407.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 100, 30 ) +text = "Craft" + +[node name="CenterContainer" type="CenterContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 622.0 +margin_bottom = 457.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CenterContainer"] +margin_left = 264.0 +margin_top = 219.0 +margin_right = 354.0 +margin_bottom = 234.0 +text = "Select a recipe" +align = 1 +valign = 1 + +[node name="PanelContainer2" type="PanelContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer"] +margin_left = 630.0 +margin_right = 944.0 +margin_bottom = 461.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.5 + +[node name="Recipes" type="ScrollContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer2"] +visible = false +margin_left = 4.0 +margin_top = 4.0 +margin_right = 286.0 +margin_bottom = 516.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer2/Recipes"] +margin_right = 282.0 +size_flags_horizontal = 3 + +[node name="CenterContainer2" type="CenterContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer2"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 310.0 +margin_bottom = 457.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer2/CenterContainer2"] +margin_left = 123.0 +margin_top = 219.0 +margin_right = 183.0 +margin_bottom = 234.0 +text = "No recipes" +align = 1 +valign = 1 + +[connection signal="pressed" from="PanelContainer/VBoxContainer/Header/Button" to="." method="hide"] +[connection signal="pressed" from="PanelContainer/VBoxContainer/Categories/HBoxContainer2/Alchemy" to="." method="set_category" binds= [ 1 ]] +[connection signal="pressed" from="PanelContainer/VBoxContainer/Categories/HBoxContainer2/Smithing" to="." method="set_category" binds= [ 2 ]] +[connection signal="pressed" from="PanelContainer/VBoxContainer/Categories/HBoxContainer2/Enchanting" to="." method="set_category" binds= [ 4 ]] +[connection signal="pressed" from="PanelContainer/VBoxContainer/Categories/HBoxContainer2/Engineering" to="." method="set_category" binds= [ 5 ]] +[connection signal="pressed" from="PanelContainer/VBoxContainer/Categories/HBoxContainer2/Tailoring" to="." method="set_category" binds= [ 3 ]] +[connection signal="pressed" from="PanelContainer/VBoxContainer/Categories/HBoxContainer2/Other" to="." method="set_category" binds= [ 0 ]] +[connection signal="pressed" from="PanelContainer/VBoxContainer/VBoxContainer/HBoxContainer/PanelContainer/CraftEntry/HBoxContainer/CraftButton" to="." method="request_craft"] diff --git a/game/ui/crafting/ItemEntry.gd b/game/ui/crafting/ItemEntry.gd new file mode 100644 index 0000000..d8c5152 --- /dev/null +++ b/game/ui/crafting/ItemEntry.gd @@ -0,0 +1,47 @@ +extends PanelContainer + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var icon_path : NodePath +export(NodePath) var label_path : NodePath + +var _icon : TextureRect +var _label : Label + +var _entity : Entity +var _crh : CraftRecipeHelper + +func _ready(): + _icon = get_node(icon_path) as TextureRect + _label = get_node(label_path) as Label + +func set_item(entity: Entity, crh: CraftRecipeHelper) -> void: + _entity = entity + _crh = crh + + refresh() + +func refresh() -> void: + if _crh.item == null: + return + + _icon.texture = _crh.item.icon + _label.text = _crh.item.text_name + " (" + str(_crh.count) + ")" diff --git a/game/ui/crafting/ItemEntry.tscn b/game/ui/crafting/ItemEntry.tscn new file mode 100644 index 0000000..3b9026d --- /dev/null +++ b/game/ui/crafting/ItemEntry.tscn @@ -0,0 +1,45 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/crafting/ItemEntry.gd" type="Script" id=1] + +[node name="ItemEntry" type="PanelContainer"] +margin_right = 695.0 +margin_bottom = 60.0 +rect_min_size = Vector2( 100, 60 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +icon_path = NodePath("HBoxContainer/PanelContainer/TextureRect") +label_path = NodePath("HBoxContainer/Label") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +margin_left = 14.0 +margin_top = 14.0 +margin_right = 681.0 +margin_bottom = 64.0 + +[node name="PanelContainer" type="PanelContainer" parent="HBoxContainer"] +margin_right = 50.0 +margin_bottom = 50.0 +rect_min_size = Vector2( 50, 50 ) + +[node name="TextureRect" type="TextureRect" parent="HBoxContainer/PanelContainer"] +margin_left = 14.0 +margin_top = 14.0 +margin_right = 36.0 +margin_bottom = 36.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +expand = true + +[node name="Label" type="Label" parent="HBoxContainer"] +margin_left = 58.0 +margin_top = 12.0 +margin_right = 667.0 +margin_bottom = 37.0 +size_flags_horizontal = 3 +text = "Spanner" +align = 1 diff --git a/game/ui/crafting/RecipeSelector.gd b/game/ui/crafting/RecipeSelector.gd new file mode 100644 index 0000000..c1c2b96 --- /dev/null +++ b/game/ui/crafting/RecipeSelector.gd @@ -0,0 +1,33 @@ +extends Button + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +var _recipe : CraftRecipe +var _crafting_window : Node + +func set_recipe(recipe : CraftRecipe, crafting_window : Node) -> void: + _recipe = recipe + _crafting_window = crafting_window + + text = recipe.item.item.text_name + +func _pressed(): + _crafting_window.select_recipe(_recipe) diff --git a/game/ui/crafting/RecipeSelector.tscn b/game/ui/crafting/RecipeSelector.tscn new file mode 100644 index 0000000..575485a --- /dev/null +++ b/game/ui/crafting/RecipeSelector.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/crafting/RecipeSelector.gd" type="Script" id=1] + +[node name="RecipeSelector" type="Button"] +margin_right = 303.0 +margin_bottom = 40.0 +rect_min_size = Vector2( 0, 40 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/game/ui/crafting/game_module.tres b/game/ui/crafting/game_module.tres new file mode 100644 index 0000000..71af8a5 --- /dev/null +++ b/game/ui/crafting/game_module.tres @@ -0,0 +1,13 @@ +[gd_resource type="Resource" load_steps=4 format=2] + +[ext_resource path="res://ui/theme/crafting_icon.tres" type="Texture" id=1] +[ext_resource path="res://scripts/game_modules/ui_window_module.gd" type="Script" id=2] +[ext_resource path="res://ui/crafting/CraftingWindow.tscn" type="PackedScene" id=3] + +[resource] +script = ExtResource( 2 ) +enabled = true +scene = ExtResource( 3 ) +opener_button_texture = ExtResource( 1 ) +index = 4 +add_button = true diff --git a/game/ui/debug/DebugInfo.gd b/game/ui/debug/DebugInfo.gd new file mode 100644 index 0000000..0a9b01a --- /dev/null +++ b/game/ui/debug/DebugInfo.gd @@ -0,0 +1,77 @@ +extends Label + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +func _ready(): + Settings.connect("setting_changed", self, "setting_changed") + + if visible: + set_process(true) + else: + set_process(false) + +func _exit_tree(): + if Settings != null: + Settings.disconnect("setting_changed", self, "setting_changed") + +func setting_changed(section, key, value): + if section == "debug" and key == "debug_info": + if value: + show() + set_process(true) + else: + hide() + set_process(false) + +func _process(delta): + var a : String = "Fps: " + str(Performance.get_monitor(Performance.TIME_FPS)) + "\n" +# a += "time_process: " + str(Performance.get_monitor(Performance.TIME_PROCESS)) + "\n" +# a += "time_physics_process: " + str(Performance.get_monitor(Performance.TIME_PHYSICS_PROCESS)) + "\n" + a += "mem_static: " + str(Performance.get_monitor(Performance.MEMORY_STATIC)) + "\n" + a += "mem_dynamic: " + str(Performance.get_monitor(Performance.MEMORY_DYNAMIC)) + "\n" +# a += "mem_static_max: " + str(Performance.get_monitor(Performance.MEMORY_STATIC_MAX)) + "\n" +# a += "mem_dyn_max: " + str(Performance.get_monitor(Performance.MEMORY_DYNAMIC_MAX)) + "\n" +# a += "mem_msg_buf_max: " + str(Performance.get_monitor(Performance.MEMORY_MESSAGE_BUFFER_MAX)) + "\n" + a += "obj_count: " + str(Performance.get_monitor(Performance.OBJECT_COUNT)) + "\n" + a += "obj_res_count: " + str(Performance.get_monitor(Performance.OBJECT_RESOURCE_COUNT)) + "\n" + a += "obj_mode_count: " + str(Performance.get_monitor(Performance.OBJECT_NODE_COUNT)) + "\n" + a += "obj_orphan_mode_count: " + str(Performance.get_monitor(Performance.OBJECT_ORPHAN_NODE_COUNT)) + "\n" + a += "obj_in_frame: " + str(Performance.get_monitor(Performance.RENDER_OBJECTS_IN_FRAME)) + "\n" + a += "vert_in_frame: " + str(Performance.get_monitor(Performance.RENDER_VERTICES_IN_FRAME)) + "\n" + a += "mat_changes: " + str(Performance.get_monitor(Performance.RENDER_MATERIAL_CHANGES_IN_FRAME)) + "\n" + a += "shader_changes: " + str(Performance.get_monitor(Performance.RENDER_SHADER_CHANGES_IN_FRAME)) + "\n" + a += "surface_changes: " + str(Performance.get_monitor(Performance.RENDER_SURFACE_CHANGES_IN_FRAME)) + "\n" + a += "draw_calls: " + str(Performance.get_monitor(Performance.RENDER_DRAW_CALLS_IN_FRAME)) + "\n" + a += "vid_mem_used: " + str(Performance.get_monitor(Performance.RENDER_VIDEO_MEM_USED)) + "\n" +# a += "texture_mem_used: " + str(Performance.get_monitor(Performance.RENDER_TEXTURE_MEM_USED)) + "\n" +# a += "vertex_mem_used: " + str(Performance.get_monitor(Performance.RENDER_VERTEX_MEM_USED)) + "\n" +# a += "vid_mem_total: " + str(Performance.get_monitor(Performance.RENDER_USAGE_VIDEO_MEM_TOTAL)) + "\n" + +# a += "phys_2d_active_obj: " + str(Performance.get_monitor(Performance.PHYSICS_2D_ACTIVE_OBJECTS)) + "\n" +# a += "phys_2d_coll_pairs: " + str(Performance.get_monitor(Performance.PHYSICS_2D_COLLISION_PAIRS)) + "\n" +# a += "phys_2d_island_count: " + str(Performance.get_monitor(Performance.PHYSICS_2D_ISLAND_COUNT)) + "\n" +# a += "phys_3d_active_obj: " + str(Performance.get_monitor(Performance.PHYSICS_3D_ACTIVE_OBJECTS)) + "\n" +# a += "phys_3d_coll_pairs: " + str(Performance.get_monitor(Performance.PHYSICS_3D_COLLISION_PAIRS)) + "\n" +# a += "phys_3d_island_count: " + str(Performance.get_monitor(Performance.PHYSICS_3D_ISLAND_COUNT)) + "\n" +# a += "audio_output_latency: " + str(Performance.get_monitor(Performance.AUDIO_OUTPUT_LATENCY)) + "\n" + + text = a + diff --git a/game/ui/debug/DebugInfo.tscn b/game/ui/debug/DebugInfo.tscn new file mode 100644 index 0000000..dd8d0f1 --- /dev/null +++ b/game/ui/debug/DebugInfo.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/debug/DebugInfo.gd" type="Script" id=1] +[ext_resource path="res://ui/debug/debuginfo_font.tres" type="DynamicFont" id=2] + +[node name="DebugInfo" type="CanvasLayer"] +layer = 3 + +[node name="DebugInfo" type="Label" parent="."] +visible = false +anchor_bottom = 1.0 +margin_right = 301.0 +custom_fonts/font = ExtResource( 2 ) +valign = 1 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/game/ui/debug/SpawnPointSimpleUI.tscn b/game/ui/debug/SpawnPointSimpleUI.tscn new file mode 100644 index 0000000..96e3eba --- /dev/null +++ b/game/ui/debug/SpawnPointSimpleUI.tscn @@ -0,0 +1,102 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] +[ext_resource path="res://scripts/networking/SpawnPoint.gd" type="Script" id=2] + + + +[node name="SpawnPoint" type="Spatial"] +script = ExtResource( 2 ) +multi_player = true +gui_path = NodePath("PanelContainer") +host_button_path = NodePath("PanelContainer/VBoxContainer/host") +address_line_edit_path = NodePath("PanelContainer/VBoxContainer/VBoxContainer/address") +port_line_edit_path = NodePath("PanelContainer/VBoxContainer/VBoxContainer/port") +connect_button_path = NodePath("PanelContainer/VBoxContainer/VBoxContainer/connect") +naturalist_button_path = NodePath("PanelContainer/VBoxContainer/select naturalist") +terrarin_path = NodePath("..") + +[node name="PanelContainer" type="PanelContainer" parent="."] +visible = false +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -126.0 +margin_top = -169.5 +margin_right = 126.0 +margin_bottom = 169.5 +theme = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 248.0 +margin_bottom = 335.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_constants/separation = 35 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer"] +margin_right = 244.0 +margin_bottom = 140.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 4.0 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/VBoxContainer"] +margin_right = 244.0 +margin_bottom = 15.0 +text = "Ip:" + +[node name="address" type="LineEdit" parent="PanelContainer/VBoxContainer/VBoxContainer"] +margin_top = 23.0 +margin_right = 244.0 +margin_bottom = 47.3413 +placeholder_text = "127.0.0.1" + +[node name="Label2" type="Label" parent="PanelContainer/VBoxContainer/VBoxContainer"] +margin_top = 55.0 +margin_right = 244.0 +margin_bottom = 70.0 +text = "Port:" + +[node name="port" type="LineEdit" parent="PanelContainer/VBoxContainer/VBoxContainer"] +margin_top = 78.0 +margin_right = 244.0 +margin_bottom = 102.341 +placeholder_text = "23223" + +[node name="connect" type="Button" parent="PanelContainer/VBoxContainer/VBoxContainer"] +margin_top = 110.0 +margin_right = 244.0 +margin_bottom = 140.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Connect" + +[node name="host" type="Button" parent="PanelContainer/VBoxContainer"] +margin_top = 175.0 +margin_right = 244.0 +margin_bottom = 210.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Host" + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"] +margin_top = 245.0 +margin_right = 244.0 +margin_bottom = 260.0 +size_flags_vertical = 1 +text = "Class: (Just select for offline play):" + +[node name="select naturalist" type="Button" parent="PanelContainer/VBoxContainer"] +margin_top = 295.0 +margin_right = 244.0 +margin_bottom = 331.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Naturalist" diff --git a/game/ui/debug/debuginfo_font.tres b/game/ui/debug/debuginfo_font.tres new file mode 100644 index 0000000..e07ee08 --- /dev/null +++ b/game/ui/debug/debuginfo_font.tres @@ -0,0 +1,7 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://fonts/VT323-Regular.ttf" type="DynamicFontData" id=1] + +[resource] +size = 11 +font_data = ExtResource( 1 ) diff --git a/game/ui/errorframe/ErrorFrame.tscn b/game/ui/errorframe/ErrorFrame.tscn new file mode 100644 index 0000000..8d3da0f --- /dev/null +++ b/game/ui/errorframe/ErrorFrame.tscn @@ -0,0 +1,5 @@ +[gd_scene format=2] + +[node name="ErrorFrame" type="MarginContainer"] +margin_right = 40.0 +margin_bottom = 40.0 diff --git a/game/ui/icons/icon_add.png b/game/ui/icons/icon_add.png new file mode 100644 index 0000000..fafc154 Binary files /dev/null and b/game/ui/icons/icon_add.png differ diff --git a/game/ui/icons/icon_add.png.import b/game/ui/icons/icon_add.png.import new file mode 100644 index 0000000..64ed6f5 --- /dev/null +++ b/game/ui/icons/icon_add.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_add.png-617e288ed3bf67d2ba76ab9f47fbf4f0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/icons/icon_add.png" +dest_files=[ "res://.import/icon_add.png-617e288ed3bf67d2ba76ab9f47fbf4f0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/ui/icons/icon_edit.png b/game/ui/icons/icon_edit.png new file mode 100644 index 0000000..37a0c83 Binary files /dev/null and b/game/ui/icons/icon_edit.png differ diff --git a/game/ui/icons/icon_edit.png.import b/game/ui/icons/icon_edit.png.import new file mode 100644 index 0000000..8d0f2ba --- /dev/null +++ b/game/ui/icons/icon_edit.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_edit.png-4e4d30376f2cfaefd3d39b2dce70ee57.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/icons/icon_edit.png" +dest_files=[ "res://.import/icon_edit.png-4e4d30376f2cfaefd3d39b2dce70ee57.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/ui/icons/icon_joy_axis.png b/game/ui/icons/icon_joy_axis.png new file mode 100644 index 0000000..f788feb Binary files /dev/null and b/game/ui/icons/icon_joy_axis.png differ diff --git a/game/ui/icons/icon_joy_axis.png.import b/game/ui/icons/icon_joy_axis.png.import new file mode 100644 index 0000000..2fa2cf1 --- /dev/null +++ b/game/ui/icons/icon_joy_axis.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_joy_axis.png-d24cf014cc6938689bf543968d165c5a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/icons/icon_joy_axis.png" +dest_files=[ "res://.import/icon_joy_axis.png-d24cf014cc6938689bf543968d165c5a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/ui/icons/icon_joy_button.png b/game/ui/icons/icon_joy_button.png new file mode 100644 index 0000000..752dc61 Binary files /dev/null and b/game/ui/icons/icon_joy_button.png differ diff --git a/game/ui/icons/icon_joy_button.png.import b/game/ui/icons/icon_joy_button.png.import new file mode 100644 index 0000000..6d506f5 --- /dev/null +++ b/game/ui/icons/icon_joy_button.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_joy_button.png-393039a547dbf39d452b3aafcee9f20c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/icons/icon_joy_button.png" +dest_files=[ "res://.import/icon_joy_button.png-393039a547dbf39d452b3aafcee9f20c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/ui/icons/icon_keyboard.png b/game/ui/icons/icon_keyboard.png new file mode 100644 index 0000000..cd939c3 Binary files /dev/null and b/game/ui/icons/icon_keyboard.png differ diff --git a/game/ui/icons/icon_keyboard.png.import b/game/ui/icons/icon_keyboard.png.import new file mode 100644 index 0000000..1369c2d --- /dev/null +++ b/game/ui/icons/icon_keyboard.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_keyboard.png-58b4ebdc3868706f0d2ebc63fcba3a74.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/icons/icon_keyboard.png" +dest_files=[ "res://.import/icon_keyboard.png-58b4ebdc3868706f0d2ebc63fcba3a74.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/ui/icons/icon_mouse.png b/game/ui/icons/icon_mouse.png new file mode 100644 index 0000000..eebefdc Binary files /dev/null and b/game/ui/icons/icon_mouse.png differ diff --git a/game/ui/icons/icon_mouse.png.import b/game/ui/icons/icon_mouse.png.import new file mode 100644 index 0000000..0a725da --- /dev/null +++ b/game/ui/icons/icon_mouse.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_mouse.png-5bef59a63732b271e4a97478075d6992.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/icons/icon_mouse.png" +dest_files=[ "res://.import/icon_mouse.png-5bef59a63732b271e4a97478075d6992.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/ui/icons/icon_remove.png b/game/ui/icons/icon_remove.png new file mode 100644 index 0000000..5df461d Binary files /dev/null and b/game/ui/icons/icon_remove.png differ diff --git a/game/ui/icons/icon_remove.png.import b/game/ui/icons/icon_remove.png.import new file mode 100644 index 0000000..2ede908 --- /dev/null +++ b/game/ui/icons/icon_remove.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon_remove.png-05b3a725226167bddcdc3b55463863b5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/icons/icon_remove.png" +dest_files=[ "res://.import/icon_remove.png-05b3a725226167bddcdc3b55463863b5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/ui/ingame_menu/ExitButton.gd b/game/ui/ingame_menu/ExitButton.gd new file mode 100644 index 0000000..51d0a9c --- /dev/null +++ b/game/ui/ingame_menu/ExitButton.gd @@ -0,0 +1,28 @@ +extends Button + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + + +func _ready(): + connect("pressed", self, "on_click") + +func on_click() -> void: + get_node("/root/Main").switch_scene(Main.StartSceneTypes.MENU) diff --git a/game/ui/ingame_menu/IngameMenu.tscn b/game/ui/ingame_menu/IngameMenu.tscn new file mode 100644 index 0000000..6795fe6 --- /dev/null +++ b/game/ui/ingame_menu/IngameMenu.tscn @@ -0,0 +1,106 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/options/Options.tscn" type="PackedScene" id=2] +[ext_resource path="res://ui/ingame_menu/ExitButton.gd" type="Script" id=3] +[ext_resource path="res://ui/keybinds/Keybinds.tscn" type="PackedScene" id=4] +[ext_resource path="res://ui/interface/InterfaceOptions.tscn" type="PackedScene" id=5] + +[node name="IngameMenu" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +theme = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Menu" type="PanelContainer" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -77.0 +margin_top = -51.0 +margin_right = 78.0 +margin_bottom = 51.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="Menu"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 151.0 +margin_bottom = 166.0 + +[node name="Resume" type="Button" parent="Menu/VBoxContainer"] +margin_right = 147.0 +margin_bottom = 26.5702 +text = "Resume" + +[node name="Keybinds" type="Button" parent="Menu/VBoxContainer"] +margin_top = 34.0 +margin_right = 147.0 +margin_bottom = 60.5702 +text = "Keybinds" + +[node name="Interface" type="Button" parent="Menu/VBoxContainer"] +margin_top = 68.0 +margin_right = 147.0 +margin_bottom = 94.5702 +text = "Interface" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Options" type="Button" parent="Menu/VBoxContainer"] +margin_top = 102.0 +margin_right = 147.0 +margin_bottom = 128.57 +text = "Options" + +[node name="Exit" type="Button" parent="Menu/VBoxContainer"] +margin_top = 136.0 +margin_right = 147.0 +margin_bottom = 162.57 +text = "Exit" +script = ExtResource( 3 ) + +[node name="Options" parent="." instance=ExtResource( 2 )] +visible = false +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -307.0 +margin_top = -220.0 +margin_right = 307.0 +margin_bottom = 220.0 + +[node name="KeybindWindow" parent="." instance=ExtResource( 4 )] +visible = false +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -426.0 +margin_top = -270.0 +margin_right = 426.0 +margin_bottom = 270.0 + +[node name="InterfaceOptions" parent="." instance=ExtResource( 5 )] +visible = false +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -331.0 +margin_top = -224.5 +margin_right = 331.0 +margin_bottom = 224.5 + +[connection signal="pressed" from="Menu/VBoxContainer/Resume" to="." method="hide"] +[connection signal="pressed" from="Menu/VBoxContainer/Keybinds" to="KeybindWindow" method="show"] +[connection signal="pressed" from="Menu/VBoxContainer/Interface" to="InterfaceOptions" method="show"] +[connection signal="pressed" from="Menu/VBoxContainer/Options" to="Options" method="show"] diff --git a/game/ui/interface/InterfaceOptions.gd b/game/ui/interface/InterfaceOptions.gd new file mode 100644 index 0000000..1ecf6d1 --- /dev/null +++ b/game/ui/interface/InterfaceOptions.gd @@ -0,0 +1,6 @@ +extends PanelContainer + +export(NodePath) var actionbar_set_default_button_path : NodePath + +func set_player(p_player: Entity) -> void: + get_node(actionbar_set_default_button_path).set_player(p_player) diff --git a/game/ui/interface/InterfaceOptions.tscn b/game/ui/interface/InterfaceOptions.tscn new file mode 100644 index 0000000..e4a20f3 --- /dev/null +++ b/game/ui/interface/InterfaceOptions.tscn @@ -0,0 +1,52 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/interface/SetActionbarAsDefault.gd" type="Script" id=1] +[ext_resource path="res://ui/interface/InterfaceOptions.gd" type="Script" id=2] + +[node name="InterfaceOptions" type="PanelContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} +actionbar_set_default_button_path = NodePath("VBoxContainer2/VBoxContainer/SetActionbarAsDefault") + +[node name="VBoxContainer2" type="VBoxContainer" parent="."] +margin_left = 7.0 +margin_top = 7.0 +margin_right = 1017.0 +margin_bottom = 593.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer2"] +margin_right = 1010.0 +margin_bottom = 30.0 +size_flags_horizontal = 3 + +[node name="Label" type="Label" parent="VBoxContainer2/HBoxContainer"] +margin_top = 8.0 +margin_right = 966.0 +margin_bottom = 22.0 +size_flags_horizontal = 3 +text = "Interface options" + +[node name="Button" type="Button" parent="VBoxContainer2/HBoxContainer"] +margin_left = 970.0 +margin_right = 1010.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 40, 30 ) +text = "X" + +[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer2"] +margin_top = 34.0 +margin_right = 1010.0 +margin_bottom = 586.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="SetActionbarAsDefault" type="Button" parent="VBoxContainer2/VBoxContainer"] +margin_right = 1010.0 +margin_bottom = 20.0 +text = "Set current actionbar setup as default" +script = ExtResource( 1 ) +[connection signal="pressed" from="VBoxContainer2/HBoxContainer/Button" to="." method="hide"] diff --git a/game/ui/interface/SetActionbarAsDefault.gd b/game/ui/interface/SetActionbarAsDefault.gd new file mode 100644 index 0000000..c2cdd07 --- /dev/null +++ b/game/ui/interface/SetActionbarAsDefault.gd @@ -0,0 +1,16 @@ +extends Button + +var _player : Entity + +func set_player(p_player: Entity) -> void: + _player = p_player + +func _pressed(): + if _player && is_instance_valid(_player): + var abp : ActionBarProfile = _player.get_action_bar_profile() + + var cp : ClassProfile = ProfileManager.getc_player_profile().get_class_profile(_player.gets_entity_data().get_path()) + + cp.get_default_action_bar_profile().from_actionbar_profile(abp) + + ProfileManager.save() diff --git a/game/ui/keybinds/KeybindCategory.gd b/game/ui/keybinds/KeybindCategory.gd new file mode 100644 index 0000000..ed3d0f9 --- /dev/null +++ b/game/ui/keybinds/KeybindCategory.gd @@ -0,0 +1,25 @@ +extends VBoxContainer + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(PackedScene) var keybind_entry_scene : PackedScene + +export(NodePath) var content_container_path : NodePath diff --git a/game/ui/keybinds/KeybindCategory.tscn b/game/ui/keybinds/KeybindCategory.tscn new file mode 100644 index 0000000..f66ca13 --- /dev/null +++ b/game/ui/keybinds/KeybindCategory.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/keybinds/KeybindCategory.gd" type="Script" id=1] +[ext_resource path="res://ui/keybinds/KeybindEntry.tscn" type="PackedScene" id=2] + +[node name="KeybindCategory" type="VBoxContainer"] +margin_right = 1016.0 +margin_bottom = 23.0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +keybind_entry_scene = ExtResource( 2 ) +content_container_path = NodePath("VBoxContainer/content") + +[node name="Label" type="Label" parent="."] +margin_right = 1016.0 +margin_bottom = 25.0 +text = "Category" + +[node name="VBoxContainer" type="MarginContainer" parent="."] +margin_top = 33.0 +margin_right = 1016.0 +margin_bottom = 33.0 +custom_constants/margin_left = 20 + +[node name="content" type="VBoxContainer" parent="VBoxContainer"] +margin_left = 20.0 +margin_right = 1016.0 diff --git a/game/ui/keybinds/KeybindEntry.gd b/game/ui/keybinds/KeybindEntry.gd new file mode 100644 index 0000000..848faf3 --- /dev/null +++ b/game/ui/keybinds/KeybindEntry.gd @@ -0,0 +1,39 @@ +extends HBoxContainer + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass + +func query_keybind_1() -> void: + pass + +func query_keybind_2() -> void: + pass diff --git a/game/ui/keybinds/KeybindEntry.tscn b/game/ui/keybinds/KeybindEntry.tscn new file mode 100644 index 0000000..9da6f5d --- /dev/null +++ b/game/ui/keybinds/KeybindEntry.tscn @@ -0,0 +1,34 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/keybinds/KeybindEntry.gd" type="Script" id=1] + +[node name="KeybindEntry" type="HBoxContainer"] +margin_right = 996.0 +margin_bottom = 37.0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="."] +margin_top = 6.0 +margin_right = 580.0 +margin_bottom = 31.0 +size_flags_horizontal = 3 +text = "Keybind" + +[node name="Button" type="Button" parent="."] +margin_left = 588.0 +margin_right = 788.0 +margin_bottom = 37.0 +rect_min_size = Vector2( 200, 30 ) +text = "empty" + +[node name="Button2" type="Button" parent="."] +margin_left = 796.0 +margin_right = 996.0 +margin_bottom = 37.0 +rect_min_size = Vector2( 200, 30 ) +text = "empty" +[connection signal="pressed" from="Button" to="." method="query_keybind_1"] +[connection signal="pressed" from="Button2" to="." method="query_keybind_2"] diff --git a/game/ui/keybinds/Keybinds.gd b/game/ui/keybinds/Keybinds.gd new file mode 100644 index 0000000..bcc3db4 --- /dev/null +++ b/game/ui/keybinds/Keybinds.gd @@ -0,0 +1,156 @@ +extends Control + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(PackedScene) var keybind_category_scene : PackedScene + +export(NodePath) var content_container_path : NodePath + +var _player : Entity + +func set_player(player : Entity): + if _player: + _player.disconnect("centity_data_changed", self, "on_data_changed") + + _player = player + + on_data_changed(_player.getc_entity_data()) + + _player.connect("centity_data_changed", self, "on_data_changed") + + +func on_data_changed(data): + if data: + ProfileManager.on_keybinds_changed(data.get_path()) + InputMap.load_from_globals() + + +# Note for the reader: +# +# This demo conveniently uses the same names for actions and for the container nodes +# that hold each remapping button. This allow to get back to the button based simply +# on the name of the corresponding action, but it might not be so simple in your project. +# +# A better approach for large-scale input remapping might be to do the connections between +# buttons and wait_for_input through the code, passing as arguments both the name of the +# action and the node, e.g.: +# button.connect("pressed", self, "wait_for_input", [ button, action ]) + +# Constants +const INPUT_ACTIONS = [ "move_up", "move_down", "move_left", "move_right", "jump" ] +const CONFIG_FILE = "user://input.cfg" + +# Member variables +var action # To register the action the UI is currently handling +var button # Button node corresponding to the above action + + +# Load/save input mapping to a config file +# Changes done while testing the demo will be persistent, saved to CONFIG_FILE + +func load_config(): + var config = ConfigFile.new() + var err = config.load(CONFIG_FILE) + if err: # Assuming that file is missing, generate default config + for action_name in INPUT_ACTIONS: + var action_list = InputMap.get_action_list(action_name) + # There could be multiple actions in the list, but we save the first one by default + var scancode = OS.get_scancode_string(action_list[0].scancode) + config.set_value("input", action_name, scancode) + config.save(CONFIG_FILE) + else: # ConfigFile was properly loaded, initialize InputMap + for action_name in config.get_section_keys("input"): + # Get the key scancode corresponding to the saved human-readable string + var scancode = OS.find_scancode_from_string(config.get_value("input", action_name)) + # Create a new event object based on the saved scancode + var event = InputEventKey.new() + event.scancode = scancode + # Replace old action (key) events by the new one + for old_event in InputMap.get_action_list(action_name): + if old_event is InputEventKey: + InputMap.action_erase_event(action_name, old_event) + InputMap.action_add_event(action_name, event) + + +func save_to_config(section, key, value): + """Helper function to redefine a parameter in the settings file""" + var config = ConfigFile.new() + var err = config.load(CONFIG_FILE) + if err: + print("Error code when loading config file: ", err) + else: + config.set_value(section, key, value) + config.save(CONFIG_FILE) + + +# Input management + +func wait_for_input(action_bind): + action = action_bind + # See note at the beginning of the script + button = get_node("bindings").get_node(action).get_node("Button") + get_node("contextual_help").text = "Press a key to assign to the '" + action + "' action." + set_process_input(true) + + +func a_input(event): + # Handle the first pressed key + if event is InputEventKey: + # Register the event as handled and stop polling + get_tree().set_input_as_handled() + set_process_input(false) + # Reinitialise the contextual help label + get_node("contextual_help").text = "Click a key binding to reassign it, or press the Cancel action." + if not event.is_action("ui_cancel"): + # Display the string corresponding to the pressed key + var scancode = OS.get_scancode_string(event.scancode) + button.text = scancode + # Start by removing previously key binding(s) + for old_event in InputMap.get_action_list(action): + InputMap.action_erase_event(action, old_event) + # Add the new key binding + InputMap.action_add_event(action, event) + save_to_config("input", action, scancode) + + +func a_ready(): + # Load config if existing, if not it will be generated with default values + load_config() + # Initialise each button with the default key binding from InputMap + for action in INPUT_ACTIONS: + # We assume that the key binding that we want is the first one (0), if there are several + var input_event = InputMap.get_action_list(action)[0] + # See note at the beginning of the script + var button = get_node("bindings").get_node(action).get_node("Button") + button.text = OS.get_scancode_string(input_event.scancode) + button.connect("pressed", self, "wait_for_input", [action]) + + # Do not start processing input until a button is pressed + set_process_input(false) + +func close(): + InputMap.load_from_globals() + + if _player: + ProfileManager.on_keybinds_changed(_player.getc_entity_data().get_path()) + + hide() + diff --git a/game/ui/keybinds/Keybinds.tscn b/game/ui/keybinds/Keybinds.tscn new file mode 100644 index 0000000..c5046e3 --- /dev/null +++ b/game/ui/keybinds/Keybinds.tscn @@ -0,0 +1,84 @@ +[gd_scene load_steps=11 format=2] + +[ext_resource path="res://ui/keybinds/Keybinds.gd" type="Script" id=1] +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=2] +[ext_resource path="res://ui/keybinds/KeybindCategory.tscn" type="PackedScene" id=3] +[ext_resource path="res://ui/icons/icon_mouse.png" type="Texture" id=4] +[ext_resource path="res://ui/icons/icon_keyboard.png" type="Texture" id=5] +[ext_resource path="res://ui/icons/icon_joy_button.png" type="Texture" id=6] +[ext_resource path="res://ui/icons/icon_remove.png" type="Texture" id=7] +[ext_resource path="res://ui/icons/icon_add.png" type="Texture" id=8] +[ext_resource path="res://ui/icons/icon_edit.png" type="Texture" id=9] +[ext_resource path="res://ui/icons/icon_joy_axis.png" type="Texture" id=10] + +[node name="KeybindWindow" type="PanelContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 2 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +keybind_category_scene = ExtResource( 3 ) + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 1020.0 +margin_bottom = 596.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +margin_right = 1016.0 +margin_bottom = 30.0 + +[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer"] +margin_top = 7.0 +margin_right = 972.0 +margin_bottom = 22.0 +size_flags_horizontal = 3 +text = "Keybinds" + +[node name="Button" type="Button" parent="VBoxContainer/HBoxContainer"] +margin_left = 976.0 +margin_right = 1016.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 40, 30 ) +text = "X" + +[node name="InputMapEditor" type="InputMapEditor" parent="VBoxContainer"] +margin_top = 38.0 +margin_right = 1016.0 +margin_bottom = 554.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +add_texture = ExtResource( 8 ) +remove_texture = ExtResource( 7 ) +edit_texture = ExtResource( 9 ) +keyboard_texture = ExtResource( 5 ) +joybutton_texture = ExtResource( 6 ) +joyaxis_texture = ExtResource( 10 ) +mouse_texture = ExtResource( 4 ) + +[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer"] +margin_top = 562.0 +margin_right = 1016.0 +margin_bottom = 592.0 +alignment = 2 + +[node name="Button" type="Button" parent="VBoxContainer/HBoxContainer2"] +margin_left = 852.0 +margin_right = 932.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 80, 30 ) +text = "Cancel" + +[node name="Button2" type="Button" parent="VBoxContainer/HBoxContainer2"] +margin_left = 936.0 +margin_right = 1016.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 80, 30 ) +text = "OK" +[connection signal="pressed" from="VBoxContainer/HBoxContainer/Button" to="." method="hide"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer2/Button" to="." method="hide"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer2/Button2" to="." method="close"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer2/Button2" to="VBoxContainer/InputMapEditor" method="queue_save"] diff --git a/game/ui/login/Login.tscn b/game/ui/login/Login.tscn new file mode 100644 index 0000000..5e0270f --- /dev/null +++ b/game/ui/login/Login.tscn @@ -0,0 +1,88 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] + +[node name="Login" type="PanelContainer"] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -145.0 +margin_top = -157.0 +margin_right = 110.0 +margin_bottom = 86.0 +theme = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 251.0 +margin_bottom = 242.0 +custom_constants/separation = 10 +alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +margin_right = 247.0 +margin_bottom = 30.0 +size_flags_horizontal = 3 + +[node name="Label3" type="Label" parent="VBoxContainer/HBoxContainer"] +margin_top = 7.0 +margin_right = 199.0 +margin_bottom = 22.0 +size_flags_horizontal = 3 +text = "Login" + +[node name="Button" type="Button" parent="VBoxContainer/HBoxContainer"] +margin_left = 207.0 +margin_right = 247.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 40, 30 ) +text = "X" + +[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] +margin_top = 40.0 +margin_right = 247.0 +margin_bottom = 48.0 + +[node name="Label" type="Label" parent="VBoxContainer"] +margin_top = 58.0 +margin_right = 247.0 +margin_bottom = 73.0 +text = "Username" + +[node name="LineEdit" type="LineEdit" parent="VBoxContainer"] +margin_top = 83.0 +margin_right = 247.0 +margin_bottom = 107.341 + +[node name="Label2" type="Label" parent="VBoxContainer"] +margin_top = 117.0 +margin_right = 247.0 +margin_bottom = 132.0 +text = "Password" + +[node name="LineEdit2" type="LineEdit" parent="VBoxContainer"] +margin_top = 142.0 +margin_right = 247.0 +margin_bottom = 166.341 +secret = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CheckBox" type="CheckBox" parent="VBoxContainer"] +margin_top = 176.0 +margin_right = 247.0 +margin_bottom = 202.269 +text = "Remember me" + +[node name="Button" type="Button" parent="VBoxContainer"] +margin_top = 212.0 +margin_right = 247.0 +margin_bottom = 238.269 +text = "Login" +[connection signal="pressed" from="VBoxContainer/HBoxContainer/Button" to="." method="hide"] diff --git a/game/ui/loot_window/LootEntry.gd b/game/ui/loot_window/LootEntry.gd new file mode 100644 index 0000000..28df181 --- /dev/null +++ b/game/ui/loot_window/LootEntry.gd @@ -0,0 +1,49 @@ +extends Control + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var icon_path : NodePath +export(NodePath) var label_path : NodePath + +var icon : TextureRect +var label : RichTextLabel + +var index : int +var player : Entity +var item : ItemInstance + +func _ready(): + icon = get_node(icon_path) as TextureRect + label = get_node(label_path) as RichTextLabel + + if icon == null or label == null: + Logger.error("LootEntry is not setup correctly!") + +func on_click(): + player.loot_crequest(index) + +func set_item(pindex : int, item_instance : ItemInstance, pplayer : Entity) -> void: + index = index + player = pplayer + item = item_instance + + icon.texture = item.item_template.icon + label.bbcode_text = item.item_template.text_name diff --git a/game/ui/loot_window/LootEntry.tscn b/game/ui/loot_window/LootEntry.tscn new file mode 100644 index 0000000..cd3a857 --- /dev/null +++ b/game/ui/loot_window/LootEntry.tscn @@ -0,0 +1,61 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/loot_window/LootEntry.gd" type="Script" id=1] +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=2] + +[node name="lootEntry" type="PanelContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_right = -3.0 +margin_bottom = -3.0 +rect_min_size = Vector2( 0, 40 ) +size_flags_horizontal = 3 +theme = ExtResource( 2 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +icon_path = NodePath("HBoxContainer/Button/TextureRect") +label_path = NodePath("HBoxContainer/Label") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 1017.0 +margin_bottom = 593.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Button" type="Button" parent="HBoxContainer"] +margin_right = 46.0 +margin_bottom = 589.0 +rect_min_size = Vector2( 46, 46 ) + +[node name="TextureRect" type="TextureRect" parent="HBoxContainer/Button"] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -20.0 +margin_top = -20.0 +margin_right = 20.0 +margin_bottom = 20.0 +rect_min_size = Vector2( 40, 40 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +expand = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="RichTextLabel" parent="HBoxContainer"] +margin_left = 50.0 +margin_right = 1013.0 +margin_bottom = 589.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +bbcode_enabled = true +text = "sdfsdfsdf" +scroll_active = false +[connection signal="pressed" from="HBoxContainer/Button" to="." method="on_click"] diff --git a/game/ui/loot_window/LootWindow.gd b/game/ui/loot_window/LootWindow.gd new file mode 100644 index 0000000..7f525c2 --- /dev/null +++ b/game/ui/loot_window/LootWindow.gd @@ -0,0 +1,98 @@ +extends Control + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(PackedScene) var entry_scene : PackedScene +export(NodePath) var container_path : NodePath + +var container : Node + +var player : Entity +var target_bag : Bag + +func _ready(): + get_node("../../../").loot_window = self + + container = get_node(container_path) + + connect("visibility_changed", self, "on_visibility_changed") + + if entry_scene == null: + Logger.error("LootWindow: entry_scene is null") + +func refresh(): + for child in container.get_children(): + child.queue_free() + + if target_bag == null: + return + + for i in range(target_bag.get_size()): + var ii : ItemInstance = target_bag.get_item(i) + + if ii: + var e : Node = entry_scene.instance() + + container.add_child(e) + e.owner = container + + e.set_item(i, ii, player) + +func set_player(p_player : Entity) -> void: + player = p_player + player.connect("ctarget_bag_changed", self, "ctarget_bag_changed") + player.connect("onc_open_winow_request", self, "onc_open_loot_winow_request") + +func on_player_moved(): + if visible: + hide() + +func on_visibility_changed(): + if visible: + refresh() + else: + if target_bag != null: + target_bag.disconnect("item_removed", self, "on_item_removed") + target_bag = null + +func on_item_removed(bag: Bag, item: ItemInstance, slot_id: int) -> void: + refresh() + +func ctarget_bag_changed(entity: Entity, bag: Bag) -> void: + if target_bag != null: + target_bag.disconnect("item_removed", self, "on_item_removed") + target_bag = null + + target_bag = bag + + if target_bag == null: + return + + target_bag.connect("item_removed", self, "on_item_removed") + +func onc_open_loot_winow_request(window_id) -> void: + if window_id != EntityEnums.ENTITY_WINDOW_LOOT: + return + + show() + + if player.has_signal("player_moved") && !player.is_connected("player_moved", self, "on_player_moved"): + player.connect("player_moved", self, "on_player_moved", [], CONNECT_ONESHOT) diff --git a/game/ui/loot_window/LootWindow.tscn b/game/ui/loot_window/LootWindow.tscn new file mode 100644 index 0000000..18807e4 --- /dev/null +++ b/game/ui/loot_window/LootWindow.tscn @@ -0,0 +1,56 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://ui/loot_window/LootWindow.gd" type="Script" id=1] +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=2] +[ext_resource path="res://ui/loot_window/LootEntry.tscn" type="PackedScene" id=3] + +[node name="LootWindow" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +theme = ExtResource( 2 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +entry_scene = ExtResource( 3 ) +container_path = NodePath("PanelContainer/VBoxContainer/ScrollContainer/container") + +[node name="PanelContainer" type="PanelContainer" parent="."] +margin_left = 82.0 +margin_top = 83.0 +margin_right = 299.0 +margin_bottom = 359.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 213.0 +margin_bottom = 272.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"] +margin_right = 209.0 +margin_bottom = 15.0 +text = "Loot" +align = 1 +valign = 1 + +[node name="ScrollContainer" type="ScrollContainer" parent="PanelContainer/VBoxContainer"] +margin_top = 23.0 +margin_right = 209.0 +margin_bottom = 234.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="container" type="VBoxContainer" parent="PanelContainer/VBoxContainer/ScrollContainer"] +margin_right = 209.0 +size_flags_horizontal = 3 + +[node name="Button" type="Button" parent="PanelContainer/VBoxContainer"] +margin_top = 242.0 +margin_right = 209.0 +margin_bottom = 268.57 +text = "close" +[connection signal="pressed" from="PanelContainer/VBoxContainer/Button" to="." method="hide"] diff --git a/game/ui/loot_window/game_module.tres b/game/ui/loot_window/game_module.tres new file mode 100644 index 0000000..8a640a3 --- /dev/null +++ b/game/ui/loot_window/game_module.tres @@ -0,0 +1,11 @@ +[gd_resource type="Resource" load_steps=3 format=2] + +[ext_resource path="res://scripts/game_modules/ui_window_module.gd" type="Script" id=2] +[ext_resource path="res://ui/loot_window/LootWindow.tscn" type="PackedScene" id=3] + +[resource] +script = ExtResource( 2 ) +enabled = true +scene = ExtResource( 3 ) +index = -1 +add_button = false diff --git a/game/ui/map/Map.tscn b/game/ui/map/Map.tscn new file mode 100644 index 0000000..4067832 --- /dev/null +++ b/game/ui/map/Map.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] + +[node name="Map" type="PanelContainer"] +margin_left = 55.5336 +margin_top = 55.5336 +margin_right = 821.534 +margin_bottom = 545.534 +theme = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 762.0 +margin_bottom = 486.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +margin_right = 758.0 +margin_bottom = 40.0 + +[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer"] +margin_top = 12.0 +margin_right = 710.0 +margin_bottom = 27.0 +size_flags_horizontal = 3 +text = "Map" + +[node name="Button" type="Button" parent="VBoxContainer/HBoxContainer"] +margin_left = 718.0 +margin_right = 758.0 +margin_bottom = 40.0 +rect_min_size = Vector2( 40, 40 ) +text = "X" + +[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"] +margin_top = 48.0 +margin_right = 758.0 +margin_bottom = 482.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="TextureRect" type="TextureRect" parent="VBoxContainer/ScrollContainer"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/Button" to="." method="hide"] diff --git a/game/ui/menu/CharacterEntry.gd b/game/ui/menu/CharacterEntry.gd new file mode 100644 index 0000000..0f35016 --- /dev/null +++ b/game/ui/menu/CharacterEntry.gd @@ -0,0 +1,59 @@ +extends Button + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var name_label_path : NodePath +export(NodePath) var class_label_path : NodePath +export(NodePath) var level_label_path : NodePath + +var id : int +var file_name : String + +var name_label : Label +var class_label : Label +var level_label : Label + +var entity : Entity +var class_profile : ClassProfile + +func _ready(): + name_label = get_node(name_label_path) as Label + class_label = get_node(class_label_path) as Label + level_label = get_node(level_label_path) as Label + + connect("visibility_changed", self, "on_visibility_changed") + +func setup(pfile_name : String, name : String, cls_name : String, level : int, class_level : int, pentity : Entity) -> void: + file_name = pfile_name + name_label.text = name + class_label.text = cls_name + " (lvl " + str(class_level) + ')' + level_label.text = str(level) + entity = pentity + +func set_class_name(name : String, level : int, pclass_profile : ClassProfile) -> void: + name_label.text = name + level_label.text = str(level) + class_profile = pclass_profile + +func on_visibility_changed(): + if visible and class_profile != null: + level_label.text = str(class_profile.level) + diff --git a/game/ui/menu/CharacterEntry.tscn b/game/ui/menu/CharacterEntry.tscn new file mode 100644 index 0000000..bcaeaa7 --- /dev/null +++ b/game/ui/menu/CharacterEntry.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/menu/CharacterEntry.gd" type="Script" id=2] + +[node name="CharacterEntry" type="Button"] +margin_right = 224.0 +margin_bottom = 88.0 +rect_min_size = Vector2( 80, 80 ) +size_flags_horizontal = 3 +theme = ExtResource( 1 ) +toggle_mode = true +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} +name_label_path = NodePath("MarginContainer/HBoxContainer/VBoxContainer/name") +class_label_path = NodePath("MarginContainer/HBoxContainer/VBoxContainer/class") +level_label_path = NodePath("MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/level") + +[node name="MarginContainer" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_constants/margin_right = 5 +custom_constants/margin_top = 5 +custom_constants/margin_left = 5 +custom_constants/margin_bottom = 5 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer"] +margin_left = 5.0 +margin_top = 5.0 +margin_right = 219.0 +margin_bottom = 83.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="PanelContainer" type="PanelContainer" parent="MarginContainer/HBoxContainer"] +margin_right = 68.0 +margin_bottom = 78.0 +mouse_filter = 2 +size_flags_vertical = 3 + +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/HBoxContainer/PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 64.0 +margin_bottom = 74.0 +rect_min_size = Vector2( 60, 60 ) +mouse_filter = 2 +custom_constants/margin_right = 5 +custom_constants/margin_top = 5 +custom_constants/margin_left = 5 +custom_constants/margin_bottom = 5 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/HBoxContainer"] +margin_left = 72.0 +margin_right = 214.0 +margin_bottom = 78.0 +mouse_filter = 2 +size_flags_horizontal = 3 + +[node name="name" type="Label" parent="MarginContainer/HBoxContainer/VBoxContainer"] +margin_right = 142.0 +margin_bottom = 15.0 + +[node name="class" type="Label" parent="MarginContainer/HBoxContainer/VBoxContainer"] +margin_top = 23.0 +margin_right = 142.0 +margin_bottom = 38.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/HBoxContainer/VBoxContainer"] +margin_top = 46.0 +margin_right = 142.0 +margin_bottom = 61.0 + +[node name="Label" type="Label" parent="MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer"] +margin_right = 36.0 +margin_bottom = 15.0 +text = "Level " + +[node name="level" type="Label" parent="MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer"] +margin_left = 40.0 +margin_right = 40.0 +margin_bottom = 15.0 diff --git a/game/ui/menu/character_creation_button_group.tres b/game/ui/menu/character_creation_button_group.tres new file mode 100644 index 0000000..0e55d74 --- /dev/null +++ b/game/ui/menu/character_creation_button_group.tres @@ -0,0 +1,3 @@ +[gd_resource type="ButtonGroup" format=2] + +[resource] diff --git a/game/ui/menu/menu_character_button_group.tres b/game/ui/menu/menu_character_button_group.tres new file mode 100644 index 0000000..0e55d74 --- /dev/null +++ b/game/ui/menu/menu_character_button_group.tres @@ -0,0 +1,3 @@ +[gd_resource type="ButtonGroup" format=2] + +[resource] diff --git a/game/ui/minimap/MiniMap.tscn b/game/ui/minimap/MiniMap.tscn new file mode 100644 index 0000000..b9cf302 --- /dev/null +++ b/game/ui/minimap/MiniMap.tscn @@ -0,0 +1,11 @@ +[gd_scene format=2] + +[node name="MiniMap" type="MarginContainer"] +anchor_left = 1.0 +anchor_right = 1.0 +margin_left = -196.0 +margin_bottom = 189.0 +mouse_filter = 2 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/game/ui/nameplates/NamePlate.tscn b/game/ui/nameplates/NamePlate.tscn new file mode 100644 index 0000000..43518ef --- /dev/null +++ b/game/ui/nameplates/NamePlate.tscn @@ -0,0 +1,68 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://ui/nameplates/name_plate_theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/nameplates/texture_progress_fg.tres" type="Texture" id=2] +[ext_resource path="res://player/NamePlate.gd" type="Script" id=3] + +[node name="NamePlate" type="VBoxContainer"] +margin_right = 62.0 +margin_bottom = 17.0 +rect_scale = Vector2( 0.75, 0.75 ) +mouse_filter = 2 +theme = ExtResource( 1 ) +custom_constants/separation = 0 +script = ExtResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} +health_bar_path = NodePath("MarginContainer/TextureProgress") +health_bar_label_path = NodePath("MarginContainer/CenterContainer/Label") +normal_color = Color( 0.74902, 0.74902, 0.74902, 1 ) +mouseover_scale = Vector2( 0.75, 0.75 ) + +[node name="Name" type="Label" parent="."] +margin_right = 62.0 +margin_bottom = 15.0 +custom_constants/line_spacing = 0 +text = "Asda" +align = 1 +valign = 1 + +[node name="MarginContainer" type="MarginContainer" parent="."] +margin_top = 15.0 +margin_right = 62.0 +margin_bottom = 17.0 +size_flags_horizontal = 15 +size_flags_vertical = 15 +size_flags_stretch_ratio = 2.3 + +[node name="TextureProgress" type="TextureProgress" parent="MarginContainer"] +margin_right = 62.0 +margin_bottom = 2.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +value = 100.0 +texture_under = ExtResource( 2 ) +texture_progress = ExtResource( 2 ) +tint_under = Color( 0.219608, 0.215686, 0.215686, 0.756863 ) +tint_progress = Color( 0.917647, 0.0117647, 0.0117647, 1 ) +nine_patch_stretch = true +stretch_margin_left = 1 +stretch_margin_top = 1 +stretch_margin_right = 1 +stretch_margin_bottom = 1 + +[node name="CenterContainer" type="CenterContainer" parent="MarginContainer"] +visible = false +margin_right = 62.0 +margin_bottom = 2.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="MarginContainer/CenterContainer"] +visible = false +margin_left = 22.0 +margin_top = -7.0 +margin_right = 40.0 +margin_bottom = 8.0 +text = "50%" diff --git a/game/ui/nameplates/name_plate_dynamicfont.tres b/game/ui/nameplates/name_plate_dynamicfont.tres new file mode 100644 index 0000000..b9a53e2 --- /dev/null +++ b/game/ui/nameplates/name_plate_dynamicfont.tres @@ -0,0 +1,8 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://fonts/VT323-Regular.ttf" type="DynamicFontData" id=1] + + +[resource] +size = 14 +font_data = ExtResource( 1 ) diff --git a/game/ui/nameplates/name_plate_theme.tres b/game/ui/nameplates/name_plate_theme.tres new file mode 100644 index 0000000..83e5895 --- /dev/null +++ b/game/ui/nameplates/name_plate_theme.tres @@ -0,0 +1,36 @@ +[gd_resource type="Theme" load_steps=4 format=2] + +[ext_resource path="res://ui/nameplates/name_plate_dynamicfont.tres" type="DynamicFont" id=1] + +[sub_resource type="StyleBoxFlat" id=1] +bg_color = Color( 0.0627451, 0.0627451, 0.0627451, 0.823529 ) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 +anti_aliasing = false + +[sub_resource type="StyleBoxFlat" id=2] +bg_color = Color( 0.647059, 0, 0, 1 ) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 +anti_aliasing = false + +[resource] +default_font = ExtResource( 1 ) +Label/colors/font_color = Color( 1, 1, 1, 1 ) +Label/colors/font_color_shadow = Color( 0, 0, 0, 0 ) +Label/colors/font_outline_modulate = Color( 1, 1, 1, 1 ) +Label/constants/line_spacing = 6 +Label/constants/shadow_as_outline = 0 +Label/constants/shadow_offset_x = 0 +Label/constants/shadow_offset_y = 0 +Label/fonts/font = null +Label/styles/normal = null +ProgressBar/colors/font_color = Color( 0.94, 0.94, 0.94, 1 ) +ProgressBar/colors/font_color_shadow = Color( 0, 0, 0, 1 ) +ProgressBar/fonts/font = null +ProgressBar/styles/bg = SubResource( 1 ) +ProgressBar/styles/fg = SubResource( 2 ) diff --git a/game/ui/nameplates/texture_progress_bg.tres b/game/ui/nameplates/texture_progress_bg.tres new file mode 100644 index 0000000..9b0e3ef --- /dev/null +++ b/game/ui/nameplates/texture_progress_bg.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 31, 49, 10, 11 ) diff --git a/game/ui/nameplates/texture_progress_fg.tres b/game/ui/nameplates/texture_progress_fg.tres new file mode 100644 index 0000000..9b0e3ef --- /dev/null +++ b/game/ui/nameplates/texture_progress_fg.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 31, 49, 10, 11 ) diff --git a/game/ui/numbers/Number.gd b/game/ui/numbers/Number.gd new file mode 100644 index 0000000..6bd67d2 --- /dev/null +++ b/game/ui/numbers/Number.gd @@ -0,0 +1,87 @@ +extends Label + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var animation_player_path : NodePath = "AnimationPlayer" + +export(Color) var damage_color : Color = Color.yellow +export(Color) var heal_color : Color = Color.green + +var world_position : Vector3 = Vector3() +var animation_player : AnimationPlayer = null +var camera : Camera = null + +func _ready() -> void: + animation_player = get_node(animation_player_path) as AnimationPlayer + + animation_player.connect("animation_finished", self, "animation_finished") + + set_process(false) + +func _process(delta): + if camera == null: + return + + var cam_pos : Vector3 = camera.global_transform.xform(Vector3()) + var dstv : Vector3 = cam_pos - world_position + dstv.y = 0 +# var dst : float = dstv.length_squared() + + var cam_facing : Vector3 = -camera.global_transform.basis.z + var d : float = cam_facing.dot(dstv) + + if d > 0: + if visible: + hide() + return + else: + if not visible: + show() + + var screen_position : Vector2 = camera.unproject_position(world_position) + var new_pos : Vector2 = Vector2(screen_position.x + rect_position.x, screen_position.y + rect_position.y - 60) + + set_position(new_pos) + + +func damage(pos : Vector3, value : int, crit : bool) -> void: + setup(pos, damage_color, value, crit) + +func heal(pos : Vector3, value : int, crit : bool) -> void: + setup(pos, heal_color, value, crit) + +func setup(pos : Vector3, color : Color, value : int, crit : bool) -> void: + world_position = pos + + camera = get_tree().get_root().get_camera() as Camera + + text = str(value) + add_color_override("font_color", color) + + if crit: + animation_player.play("crit") + else: + animation_player.play("normal") + + set_process(true) + +func animation_finished(anim_name : String) -> void: + queue_free() diff --git a/game/ui/numbers/Number.tscn b/game/ui/numbers/Number.tscn new file mode 100644 index 0000000..c9dc9dd --- /dev/null +++ b/game/ui/numbers/Number.tscn @@ -0,0 +1,92 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://ui/numbers/Number.gd" type="Script" id=1] +[ext_resource path="res://ui/numbers/number_font.tres" type="DynamicFont" id=2] + +[sub_resource type="Animation" id=1] +resource_name = "crit" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath(".:rect_scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.05, 0.3, 1.5 ), +"transitions": PoolRealArray( 1, 0.307786, 1, 1.36604 ), +"update": 0, +"values": [ Vector2( 0.1, 0.1 ), Vector2( 1.5, 1.5 ), Vector2( 1.3, 1.3 ), Vector2( 1.3, 1.3 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:rect_position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.6, 1.5 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -50, 20 ), Vector2( -50, 20 ), Vector2( -50, 10 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 1.2, 1.5 ), +"transitions": PoolRealArray( 1, 1, 4 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] +} + +[sub_resource type="Animation" id=2] +resource_name = "normal" +length = 2.0 +tracks/0/type = "value" +tracks/0/path = NodePath(".:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -50, 20 ), Vector2( -50, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 4 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] +} + +[node name="Number" type="Label"] +modulate = Color( 1, 1, 1, 0 ) +margin_left = -50.0 +margin_right = 50.0 +margin_bottom = 40.0006 +rect_scale = Vector2( 1.3, 1.3 ) +rect_pivot_offset = Vector2( 50, 20 ) +custom_fonts/font = ExtResource( 2 ) +custom_colors/font_color = Color( 0.870588, 0.898039, 0.0117647, 1 ) +align = 1 +valign = 1 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/crit = SubResource( 1 ) +anims/normal = SubResource( 2 ) diff --git a/game/ui/numbers/number_font.tres b/game/ui/numbers/number_font.tres new file mode 100644 index 0000000..6f185f3 --- /dev/null +++ b/game/ui/numbers/number_font.tres @@ -0,0 +1,8 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://fonts/VT323-Regular.ttf" type="DynamicFontData" id=1] + + +[resource] +size = 12 +font_data = ExtResource( 1 ) diff --git a/game/ui/options/OptionButtonRow.gd b/game/ui/options/OptionButtonRow.gd new file mode 100644 index 0000000..c9c5bee --- /dev/null +++ b/game/ui/options/OptionButtonRow.gd @@ -0,0 +1,35 @@ +extends HBoxContainer + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(String) var property_category : String +export(String) var property_name : String + +export(String) var property_label : String + +func _ready(): + var ob : Button = $Button as Button + $Label.text = property_label + +# ob.connect("pressed", self, "pressed") +# +#func pressed() -> void: +# Settings.set_value(property_category, property_name, val) diff --git a/game/ui/options/OptionButtonRow.tscn b/game/ui/options/OptionButtonRow.tscn new file mode 100644 index 0000000..c86e532 --- /dev/null +++ b/game/ui/options/OptionButtonRow.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/options/OptionButtonRow.gd" type="Script" id=1] + +[node name="OptionButtonRow" type="HBoxContainer"] +margin_right = 527.0 +margin_bottom = 15.0 +size_flags_horizontal = 3 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="."] +margin_top = 3.0 +margin_right = 261.0 +margin_bottom = 17.0 +size_flags_horizontal = 3 + +[node name="Button" type="Button" parent="."] +margin_left = 265.0 +margin_right = 527.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 diff --git a/game/ui/options/OptionCheckBox.gd b/game/ui/options/OptionCheckBox.gd new file mode 100644 index 0000000..9a53aa2 --- /dev/null +++ b/game/ui/options/OptionCheckBox.gd @@ -0,0 +1,33 @@ +extends CheckBox + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(String) var property_category : String +export(String) var property_name : String + +func _ready() -> void: + var p : bool = Settings.get_value(property_category, property_name) as bool + + if p != pressed: + pressed = p + +func _toggled(button_pressed : bool) -> void: + Settings.set_value(property_category, property_name, button_pressed) diff --git a/game/ui/options/OptionCheckboxRow.tscn b/game/ui/options/OptionCheckboxRow.tscn new file mode 100644 index 0000000..92ab19a --- /dev/null +++ b/game/ui/options/OptionCheckboxRow.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/options/OptionToggleRow.gd" type="Script" id=1] + +[node name="OptionToggleRow" type="HBoxContainer"] +margin_top = 34.0 +margin_right = 527.0 +margin_bottom = 60.0 +size_flags_horizontal = 3 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="."] +margin_top = 6.0 +margin_right = 261.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 + +[node name="CheckBox" type="CheckBox" parent="."] +margin_left = 265.0 +margin_right = 527.0 +margin_bottom = 26.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "On" diff --git a/game/ui/options/OptionEnumRow.gd b/game/ui/options/OptionEnumRow.gd new file mode 100644 index 0000000..29b3f31 --- /dev/null +++ b/game/ui/options/OptionEnumRow.gd @@ -0,0 +1,47 @@ +tool +extends HBoxContainer + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(String) var property_category : String +export(String) var property_name : String + +export(String) var property_label : String + +export(Array, String) var options : Array + +func _ready(): + $Label.text = property_label + + if Engine.editor_hint: + return + + var ob : OptionButton = $OptionButton as OptionButton + + for i in range(options.size()): + ob.add_item(options[i], i) + + ob.selected = Settings.get_value(property_category, property_name) + + ob.connect("item_selected", self, "item_selected") + +func item_selected(id : int) -> void: + Settings.set_value(property_category, property_name, id) diff --git a/game/ui/options/OptionEnumRow.tscn b/game/ui/options/OptionEnumRow.tscn new file mode 100644 index 0000000..6f900d9 --- /dev/null +++ b/game/ui/options/OptionEnumRow.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/options/OptionEnumRow.gd" type="Script" id=1] + +[node name="OptionEnumRow" type="HBoxContainer"] +margin_top = 34.0 +margin_right = 527.0 +margin_bottom = 60.0 +size_flags_horizontal = 3 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="."] +margin_top = 6.0 +margin_right = 261.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 + +[node name="OptionButton" type="OptionButton" parent="."] +margin_left = 265.0 +margin_right = 527.0 +margin_bottom = 26.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +align = 1 diff --git a/game/ui/options/OptionToggleRow.gd b/game/ui/options/OptionToggleRow.gd new file mode 100644 index 0000000..6ab985c --- /dev/null +++ b/game/ui/options/OptionToggleRow.gd @@ -0,0 +1,44 @@ +tool +extends HBoxContainer + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(String) var property_category : String +export(String) var property_name : String + +export(String) var property_label : String + +var _cb : CheckBox = null + +func _ready(): + $Label.text = property_label + + if Engine.editor_hint: + return + + _cb = $CheckBox as CheckBox + + _cb.pressed = Settings.get_value(property_category, property_name) + + _cb.connect("pressed", self, "pressed") + +func pressed() -> void: + Settings.set_value(property_category, property_name, _cb.pressed) diff --git a/game/ui/options/Options.tscn b/game/ui/options/Options.tscn new file mode 100644 index 0000000..2316be6 --- /dev/null +++ b/game/ui/options/Options.tscn @@ -0,0 +1,196 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/player_ui/RemoveProfile.gd" type="Script" id=2] +[ext_resource path="res://ui/options/OptionsViewportLabel.tscn" type="PackedScene" id=3] +[ext_resource path="res://ui/options/OptionCheckboxRow.tscn" type="PackedScene" id=4] +[ext_resource path="res://ui/options/OptionCheckBox.gd" type="Script" id=5] +[ext_resource path="res://ui/options/OptionEnumRow.tscn" type="PackedScene" id=6] +[ext_resource path="res://ui/options/OptionsSpinboxRow.tscn" type="PackedScene" id=8] + +[node name="Options" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +theme = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="PanelContainer" type="PanelContainer" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -271.5 +margin_top = -236.5 +margin_right = 271.5 +margin_bottom = 236.5 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 539.0 +margin_bottom = 469.0 + +[node name="TabContainer" type="TabContainer" parent="PanelContainer/VBoxContainer"] +margin_right = 535.0 +margin_bottom = 431.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +tab_align = 0 + +[node name="Video" type="VBoxContainer" parent="PanelContainer/VBoxContainer/TabContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 31.0 +margin_right = -4.0 +margin_bottom = -4.0 +size_flags_horizontal = 3 + +[node name="ViewportWidth" parent="PanelContainer/VBoxContainer/TabContainer/Video" instance=ExtResource( 3 )] +margin_bottom = 15.0 +property_label = "Viewport Width" + +[node name="ViewportHeight" parent="PanelContainer/VBoxContainer/TabContainer/Video" instance=ExtResource( 3 )] +margin_top = 23.0 +margin_bottom = 38.0 +property_label = "Viewport Height" +width = false + +[node name="ViewportScale" parent="PanelContainer/VBoxContainer/TabContainer/Video" instance=ExtResource( 8 )] +margin_top = 46.0 +margin_bottom = 70.0 +property_category = "rendering" +property_name = "viewport_scale" +property_label = "Viewport Scale" +min_value = 20.0 +step = 5.0 +suffix = "%" + +[node name="Borderless" parent="PanelContainer/VBoxContainer/TabContainer/Video" instance=ExtResource( 4 )] +margin_top = 78.0 +margin_bottom = 104.0 +property_category = "rendering" +property_name = "borderless" +property_label = "Borderless Window" + +[node name="FullScreen" parent="PanelContainer/VBoxContainer/TabContainer/Video" instance=ExtResource( 4 )] +margin_top = 112.0 +margin_bottom = 138.0 +property_category = "rendering" +property_name = "fullscreen" +property_label = "Fullscreen" + +[node name="AlwaysOnTop" parent="PanelContainer/VBoxContainer/TabContainer/Video" instance=ExtResource( 4 )] +margin_top = 146.0 +margin_bottom = 172.0 +property_category = "rendering" +property_name = "always_on_top" +property_label = "Always On Top" + +[node name="ThreadModel" parent="PanelContainer/VBoxContainer/TabContainer/Video" instance=ExtResource( 6 )] +margin_top = 180.0 +margin_bottom = 206.0 +property_category = "rendering" +property_name = "thread_model" +property_label = "Thread Model" +options = [ "Single-Unsafe", "Single-Safe", "Multi Threaded" ] + +[node name="Shadows" parent="PanelContainer/VBoxContainer/TabContainer/Video" instance=ExtResource( 4 )] +margin_top = 214.0 +margin_bottom = 240.0 +property_category = "rendering" +property_name = "shadows_enabled" +property_label = "Shadows Enabled" + +[node name="VSync" parent="PanelContainer/VBoxContainer/TabContainer/Video" instance=ExtResource( 4 )] +margin_top = 248.0 +margin_bottom = 274.0 +property_category = "rendering" +property_name = "use_vsync" +property_label = "VSync" + +[node name="VSyncViaCompositor" parent="PanelContainer/VBoxContainer/TabContainer/Video" instance=ExtResource( 4 )] +margin_top = 282.0 +margin_bottom = 308.0 +property_category = "rendering" +property_name = "vsync_via_compositor" +property_label = "VSync Via Compositor" + +[node name="Interface" type="VBoxContainer" parent="PanelContainer/VBoxContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 31.0 +margin_right = -4.0 +margin_bottom = -4.0 +size_flags_horizontal = 3 + +[node name="OptionToggleRow" parent="PanelContainer/VBoxContainer/TabContainer/Interface" instance=ExtResource( 4 )] +margin_top = 0.0 +margin_bottom = 26.0 +property_category = "ui" +property_name = "touchscreen_mode" +property_label = "Touchscreen Mode" + +[node name="OptionsSpinboxRow" parent="PanelContainer/VBoxContainer/TabContainer/Interface" instance=ExtResource( 8 )] +margin_top = 58.0 +margin_bottom = 82.0 +property_category = "ui" +property_name = "ui_scale" +property_label = "UI Scale" +min_value = 0.2 +max_value = 2.4 +step = 0.01 +rounded = false + +[node name="OptionsSpinboxRow2" parent="PanelContainer/VBoxContainer/TabContainer/Interface" instance=ExtResource( 8 )] +margin_top = 90.0 +margin_bottom = 114.0 +property_category = "ui" +property_name = "ui_scale_touch" +property_label = "UI Scale Touch" +min_value = 0.2 +max_value = 2.4 +step = 0.01 +rounded = false + +[node name="Debug" type="VBoxContainer" parent="PanelContainer/VBoxContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 31.0 +margin_right = -4.0 +margin_bottom = -4.0 +size_flags_horizontal = 3 + +[node name="DebugInfo" type="CheckBox" parent="PanelContainer/VBoxContainer/TabContainer/Debug"] +margin_right = 527.0 +margin_bottom = 26.269 +text = "Show Debug info" +script = ExtResource( 5 ) +property_category = "debug" +property_name = "debug_info" + +[node name="RemoveProfile" type="Button" parent="PanelContainer/VBoxContainer/TabContainer/Debug"] +margin_top = 34.0 +margin_right = 527.0 +margin_bottom = 60.269 +size_flags_horizontal = 3 +text = "Remove Profile" +script = ExtResource( 2 ) + +[node name="Close" type="Button" parent="PanelContainer/VBoxContainer"] +margin_top = 439.0 +margin_right = 535.0 +margin_bottom = 465.57 +text = "Close" + +[connection signal="pressed" from="PanelContainer/VBoxContainer/Close" to="." method="hide"] diff --git a/game/ui/options/OptionsSliderRow.gd b/game/ui/options/OptionsSliderRow.gd new file mode 100644 index 0000000..1468a35 --- /dev/null +++ b/game/ui/options/OptionsSliderRow.gd @@ -0,0 +1,44 @@ +tool +extends HBoxContainer + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(String) var property_category : String +export(String) var property_name : String + +export(String) var property_label : String + +var _slider : HSlider = null + +func _ready(): + $Label.text = property_label + + if Engine.editor_hint: + return + + _slider = $HSlider as Slider + + _slider.value = Settings.get_value(property_category, property_name) + + _slider.connect("value_changed", self, "value_changed") + +func value_changed(val: float) -> void: + Settings.set_value(property_category, property_name, val) diff --git a/game/ui/options/OptionsSliderRow.tscn b/game/ui/options/OptionsSliderRow.tscn new file mode 100644 index 0000000..7017178 --- /dev/null +++ b/game/ui/options/OptionsSliderRow.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/options/OptionsSliderRow.gd" type="Script" id=1] + +[node name="OptionsSliderRow" type="HBoxContainer"] +margin_top = 46.0 +margin_right = 527.0 +margin_bottom = 72.0 +size_flags_horizontal = 3 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="."] +margin_top = 6.0 +margin_right = 261.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 + +[node name="HSlider" type="HSlider" parent="."] +margin_left = 265.0 +margin_right = 527.0 +margin_bottom = 26.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +min_value = 5.0 +step = 5.0 +value = 100.0 diff --git a/game/ui/options/OptionsSpinboxRow.gd b/game/ui/options/OptionsSpinboxRow.gd new file mode 100644 index 0000000..ac26d37 --- /dev/null +++ b/game/ui/options/OptionsSpinboxRow.gd @@ -0,0 +1,66 @@ +tool +extends HBoxContainer + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(String) var property_category : String +export(String) var property_name : String + +export(String) var property_label : String + +export(float) var min_value : float = 0 +export(float) var max_value : float = 100 +export(float) var step : float = 1 +export(bool) var rounded : bool = true + +export(String) var prefix : String = "" +export(String) var suffix : String = "" + +var _sb : SpinBox = null + +func _ready(): + $Label.text = property_label + + _sb = $SpinBox as SpinBox + + _sb.min_value = min_value + _sb.max_value = max_value + _sb.step = step + + _sb.prefix = prefix + _sb.suffix = suffix + + _sb.rounded = rounded + + if Engine.editor_hint: + return + + _sb = $SpinBox as SpinBox + + _sb.min_value = min_value + _sb.max_value = max_value + _sb.step = step + _sb.value = Settings.get_value(property_category, property_name) + + _sb.connect("value_changed", self, "value_changed") + +func value_changed(val: float) -> void: + Settings.set_value(property_category, property_name, val) diff --git a/game/ui/options/OptionsSpinboxRow.tscn b/game/ui/options/OptionsSpinboxRow.tscn new file mode 100644 index 0000000..dbe44e5 --- /dev/null +++ b/game/ui/options/OptionsSpinboxRow.tscn @@ -0,0 +1,38 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/options/OptionsSpinboxRow.gd" type="Script" id=1] + +[node name="OptionsSpinboxRow" type="HBoxContainer"] +margin_top = 70.0 +margin_right = 527.0 +margin_bottom = 86.0 +size_flags_horizontal = 3 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +property_category = "" +property_name = "" +property_label = "" +min_value = 0.0 +max_value = 100.0 +step = 0.0 +rounded = true +prefix = "" +suffix = "" + +[node name="Label" type="Label" parent="."] +margin_top = 5.0 +margin_right = 261.0 +margin_bottom = 19.0 +size_flags_horizontal = 3 + +[node name="SpinBox" type="SpinBox" parent="."] +margin_left = 265.0 +margin_right = 527.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +step = 0.0 +rounded = true +align = 1 diff --git a/game/ui/options/OptionsViewportLabel.gd b/game/ui/options/OptionsViewportLabel.gd new file mode 100644 index 0000000..aff9ede --- /dev/null +++ b/game/ui/options/OptionsViewportLabel.gd @@ -0,0 +1,37 @@ +extends HBoxContainer + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(String) var property_label : String +export(bool) var width : bool = true + +var _label : Label = null + +func _ready(): + $Label.text = property_label + _label = $Label2 as Label + + +func _process(delta: float) -> void: + if width: + _label.text = str(int(get_tree().root.size.x)) + else: + _label.text = str(int(get_tree().root.size.y)) diff --git a/game/ui/options/OptionsViewportLabel.tscn b/game/ui/options/OptionsViewportLabel.tscn new file mode 100644 index 0000000..f4cd861 --- /dev/null +++ b/game/ui/options/OptionsViewportLabel.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/options/OptionsViewportLabel.gd" type="Script" id=1] + +[node name="OptionsViewportLabel" type="HBoxContainer"] +margin_right = 527.0 +margin_bottom = 26.0 +size_flags_horizontal = 3 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="."] +margin_top = 6.0 +margin_right = 261.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 + +[node name="Label2" type="Label" parent="."] +margin_left = 265.0 +margin_right = 527.0 +margin_bottom = 26.0 +size_flags_horizontal = 3 +size_flags_vertical = 7 +align = 1 +valign = 1 diff --git a/game/ui/options/Threads.gd b/game/ui/options/Threads.gd new file mode 100644 index 0000000..7e7596b --- /dev/null +++ b/game/ui/options/Threads.gd @@ -0,0 +1,35 @@ +extends HBoxContainer + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +func _ready(): + var ob : OptionButton = $OptionButton as OptionButton + + ob.add_item("Single-Unsafe", 0) + ob.add_item("Single-Safe", 1) + ob.add_item("Multi Threaded", 2) + + ob.selected = Settings.get_value("rendering", "thread_model") + + ob.connect("item_selected", self, "item_selected") + +func item_selected(id : int) -> void: + Settings.set_value("rendering", "thread_model", id) diff --git a/game/ui/player_ui/RemoveProfile.gd b/game/ui/player_ui/RemoveProfile.gd new file mode 100644 index 0000000..dff74d2 --- /dev/null +++ b/game/ui/player_ui/RemoveProfile.gd @@ -0,0 +1,37 @@ +extends Button + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + +# Called when the node enters the scene tree for the first time. +func _ready(): + connect("pressed", self, "_on_pressed") + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass + +func _on_pressed(): + var d : Directory = Directory.new() + d.remove("user://profile.save") diff --git a/game/ui/player_ui/player_ui.gd b/game/ui/player_ui/player_ui.gd new file mode 100644 index 0000000..2752891 --- /dev/null +++ b/game/ui/player_ui/player_ui.gd @@ -0,0 +1,58 @@ +extends CanvasLayer + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export (String) var player_path : String = "../.." + + +export(NodePath) var gui_base_path : NodePath +export(NodePath) var buttons_path : NodePath +export(NodePath) var windows_path : NodePath + +var gui_base : Node +var buttons : Node +var windows : Node + +var loot_window : Control + +func _ready(): + initialize() + + if player_path != null: + var player = get_node(player_path) + + for c in windows.get_children(): + if c.has_method("set_player"): + c.set_player(player) + + for c in gui_base.get_children(): + if c.has_method("set_player"): + c.set_player(player) + +func initialize(): + gui_base = get_node(gui_base_path) + buttons = get_node(buttons_path) + windows = get_node(windows_path) + + +func _on_Player_onc_open_loot_winow_request() -> void: + if loot_window != null: + loot_window.show() diff --git a/game/ui/player_ui/player_ui.tscn b/game/ui/player_ui/player_ui.tscn new file mode 100644 index 0000000..a3ca5d6 --- /dev/null +++ b/game/ui/player_ui/player_ui.tscn @@ -0,0 +1,102 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://player/GUI.gd" type="Script" id=1] +[ext_resource path="res://ui/ingame_menu/IngameMenu.tscn" type="PackedScene" id=2] +[ext_resource path="res://ui/theme/menu_icon.tres" type="Texture" id=6] +[ext_resource path="res://ui/buttons/Buttons.gd" type="Script" id=9] +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=10] +[ext_resource path="res://ui/theme/locked_icon.tres" type="Texture" id=25] +[ext_resource path="res://ui/theme/unlocked_icon.tres" type="Texture" id=26] +[ext_resource path="res://ui/player_ui/player_ui.gd" type="Script" id=28] +[ext_resource path="res://ui/buttons/ImageButton.tscn" type="PackedScene" id=30] + +[node name="GUILayer" type="CanvasLayer"] +script = ExtResource( 28 ) +gui_base_path = NodePath("GUI") +buttons_path = NodePath("GUI/Buttons") +windows_path = NodePath("GUI/Windows") + +[node name="GUI" type="Control" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +theme = ExtResource( 10 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="Buttons" type="HBoxContainer" parent="GUI"] +anchor_top = 1.0 +anchor_bottom = 1.0 +margin_top = -40.0 +margin_right = 342.0 +rect_min_size = Vector2( 0, 40 ) +mouse_filter = 2 +custom_constants/separation = 0 +script = ExtResource( 9 ) +__meta__ = { +"_edit_group_": true, +"_edit_use_anchors_": false +} +image_button = ExtResource( 30 ) +lock_button_path = NodePath("LockButton") + +[node name="LockButton" type="Button" parent="GUI/Buttons"] +margin_right = 25.0 +margin_bottom = 40.0 +rect_min_size = Vector2( 25, 30 ) +focus_mode = 0 +toggle_mode = true +enabled_focus_mode = 0 +keep_pressed_outside = true + +[node name="locked" type="TextureRect" parent="GUI/Buttons/LockButton"] +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 25 ) +expand = true +stretch_mode = 6 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="unlocked" type="TextureRect" parent="GUI/Buttons/LockButton"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 26 ) +expand = true +stretch_mode = 6 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Menu" type="Button" parent="GUI/Buttons"] +margin_left = 25.0 +margin_right = 50.0 +margin_bottom = 40.0 +rect_min_size = Vector2( 25, 30 ) +focus_mode = 0 +enabled_focus_mode = 0 +keep_pressed_outside = true + +[node name="TextureRect3" type="TextureRect" parent="GUI/Buttons/Menu"] +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 6 ) +expand = true +stretch_mode = 6 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Windows" type="CanvasLayer" parent="GUI"] +layer = 2 + +[node name="IngameMenu" parent="GUI" instance=ExtResource( 2 )] +visible = false + +[connection signal="pressed" from="GUI/Buttons/Menu" to="GUI/IngameMenu" method="show"] + +[editable path="GUI/IngameMenu"] diff --git a/game/ui/register/Register.tscn b/game/ui/register/Register.tscn new file mode 100644 index 0000000..2f36a84 --- /dev/null +++ b/game/ui/register/Register.tscn @@ -0,0 +1,114 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] + +[node name="Register" type="PanelContainer"] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -107.5 +margin_top = -182.0 +margin_right = 107.5 +margin_bottom = 182.0 +theme = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 211.0 +margin_bottom = 360.0 +custom_constants/separation = 10 +alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +margin_right = 207.0 +margin_bottom = 30.0 +size_flags_horizontal = 3 + +[node name="Label3" type="Label" parent="VBoxContainer/HBoxContainer"] +margin_top = 7.0 +margin_right = 159.0 +margin_bottom = 22.0 +size_flags_horizontal = 3 +text = "Register" + +[node name="Button" type="Button" parent="VBoxContainer/HBoxContainer"] +margin_left = 167.0 +margin_right = 207.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 40, 30 ) +text = "X" + +[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] +margin_top = 40.0 +margin_right = 207.0 +margin_bottom = 48.0 + +[node name="Label" type="Label" parent="VBoxContainer"] +margin_top = 58.0 +margin_right = 207.0 +margin_bottom = 73.0 +text = "Username" + +[node name="LineEdit" type="LineEdit" parent="VBoxContainer"] +margin_top = 83.0 +margin_right = 207.0 +margin_bottom = 107.341 + +[node name="Label4" type="Label" parent="VBoxContainer"] +margin_top = 117.0 +margin_right = 207.0 +margin_bottom = 132.0 +text = "Email" + +[node name="LineEdit4" type="LineEdit" parent="VBoxContainer"] +margin_top = 142.0 +margin_right = 207.0 +margin_bottom = 166.341 + +[node name="Label2" type="Label" parent="VBoxContainer"] +margin_top = 176.0 +margin_right = 207.0 +margin_bottom = 191.0 +text = "Password" + +[node name="LineEdit2" type="LineEdit" parent="VBoxContainer"] +margin_top = 201.0 +margin_right = 207.0 +margin_bottom = 225.341 +secret = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label3" type="Label" parent="VBoxContainer"] +margin_top = 235.0 +margin_right = 207.0 +margin_bottom = 250.0 +text = "Password Again" + +[node name="LineEdit3" type="LineEdit" parent="VBoxContainer"] +margin_top = 260.0 +margin_right = 207.0 +margin_bottom = 284.341 +secret = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CheckBox" type="CheckBox" parent="VBoxContainer"] +margin_top = 294.0 +margin_right = 207.0 +margin_bottom = 320.269 +text = "I Accept the EULA" + +[node name="Button" type="Button" parent="VBoxContainer"] +margin_top = 330.0 +margin_right = 207.0 +margin_bottom = 356.269 +text = "Register" +[connection signal="pressed" from="VBoxContainer/HBoxContainer/Button" to="." method="hide"] diff --git a/game/ui/spellbook/SpellBookWindow.gd b/game/ui/spellbook/SpellBookWindow.gd new file mode 100644 index 0000000..4988b5e --- /dev/null +++ b/game/ui/spellbook/SpellBookWindow.gd @@ -0,0 +1,217 @@ +extends Control + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +var opener_button : BaseButton + +export(NodePath) var spell_entry_container_path : NodePath +export(NodePath) var prev_button_path : NodePath +export(NodePath) var next_button_path : NodePath +export(NodePath) var spell_points_label_path : NodePath + +export(bool) var show_not_learned : bool = true +export(bool) var show_not_learnable : bool = false + +var _spell_entry_container : Node +var _spell_entries : Array + +var _prev_button : Button +var _next_button : Button +var _spell_points_label : Label + +var _player : Entity + +var _page : int = 0 +var _max_pages : int = 0 +var _entity_data : EntityData +var _character_class : EntityClassData + +var _spells : Array + +func _ready() -> void: + connect("visibility_changed", self, "on_visibility_changed") + + _spell_entries.clear() + + _spell_entry_container = get_node(spell_entry_container_path) + + for i in range(_spell_entry_container.get_child_count()): + _spell_entries.append(_spell_entry_container.get_child(i)) + + _prev_button = get_node(prev_button_path) + _next_button = get_node(next_button_path) + _spell_points_label = get_node(spell_points_label_path) + + _prev_button.connect("pressed", self, "dec_page") + _next_button.connect("pressed", self, "inc_page") + + if ESS.use_spell_points: + _spell_points_label.text = "" + + connect("visibility_changed", self, "_visibility_changed") + +func inc_page() -> void: + if _character_class == null: + return + + _page += 1 + + if _page > _max_pages: + _page = _max_pages + + refresh_entries() + +func dec_page() -> void: + if _character_class == null: + return + + _page -= 1 + + if _page < 0: + _page = 0 + + refresh_entries() + +func refresh_entries() -> void: + if _character_class == null or _player == null: + return + + var i : int = 0 + var n : int = 0 +# for n in range(len(_spell_entries)): + while n < len(_spell_entries): + var spindex : int = i + (_page * len(_spell_entries)) + + if spindex >= _spells.size(): + _spell_entries[n].set_spell(_player, null) + i += 1 + n += 1 + continue + + var spell : Spell = _spells[spindex] + + if not _player.spell_hasc(spell): + if not show_not_learned: + i += 1 + continue + + if not show_not_learnable: + if spell.training_required_spell and not _player.spell_hasc(spell.training_required_spell): + i += 1 + continue + + + _spell_entries[n].set_spell(_player, spell) + i += 1 + n += 1 + + +func refresh_all() -> void: + if _player == null: + return + + if _character_class == null: + return + + _max_pages = int(_character_class.get_num_spells() / len(_spell_entries)) + + if _page > _max_pages: + _page = _max_pages + + if ESS.use_spell_points: + _spell_points_label.text = "Free spell points: " + str(_player.getc_free_spell_points()) + + refresh_entries() + + +func _visibility_changed() -> void: + if visible: + refresh_all() + +func set_player(p_player: Entity) -> void: + if _player != null: + _player.disconnect("cfree_spell_points_changed", self, "cfree_spell_points_changed") + _player.disconnect("centity_data_changed", self, "centity_data_changed") + + _player = p_player + + _player.connect("cfree_spell_points_changed", self, "cfree_spell_points_changed") + _player.connect("centity_data_changed", self, "centity_data_changed") + + if _player != null: + centity_data_changed(_player.centity_data) + else: + centity_data_changed(null) + +func cfree_spell_points_changed(entity: Entity, value: int) -> void: + _spell_points_label.text = "Free spell points: " + str(_player.getc_free_spell_points()) + +func centity_data_changed(data: EntityData): + _spells.clear() + + _entity_data = null + _character_class = null + + if data == null: + return + + _entity_data = _player.centity_data + _character_class = _entity_data.entity_class_data + + if _character_class == null: + return + + for i in range(_character_class.get_num_spells()): + _spells.append(_character_class.get_spell(i)) + + _spells.sort_custom(CustomSpellSorter, "sort") + + +class CustomSpellSorter: + static func sort(a, b): + var res = a.text_name.casecmp_to(b.text_name) + + if res == 0: + if a.rank < b.rank: + return true + return false + elif res == 1: + return false + + return true + + +func on_visibility_changed(): + if opener_button: + if visible && !opener_button.pressed: + opener_button.pressed = true + return + + if !visible && opener_button.pressed: + opener_button.pressed = false + +func _on_button_toggled(button_pressed): + if button_pressed: + if !visible: + show() + else: + if visible: + hide() diff --git a/game/ui/spellbook/SpellBookWindow.tscn b/game/ui/spellbook/SpellBookWindow.tscn new file mode 100644 index 0000000..2f081fb --- /dev/null +++ b/game/ui/spellbook/SpellBookWindow.tscn @@ -0,0 +1,178 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/spellbook/SpellBookWindow.gd" type="Script" id=2] +[ext_resource path="res://ui/spellbook/SpellContainer.tscn" type="PackedScene" id=3] + +[node name="SpellBookWindow" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +theme = ExtResource( 1 ) +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} +spell_entry_container_path = NodePath("PanelContainer/PagedContent/GridContainer") +prev_button_path = NodePath("PanelContainer/PagedContent/Controls/HBoxContainer/Button2") +next_button_path = NodePath("PanelContainer/PagedContent/Controls/HBoxContainer/Button") +spell_points_label_path = NodePath("PanelContainer/PagedContent/Controls/HBoxContainer/SpellPoints") +show_not_learned = false + +[node name="PanelContainer" type="PanelContainer" parent="."] +margin_left = 79.0 +margin_top = 65.0 +margin_right = 535.0 +margin_bottom = 483.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="PagedContent" type="VBoxContainer" parent="PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 452.0 +margin_bottom = 414.0 + +[node name="Header" type="HBoxContainer" parent="PanelContainer/PagedContent"] +margin_right = 448.0 +margin_bottom = 30.0 + +[node name="Label" type="Label" parent="PanelContainer/PagedContent/Header"] +margin_top = 7.0 +margin_right = 54.0 +margin_bottom = 22.0 +text = "Spellbook" + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/PagedContent/Header"] +margin_left = 58.0 +margin_right = 404.0 +margin_bottom = 30.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +alignment = 1 + +[node name="Button" type="Button" parent="PanelContainer/PagedContent/Header/HBoxContainer"] +margin_left = 123.0 +margin_right = 223.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 100, 0 ) +text = "Nature" + +[node name="Button" type="Button" parent="PanelContainer/PagedContent/Header"] +margin_left = 408.0 +margin_right = 448.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 40, 30 ) +text = "X" + +[node name="GridContainer" type="GridContainer" parent="PanelContainer/PagedContent"] +margin_top = 38.0 +margin_right = 448.0 +margin_bottom = 372.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +columns = 2 + +[node name="SpellContainer" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 3 )] +margin_left = 0.0 +margin_top = 0.0 +margin_right = 222.0 +margin_bottom = 63.0 + +[node name="SpellContainer2" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 3 )] +margin_left = 226.0 +margin_top = 0.0 +margin_right = 448.0 +margin_bottom = 63.0 + +[node name="SpellContainer3" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 3 )] +margin_left = 0.0 +margin_top = 67.0 +margin_right = 222.0 +margin_bottom = 130.0 + +[node name="SpellContainer4" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 3 )] +margin_left = 226.0 +margin_top = 67.0 +margin_right = 448.0 +margin_bottom = 130.0 + +[node name="SpellContainer5" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 3 )] +margin_left = 0.0 +margin_top = 134.0 +margin_right = 222.0 +margin_bottom = 197.0 + +[node name="SpellContainer6" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 3 )] +margin_left = 226.0 +margin_top = 134.0 +margin_right = 448.0 +margin_bottom = 197.0 + +[node name="SpellContainer7" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 3 )] +margin_left = 0.0 +margin_top = 201.0 +margin_right = 222.0 +margin_bottom = 264.0 + +[node name="SpellContainer8" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 3 )] +margin_left = 226.0 +margin_top = 201.0 +margin_right = 448.0 +margin_bottom = 264.0 + +[node name="SpellContainer9" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 3 )] +margin_left = 0.0 +margin_top = 268.0 +margin_right = 222.0 +margin_bottom = 331.0 + +[node name="SpellContainer10" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 3 )] +margin_left = 226.0 +margin_top = 268.0 +margin_right = 448.0 +margin_bottom = 331.0 + +[node name="Controls" type="MarginContainer" parent="PanelContainer/PagedContent"] +margin_top = 380.0 +margin_right = 448.0 +margin_bottom = 410.0 +custom_constants/margin_right = 2 +custom_constants/margin_top = 2 +custom_constants/margin_left = 2 +custom_constants/margin_bottom = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/PagedContent/Controls"] +margin_left = 2.0 +margin_top = 2.0 +margin_right = 446.0 +margin_bottom = 28.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Button2" type="Button" parent="PanelContainer/PagedContent/Controls/HBoxContainer"] +margin_right = 145.0 +margin_bottom = 26.5702 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "< Previous page" + +[node name="SpellPoints" type="Label" parent="PanelContainer/PagedContent/Controls/HBoxContainer"] +margin_left = 149.0 +margin_top = 5.0 +margin_right = 294.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 +align = 1 +valign = 1 + +[node name="Button" type="Button" parent="PanelContainer/PagedContent/Controls/HBoxContainer"] +margin_left = 298.0 +margin_right = 444.0 +margin_bottom = 26.5702 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Next page >" + +[connection signal="pressed" from="PanelContainer/PagedContent/Header/Button" to="." method="hide"] diff --git a/game/ui/spellbook/SpellContainer.gd b/game/ui/spellbook/SpellContainer.gd new file mode 100644 index 0000000..5f6dfec --- /dev/null +++ b/game/ui/spellbook/SpellContainer.gd @@ -0,0 +1,150 @@ +extends Control + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var icon_path : NodePath +export(NodePath) var name_label_path : NodePath +#export(NodePath) var description_label_path : NodePath +export(NodePath) var known_label_path : NodePath +export(NodePath) var learn_button_path : NodePath +export(NodePath) var spell_button_path : NodePath +export(NodePath) var popup_path : NodePath + +export(Color) var known_color : Color = Color.white +export(Color) var not_known_color : Color = Color.gray +export(Color) var unlearnable_color : Color = Color.gray + +var _icon : TextureRect +var _name_label : Label +#var _description_label : RichTextLabel +var _spell_button : Button +var _popup : Popup + +var _spell : Spell +var _player : Entity + +var _spell_known : bool + +func _ready() -> void: + _icon = get_node(icon_path) as TextureRect + _name_label = get_node(name_label_path) as Label +# _description_label = get_node(description_label_path) as RichTextLabel + _spell_button = get_node(spell_button_path) as Button + _popup = get_node(popup_path) as Popup + +func set_spell(p_player : Entity, p_spell: Spell) -> void: + + if _player != null: + _player.disconnect("cspell_added", self, "cspell_added") + _player.disconnect("cspell_removed", self, "cspell_removed") + + _spell = p_spell + _player = p_player + + _player.connect("cspell_added", self, "cspell_added") + _player.connect("cspell_removed", self, "cspell_removed") + +# _icon.set_spell(_spell) + _spell_button.set_spell(_spell) + _popup.set_spell(_spell) + + if not _spell == null: + _spell_known = _player.spell_hasc(p_spell) + + _icon.texture = _spell.icon + _name_label.text = _spell.text_name + " (Rank " + str(_spell.rank) + ")" + else: + _icon.texture = null + + _name_label.text = "....." + + update_spell_indicators() + +func learn_spell() -> void: + if _player == null or _spell == null: + return + + if _player.cfree_spell_points <= 0: + return + + _player.spell_learn_requestc(_spell.id) + +func cspell_added(entity: Entity, spell: Spell) -> void: + if spell == _spell: + _spell_known = true + + update_spell_indicators() + +func cspell_removed(entity: Entity, spell: Spell) -> void: + if spell == _spell: + _spell_known = false + + update_spell_indicators() + +func spell_button_pressed() -> void: + var pos : Vector2 = _spell_button.rect_global_position + pos.x += _spell_button.rect_size.x + + _popup.popup(Rect2(pos, _popup.rect_size)) + +func update_spell_indicators(): + if ESS.use_spell_points: + if _spell_known: + get_node(known_label_path).show() + get_node(learn_button_path).hide() + + modulate = known_color + else: + if _spell != null: + if _spell.training_required_spell: + if not _player.spell_hasc(_spell.training_required_spell): + + if ESS.use_spell_points: + get_node(known_label_path).hide() + get_node(learn_button_path).show() + + modulate = unlearnable_color + + return + + if ESS.use_spell_points: + get_node(known_label_path).hide() + get_node(learn_button_path).show() + + modulate = not_known_color + else: + get_node(known_label_path).hide() + get_node(learn_button_path).hide() + + if _spell_known: + modulate = known_color + else: + if _spell != null: + if _spell.training_required_spell: + if not _player.spell_hasc(_spell.training_required_spell): + + modulate = unlearnable_color + + return + + modulate = not_known_color + + diff --git a/game/ui/spellbook/SpellContainer.tscn b/game/ui/spellbook/SpellContainer.tscn new file mode 100644 index 0000000..3dda6b0 --- /dev/null +++ b/game/ui/spellbook/SpellContainer.tscn @@ -0,0 +1,150 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/spellbook/SpellDragAndDropSpellBook.gd" type="Script" id=2] +[ext_resource path="res://ui/spellbook/SpellContainer.gd" type="Script" id=3] +[ext_resource path="res://ui/spellbook/SpellEntryPopup.gd" type="Script" id=4] + +[node name="SpellContainer" type="Control"] +margin_left = 290.0 +margin_top = 306.0 +margin_right = 576.0 +margin_bottom = 370.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme = ExtResource( 1 ) +script = ExtResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} +icon_path = NodePath("PanelContainer/HBoxContainer/Button/CenterContainer/SpellIcon") +name_label_path = NodePath("PanelContainer/HBoxContainer/SpellName") +known_label_path = NodePath("SpellEntryPopup/VBoxContainer/PanelContainer") +learn_button_path = NodePath("SpellEntryPopup/VBoxContainer/LearnButton") +spell_button_path = NodePath("PanelContainer/HBoxContainer/Button") +popup_path = NodePath("SpellEntryPopup") +not_known_color = Color( 0.596078, 0.596078, 0.596078, 1 ) +unlearnable_color = Color( 0.772549, 0.192157, 0.192157, 1 ) + +[node name="PanelContainer" type="PanelContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 282.0 +margin_bottom = 60.0 + +[node name="Button" type="Button" parent="PanelContainer/HBoxContainer"] +margin_right = 55.0 +margin_bottom = 56.0 +rect_min_size = Vector2( 55, 55 ) +script = ExtResource( 2 ) + +[node name="CenterContainer" type="MarginContainer" parent="PanelContainer/HBoxContainer/Button"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 51.0 +margin_bottom = 51.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="SpellIcon" type="TextureRect" parent="PanelContainer/HBoxContainer/Button/CenterContainer"] +margin_right = 47.0 +margin_bottom = 47.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +expand = true + +[node name="SpellName" type="Label" parent="PanelContainer/HBoxContainer"] +margin_left = 59.0 +margin_top = 20.0 +margin_right = 278.0 +margin_bottom = 35.0 +size_flags_horizontal = 3 +text = "......" + +[node name="SpellEntryPopup" type="PopupPanel" parent="."] +margin_left = 64.0 +margin_top = 4.0 +margin_right = 360.0 +margin_bottom = 207.0 +script = ExtResource( 4 ) +__meta__ = { +"_edit_use_anchors_": false +} +label_path = NodePath("VBoxContainer/HBoxContainer/Label") +desc_label_path = NodePath("VBoxContainer/RichTextLabel") + +[node name="VBoxContainer" type="VBoxContainer" parent="SpellEntryPopup"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 4.0 +margin_right = -4.0 +margin_bottom = -4.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HBoxContainer" type="HBoxContainer" parent="SpellEntryPopup/VBoxContainer"] +margin_right = 288.0 +margin_bottom = 26.0 + +[node name="Label" type="Label" parent="SpellEntryPopup/VBoxContainer/HBoxContainer"] +margin_top = 5.0 +margin_right = 254.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 + +[node name="Button" type="Button" parent="SpellEntryPopup/VBoxContainer/HBoxContainer"] +margin_left = 258.0 +margin_right = 288.0 +margin_bottom = 26.5702 +rect_min_size = Vector2( 30, 0 ) +text = "X" + +[node name="HSeparator2" type="HSeparator" parent="SpellEntryPopup/VBoxContainer"] +margin_top = 34.0 +margin_right = 288.0 +margin_bottom = 38.0 + +[node name="PanelContainer" type="PanelContainer" parent="SpellEntryPopup/VBoxContainer"] +margin_top = 46.0 +margin_right = 288.0 +margin_bottom = 69.0 +rect_min_size = Vector2( 0, 20 ) + +[node name="KnownLabel" type="Label" parent="SpellEntryPopup/VBoxContainer/PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 284.0 +margin_bottom = 19.0 +text = "Known" +align = 1 +valign = 1 + +[node name="LearnButton" type="Button" parent="SpellEntryPopup/VBoxContainer"] +visible = false +margin_top = 77.0 +margin_right = 288.0 +margin_bottom = 103.57 +text = "Learn" + +[node name="RichTextLabel" type="RichTextLabel" parent="SpellEntryPopup/VBoxContainer"] +margin_top = 77.0 +margin_right = 288.0 +margin_bottom = 195.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +[connection signal="pressed" from="PanelContainer/HBoxContainer/Button" to="." method="spell_button_pressed"] +[connection signal="pressed" from="SpellEntryPopup/VBoxContainer/HBoxContainer/Button" to="SpellEntryPopup" method="hide"] +[connection signal="pressed" from="SpellEntryPopup/VBoxContainer/LearnButton" to="." method="learn_spell"] diff --git a/game/ui/spellbook/SpellDragAndDropSpellBook.gd b/game/ui/spellbook/SpellDragAndDropSpellBook.gd new file mode 100644 index 0000000..87e30be --- /dev/null +++ b/game/ui/spellbook/SpellDragAndDropSpellBook.gd @@ -0,0 +1,45 @@ +extends Button + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +var spell + +func set_spell(p_spell): + spell = p_spell + +func get_drag_data(pos): + if spell == null: + return null + + var tr = TextureRect.new() + tr.texture = spell.icon + tr.expand = true + +# tr.rect_size = rect_size + tr.rect_size = Vector2(45, 45) + set_drag_preview(tr) + + var esd = ESDragAndDrop.new() + + esd.type = ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_SPELL + esd.item_path = spell.resource_path + + return esd diff --git a/game/ui/spellbook/SpellEntryPopup.gd b/game/ui/spellbook/SpellEntryPopup.gd new file mode 100644 index 0000000..1db6ad6 --- /dev/null +++ b/game/ui/spellbook/SpellEntryPopup.gd @@ -0,0 +1,43 @@ +extends PopupPanel + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var label_path : NodePath +export(NodePath) var desc_label_path : NodePath + +var _label : Label +var _desc_label : RichTextLabel + +var _spell : Spell + +func _ready(): + _label = get_node(label_path) as Label + _desc_label = get_node(desc_label_path) as RichTextLabel + +func set_spell(spell : Spell) -> void: + _spell = spell + + if _spell == null: + return + + _label.text = _spell.text_name + _desc_label.text = _spell.get_description(1, 1) + diff --git a/game/ui/spellbook/game_module.tres b/game/ui/spellbook/game_module.tres new file mode 100644 index 0000000..9080b7e --- /dev/null +++ b/game/ui/spellbook/game_module.tres @@ -0,0 +1,13 @@ +[gd_resource type="Resource" load_steps=4 format=2] + +[ext_resource path="res://ui/theme/spellbook_icon.tres" type="Texture" id=1] +[ext_resource path="res://ui/spellbook/SpellBookWindow.tscn" type="PackedScene" id=2] +[ext_resource path="res://scripts/game_modules/ui_window_module.gd" type="Script" id=3] + +[resource] +script = ExtResource( 3 ) +enabled = true +scene = ExtResource( 2 ) +opener_button_texture = ExtResource( 1 ) +index = 1 +add_button = true diff --git a/game/ui/starmap/StarMap.tscn b/game/ui/starmap/StarMap.tscn new file mode 100644 index 0000000..b2a6bfb --- /dev/null +++ b/game/ui/starmap/StarMap.tscn @@ -0,0 +1,72 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] + +[node name="StarMap" type="PanelContainer"] +margin_right = 531.0 +margin_bottom = 442.0 +theme = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 527.0 +margin_bottom = 438.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +margin_right = 523.0 +margin_bottom = 40.0 + +[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer"] +margin_top = 12.0 +margin_right = 475.0 +margin_bottom = 27.0 +size_flags_horizontal = 3 +text = "Starmap" + +[node name="Button" type="Button" parent="VBoxContainer/HBoxContainer"] +margin_left = 483.0 +margin_right = 523.0 +margin_bottom = 40.0 +rect_min_size = Vector2( 40, 40 ) +text = "X" + +[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"] +margin_top = 48.0 +margin_right = 523.0 +margin_bottom = 396.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="TextureRect" type="TextureRect" parent="VBoxContainer/ScrollContainer"] + +[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer"] +margin_top = 404.0 +margin_right = 523.0 +margin_bottom = 434.0 +alignment = 1 + +[node name="Button" type="Button" parent="VBoxContainer/HBoxContainer2"] +margin_left = 133.0 +margin_right = 213.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 80, 30 ) +text = "Search" + +[node name="Button2" type="Button" parent="VBoxContainer/HBoxContainer2"] +margin_left = 221.0 +margin_right = 301.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 80, 30 ) +text = "Custom" + +[node name="Button3" type="Button" parent="VBoxContainer/HBoxContainer2"] +margin_left = 309.0 +margin_right = 389.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 80, 30 ) +text = "Go" +[connection signal="pressed" from="VBoxContainer/HBoxContainer/Button" to="." method="hide"] diff --git a/game/ui/talents/Spec.gd b/game/ui/talents/Spec.gd new file mode 100644 index 0000000..1b5d163 --- /dev/null +++ b/game/ui/talents/Spec.gd @@ -0,0 +1,51 @@ +extends ScrollContainer + +# Copyright (c) 2019-2021 Péter Magyar +# +# 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. + +export(PackedScene) var talent_row_scene : PackedScene +export(NodePath) var container_path : NodePath + +var _container : Node + +var _player : Entity +var _spec : CharacterSpec +var _spec_index : int + +func _ready() -> void: + _container = get_node(container_path) + +func set_spec(player : Entity, spec : CharacterSpec, spec_index: int) -> void: + for ch in _container.get_children(): + ch.queue_free() + + _player = player + _spec = spec + _spec_index = spec_index + + if _player == null or _spec == null: + return + + for i in range(spec.num_rows): + var r : Node = talent_row_scene.instance() + _container.add_child(r) + r.owner = self + r.set_player(player, spec, spec_index, i) + diff --git a/game/ui/talents/Spec.tscn b/game/ui/talents/Spec.tscn new file mode 100644 index 0000000..18b157a --- /dev/null +++ b/game/ui/talents/Spec.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/talents/Spec.gd" type="Script" id=1] +[ext_resource path="res://ui/talents/TalentRow.tscn" type="PackedScene" id=2] + +[node name="Spec" type="ScrollContainer"] +margin_right = 882.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +talent_row_scene = ExtResource( 2 ) +container_path = NodePath("Container") + +[node name="Container" type="VBoxContainer" parent="."] +margin_right = 858.0 +size_flags_horizontal = 3 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/game/ui/talents/TalentEntry.gd b/game/ui/talents/TalentEntry.gd new file mode 100644 index 0000000..9a55362 --- /dev/null +++ b/game/ui/talents/TalentEntry.gd @@ -0,0 +1,128 @@ +extends CenterContainer + +# Copyright (c) 2019-2021 Péter Magyar +# +# 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. + +export(NodePath) var main_container_path : NodePath +export(NodePath) var popup_path : NodePath + +export(NodePath) var aura_name_label_path : NodePath +export(NodePath) var aura_description_label_path : NodePath +export(NodePath) var icon_rect_path : NodePath +export(NodePath) var rank_label_path : NodePath +export(NodePath) var upgrade_button_path : NodePath + +export(int) var culomn : int + +var _main_container : Control +var _popup : PopupPanel + +var _aura_name_label : Label +var _aura_description_label : Label +var _icon_rect : TextureRect +var _rank_label : Label +var _upgrade_button : Button + +var _row : int +var _spec_index : int + +var _player : Entity +var _spec : CharacterSpec + +func _ready() -> void: + _main_container = get_node(main_container_path) as Control + _popup = get_node(popup_path) as PopupPanel + + _aura_name_label = get_node(aura_name_label_path) as Label + _aura_description_label = get_node(aura_description_label_path) as Label + _icon_rect = get_node(icon_rect_path) as TextureRect + _rank_label = get_node(rank_label_path) as Label + _upgrade_button = get_node(upgrade_button_path) as Button + +func set_player(player : Entity, spec : CharacterSpec, spec_index : int, row : int, pculomn : int) -> void: + if _player != null: + _player.disconnect("cclass_talent_learned", self, "ctalent_learned") + _player.disconnect("ccharacter_talent_learned", self, "ctalent_learned") + _player.disconnect("cclass_talent_reset", self, "ctalent_reset") + _player.disconnect("ccharacter_talent_reset", self, "ctalent_reset") + + _row = row + _spec = spec + _player = player + _spec_index = spec_index + culomn = pculomn + + _player.connect("cclass_talent_learned", self, "ctalent_learned") + _player.connect("ccharacter_talent_learned", self, "ctalent_learned") + _player.connect("cclass_talent_reset", self, "ctalent_reset") + _player.connect("ccharacter_talent_reset", self, "ctalent_reset") + + refresh() + + +func refresh() -> void: + if _spec.get_talent(_row, culomn, 0) == null: + _main_container.hide() + return + + var rank_count : int = 0 + var known_rank_count : int = 0 + + for i in range(_spec.get_num_ranks(_row, culomn)): + var a : Spell = _spec.get_talent(_row, culomn, i) + + if a == null: + break + + if _player.class_talent_hasc(a.id): + known_rank_count += 1 + + rank_count += 1 + + var ridx : int = known_rank_count - 1 + + if rank_count == known_rank_count: + _upgrade_button.hide() + else: + ridx += 1 + + _upgrade_button.show() + + var aura : Spell = _spec.get_talent(_row, culomn, ridx) + + _aura_name_label.text = aura.text_name + _aura_description_label.text = aura.aura_text_description + _icon_rect.texture = aura.icon + _rank_label.text = str(known_rank_count) + "/" + str(rank_count) + +func open_popup() -> void: + var p : Vector2 = rect_global_position + p.x += rect_size.x + + _popup.popup(Rect2(p, _popup.rect_size)) + +func upgrade(): + _player.class_talent_crequest_learn(_spec_index, _row, culomn) + +func ctalent_learned(entity: Entity, talent_id: int) -> void: + refresh() + +func ctalent_reset(entity: Entity) -> void: + refresh() diff --git a/game/ui/talents/TalentEntry.tscn b/game/ui/talents/TalentEntry.tscn new file mode 100644 index 0000000..7878372 --- /dev/null +++ b/game/ui/talents/TalentEntry.tscn @@ -0,0 +1,110 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/talents/TalentEntry.gd" type="Script" id=1] +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=2] + +[node name="TalentEntry" type="CenterContainer"] +margin_right = 40.0 +margin_bottom = 40.0 +rect_min_size = Vector2( 45, 45 ) +size_flags_horizontal = 3 +theme = ExtResource( 2 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +main_container_path = NodePath("Button") +popup_path = NodePath("Button/PopupPanel") +aura_name_label_path = NodePath("Button/PopupPanel/VBoxContainer/HBoxContainer/Label") +aura_description_label_path = NodePath("Button/PopupPanel/VBoxContainer/Label") +icon_rect_path = NodePath("Button/MarginContainer/TextureRect") +rank_label_path = NodePath("Button/MarginContainer/TextureRect/Label") +upgrade_button_path = NodePath("Button/PopupPanel/VBoxContainer/HBoxContainer/Button") + +[node name="Button" type="Button" parent="."] +margin_right = 45.0 +margin_bottom = 45.0 +rect_min_size = Vector2( 45, 45 ) + +[node name="MarginContainer" type="MarginContainer" parent="Button"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +custom_constants/margin_right = 3 +custom_constants/margin_top = 3 +custom_constants/margin_left = 3 +custom_constants/margin_bottom = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="TextureRect" type="TextureRect" parent="Button/MarginContainer"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 42.0 +margin_bottom = 42.0 +expand = true + +[node name="Label" type="Label" parent="Button/MarginContainer/TextureRect"] +anchor_right = 1.0 +anchor_bottom = 1.0 +text = "2/2" +align = 2 +valign = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="PopupPanel" type="PopupPanel" parent="Button"] +margin_left = 41.592 +margin_top = 1.58763 +margin_right = 211.592 +margin_bottom = 127.588 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="Button/PopupPanel"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 166.0 +margin_bottom = 122.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="Button/PopupPanel/VBoxContainer"] +margin_right = 162.0 +margin_bottom = 30.0 + +[node name="Label" type="Label" parent="Button/PopupPanel/VBoxContainer/HBoxContainer"] +margin_top = 7.0 +margin_right = 124.0 +margin_bottom = 22.0 +size_flags_horizontal = 3 +text = "asdasdasdasdasda" +valign = 1 + +[node name="Button" type="Button" parent="Button/PopupPanel/VBoxContainer/HBoxContainer"] +margin_left = 132.0 +margin_right = 162.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 30, 30 ) +text = "X" + +[node name="Button" type="Button" parent="Button/PopupPanel/VBoxContainer"] +margin_top = 38.0 +margin_right = 162.0 +margin_bottom = 64.269 +text = "Upgrade" + +[node name="Label" type="Label" parent="Button/PopupPanel/VBoxContainer"] +margin_top = 72.0 +margin_right = 162.0 +margin_bottom = 118.0 +size_flags_horizontal = 3 +size_flags_vertical = 7 +text = "increases your Dodge by 5%. +Also Adds 10% lols." +[connection signal="pressed" from="Button" to="." method="open_popup"] +[connection signal="pressed" from="Button/PopupPanel/VBoxContainer/HBoxContainer/Button" to="Button/PopupPanel" method="hide"] +[connection signal="pressed" from="Button/PopupPanel/VBoxContainer/Button" to="." method="upgrade"] diff --git a/game/ui/talents/TalentRow.gd b/game/ui/talents/TalentRow.gd new file mode 100644 index 0000000..e9f36f6 --- /dev/null +++ b/game/ui/talents/TalentRow.gd @@ -0,0 +1,29 @@ +extends HBoxContainer + +# Copyright (c) 2019-2021 Péter Magyar +# +# 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. + +export(PackedScene) var entry_scene : PackedScene + +func set_player(player : Entity, spec : CharacterSpec, spec_index: int, row : int) -> void: + for i in range(spec.get_num_columns(row)): + var ch : Node = entry_scene.instance() + add_child(ch) + ch.set_player(player, spec, spec_index, row, i) diff --git a/game/ui/talents/TalentRow.tscn b/game/ui/talents/TalentRow.tscn new file mode 100644 index 0000000..4376857 --- /dev/null +++ b/game/ui/talents/TalentRow.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://ui/talents/TalentEntry.tscn" type="PackedScene" id=1] +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=2] +[ext_resource path="res://ui/talents/TalentRow.gd" type="Script" id=3] + +[node name="TalentRow" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +theme = ExtResource( 2 ) +alignment = 1 +script = ExtResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} +entry_scene = ExtResource( 1 ) diff --git a/game/ui/talents/TalentWindow.gd b/game/ui/talents/TalentWindow.gd new file mode 100644 index 0000000..9c52470 --- /dev/null +++ b/game/ui/talents/TalentWindow.gd @@ -0,0 +1,118 @@ +extends Control + +# Copyright (c) 2019-2021 Péter Magyar +# +# 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. + +var opener_button : BaseButton + +export(PackedScene) var spec_scene : PackedScene +export(PackedScene) var spec_switcher_scene : PackedScene +export(NodePath) var spec_container_path : NodePath +export(NodePath) var spec_switcher_path : NodePath + +var _spec_container : Node +var _spec_switcher_container : Node + +var _data : EntityData +var _player : Entity + +func _ready(): + connect("visibility_changed", self, "on_visibility_changed") + + _spec_container = get_node(spec_container_path) + _spec_switcher_container = get_node(spec_switcher_path) + +func set_player(player : Entity) -> void: + if _player != null: + _player.disconnect("centity_data_changed", self, "centity_data_changed") + + _player = player + + if _player == null: + return + + _player.connect("centity_data_changed", self, "centity_data_changed") + + centity_data_changed(_player.centity_data) + + +func select_spec(index : int) -> void: + for ch in _spec_container.get_children(): + ch.hide() + + if _spec_container.get_child_count() <= index: + return + + _spec_container.get_child(index).show() + +func centity_data_changed(data: EntityData) -> void: + if _data == data: + return + + _data = data + + for ch in _spec_container.get_children(): + ch.queue_free() + _spec_container.remove_child(ch) + + for ch in _spec_switcher_container.get_children(): + ch.queue_free() + + if data == null or data.entity_class_data == null: + return + + var cd : EntityClassData = data.entity_class_data + + for i in range(cd.get_num_specs()): + var spec : CharacterSpec = cd.get_spec(i) + + if spec == null: + continue + +# var b : Node = spec_switcher_scene.instance() +# _spec_switcher_container.add_child(b) +# b.owner = _spec_switcher_container +# b.set_spec_index(self, i) + + var s : Node = spec_scene.instance() + _spec_container.add_child(s) + s.owner = _spec_container + + if spec.text_name != "": + s.name = spec.text_name + + s.set_spec(_player, spec, i) + +func on_visibility_changed(): + if opener_button: + if visible && !opener_button.pressed: + opener_button.pressed = true + return + + if !visible && opener_button.pressed: + opener_button.pressed = false + +func _on_button_toggled(button_pressed): + if button_pressed: + if !visible: + show() + else: + if visible: + hide() diff --git a/game/ui/talents/TalentWindow.tscn b/game/ui/talents/TalentWindow.tscn new file mode 100644 index 0000000..5af265d --- /dev/null +++ b/game/ui/talents/TalentWindow.tscn @@ -0,0 +1,120 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/talents/Spec.tscn" type="PackedScene" id=2] +[ext_resource path="res://ui/talents/TalentWindow.gd" type="Script" id=3] +[ext_resource path="res://ui/talents/talent_switcher_button.tscn" type="PackedScene" id=4] + +[node name="TalentWindow" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +theme = ExtResource( 1 ) +script = ExtResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} +spec_scene = ExtResource( 2 ) +spec_switcher_scene = ExtResource( 4 ) +spec_container_path = NodePath("PanelContainer/VBoxContainer/HBoxContainer/PanelContainer2/VBoxContainer/TabContainer2") +spec_switcher_path = NodePath("PanelContainer/VBoxContainer/Header/SpecSwitcher") + +[node name="PanelContainer" type="PanelContainer" parent="."] +margin_left = 68.0 +margin_top = 87.0 +margin_right = 643.0 +margin_bottom = 525.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 571.0 +margin_bottom = 434.0 + +[node name="Header" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +margin_right = 567.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 0, 30 ) +alignment = 1 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/Header"] +margin_top = 7.0 +margin_right = 42.0 +margin_bottom = 22.0 +text = "Talents" + +[node name="SpecSwitcher" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Header"] +margin_left = 46.0 +margin_right = 523.0 +margin_bottom = 30.0 +size_flags_horizontal = 3 +alignment = 1 + +[node name="Button" type="Button" parent="PanelContainer/VBoxContainer/Header"] +margin_left = 527.0 +margin_right = 567.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 40, 30 ) +text = "X" + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +margin_top = 38.0 +margin_right = 567.0 +margin_bottom = 430.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="PanelContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer/HBoxContainer"] +margin_right = 185.0 +margin_bottom = 392.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.49 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 181.0 +margin_bottom = 388.0 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer/PanelContainer/VBoxContainer"] +margin_right = 177.0 +margin_bottom = 15.0 +text = "Body" + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/PanelContainer/VBoxContainer"] +margin_top = 23.0 +margin_right = 177.0 +margin_bottom = 384.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="PanelContainer2" type="PanelContainer" parent="PanelContainer/VBoxContainer/HBoxContainer"] +margin_left = 189.0 +margin_right = 567.0 +margin_bottom = 392.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/PanelContainer2"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 374.0 +margin_bottom = 388.0 + +[node name="Label2" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer/PanelContainer2/VBoxContainer"] +visible = false +margin_right = 672.0 +margin_bottom = 15.0 +text = "Class" + +[node name="TabContainer2" type="TabContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/PanelContainer2/VBoxContainer"] +margin_right = 370.0 +margin_bottom = 384.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[connection signal="pressed" from="PanelContainer/VBoxContainer/Header/Button" to="." method="hide"] diff --git a/game/ui/talents/game_module.tres b/game/ui/talents/game_module.tres new file mode 100644 index 0000000..c343d87 --- /dev/null +++ b/game/ui/talents/game_module.tres @@ -0,0 +1,13 @@ +[gd_resource type="Resource" load_steps=4 format=2] + +[ext_resource path="res://ui/theme/talent_icon.tres" type="Texture" id=1] +[ext_resource path="res://scripts/game_modules/ui_window_module.gd" type="Script" id=2] +[ext_resource path="res://ui/talents/TalentWindow.tscn" type="PackedScene" id=3] + +[resource] +script = ExtResource( 2 ) +enabled = true +scene = ExtResource( 3 ) +opener_button_texture = ExtResource( 1 ) +index = 2 +add_button = true diff --git a/game/ui/talents/talent_switcher_button.gd b/game/ui/talents/talent_switcher_button.gd new file mode 100644 index 0000000..52e2a62 --- /dev/null +++ b/game/ui/talents/talent_switcher_button.gd @@ -0,0 +1,32 @@ +extends Button + +# Copyright (c) 2019-2021 Péter Magyar +# +# 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. + +var _index : int +var _spec_window : Node + +func set_spec_index(spec_window : Node, index : int) -> void: + _index = index + _spec_window = spec_window + +func _toggled(button_pressed): + if button_pressed: + _spec_window.select_spec(_index) diff --git a/game/ui/talents/talent_switcher_button.tscn b/game/ui/talents/talent_switcher_button.tscn new file mode 100644 index 0000000..637bbe7 --- /dev/null +++ b/game/ui/talents/talent_switcher_button.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/talents/talent_switcher_button.gd" type="Script" id=1] + +[node name="TalentSwitcher" type="Button"] +margin_left = 301.0 +margin_right = 401.0 +margin_bottom = 40.0 +rect_min_size = Vector2( 70, 30 ) +text = "Melee" +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/game/ui/theme/GameUI.png b/game/ui/theme/GameUI.png new file mode 100644 index 0000000..abb3e2c Binary files /dev/null and b/game/ui/theme/GameUI.png differ diff --git a/game/ui/theme/GameUI.png.import b/game/ui/theme/GameUI.png.import new file mode 100644 index 0000000..5b246c0 --- /dev/null +++ b/game/ui/theme/GameUI.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/GameUI.png-73e86ec1148027f9a719b18a5dba0e84.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/theme/GameUI.png" +dest_files=[ "res://.import/GameUI.png-73e86ec1148027f9a719b18a5dba0e84.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/ui/theme/actionbar_dynamicfont.tres b/game/ui/theme/actionbar_dynamicfont.tres new file mode 100644 index 0000000..52051c6 --- /dev/null +++ b/game/ui/theme/actionbar_dynamicfont.tres @@ -0,0 +1,7 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://fonts/VT323-Regular.ttf" type="DynamicFontData" id=1] + +[resource] +size = 21 +font_data = ExtResource( 1 ) diff --git a/game/ui/theme/bag_icon.tres b/game/ui/theme/bag_icon.tres new file mode 100644 index 0000000..42b353e --- /dev/null +++ b/game/ui/theme/bag_icon.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 0, 108, 20, 20 ) diff --git a/game/ui/theme/button_bg_atlas.tres b/game/ui/theme/button_bg_atlas.tres new file mode 100644 index 0000000..431a19c --- /dev/null +++ b/game/ui/theme/button_bg_atlas.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 1, 55, 13, 14 ) diff --git a/game/ui/theme/button_bg_stylebox.tres b/game/ui/theme/button_bg_stylebox.tres new file mode 100644 index 0000000..73888ec --- /dev/null +++ b/game/ui/theme/button_bg_stylebox.tres @@ -0,0 +1,14 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/button_bg_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 13, 14 ) +margin_left = 5.0 +margin_right = 5.0 +margin_top = 6.0 +margin_bottom = 5.57024 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color( 0.772549, 0.772549, 0.772549, 1 ) diff --git a/game/ui/theme/button_bg_stylebox_disabled.tres b/game/ui/theme/button_bg_stylebox_disabled.tres new file mode 100644 index 0000000..82fdb5c --- /dev/null +++ b/game/ui/theme/button_bg_stylebox_disabled.tres @@ -0,0 +1,14 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/button_bg_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 13, 14 ) +margin_left = 5.57024 +margin_right = 4.92768 +margin_top = 5.18471 +margin_bottom = 5.18471 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color( 0.984314, 0.984314, 0.984314, 1 ) diff --git a/game/ui/theme/button_bg_stylebox_focus.tres b/game/ui/theme/button_bg_stylebox_focus.tres new file mode 100644 index 0000000..91ef13d --- /dev/null +++ b/game/ui/theme/button_bg_stylebox_focus.tres @@ -0,0 +1,14 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/button_bg_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 13, 14 ) +margin_left = 5.0562 +margin_right = 4.92768 +margin_top = 5.82727 +margin_bottom = 5.0562 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color( 0.807843, 0.807843, 0.807843, 1 ) diff --git a/game/ui/theme/button_bg_stylebox_hover.tres b/game/ui/theme/button_bg_stylebox_hover.tres new file mode 100644 index 0000000..298037a --- /dev/null +++ b/game/ui/theme/button_bg_stylebox_hover.tres @@ -0,0 +1,13 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/button_bg_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 13, 14 ) +margin_left = 4.15661 +margin_right = 4.79917 +margin_top = 4.67066 +margin_bottom = 4.88346 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 diff --git a/game/ui/theme/button_bg_stylebox_pressed.tres b/game/ui/theme/button_bg_stylebox_pressed.tres new file mode 100644 index 0000000..540dc11 --- /dev/null +++ b/game/ui/theme/button_bg_stylebox_pressed.tres @@ -0,0 +1,14 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/button_bg_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 13, 14 ) +margin_left = 3.0 +margin_right = 3.0 +margin_top = 3.0 +margin_bottom = 3.0 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color( 0.431373, 0.431373, 0.431373, 1 ) diff --git a/game/ui/theme/character_icon.tres b/game/ui/theme/character_icon.tres new file mode 100644 index 0000000..02b0539 --- /dev/null +++ b/game/ui/theme/character_icon.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 105, 89, 20, 20 ) diff --git a/game/ui/theme/checkbox_checked_texture.tres b/game/ui/theme/checkbox_checked_texture.tres new file mode 100644 index 0000000..0072fe5 --- /dev/null +++ b/game/ui/theme/checkbox_checked_texture.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 9, 46, 7, 7 ) diff --git a/game/ui/theme/checkbox_texture.tres b/game/ui/theme/checkbox_texture.tres new file mode 100644 index 0000000..f020975 --- /dev/null +++ b/game/ui/theme/checkbox_texture.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 1, 46, 7, 7 ) diff --git a/game/ui/theme/cooldown_progress.png b/game/ui/theme/cooldown_progress.png new file mode 100644 index 0000000..f8e30ef Binary files /dev/null and b/game/ui/theme/cooldown_progress.png differ diff --git a/game/ui/theme/cooldown_progress.png.import b/game/ui/theme/cooldown_progress.png.import new file mode 100644 index 0000000..b24dab5 --- /dev/null +++ b/game/ui/theme/cooldown_progress.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cooldown_progress.png-021a0cda14b9a15b9ac04b9c9084d412.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/theme/cooldown_progress.png" +dest_files=[ "res://.import/cooldown_progress.png-021a0cda14b9a15b9ac04b9c9084d412.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/ui/theme/crafting_icon.tres b/game/ui/theme/crafting_icon.tres new file mode 100644 index 0000000..a9ee07e --- /dev/null +++ b/game/ui/theme/crafting_icon.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 105, 108, 20, 20 ) diff --git a/game/ui/theme/dropdown_icon.tres b/game/ui/theme/dropdown_icon.tres new file mode 100644 index 0000000..04e6b89 --- /dev/null +++ b/game/ui/theme/dropdown_icon.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 1, 1, 10, 10 ) diff --git a/game/ui/theme/h_scroll_bar_texture.tres b/game/ui/theme/h_scroll_bar_texture.tres new file mode 100644 index 0000000..9b0e3ef --- /dev/null +++ b/game/ui/theme/h_scroll_bar_texture.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 31, 49, 10, 11 ) diff --git a/game/ui/theme/indicator.png b/game/ui/theme/indicator.png new file mode 100644 index 0000000..54d16eb Binary files /dev/null and b/game/ui/theme/indicator.png differ diff --git a/game/ui/theme/indicator.png.import b/game/ui/theme/indicator.png.import new file mode 100644 index 0000000..f380e6c --- /dev/null +++ b/game/ui/theme/indicator.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/indicator.png-c41d04cbba622d9e2a8ddce8ec7447b5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/theme/indicator.png" +dest_files=[ "res://.import/indicator.png-c41d04cbba622d9e2a8ddce8ec7447b5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/ui/theme/lineedit_normal_style.tres b/game/ui/theme/lineedit_normal_style.tres new file mode 100644 index 0000000..836cca1 --- /dev/null +++ b/game/ui/theme/lineedit_normal_style.tres @@ -0,0 +1,15 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/button_bg_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 13, 14 ) +margin_left = 4.54215 +margin_right = 4.92768 +margin_top = 4.54215 +margin_bottom = 4.79917 +expand_margin_top = 4.0 +expand_margin_bottom = 4.0 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 diff --git a/game/ui/theme/locked_icon.tres b/game/ui/theme/locked_icon.tres new file mode 100644 index 0000000..1d04f23 --- /dev/null +++ b/game/ui/theme/locked_icon.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 34, 108, 20, 20 ) diff --git a/game/ui/theme/menu_icon.tres b/game/ui/theme/menu_icon.tres new file mode 100644 index 0000000..1f439c8 --- /dev/null +++ b/game/ui/theme/menu_icon.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 68, 108, 20, 20 ) diff --git a/game/ui/theme/panel_bg.tres b/game/ui/theme/panel_bg.tres new file mode 100644 index 0000000..1350fef --- /dev/null +++ b/game/ui/theme/panel_bg.tres @@ -0,0 +1,13 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/panel_bg_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 10, 11 ) +margin_left = 4.0 +margin_right = 4.0 +margin_top = 4.0 +margin_bottom = 4.0 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 diff --git a/game/ui/theme/panel_bg_atlas.tres b/game/ui/theme/panel_bg_atlas.tres new file mode 100644 index 0000000..9b0e3ef --- /dev/null +++ b/game/ui/theme/panel_bg_atlas.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 31, 49, 10, 11 ) diff --git a/game/ui/theme/radio_checked_texture.tres b/game/ui/theme/radio_checked_texture.tres new file mode 100644 index 0000000..25bfe52 --- /dev/null +++ b/game/ui/theme/radio_checked_texture.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 1, 37, 7, 7 ) diff --git a/game/ui/theme/radio_texture.tres b/game/ui/theme/radio_texture.tres new file mode 100644 index 0000000..f3bda6d --- /dev/null +++ b/game/ui/theme/radio_texture.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 9, 37, 7, 7 ) diff --git a/game/ui/theme/scrollbar_bg.tres b/game/ui/theme/scrollbar_bg.tres new file mode 100644 index 0000000..fa085e5 --- /dev/null +++ b/game/ui/theme/scrollbar_bg.tres @@ -0,0 +1,14 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/scrollbar_bg_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 10, 11 ) +margin_left = 2.0 +margin_right = 2.0 +margin_top = 2.0 +margin_bottom = 2.0 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color( 0.976471, 0.976471, 0.976471, 1 ) diff --git a/game/ui/theme/scrollbar_bg_atlas.tres b/game/ui/theme/scrollbar_bg_atlas.tres new file mode 100644 index 0000000..9b0e3ef --- /dev/null +++ b/game/ui/theme/scrollbar_bg_atlas.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 31, 49, 10, 11 ) diff --git a/game/ui/theme/scrollbar_bg_focus.tres b/game/ui/theme/scrollbar_bg_focus.tres new file mode 100644 index 0000000..8a932b2 --- /dev/null +++ b/game/ui/theme/scrollbar_bg_focus.tres @@ -0,0 +1,13 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/panel_bg_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 10, 11 ) +margin_left = 2.0 +margin_right = 2.0 +margin_top = 2.0 +margin_bottom = 2.0 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 diff --git a/game/ui/theme/scrollbar_grabber.tres b/game/ui/theme/scrollbar_grabber.tres new file mode 100644 index 0000000..ad31839 --- /dev/null +++ b/game/ui/theme/scrollbar_grabber.tres @@ -0,0 +1,13 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/scrollbar_grabber_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 10, 11 ) +margin_left = 2.35121 +margin_right = 2.35121 +margin_top = 2.95077 +margin_bottom = 2.65099 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 diff --git a/game/ui/theme/scrollbar_grabber_atlas.tres b/game/ui/theme/scrollbar_grabber_atlas.tres new file mode 100644 index 0000000..9b0e3ef --- /dev/null +++ b/game/ui/theme/scrollbar_grabber_atlas.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 31, 49, 10, 11 ) diff --git a/game/ui/theme/scrollbar_grabber_blue.tres b/game/ui/theme/scrollbar_grabber_blue.tres new file mode 100644 index 0000000..441935e --- /dev/null +++ b/game/ui/theme/scrollbar_grabber_blue.tres @@ -0,0 +1,14 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/scrollbar_grabber_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 10, 11 ) +margin_left = 2.35121 +margin_right = 2.35121 +margin_top = 2.95077 +margin_bottom = 2.65099 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color( 0.0588235, 0.403922, 1, 1 ) diff --git a/game/ui/theme/scrollbar_grabber_blue_xp.tres b/game/ui/theme/scrollbar_grabber_blue_xp.tres new file mode 100644 index 0000000..1fed589 --- /dev/null +++ b/game/ui/theme/scrollbar_grabber_blue_xp.tres @@ -0,0 +1,14 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/scrollbar_grabber_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 10, 11 ) +margin_left = 2.35121 +margin_right = 2.35121 +margin_top = 2.95077 +margin_bottom = 2.65099 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color( 0.054902, 1, 0.976471, 1 ) diff --git a/game/ui/theme/scrollbar_grabber_highlight.tres b/game/ui/theme/scrollbar_grabber_highlight.tres new file mode 100644 index 0000000..ad31839 --- /dev/null +++ b/game/ui/theme/scrollbar_grabber_highlight.tres @@ -0,0 +1,13 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/scrollbar_grabber_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 10, 11 ) +margin_left = 2.35121 +margin_right = 2.35121 +margin_top = 2.95077 +margin_bottom = 2.65099 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 diff --git a/game/ui/theme/scrollbar_grabber_pressed.tres b/game/ui/theme/scrollbar_grabber_pressed.tres new file mode 100644 index 0000000..ffc1382 --- /dev/null +++ b/game/ui/theme/scrollbar_grabber_pressed.tres @@ -0,0 +1,14 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/scrollbar_grabber_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 10, 11 ) +margin_left = 2.35121 +margin_right = 2.35121 +margin_top = 2.95077 +margin_bottom = 2.65099 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color( 0.976471, 0.976471, 0.976471, 1 ) diff --git a/game/ui/theme/scrollbar_grabber_red.tres b/game/ui/theme/scrollbar_grabber_red.tres new file mode 100644 index 0000000..2ea4477 --- /dev/null +++ b/game/ui/theme/scrollbar_grabber_red.tres @@ -0,0 +1,14 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/scrollbar_grabber_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 10, 11 ) +margin_left = 2.35121 +margin_right = 2.35121 +margin_top = 2.95077 +margin_bottom = 2.65099 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color( 0.878431, 0.0784314, 0.0784314, 1 ) diff --git a/game/ui/theme/separator_stylebox.tres b/game/ui/theme/separator_stylebox.tres new file mode 100644 index 0000000..7bf5dd6 --- /dev/null +++ b/game/ui/theme/separator_stylebox.tres @@ -0,0 +1,7 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/separator_texture.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 1, 1 ) diff --git a/game/ui/theme/separator_texture.tres b/game/ui/theme/separator_texture.tres new file mode 100644 index 0000000..654816f --- /dev/null +++ b/game/ui/theme/separator_texture.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 20, 68, 1, 1 ) diff --git a/game/ui/theme/spellbook_icon.tres b/game/ui/theme/spellbook_icon.tres new file mode 100644 index 0000000..cfacdf0 --- /dev/null +++ b/game/ui/theme/spellbook_icon.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 17, 108, 20, 20 ) diff --git a/game/ui/theme/tab_button_bg_stylebox.tres b/game/ui/theme/tab_button_bg_stylebox.tres new file mode 100644 index 0000000..5843cc0 --- /dev/null +++ b/game/ui/theme/tab_button_bg_stylebox.tres @@ -0,0 +1,14 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/button_bg_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 13, 14 ) +margin_left = 8.65868 +margin_right = 8.7872 +margin_top = 6.0 +margin_bottom = 6.0 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color( 0.772549, 0.772549, 0.772549, 1 ) diff --git a/game/ui/theme/tab_button_bg_stylebox_focus.tres b/game/ui/theme/tab_button_bg_stylebox_focus.tres new file mode 100644 index 0000000..2e73253 --- /dev/null +++ b/game/ui/theme/tab_button_bg_stylebox_focus.tres @@ -0,0 +1,14 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/button_bg_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 13, 14 ) +margin_left = 8.40166 +margin_right = 8.01612 +margin_top = 6.0 +margin_bottom = 6.0 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color( 0.807843, 0.807843, 0.807843, 1 ) diff --git a/game/ui/theme/tab_button_bg_stylebox_hover.tres b/game/ui/theme/tab_button_bg_stylebox_hover.tres new file mode 100644 index 0000000..8f2d668 --- /dev/null +++ b/game/ui/theme/tab_button_bg_stylebox_hover.tres @@ -0,0 +1,13 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/button_bg_atlas.tres" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 13, 14 ) +margin_left = 8.27315 +margin_right = 8.14463 +margin_top = 6.0 +margin_bottom = 6.0 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 diff --git a/game/ui/theme/talent_icon.tres b/game/ui/theme/talent_icon.tres new file mode 100644 index 0000000..2d7f204 --- /dev/null +++ b/game/ui/theme/talent_icon.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 86, 108, 20, 20 ) diff --git a/game/ui/theme/ui_dynamicfont.tres b/game/ui/theme/ui_dynamicfont.tres new file mode 100644 index 0000000..306f2ca --- /dev/null +++ b/game/ui/theme/ui_dynamicfont.tres @@ -0,0 +1,7 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://fonts/VT323-Regular.ttf" type="DynamicFontData" id=1] + +[resource] +size = 14 +font_data = ExtResource( 1 ) diff --git a/game/ui/theme/ui_dynamicfont_small.tres b/game/ui/theme/ui_dynamicfont_small.tres new file mode 100644 index 0000000..de5e337 --- /dev/null +++ b/game/ui/theme/ui_dynamicfont_small.tres @@ -0,0 +1,7 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://fonts/VT323-Regular.ttf" type="DynamicFontData" id=1] + +[resource] +size = 12 +font_data = ExtResource( 1 ) diff --git a/game/ui/theme/ui_theme.tres b/game/ui/theme/ui_theme.tres new file mode 100644 index 0000000..8843c57 --- /dev/null +++ b/game/ui/theme/ui_theme.tres @@ -0,0 +1,380 @@ +[gd_resource type="Theme" load_steps=34 format=2] + +[ext_resource path="res://ui/theme/h_scroll_bar_texture.tres" type="Texture" id=1] +[ext_resource path="res://ui/theme/button_bg_stylebox_disabled.tres" type="StyleBox" id=2] +[ext_resource path="res://ui/theme/button_bg_stylebox_focus.tres" type="StyleBox" id=3] +[ext_resource path="res://ui/theme/button_bg_stylebox.tres" type="StyleBox" id=4] +[ext_resource path="res://ui/theme/button_bg_stylebox_hover.tres" type="StyleBox" id=5] +[ext_resource path="res://ui/theme/ui_dynamicfont.tres" type="DynamicFont" id=6] +[ext_resource path="res://ui/theme/button_bg_stylebox_pressed.tres" type="StyleBox" id=7] +[ext_resource path="res://ui/theme/panel_bg.tres" type="StyleBox" id=8] +[ext_resource path="res://ui/theme/lineedit_normal_style.tres" type="StyleBox" id=9] +[ext_resource path="res://ui/theme/scrollbar_grabber_highlight.tres" type="StyleBox" id=10] +[ext_resource path="res://ui/theme/scrollbar_bg.tres" type="StyleBox" id=11] +[ext_resource path="res://ui/theme/scrollbar_grabber.tres" type="StyleBox" id=12] +[ext_resource path="res://ui/theme/scrollbar_grabber_pressed.tres" type="StyleBox" id=13] +[ext_resource path="res://ui/theme/scrollbar_bg_focus.tres" type="StyleBox" id=14] +[ext_resource path="res://ui/theme/separator_stylebox.tres" type="StyleBox" id=15] +[ext_resource path="res://ui/theme/radio_texture.tres" type="Texture" id=16] +[ext_resource path="res://ui/theme/radio_checked_texture.tres" type="Texture" id=17] +[ext_resource path="res://ui/theme/checkbox_texture.tres" type="Texture" id=18] +[ext_resource path="res://ui/theme/checkbox_checked_texture.tres" type="Texture" id=19] +[ext_resource path="res://ui/theme/dropdown_icon.tres" type="Texture" id=20] +[ext_resource path="res://ui/theme/tab_button_bg_stylebox_focus.tres" type="StyleBox" id=21] +[ext_resource path="res://ui/theme/tab_button_bg_stylebox_hover.tres" type="StyleBox" id=22] +[ext_resource path="res://ui/theme/tab_button_bg_stylebox.tres" type="StyleBox" id=23] +[ext_resource path="res://scripts/ui/AdaptiveTheme.gd" type="Script" id=24] + +[sub_resource type="Image" id=10] +data = { +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 16, 255, 255, 255, 97, 255, 255, 255, 135, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 114, 191, 191, 191, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 15, 255, 255, 255, 139, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 123, 191, 191, 191, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 96, 255, 255, 255, 150, 255, 255, 255, 105, 255, 255, 255, 15, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 191, 191, 191, 0, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 123, 191, 191, 191, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 134, 255, 255, 255, 150, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 123, 191, 191, 191, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 122, 191, 191, 191, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 122, 191, 191, 191, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 121, 191, 191, 191, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 121, 191, 191, 191, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 121, 191, 191, 191, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 120, 191, 191, 191, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 120, 191, 191, 191, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 120, 191, 191, 191, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 119, 191, 191, 191, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 119, 191, 191, 191, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 134, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 119, 191, 191, 191, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 97, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 118, 191, 191, 191, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 16, 255, 255, 255, 139, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 111, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 16, 255, 255, 255, 97, 255, 255, 255, 135, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 191, 191, 191, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 150, 255, 255, 255, 150, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 134, 255, 255, 255, 150, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 16, 255, 255, 255, 150, 255, 255, 255, 134, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 255, 255, 255, 97, 255, 255, 255, 150, 255, 255, 255, 105, 255, 255, 255, 15, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 255, 255, 255, 15, 255, 255, 255, 105, 255, 255, 255, 150, 255, 255, 255, 97, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 16, 255, 255, 255, 139, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 139, 191, 191, 191, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 16, 255, 255, 255, 97, 255, 255, 255, 135, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 150, 255, 255, 255, 135, 255, 255, 255, 97, 191, 191, 191, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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": 64, +"mipmaps": false, +"width": 64 +} + +[sub_resource type="ImageTexture" id=2] +flags = 0 +flags = 0 +image = SubResource( 10 ) +size = Vector2( 64, 64 ) + +[sub_resource type="Image" id=11] +data = { +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 128, 46, 46, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 68, 68, 27, 255, 91, 91, 165, 255, 93, 93, 229, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 195, 191, 68, 68, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 69, 69, 26, 255, 93, 93, 236, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 210, 191, 68, 68, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 164, 255, 93, 93, 255, 255, 92, 92, 178, 255, 88, 88, 26, 128, 46, 46, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 191, 70, 70, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 209, 191, 68, 68, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 228, 255, 93, 93, 255, 255, 90, 90, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 209, 191, 69, 69, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 208, 191, 68, 68, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 208, 191, 68, 68, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 207, 191, 67, 67, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 206, 191, 68, 68, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 206, 191, 69, 69, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 205, 191, 68, 68, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 205, 191, 68, 68, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 204, 191, 68, 68, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 204, 191, 68, 68, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 203, 191, 68, 68, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 228, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 202, 191, 67, 67, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 165, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 202, 191, 67, 67, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 46, 46, 27, 255, 93, 93, 236, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 190, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 191, 68, 68, 27, 255, 91, 91, 165, 255, 93, 93, 229, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 128, 46, 46, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 191, 70, 70, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 0, 0, 0, 0, 128, 46, 46, 0, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 128, 46, 46, 0, 191, 68, 68, 7, 255, 92, 92, 151, 255, 92, 92, 151, 191, 68, 68, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 68, 68, 7, 255, 92, 92, 151, 255, 92, 92, 151, 191, 68, 68, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 255, 88, 88, 7, 255, 92, 92, 180, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 180, 191, 65, 65, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 65, 65, 7, 255, 92, 92, 180, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 180, 191, 65, 65, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 253, 255, 91, 91, 180, 255, 93, 93, 255, 255, 93, 93, 233, 255, 93, 93, 233, 255, 93, 93, 255, 255, 91, 91, 180, 191, 66, 66, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 66, 66, 7, 255, 91, 91, 180, 255, 93, 93, 255, 255, 93, 93, 233, 255, 93, 93, 233, 255, 93, 93, 255, 255, 91, 91, 180, 191, 66, 66, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 69, 69, 7, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 87, 87, 43, 255, 78, 78, 44, 255, 93, 93, 233, 255, 93, 93, 255, 255, 91, 91, 179, 191, 66, 66, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 66, 66, 7, 255, 91, 91, 179, 255, 93, 93, 255, 255, 93, 93, 233, 255, 78, 78, 44, 255, 78, 78, 44, 255, 93, 93, 233, 255, 93, 93, 255, 255, 91, 91, 179, 191, 66, 66, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 68, 68, 7, 255, 92, 92, 181, 255, 93, 93, 255, 255, 92, 92, 217, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 234, 255, 70, 70, 44, 64, 19, 19, 0, 64, 16, 16, 0, 255, 70, 70, 44, 255, 93, 93, 234, 255, 93, 93, 255, 255, 92, 92, 178, 191, 65, 65, 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, 0, 0, 0, 0, 0, 0, 0, 0, 191, 65, 65, 6, 255, 92, 92, 178, 255, 93, 93, 255, 255, 93, 93, 234, 255, 70, 70, 44, 64, 16, 16, 0, 64, 16, 16, 0, 255, 70, 70, 44, 255, 93, 93, 234, 255, 93, 93, 255, 255, 92, 92, 178, 191, 65, 65, 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, 0, 0, 0, 0, 0, 0, 0, 0, 191, 66, 66, 7, 255, 91, 91, 180, 255, 93, 93, 255, 255, 93, 93, 233, 255, 87, 87, 43, 64, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 93, 93, 219, 255, 93, 93, 232, 255, 71, 71, 45, 128, 37, 37, 0, 191, 69, 69, 9, 191, 68, 68, 8, 128, 37, 37, 0, 255, 71, 71, 45, 255, 93, 93, 234, 255, 93, 93, 255, 255, 91, 91, 177, 191, 64, 64, 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, 191, 64, 64, 6, 255, 91, 91, 178, 255, 93, 93, 255, 255, 93, 93, 234, 255, 71, 71, 45, 128, 37, 37, 0, 191, 69, 69, 8, 191, 69, 69, 8, 128, 37, 37, 0, 255, 71, 71, 45, 255, 93, 93, 234, 255, 93, 93, 255, 255, 91, 91, 177, 191, 64, 64, 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, 191, 66, 66, 7, 255, 91, 91, 179, 255, 93, 93, 255, 255, 93, 93, 234, 255, 70, 70, 44, 64, 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 69, 69, 11, 191, 68, 68, 11, 128, 26, 26, 0, 255, 87, 87, 43, 255, 93, 93, 230, 255, 93, 93, 230, 255, 87, 87, 42, 128, 25, 25, 0, 255, 61, 61, 45, 255, 93, 93, 234, 255, 93, 93, 255, 255, 91, 91, 176, 191, 66, 66, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 66, 66, 6, 255, 91, 91, 176, 255, 93, 93, 255, 255, 93, 93, 234, 255, 61, 61, 45, 128, 25, 25, 0, 255, 87, 87, 43, 255, 93, 93, 230, 255, 93, 93, 230, 255, 87, 87, 42, 128, 25, 25, 0, 255, 61, 61, 45, 255, 93, 93, 234, 255, 93, 93, 255, 255, 91, 91, 176, 191, 66, 66, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 64, 64, 6, 255, 91, 91, 178, 255, 93, 93, 255, 255, 93, 93, 234, 255, 71, 71, 45, 64, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 255, 23, 23, 42, 255, 93, 93, 232, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 232, 255, 23, 23, 42, 128, 13, 13, 0, 255, 61, 61, 46, 255, 93, 93, 235, 255, 93, 93, 255, 255, 92, 92, 176, 191, 69, 69, 6, 0, 0, 0, 0, 0, 0, 0, 0, 191, 69, 69, 6, 255, 92, 92, 176, 255, 93, 93, 255, 255, 93, 93, 235, 255, 61, 61, 46, 128, 13, 13, 0, 255, 23, 23, 42, 255, 93, 93, 232, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 232, 255, 23, 23, 42, 128, 13, 13, 0, 255, 61, 61, 46, 255, 93, 93, 235, 255, 93, 93, 255, 255, 92, 92, 176, 191, 69, 69, 6, 0, 0, 0, 0, 0, 0, 0, 0, 191, 64, 64, 6, 255, 91, 91, 178, 255, 93, 93, 255, 255, 93, 93, 234, 255, 66, 66, 45, 128, 37, 37, 0, 191, 68, 68, 10, 191, 69, 69, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 255, 23, 23, 41, 255, 93, 93, 232, 255, 93, 93, 255, 255, 92, 92, 182, 255, 92, 92, 182, 255, 93, 93, 255, 255, 93, 93, 232, 255, 23, 23, 41, 128, 13, 13, 0, 255, 74, 74, 47, 255, 93, 93, 235, 255, 93, 93, 255, 255, 92, 92, 175, 191, 68, 68, 6, 191, 68, 68, 6, 255, 92, 92, 175, 255, 93, 93, 255, 255, 93, 93, 235, 255, 74, 74, 47, 128, 13, 13, 0, 255, 23, 23, 41, 255, 93, 93, 232, 255, 93, 93, 255, 255, 92, 92, 182, 255, 92, 92, 182, 255, 93, 93, 255, 255, 93, 93, 232, 255, 23, 23, 41, 128, 13, 13, 0, 255, 74, 74, 47, 255, 93, 93, 235, 255, 93, 93, 255, 255, 92, 92, 175, 191, 68, 68, 6, 191, 65, 65, 6, 255, 91, 91, 177, 255, 93, 93, 255, 255, 93, 93, 235, 255, 61, 61, 46, 128, 23, 23, 0, 255, 87, 87, 43, 255, 93, 93, 231, 255, 92, 92, 219, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 255, 23, 23, 41, 255, 93, 93, 231, 255, 93, 93, 255, 255, 90, 90, 183, 191, 66, 66, 7, 191, 66, 66, 7, 255, 90, 90, 183, 255, 93, 93, 255, 255, 93, 93, 231, 255, 23, 23, 41, 128, 21, 21, 0, 255, 87, 87, 47, 255, 93, 93, 236, 255, 93, 93, 255, 255, 91, 91, 174, 255, 91, 91, 174, 255, 93, 93, 255, 255, 93, 93, 236, 255, 87, 87, 47, 128, 21, 21, 0, 255, 23, 23, 41, 255, 93, 93, 231, 255, 93, 93, 255, 255, 90, 90, 183, 191, 66, 66, 7, 191, 66, 66, 7, 255, 90, 90, 183, 255, 93, 93, 255, 255, 93, 93, 231, 255, 23, 23, 41, 128, 21, 21, 0, 255, 87, 87, 47, 255, 93, 93, 236, 255, 93, 93, 255, 255, 91, 91, 174, 255, 92, 92, 176, 255, 93, 93, 255, 255, 93, 93, 235, 255, 61, 61, 46, 128, 13, 13, 0, 255, 23, 23, 42, 255, 93, 93, 232, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 93, 93, 216, 255, 93, 93, 255, 255, 91, 91, 184, 191, 64, 64, 8, 0, 0, 0, 0, 0, 0, 0, 0, 191, 64, 64, 8, 255, 91, 91, 184, 255, 93, 93, 255, 255, 93, 93, 231, 255, 23, 23, 40, 128, 21, 21, 0, 255, 87, 87, 48, 255, 93, 93, 236, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 236, 255, 87, 87, 48, 128, 21, 21, 0, 255, 23, 23, 40, 255, 93, 93, 231, 255, 93, 93, 255, 255, 91, 91, 184, 191, 64, 64, 8, 0, 0, 0, 0, 0, 0, 0, 0, 191, 64, 64, 8, 255, 91, 91, 184, 255, 93, 93, 255, 255, 93, 93, 231, 255, 23, 23, 40, 128, 21, 21, 0, 255, 87, 87, 48, 255, 93, 93, 236, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 236, 255, 87, 87, 47, 128, 17, 17, 0, 255, 23, 23, 41, 255, 93, 93, 232, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 191, 65, 65, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 64, 64, 8, 255, 92, 92, 184, 255, 93, 93, 255, 255, 93, 93, 231, 255, 23, 23, 39, 128, 20, 20, 0, 255, 77, 77, 48, 255, 93, 93, 233, 255, 93, 93, 233, 255, 77, 77, 48, 128, 20, 20, 0, 255, 23, 23, 40, 255, 93, 93, 231, 255, 93, 93, 255, 255, 92, 92, 184, 191, 64, 64, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 64, 64, 8, 255, 92, 92, 184, 255, 93, 93, 255, 255, 93, 93, 231, 255, 23, 23, 39, 128, 20, 20, 0, 255, 77, 77, 48, 255, 93, 93, 233, 255, 93, 93, 233, 255, 87, 87, 48, 128, 21, 21, 0, 255, 23, 23, 41, 255, 93, 93, 231, 255, 93, 93, 255, 255, 92, 92, 182, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 66, 66, 8, 255, 92, 92, 185, 255, 93, 93, 255, 255, 93, 93, 230, 191, 69, 69, 39, 64, 18, 18, 0, 191, 66, 66, 9, 191, 66, 66, 9, 64, 18, 18, 0, 191, 69, 69, 39, 255, 93, 93, 230, 255, 93, 93, 255, 255, 92, 92, 185, 191, 66, 66, 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, 191, 66, 66, 8, 255, 92, 92, 185, 255, 93, 93, 255, 255, 93, 93, 230, 191, 69, 69, 39, 64, 18, 18, 0, 191, 66, 66, 9, 191, 66, 66, 9, 128, 21, 21, 0, 255, 23, 23, 40, 255, 93, 93, 231, 255, 93, 93, 255, 255, 90, 90, 183, 255, 89, 89, 7, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 69, 69, 8, 255, 92, 92, 186, 255, 93, 93, 255, 255, 93, 93, 230, 191, 68, 68, 38, 0, 0, 0, 0, 0, 0, 0, 0, 191, 68, 68, 38, 255, 93, 93, 230, 255, 93, 93, 255, 255, 92, 92, 186, 191, 69, 69, 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, 0, 0, 0, 0, 0, 0, 0, 0, 191, 69, 69, 8, 255, 92, 92, 186, 255, 93, 93, 255, 255, 93, 93, 230, 191, 68, 68, 38, 0, 0, 0, 0, 64, 0, 0, 0, 255, 23, 23, 40, 255, 93, 93, 231, 255, 93, 93, 255, 255, 91, 91, 184, 191, 64, 64, 8, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 67, 67, 9, 255, 91, 91, 186, 255, 93, 93, 255, 255, 93, 93, 229, 191, 68, 68, 38, 191, 69, 69, 38, 255, 93, 93, 229, 255, 93, 93, 255, 255, 91, 91, 186, 191, 67, 67, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 67, 67, 9, 255, 91, 91, 186, 255, 93, 93, 255, 255, 93, 93, 229, 191, 68, 68, 38, 191, 69, 69, 39, 255, 93, 93, 230, 255, 93, 93, 255, 255, 92, 92, 184, 191, 64, 64, 8, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 68, 68, 9, 255, 92, 92, 187, 255, 93, 93, 255, 255, 93, 93, 229, 255, 93, 93, 229, 255, 93, 93, 255, 255, 92, 92, 187, 191, 68, 68, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 68, 68, 9, 255, 92, 92, 187, 255, 93, 93, 255, 255, 93, 93, 229, 255, 93, 93, 230, 255, 93, 93, 255, 255, 92, 92, 185, 191, 66, 66, 8, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 69, 69, 9, 255, 92, 92, 188, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 188, 191, 69, 69, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 69, 69, 9, 255, 92, 92, 188, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 186, 191, 69, 69, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 66, 66, 10, 255, 92, 92, 154, 255, 92, 92, 154, 191, 66, 66, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 66, 66, 10, 255, 92, 92, 154, 255, 92, 92, 153, 191, 68, 68, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 228, 255, 93, 93, 255, 255, 90, 90, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 90, 90, 26, 255, 93, 93, 255, 255, 92, 92, 228, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 165, 255, 93, 93, 255, 255, 92, 92, 178, 255, 88, 88, 26, 128, 46, 46, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 46, 46, 0, 255, 88, 88, 26, 255, 92, 92, 178, 255, 93, 93, 255, 255, 92, 92, 165, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 46, 46, 27, 255, 93, 93, 236, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 236, 255, 46, 46, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 191, 68, 68, 27, 255, 91, 91, 165, 255, 93, 93, 229, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 229, 255, 91, 91, 165, 191, 68, 68, 27, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 128, 46, 46, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 46, 46, 0, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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": 64, +"mipmaps": false, +"width": 64 +} + +[sub_resource type="ImageTexture" id=4] +flags = 0 +flags = 0 +image = SubResource( 11 ) +size = Vector2( 64, 64 ) + +[sub_resource type="Image" id=12] +data = { +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 128, 46, 46, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 68, 68, 27, 255, 91, 91, 165, 255, 93, 93, 229, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 195, 191, 68, 68, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 69, 69, 26, 255, 93, 93, 236, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 210, 191, 69, 69, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 164, 255, 93, 93, 255, 255, 90, 90, 179, 255, 87, 87, 26, 128, 46, 46, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 191, 70, 70, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 209, 191, 68, 68, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 228, 255, 93, 93, 255, 255, 89, 89, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 209, 191, 69, 69, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 208, 191, 68, 68, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 208, 191, 68, 68, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 207, 191, 68, 68, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 206, 191, 68, 68, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 206, 191, 69, 69, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 205, 191, 68, 68, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 205, 191, 68, 68, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 204, 191, 68, 68, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 203, 191, 68, 68, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 203, 191, 68, 68, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 228, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 202, 191, 67, 67, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 165, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 202, 191, 67, 67, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 46, 46, 27, 255, 93, 93, 236, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 189, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 191, 68, 68, 27, 255, 91, 91, 165, 255, 93, 93, 229, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 128, 46, 46, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 191, 70, 70, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 255, 92, 92, 184, 255, 92, 92, 200, 191, 67, 67, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 68, 68, 15, 255, 92, 92, 191, 255, 91, 91, 183, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 255, 92, 92, 184, 255, 92, 92, 200, 191, 67, 67, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 68, 68, 15, 255, 92, 92, 191, 255, 91, 91, 183, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 197, 255, 93, 93, 255, 255, 92, 92, 188, 191, 66, 66, 6, 0, 0, 0, 0, 191, 66, 66, 6, 255, 92, 92, 188, 255, 93, 93, 255, 255, 92, 92, 197, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 197, 255, 93, 93, 255, 255, 92, 92, 188, 191, 66, 66, 6, 0, 0, 0, 0, 191, 66, 66, 6, 255, 92, 92, 188, 255, 93, 93, 255, 255, 92, 92, 197, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 69, 69, 30, 255, 93, 93, 229, 255, 93, 93, 255, 255, 91, 91, 161, 255, 85, 85, 2, 255, 91, 91, 161, 255, 93, 93, 255, 255, 93, 93, 229, 191, 69, 69, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 69, 69, 30, 255, 93, 93, 229, 255, 93, 93, 255, 255, 91, 91, 161, 255, 85, 85, 2, 255, 91, 91, 161, 255, 93, 93, 255, 255, 93, 93, 229, 191, 69, 69, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 21, 21, 0, 255, 89, 89, 48, 255, 93, 93, 242, 255, 93, 93, 255, 255, 92, 92, 201, 255, 93, 93, 255, 255, 93, 93, 242, 255, 89, 89, 48, 64, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 21, 21, 0, 255, 89, 89, 48, 255, 93, 93, 242, 255, 93, 93, 255, 255, 92, 92, 201, 255, 93, 93, 255, 255, 93, 93, 242, 255, 89, 89, 48, 64, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 23, 23, 0, 255, 90, 90, 72, 255, 93, 93, 251, 255, 93, 93, 255, 255, 93, 93, 251, 255, 90, 90, 72, 64, 23, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 23, 23, 0, 255, 90, 90, 72, 255, 93, 93, 251, 255, 93, 93, 255, 255, 93, 93, 251, 255, 90, 90, 72, 64, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 22, 22, 0, 255, 90, 90, 71, 255, 93, 93, 250, 255, 93, 93, 255, 255, 93, 93, 250, 255, 90, 90, 71, 64, 22, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 22, 22, 0, 255, 90, 90, 71, 255, 93, 93, 250, 255, 93, 93, 255, 255, 93, 93, 250, 255, 90, 90, 71, 64, 22, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 21, 21, 0, 255, 87, 87, 47, 255, 93, 93, 242, 255, 93, 93, 255, 255, 92, 92, 203, 255, 93, 93, 255, 255, 93, 93, 242, 255, 87, 87, 47, 64, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 21, 21, 0, 255, 87, 87, 47, 255, 93, 93, 242, 255, 93, 93, 255, 255, 92, 92, 203, 255, 93, 93, 255, 255, 93, 93, 242, 255, 87, 87, 47, 64, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 68, 68, 29, 255, 93, 93, 228, 255, 93, 93, 255, 255, 92, 92, 162, 255, 87, 87, 2, 255, 92, 92, 162, 255, 93, 93, 255, 255, 93, 93, 228, 191, 68, 68, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 68, 68, 29, 255, 93, 93, 228, 255, 93, 93, 255, 255, 92, 92, 162, 255, 87, 87, 2, 255, 92, 92, 162, 255, 93, 93, 255, 255, 93, 93, 228, 191, 68, 68, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 196, 255, 93, 93, 255, 255, 91, 91, 189, 191, 67, 67, 6, 0, 0, 0, 0, 191, 66, 66, 6, 255, 91, 91, 189, 255, 93, 93, 255, 255, 92, 92, 196, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 196, 255, 93, 93, 255, 255, 91, 91, 189, 191, 67, 67, 6, 0, 0, 0, 0, 191, 66, 66, 6, 255, 91, 91, 189, 255, 93, 93, 255, 255, 92, 92, 196, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 255, 92, 92, 180, 255, 92, 92, 194, 191, 67, 67, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 67, 67, 16, 255, 92, 92, 194, 255, 92, 92, 180, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 255, 92, 92, 180, 255, 92, 92, 194, 191, 67, 67, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 67, 67, 16, 255, 92, 92, 194, 255, 92, 92, 180, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 255, 92, 92, 179, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 179, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 255, 91, 91, 179, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 91, 91, 179, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 128, 47, 47, 0, 128, 47, 47, 0, 191, 70, 70, 0, 255, 93, 93, 255, 255, 93, 93, 255, 191, 70, 70, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 191, 70, 70, 0, 255, 93, 93, 255, 255, 93, 93, 255, 191, 70, 70, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 93, 93, 241, 255, 93, 93, 255, 255, 90, 90, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 90, 90, 23, 255, 93, 93, 255, 255, 93, 93, 241, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 189, 255, 93, 93, 255, 255, 92, 92, 115, 64, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 23, 23, 0, 255, 92, 92, 115, 255, 93, 93, 255, 255, 92, 92, 189, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 21, 21, 0, 255, 89, 89, 60, 255, 93, 93, 253, 255, 93, 93, 248, 255, 91, 91, 115, 255, 91, 91, 25, 255, 91, 91, 25, 255, 91, 91, 115, 255, 93, 93, 248, 255, 93, 93, 253, 255, 89, 89, 60, 64, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 23, 23, 0, 255, 92, 92, 120, 255, 93, 93, 253, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 253, 255, 92, 92, 120, 64, 23, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 23, 23, 0, 255, 57, 57, 60, 255, 92, 92, 190, 255, 93, 93, 242, 255, 93, 93, 242, 255, 92, 92, 190, 255, 57, 57, 60, 64, 23, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 128, 46, 46, 0, 128, 46, 46, 0, 128, 46, 46, 0, 128, 46, 46, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 47, 47, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 93, 93, 255, 255, 93, 93, 255, 128, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 228, 255, 93, 93, 255, 255, 90, 90, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 91, 91, 27, 255, 93, 93, 255, 255, 92, 92, 228, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 46, 46, 0, 255, 92, 92, 165, 255, 93, 93, 255, 255, 92, 92, 178, 255, 88, 88, 26, 128, 46, 46, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 46, 46, 0, 255, 91, 91, 26, 255, 92, 92, 178, 255, 93, 93, 255, 255, 92, 92, 165, 128, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 46, 46, 27, 255, 93, 93, 236, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 236, 255, 46, 46, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 191, 68, 68, 27, 255, 91, 91, 165, 255, 93, 93, 229, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 229, 255, 91, 91, 165, 191, 68, 68, 27, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 45, 45, 0, 128, 46, 46, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 47, 47, 0, 128, 46, 46, 0, 128, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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": 64, +"mipmaps": false, +"width": 64 +} + +[sub_resource type="ImageTexture" id=6] +flags = 0 +flags = 0 +image = SubResource( 12 ) +size = Vector2( 64, 64 ) + +[sub_resource type="Image" id=13] +data = { +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 111, 111, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 98, 98, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 166, 166, 28, 222, 222, 222, 166, 224, 224, 224, 229, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 238, 210, 210, 210, 137, 150, 150, 150, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 111, 111, 28, 224, 224, 224, 236, 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, 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, 220, 220, 220, 145, 108, 108, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 110, 110, 0, 222, 222, 222, 165, 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, 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, 251, 220, 220, 220, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 111, 111, 0, 223, 223, 223, 228, 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, 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, 223, 223, 223, 181, 111, 111, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 222, 222, 222, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 223, 223, 223, 189, 111, 111, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 222, 222, 222, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 223, 223, 223, 189, 167, 167, 167, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 111, 111, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 229, 222, 222, 222, 166, 166, 166, 166, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 236, 111, 111, 111, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 222, 222, 222, 165, 110, 110, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 223, 223, 223, 228, 111, 111, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 223, 223, 223, 228, 111, 111, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 111, 111, 0, 223, 223, 223, 164, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 222, 222, 222, 165, 110, 110, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 111, 111, 35, 224, 224, 224, 233, 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, 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, 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, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 236, 111, 111, 111, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26, 0, 212, 212, 212, 35, 222, 222, 222, 167, 224, 224, 224, 234, 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, 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, 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, 229, 222, 222, 222, 166, 166, 166, 166, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 110, 110, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 112, 112, 112, 0, 111, 111, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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": 64, +"mipmaps": false, +"width": 64 +} + +[sub_resource type="ImageTexture" id=8] +flags = 0 +flags = 0 +image = SubResource( 13 ) +size = Vector2( 64, 64 ) + +[sub_resource type="StyleBoxTexture" id=9] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 25, 3 ) +margin_right = 10.0 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color( 0.890196, 0.976471, 0.992157, 1 ) + +[resource] +default_font = ExtResource( 6 ) +Button/colors/font_color = Color( 1, 1, 1, 1 ) +Button/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) +Button/colors/font_color_hover = Color( 0.941176, 0.941176, 0.941176, 1 ) +Button/colors/font_color_pressed = Color( 1, 1, 1, 1 ) +Button/constants/hseparation = 0 +Button/fonts/font = ExtResource( 6 ) +Button/styles/disabled = ExtResource( 2 ) +Button/styles/focus = ExtResource( 3 ) +Button/styles/hover = ExtResource( 5 ) +Button/styles/normal = ExtResource( 4 ) +Button/styles/pressed = ExtResource( 7 ) +CheckBox/colors/font_color = Color( 0.878431, 0.878431, 0.878431, 1 ) +CheckBox/colors/font_color_disabled = Color( 0.901961, 0.901961, 0.901961, 0.2 ) +CheckBox/colors/font_color_hover = Color( 0.941176, 0.941176, 0.941176, 1 ) +CheckBox/colors/font_color_hover_pressed = Color( 1, 1, 1, 1 ) +CheckBox/colors/font_color_pressed = Color( 1, 1, 1, 1 ) +CheckBox/constants/check_vadjust = 0 +CheckBox/constants/hseparation = 4 +CheckBox/fonts/font = ExtResource( 6 ) +CheckBox/icons/checked = ExtResource( 19 ) +CheckBox/icons/radio_checked = ExtResource( 17 ) +CheckBox/icons/radio_unchecked = ExtResource( 16 ) +CheckBox/icons/unchecked = ExtResource( 18 ) +CheckBox/styles/disabled = ExtResource( 4 ) +CheckBox/styles/focus = ExtResource( 3 ) +CheckBox/styles/hover = null +CheckBox/styles/hover_pressed = null +CheckBox/styles/normal = ExtResource( 4 ) +CheckBox/styles/pressed = ExtResource( 4 ) +CheckButton/colors/font_color = Color( 0.878431, 0.878431, 0.878431, 1 ) +CheckButton/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) +CheckButton/colors/font_color_hover = Color( 0.941176, 0.941176, 0.941176, 1 ) +CheckButton/colors/font_color_hover_pressed = Color( 1, 1, 1, 1 ) +CheckButton/colors/font_color_pressed = Color( 1, 1, 1, 1 ) +CheckButton/constants/check_vadjust = 0 +CheckButton/constants/hseparation = 4 +CheckButton/fonts/font = ExtResource( 6 ) +CheckButton/icons/off = ExtResource( 18 ) +CheckButton/icons/on = ExtResource( 19 ) +CheckButton/styles/disabled = ExtResource( 2 ) +CheckButton/styles/focus = ExtResource( 3 ) +CheckButton/styles/hover = ExtResource( 5 ) +CheckButton/styles/hover_pressed = ExtResource( 5 ) +CheckButton/styles/normal = ExtResource( 4 ) +CheckButton/styles/pressed = ExtResource( 7 ) +Dialogs/constants/button_margin = 64 +Dialogs/constants/margin = 16 +EditorIcons/icons/FileBigThumb = SubResource( 2 ) +EditorIcons/icons/FileBrokenBigThumb = SubResource( 4 ) +EditorIcons/icons/FileDeadBigThumb = SubResource( 6 ) +EditorIcons/icons/FolderBigThumb = SubResource( 8 ) +GridContainer/colors/PanelContainer = Color( 1, 1, 1, 1 ) +HScrollBar/icons/decrement = null +HScrollBar/icons/decrement_highlight = null +HScrollBar/icons/increment = null +HScrollBar/icons/increment_highlight = null +HScrollBar/styles/GridContainer = SubResource( 9 ) +HScrollBar/styles/grabber = ExtResource( 12 ) +HScrollBar/styles/grabber_highlight = ExtResource( 10 ) +HScrollBar/styles/grabber_pressed = ExtResource( 13 ) +HScrollBar/styles/scroll = ExtResource( 11 ) +HScrollBar/styles/scroll_focus = null +ItemList/colors/font_color = Color( 0.63, 0.63, 0.63, 1 ) +ItemList/colors/font_color_selected = Color( 1, 1, 1, 1 ) +ItemList/colors/guide_color = Color( 0, 0, 0, 0.1 ) +ItemList/constants/hseparation = 4 +ItemList/constants/icon_margin = 4 +ItemList/constants/line_separation = 4 +ItemList/constants/vseparation = 2 +ItemList/fonts/font = ExtResource( 6 ) +ItemList/styles/bg = ExtResource( 8 ) +ItemList/styles/bg_focus = ExtResource( 14 ) +ItemList/styles/cursor = null +ItemList/styles/cursor_unfocused = null +ItemList/styles/selected = null +ItemList/styles/selected_focus = null +LineEdit/colors/clear_button_color = Color( 0.878431, 0.878431, 0.878431, 1 ) +LineEdit/colors/clear_button_color_pressed = Color( 1, 1, 1, 1 ) +LineEdit/colors/cursor_color = Color( 0.941176, 0.941176, 0.941176, 1 ) +LineEdit/colors/font_color = Color( 0.878431, 0.878431, 0.878431, 1 ) +LineEdit/colors/font_color_selected = Color( 0, 0, 0, 1 ) +LineEdit/colors/selection_color = Color( 0.490196, 0.490196, 0.490196, 1 ) +LineEdit/constants/minimum_spaces = 24 +LineEdit/fonts/font = ExtResource( 6 ) +LineEdit/icons/clear = null +LineEdit/styles/focus = ExtResource( 3 ) +LineEdit/styles/normal = ExtResource( 9 ) +LineEdit/styles/read_only = ExtResource( 2 ) +OptionButton/colors/font_color = Color( 0.88, 0.88, 0.88, 1 ) +OptionButton/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) +OptionButton/colors/font_color_hover = Color( 0.94, 0.94, 0.94, 1 ) +OptionButton/colors/font_color_pressed = Color( 1, 1, 1, 1 ) +OptionButton/constants/arrow_margin = 4 +OptionButton/constants/hseparation = 4 +OptionButton/fonts/font = ExtResource( 6 ) +OptionButton/icons/arrow = ExtResource( 20 ) +OptionButton/styles/disabled = ExtResource( 2 ) +OptionButton/styles/focus = ExtResource( 3 ) +OptionButton/styles/hover = ExtResource( 5 ) +OptionButton/styles/normal = ExtResource( 4 ) +OptionButton/styles/pressed = ExtResource( 7 ) +Panel/styles/panel = ExtResource( 8 ) +PanelContainer/styles/panel = ExtResource( 8 ) +PopupMenu/colors/font_color = Color( 0.88, 0.88, 0.88, 1 ) +PopupMenu/colors/font_color_accel = Color( 0.7, 0.7, 0.7, 0.8 ) +PopupMenu/colors/font_color_disabled = Color( 0.4, 0.4, 0.4, 0.8 ) +PopupMenu/colors/font_color_hover = Color( 0.88, 0.88, 0.88, 1 ) +PopupMenu/constants/hseparation = 8 +PopupMenu/constants/vseparation = 8 +PopupMenu/fonts/font = ExtResource( 6 ) +PopupMenu/icons/checked = null +PopupMenu/icons/radio_checked = ExtResource( 17 ) +PopupMenu/icons/radio_unchecked = ExtResource( 16 ) +PopupMenu/icons/submenu = null +PopupMenu/icons/unchecked = null +PopupMenu/styles/hover = ExtResource( 5 ) +PopupMenu/styles/labeled_separator_left = null +PopupMenu/styles/labeled_separator_right = null +PopupMenu/styles/panel = ExtResource( 8 ) +PopupMenu/styles/panel_disabled = ExtResource( 2 ) +PopupMenu/styles/separator = ExtResource( 15 ) +PopupPanel/styles/panel = ExtResource( 8 ) +ProgressBar/colors/font_color = Color( 0.941176, 0.941176, 0.941176, 1 ) +ProgressBar/colors/font_color_shadow = Color( 0, 0, 0, 1 ) +ProgressBar/fonts/font = ExtResource( 6 ) +ProgressBar/styles/bg = ExtResource( 11 ) +ProgressBar/styles/fg = ExtResource( 12 ) +TabContainer/colors/font_color_bg = Color( 0.69, 0.69, 0.69, 1 ) +TabContainer/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) +TabContainer/colors/font_color_fg = Color( 0.94, 0.94, 0.94, 1 ) +TabContainer/constants/hseparation = 8 +TabContainer/constants/label_valign_bg = 4 +TabContainer/constants/label_valign_fg = 0 +TabContainer/constants/side_margin = 16 +TabContainer/constants/top_margin = 48 +TabContainer/fonts/font = ExtResource( 6 ) +TabContainer/icons/decrement = null +TabContainer/icons/decrement_highlight = null +TabContainer/icons/increment = null +TabContainer/icons/increment_highlight = null +TabContainer/icons/menu = null +TabContainer/icons/menu_highlight = null +TabContainer/styles/panel = ExtResource( 8 ) +TabContainer/styles/tab_bg = ExtResource( 23 ) +TabContainer/styles/tab_disabled = ExtResource( 22 ) +TabContainer/styles/tab_fg = ExtResource( 21 ) +Tabs/colors/font_color_bg = Color( 0.69, 0.69, 0.69, 1 ) +Tabs/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) +Tabs/colors/font_color_fg = Color( 0.94, 0.94, 0.94, 1 ) +Tabs/constants/hseparation = 8 +Tabs/constants/label_valign_bg = 4 +Tabs/constants/label_valign_fg = 0 +Tabs/constants/top_margin = 48 +Tabs/fonts/font = ExtResource( 6 ) +Tabs/icons/close = null +Tabs/icons/decrement = null +Tabs/icons/decrement_highlight = null +Tabs/icons/increment = null +Tabs/icons/increment_highlight = null +Tabs/styles/button = ExtResource( 4 ) +Tabs/styles/button_pressed = ExtResource( 7 ) +Tabs/styles/panel = ExtResource( 8 ) +Tabs/styles/tab_bg = ExtResource( 4 ) +Tabs/styles/tab_disabled = ExtResource( 2 ) +Tabs/styles/tab_fg = ExtResource( 8 ) +TextEdit/colors/background_color = Color( 0, 0, 0, 1 ) +TextEdit/colors/bookmark_color = Color( 0.08, 0.49, 0.98, 1 ) +TextEdit/colors/brace_mismatch_color = Color( 1, 0.2, 0.2, 1 ) +TextEdit/colors/breakpoint_color = Color( 0.8, 0.8, 0.4, 0.2 ) +TextEdit/colors/caret_background_color = Color( 0, 0, 0, 1 ) +TextEdit/colors/caret_color = Color( 0.88, 0.88, 0.88, 1 ) +TextEdit/colors/code_folding_color = Color( 0.8, 0.8, 0.8, 0.8 ) +TextEdit/colors/completion_background_color = Color( 0.17, 0.16, 0.2, 1 ) +TextEdit/colors/completion_existing_color = Color( 0.87, 0.87, 0.87, 0.13 ) +TextEdit/colors/completion_font_color = Color( 0.67, 0.67, 0.67, 1 ) +TextEdit/colors/completion_scroll_color = Color( 1, 1, 1, 1 ) +TextEdit/colors/completion_selected_color = Color( 0.26, 0.26, 0.27, 1 ) +TextEdit/colors/current_line_color = Color( 0.25, 0.25, 0.26, 0.8 ) +TextEdit/colors/executing_line_color = Color( 0.2, 0.8, 0.2, 0.4 ) +TextEdit/colors/font_color = Color( 0.88, 0.88, 0.88, 1 ) +TextEdit/colors/font_color_readonly = Color( 0.88, 0.88, 0.88, 0.5 ) +TextEdit/colors/font_color_selected = Color( 0, 0, 0, 1 ) +TextEdit/colors/function_color = Color( 0.4, 0.64, 0.81, 1 ) +TextEdit/colors/line_number_color = Color( 0.67, 0.67, 0.67, 0.4 ) +TextEdit/colors/mark_color = Color( 1, 0.4, 0.4, 0.4 ) +TextEdit/colors/member_variable_color = Color( 0.9, 0.31, 0.35, 1 ) +TextEdit/colors/number_color = Color( 0.92, 0.58, 0.2, 1 ) +TextEdit/colors/safe_line_number_color = Color( 0.67, 0.78, 0.67, 0.6 ) +TextEdit/colors/selection_color = Color( 0.49, 0.49, 0.49, 1 ) +TextEdit/colors/symbol_color = Color( 0.94, 0.94, 0.94, 1 ) +TextEdit/colors/word_highlighted_color = Color( 0.8, 0.9, 0.9, 0.15 ) +TextEdit/constants/completion_lines = 7 +TextEdit/constants/completion_max_width = 50 +TextEdit/constants/completion_scroll_width = 3 +TextEdit/constants/line_spacing = 8 +TextEdit/fonts/font = ExtResource( 6 ) +TextEdit/icons/fold = null +TextEdit/icons/folded = null +TextEdit/icons/space = null +TextEdit/icons/tab = null +TextEdit/styles/completion = ExtResource( 3 ) +TextEdit/styles/focus = ExtResource( 3 ) +TextEdit/styles/normal = ExtResource( 8 ) +TextEdit/styles/read_only = ExtResource( 2 ) +ToolButton/colors/font_color = Color( 0.88, 0.88, 0.88, 1 ) +ToolButton/colors/font_color_disabled = Color( 0.9, 0.95, 1, 0.3 ) +ToolButton/colors/font_color_hover = Color( 0.94, 0.94, 0.94, 1 ) +ToolButton/colors/font_color_pressed = Color( 1, 1, 1, 1 ) +ToolButton/constants/hseparation = 3 +ToolButton/fonts/font = ExtResource( 6 ) +ToolButton/styles/disabled = ExtResource( 2 ) +ToolButton/styles/focus = ExtResource( 3 ) +ToolButton/styles/hover = ExtResource( 5 ) +ToolButton/styles/normal = ExtResource( 4 ) +ToolButton/styles/pressed = ExtResource( 7 ) +TooltipLabel/colors/font_color = Color( 1, 1, 1, 1 ) +TooltipLabel/colors/font_color_shadow = Color( 0, 0, 0, 0.1 ) +TooltipLabel/constants/shadow_offset_x = 1 +TooltipLabel/constants/shadow_offset_y = 1 +TooltipLabel/fonts/font = ExtResource( 6 ) +TooltipPanel/styles/panel = ExtResource( 8 ) +Tree/colors/cursor_color = Color( 0, 0, 0, 1 ) +Tree/colors/custom_button_font_highlight = Color( 0.94, 0.94, 0.94, 1 ) +Tree/colors/drop_position_color = Color( 1, 0.3, 0.2, 1 ) +Tree/colors/font_color = Color( 0.69, 0.69, 0.69, 1 ) +Tree/colors/font_color_selected = Color( 1, 1, 1, 1 ) +Tree/colors/guide_color = Color( 0, 0, 0, 0.1 ) +Tree/colors/relationship_line_color = Color( 0.27, 0.27, 0.27, 1 ) +Tree/colors/selection_color = Color( 0.1, 0.1, 1, 0.8 ) +Tree/colors/title_button_color = Color( 0.88, 0.88, 0.88, 1 ) +Tree/constants/button_margin = 8 +Tree/constants/draw_guides = 1 +Tree/constants/draw_relationship_lines = 0 +Tree/constants/hseparation = 8 +Tree/constants/item_margin = 24 +Tree/constants/scroll_border = 4 +Tree/constants/scroll_speed = 12 +Tree/constants/vseparation = 8 +Tree/fonts/font = ExtResource( 6 ) +Tree/fonts/title_button_font = ExtResource( 6 ) +Tree/icons/arrow = null +Tree/icons/arrow_collapsed = null +Tree/icons/checked = null +Tree/icons/select_arrow = null +Tree/icons/unchecked = null +Tree/icons/updown = null +Tree/styles/bg = ExtResource( 8 ) +Tree/styles/bg_focus = null +Tree/styles/button_pressed = null +Tree/styles/cursor = null +Tree/styles/cursor_unfocused = null +Tree/styles/custom_button = null +Tree/styles/custom_button_hover = null +Tree/styles/custom_button_pressed = null +Tree/styles/selected = null +Tree/styles/selected_focus = null +Tree/styles/title_button_hover = null +Tree/styles/title_button_normal = null +Tree/styles/title_button_pressed = null +VBoxContainer/constants/separation = 8 +VScrollBar/icons/decrement = null +VScrollBar/icons/decrement_highlight = null +VScrollBar/icons/increment = null +VScrollBar/icons/increment_highlight = null +VScrollBar/styles/grabber = ExtResource( 12 ) +VScrollBar/styles/grabber_highlight = ExtResource( 10 ) +VScrollBar/styles/grabber_pressed = ExtResource( 13 ) +VScrollBar/styles/scroll = ExtResource( 11 ) +VScrollBar/styles/scroll_focus = ExtResource( 14 ) +WindowDialog/colors/title_color = Color( 0, 0, 0, 1 ) +WindowDialog/constants/close_h_ofs = 36 +WindowDialog/constants/close_v_ofs = 36 +WindowDialog/constants/scaleborder_size = 8 +WindowDialog/constants/title_height = 40 +WindowDialog/fonts/title_font = ExtResource( 6 ) +WindowDialog/icons/close = null +WindowDialog/icons/close_highlight = null +WindowDialog/styles/panel = ExtResource( 8 ) +script = ExtResource( 24 ) +content_margin_vertical_normal = 6.0 +content_margin_vertical_touch = 10.0 +content_margin_horizontal_normal = 5.0 +content_margin_horizontal_touch = 20.0 diff --git a/game/ui/theme/unlocked_icon.tres b/game/ui/theme/unlocked_icon.tres new file mode 100644 index 0000000..f89a110 --- /dev/null +++ b/game/ui/theme/unlocked_icon.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 50, 108, 20, 20 ) diff --git a/game/ui/theme/window_bg_atlas.tres b/game/ui/theme/window_bg_atlas.tres new file mode 100644 index 0000000..9b0e3ef --- /dev/null +++ b/game/ui/theme/window_bg_atlas.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 31, 49, 10, 11 ) diff --git a/game/ui/theme/window_bg_bg.tres b/game/ui/theme/window_bg_bg.tres new file mode 100644 index 0000000..9b0e3ef --- /dev/null +++ b/game/ui/theme/window_bg_bg.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=2] + +[ext_resource path="res://ui/theme/GameUI.png" type="Texture" id=1] + +[resource] +atlas = ExtResource( 1 ) +region = Rect2( 31, 49, 10, 11 ) diff --git a/game/ui/touch_movement_controls/TouchMovementControls.tscn b/game/ui/touch_movement_controls/TouchMovementControls.tscn new file mode 100644 index 0000000..6a59c42 --- /dev/null +++ b/game/ui/touch_movement_controls/TouchMovementControls.tscn @@ -0,0 +1,92 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://ui/touch_pad/analog.tscn" type="PackedScene" id=1] +[ext_resource path="res://ui/touch_pad/TurnPanel.gd" type="Script" id=2] +[ext_resource path="res://ui/touch_pad/analog.gd" type="Script" id=3] + +[node name="TouchMovementControls" type="MarginContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +custom_constants/margin_top = 200 +__meta__ = { +"_edit_group_": true, +"_edit_use_anchors_": false +} + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +margin_top = 200.0 +margin_right = 1024.0 +margin_bottom = 600.0 +mouse_filter = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 + +[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer"] +margin_right = 323.0 +margin_bottom = 400.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 1.4 + +[node name="Control" type="Control" parent="HBoxContainer/VBoxContainer"] +margin_right = 323.0 +margin_bottom = 196.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="TouchPad" type="Control" parent="HBoxContainer/VBoxContainer"] +margin_top = 204.0 +margin_right = 323.0 +margin_bottom = 400.0 +mouse_filter = 2 +size_flags_horizontal = 15 +size_flags_vertical = 15 + +[node name="Analog" type="Node2D" parent="HBoxContainer/VBoxContainer/TouchPad" instance=ExtResource( 1 )] +position = Vector2( 107.368, 94.2101 ) +script = ExtResource( 3 ) +__meta__ = { +"__editor_plugin_screen__": "2D" +} +isDynamicallyShowing = true +padname = "TouchPad" + +[node name="Control" type="Control" parent="HBoxContainer"] +margin_left = 327.0 +margin_right = 558.0 +margin_bottom = 400.0 +mouse_filter = 2 +size_flags_horizontal = 15 +size_flags_vertical = 15 + +[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer"] +margin_left = 562.0 +margin_right = 1024.0 +margin_bottom = 400.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 2.0 + +[node name="Control" type="Control" parent="HBoxContainer/VBoxContainer2"] +margin_right = 462.0 +margin_bottom = 150.0 +mouse_filter = 2 +size_flags_vertical = 3 + +[node name="TurnPanel" type="Control" parent="HBoxContainer/VBoxContainer2"] +margin_top = 158.0 +margin_right = 462.0 +margin_bottom = 400.0 +mouse_filter = 2 +size_flags_horizontal = 15 +size_flags_vertical = 15 +size_flags_stretch_ratio = 1.6 + +[node name="Node2D" type="Node2D" parent="HBoxContainer/VBoxContainer2/TurnPanel"] +position = Vector2( -600, -200 ) +script = ExtResource( 2 ) +listenerNodePath = "../../../../../../.." diff --git a/game/ui/touch_movement_controls/game_module.tres b/game/ui/touch_movement_controls/game_module.tres new file mode 100644 index 0000000..d6fe9a7 --- /dev/null +++ b/game/ui/touch_movement_controls/game_module.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" load_steps=3 format=2] + +[ext_resource path="res://scripts/game_modules/ui_gui_child_module.gd" type="Script" id=1] +[ext_resource path="res://ui/touch_movement_controls/TouchMovementControls.tscn" type="PackedScene" id=2] + +[resource] +script = ExtResource( 1 ) +enabled = true +scene = ExtResource( 2 ) +hide = false diff --git a/game/ui/touch_pad/TurnPanel.gd b/game/ui/touch_pad/TurnPanel.gd new file mode 100644 index 0000000..fa85b65 --- /dev/null +++ b/game/ui/touch_pad/TurnPanel.gd @@ -0,0 +1,115 @@ +extends Node2D + +const INACTIVE_IDX = -1; + +export (String) var listenerNodePath : String = "../../../../../.." +export (String) var padname : String = "" + +var parent : Control + +var centerPoint = Vector2(0,0) +var currentForce = Vector2(0,0) +var last_pointer_position : Vector2 = Vector2() + +var currentPointerIDX = INACTIVE_IDX; + +var listener : Node = null + +func _ready(): + parent = get_node("..") + listener = get_node(listenerNodePath) + + if listener != null: + if not listener.has_method("queue_camera_rotation"): + listener = null + + set_process_input(true) + +func get_force(): + return currentForce + +func _input(event): + var incomingPointer = extractPointerIdx(event) + + if incomingPointer == INACTIVE_IDX: + return + + if need2ChangeActivePointer(event): + if (currentPointerIDX != incomingPointer) and event.is_pressed(): + currentPointerIDX = incomingPointer; + last_pointer_position = Vector2(event.position.x - parent.get_global_rect().position.x, event.position.y - parent.get_global_rect().position.y); + + get_tree().set_input_as_handled() + + var theSamePointer = currentPointerIDX == incomingPointer + if isActive() and theSamePointer: + process_input(event) + +func need2ChangeActivePointer(event): #touch down inside analog + if event is InputEventMouseButton or event is InputEventScreenTouch: + return parent.get_global_rect().has_point(Vector2(event.position.x, event.position.y)) + else: + return false + +func isActive(): + return currentPointerIDX != INACTIVE_IDX + +func extractPointerIdx(event): + var touch = event is InputEventScreenTouch + var drag = event is InputEventScreenDrag + var mouseButton = event is InputEventMouseButton + var mouseMove = event is InputEventMouseMotion + + #print(event) + if touch: + return event.index + + elif drag: + + + return event.index + elif mouseButton or mouseMove: + #plog("SOMETHING IS VERYWRONG??, I HAVE MOUSE ON TOUCH DEVICE") + return INACTIVE_IDX + else: + return INACTIVE_IDX + +func process_input(event): + calculateForce(event.position.x - parent.get_global_rect().position.x, event.position.y - parent.get_global_rect().position.y) + + var isReleased = isReleased(event) + if isReleased: + reset() + + get_tree().set_input_as_handled() + + +func reset(): + currentPointerIDX = INACTIVE_IDX + ##calculateForce(0, 0) + last_pointer_position = Vector2() + +func calculateForce(var x, var y): + var v : Vector2 = Vector2(x, y) + currentForce = last_pointer_position - v + last_pointer_position = v + + sendSignal2Listener() + +func sendSignal2Listener(): + if (listener != null): +# listener.analog_force_change(currentForce, self) + listener.queue_camera_rotation(currentForce) + +func isPressed(event): + if event is InputEventMouseMotion: + return (InputEventMouse.button_mask == 1) + elif event is InputEventScreenTouch: + return event.is_pressed() + +func isReleased(event): + if event is InputEventScreenTouch: + return !event.is_pressed() + elif event is InputEventMouseButton: + return !event.is_pressed() + diff --git a/game/ui/touch_pad/analog.gd b/game/ui/touch_pad/analog.gd new file mode 100644 index 0000000..2d8f5f1 --- /dev/null +++ b/game/ui/touch_pad/analog.gd @@ -0,0 +1,156 @@ +extends Node2D + +# This is by someone else TODO check! + +const INACTIVE_IDX = -1; +export var isDynamicallyShowing = false +export (String) var listenerNodePath : String = "../../../../../../.." +export var padname = "" + +var ball +var bg +var animation_player +var parent +var listenerNode + +var centerPoint = Vector2(0,0) +var currentForce = Vector2(0,0) +var halfSize = Vector2() +var ballPos = Vector2() +var squaredHalfSizeLength = 0 +var currentPointerIDX = INACTIVE_IDX; + +func _ready(): + set_process_input(true) + bg = get_node("bg") + ball = get_node("ball") + animation_player = get_node("AnimationPlayer") + parent = get_parent() + halfSize = bg.texture.get_size()/2 + squaredHalfSizeLength = halfSize.x * halfSize.y + + if (listenerNodePath != "" && listenerNodePath!=null): + listenerNode = get_node(listenerNodePath) + elif listenerNodePath=="": + listenerNode = null + +# isDynamicallyShowing = isDynamicallyShowing and parent extends Control + if isDynamicallyShowing: + modulate.a = 0 +# hide() + +func get_force(): + return currentForce + +func _unhandled_input(event): + + var incomingPointer = extractPointerIdx(event) + #print(incomingPointer) + + if incomingPointer == INACTIVE_IDX: + return + + if need2ChangeActivePointer(event): + if (currentPointerIDX != incomingPointer) and event.is_pressed(): + currentPointerIDX = incomingPointer; + showAtPos(Vector2(event.position.x, event.position.y)); + get_tree().set_input_as_handled() + + var theSamePointer = currentPointerIDX == incomingPointer + if isActive() and theSamePointer: + process_input(event) + +func need2ChangeActivePointer(event): #touch down inside analog + if event is InputEventMouseButton or event is InputEventScreenTouch: + if isDynamicallyShowing: + #print(get_parent().get_global_rect()) + return get_parent().get_global_rect().has_point(Vector2(event.position.x, event.position.y)) + else: + var length = (global_position - Vector2(event.position.x, event.position.y)).length_squared(); + return length < squaredHalfSizeLength + else: + return false + +func isActive(): + return currentPointerIDX != INACTIVE_IDX + +func extractPointerIdx(event): + var touch = event is InputEventScreenTouch + var drag = event is InputEventScreenDrag + var mouseButton = event is InputEventMouseButton + var mouseMove = event is InputEventMouseMotion + + #print(event) + if touch: + return event.index + + elif drag: + + + return event.index + elif mouseButton or mouseMove: + #plog("SOMETHING IS VERYWRONG??, I HAVE MOUSE ON TOUCH DEVICE") + return INACTIVE_IDX + else: + return INACTIVE_IDX + +func process_input(event): + calculateForce(event.position.x - global_position.x, event.position.y - global_position.y) + updateBallPos() + + var isReleased = isReleased(event) + if isReleased: + reset() + + get_tree().set_input_as_handled() + + +func reset(): + currentPointerIDX = INACTIVE_IDX + calculateForce(0, 0) + + if isDynamicallyShowing: + hide() + else: + updateBallPos() + +func showAtPos(pos): + if isDynamicallyShowing: + animation_player.play("alpha_in", 0.2) + global_position = pos + +func hide(): + animation_player.play("alpha_out", 0.2) + +func updateBallPos(): + ballPos.x = halfSize.x * currentForce.x #+ halfSize.x + ballPos.y = halfSize.y * -currentForce.y #+ halfSize.y + ball.position = Vector2(ballPos.x, ballPos.y) + +func calculateForce(var x, var y): + #get direction + currentForce.x = (x - centerPoint.x)/halfSize.x + currentForce.y = -(y - centerPoint.y)/halfSize.y + #print(currentForce.x, currentForce.y) + #limit + #print(currentForce.length_squared()) + if currentForce.length_squared()>1: + currentForce=currentForce/currentForce.length() + + sendSignal2Listener() + +func sendSignal2Listener(): + if (listenerNode != null): + listenerNode.analog_force_change(currentForce, self) + +func isPressed(event): + if event is InputEventMouseMotion: + return (InputEventMouse.button_mask == 1) + elif event is InputEventScreenTouch: + return event.is_pressed() + +func isReleased(event): + if event is InputEventScreenTouch: + return !event.is_pressed() + elif event is InputEventMouseButton: + return !event.is_pressed() diff --git a/game/ui/touch_pad/analog.tscn b/game/ui/touch_pad/analog.tscn new file mode 100644 index 0000000..a5187c5 --- /dev/null +++ b/game/ui/touch_pad/analog.tscn @@ -0,0 +1,94 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://ui/touch_pad/analog.gd" type="Script" id=1] +[ext_resource path="res://ui/touch_pad/big_circle.png" type="Texture" id=2] +[ext_resource path="res://ui/touch_pad/small_circle.png" type="Texture" id=3] + +[sub_resource type="Animation" id=1] +length = 5.0 +tracks/0/type = "value" +tracks/0/path = NodePath(".:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} + +[sub_resource type="Animation" id=2] +step = 1.0 +tracks/0/type = "value" +tracks/0/path = NodePath(".:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 0 ), +"update": 0, +"values": [ Color( 0, 0, 0, 0 ) ] +} + +[sub_resource type="Animation" id=3] +tracks/0/type = "value" +tracks/0/path = NodePath("ball:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ball:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} + +[sub_resource type="Animation" id=4] +tracks/0/type = "value" +tracks/0/path = NodePath(".:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} + +[node name="Analog" type="Node2D"] +script = ExtResource( 1 ) +__meta__ = { +"__editor_plugin_screen__": "2D" +} +isDynamicallyShowing = true + +[node name="bg" type="Sprite" parent="."] +texture = ExtResource( 2 ) + +[node name="ball" type="Sprite" parent="."] +texture = ExtResource( 3 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/alpha_in = SubResource( 1 ) +anims/alpha_out = SubResource( 2 ) +anims/ball_center = SubResource( 3 ) +anims/default = SubResource( 4 ) diff --git a/game/ui/touch_pad/analog.xml b/game/ui/touch_pad/analog.xml new file mode 100644 index 0000000..2152ca6 --- /dev/null +++ b/game/ui/touch_pad/analog.xml @@ -0,0 +1,313 @@ + + + + + + + + + + + 1 + False + 0.1 + "value" + ".:visibility/opacity" + 1 + + "cont" + True + "times" + 0 + "transitions" + 1 + "values" + + 1 + + + + + + 5 + False + 0.1 + "value" + ".:visibility/opacity" + 1 + + "cont" + True + "times" + 0 + "transitions" + 1 + "values" + + 1 + + + + + + 1 + False + 0.1 + "value" + "ball:transform/pos" + 1 + + "cont" + True + "times" + 0 + "transitions" + 1 + "values" + + 0, 0 + + + "value" + "ball:transform/rot" + 1 + + "cont" + True + "times" + 0 + "transitions" + 1 + "values" + + 0 + + + + + + 1 + False + 1 + "value" + ".:visibility/opacity" + 1 + + "cont" + True + "times" + 0 + "transitions" + 1 + "values" + + 0 + + + + + + + "conn_count" + 0 + "conns" + + "editable_instances" + + + "names" + + "Analog" + "transform/pos" + "script/script" + "__meta__" + "isDynamicallyShowing" + "listenerNodePath" + "name" + "Node2D" + "bg" + "texture" + "Sprite" + "ball" + "AnimationPlayer" + "playback/process_mode" + "playback/default_blend_time" + "root/root" + "anims/default" + "anims/alpha_in" + "anims/ball_center" + "anims/alpha_out" + "playback/active" + "playback/speed" + "blend_times" + "autoplay" + + "node_count" + 4 + "node_paths" + + + "nodes" + -1, -1, 7, 0, -1, 6, 1, 0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 4, 0, 0, 0, 10, 8, -1, 1, 9, 5, 0, 0, 0, 10, 11, -1, 1, 9, 6, 0, 0, 0, 12, 12, -1, 11, 13, 7, 14, 8, 15, 9, 16, 10, 17, 11, 18, 12, 19, 13, 20, 14, 21, 15, 22, 16, 23, 4, 0 + "variants" + + 192.941, 221.425 + + + "__editor_plugin_screen__" + "2D" + "__editor_plugin_states__" + + "2D" + + "ofs" + -534.358, 78.6721 + "snap_grid" + True + "snap_offset" + 0, 0 + "snap_pixel" + False + "snap_relative" + False + "snap_rotation" + False + "snap_rotation_offset" + 0 + "snap_rotation_step" + 0.261799 + "snap_show_grid" + False + "snap_step" + 10, 10 + "zoom" + 0.814506 + + "3D" + + "ambient_light_color" + 0.15, 0.15, 0.15, 1 + "default_light" + True + "default_srgb" + False + "deflight_rot_x" + 0.942478 + "deflight_rot_y" + 0.628319 + "fov" + 45 + "show_grid" + True + "show_origin" + True + "viewport_mode" + 1 + "viewports" + + + "distance" + 4 + "listener" + True + "pos" + -0.972839, 5.12177, 4.10017 + "use_environment" + False + "use_orthogonal" + False + "x_rot" + 0 + "y_rot" + 0 + + + "distance" + 4 + "listener" + False + "pos" + 0, 0, 0 + "use_environment" + False + "use_orthogonal" + False + "x_rot" + 0 + "y_rot" + 0 + + + "distance" + 4 + "listener" + False + "pos" + 0, 0, 0 + "use_environment" + False + "use_orthogonal" + False + "x_rot" + 0 + "y_rot" + 0 + + + "distance" + 4 + "listener" + False + "pos" + 0, 0, 0 + "use_environment" + False + "use_orthogonal" + False + "x_rot" + 0 + "y_rot" + 0 + + + "zfar" + 500 + "znear" + 0.1 + + "Anim" + + "visible" + False + + + "__editor_run_settings__" + + "custom_args" + "-l $scene" + "run_mode" + 0 + + + False + "" + + + 1 + 0 + ".." + + + + + True + 1 + + + + "version" + 2 + + + + \ No newline at end of file diff --git a/game/ui/touch_pad/big_circle.png b/game/ui/touch_pad/big_circle.png new file mode 100644 index 0000000..f5e305b Binary files /dev/null and b/game/ui/touch_pad/big_circle.png differ diff --git a/game/ui/touch_pad/big_circle.png.import b/game/ui/touch_pad/big_circle.png.import new file mode 100644 index 0000000..204dd35 --- /dev/null +++ b/game/ui/touch_pad/big_circle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/big_circle.png-3e7d1c39c6dde9ffecb18aecfb2a2a19.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/touch_pad/big_circle.png" +dest_files=[ "res://.import/big_circle.png-3e7d1c39c6dde9ffecb18aecfb2a2a19.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/ui/touch_pad/small_circle.png b/game/ui/touch_pad/small_circle.png new file mode 100644 index 0000000..5bc2c84 Binary files /dev/null and b/game/ui/touch_pad/small_circle.png differ diff --git a/game/ui/touch_pad/small_circle.png.import b/game/ui/touch_pad/small_circle.png.import new file mode 100644 index 0000000..9d3390f --- /dev/null +++ b/game/ui/touch_pad/small_circle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/small_circle.png-035ef8e6fee54222401287369836bd6a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/touch_pad/small_circle.png" +dest_files=[ "res://.import/small_circle.png-035ef8e6fee54222401287369836bd6a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/ui/touch_target_controls/TouchTargetControls.tscn b/game/ui/touch_target_controls/TouchTargetControls.tscn new file mode 100644 index 0000000..8aea33b --- /dev/null +++ b/game/ui/touch_target_controls/TouchTargetControls.tscn @@ -0,0 +1,55 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/touch_pad/analog.tscn" type="PackedScene" id=1] +[ext_resource path="res://ui/touch_pad/analog.gd" type="Script" id=2] + +[node name="TouchTargetControls" type="MarginContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +custom_constants/margin_right = 272 +custom_constants/margin_top = 481 +custom_constants/margin_left = 60 +custom_constants/margin_bottom = 41 +__meta__ = { +"_edit_group_": true +} + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +margin_left = 60.0 +margin_top = 481.0 +margin_right = 752.0 +margin_bottom = 559.0 +mouse_filter = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 + +[node name="Control" type="Control" parent="HBoxContainer"] +margin_right = 603.0 +margin_bottom = 78.0 +mouse_filter = 2 +size_flags_horizontal = 15 +size_flags_vertical = 15 +size_flags_stretch_ratio = 12.0 + +[node name="TargetPad" type="Control" parent="HBoxContainer"] +margin_left = 611.0 +margin_right = 692.0 +margin_bottom = 78.0 +mouse_filter = 2 +size_flags_horizontal = 15 +size_flags_vertical = 15 +size_flags_stretch_ratio = 1.6 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Analog" type="Node2D" parent="HBoxContainer/TargetPad" instance=ExtResource( 1 )] +position = Vector2( 40, 30 ) +script = ExtResource( 2 ) +__meta__ = { +"__editor_plugin_screen__": "2D" +} +isDynamicallyShowing = true +padname = "TargetPad" diff --git a/game/ui/touch_target_controls/game_module.tres b/game/ui/touch_target_controls/game_module.tres new file mode 100644 index 0000000..dc68a36 --- /dev/null +++ b/game/ui/touch_target_controls/game_module.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" load_steps=3 format=2] + +[ext_resource path="res://scripts/game_modules/ui_gui_child_module.gd" type="Script" id=1] +[ext_resource path="res://ui/touch_target_controls/TouchTargetControls.tscn" type="PackedScene" id=2] + +[resource] +script = ExtResource( 1 ) +enabled = true +scene = ExtResource( 2 ) +hide = false diff --git a/game/ui/trainer/TrainerWindow.gd b/game/ui/trainer/TrainerWindow.gd new file mode 100644 index 0000000..7b8bf55 --- /dev/null +++ b/game/ui/trainer/TrainerWindow.gd @@ -0,0 +1,227 @@ +extends Control + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var spell_entry_container_path : NodePath +export(NodePath) var learn_button_path : NodePath +export(NodePath) var cost_label_path : NodePath + +export(NodePath) var spell_icon_path : NodePath +export(NodePath) var spell_name_label_path : NodePath +export(NodePath) var spell_description_label_path : NodePath +export(NodePath) var spell_requirements_label_path : NodePath + +var _spell_entry_container : Node +var _spell_entries : Array + +var _learn_button : Button +var _cost_label : Label + +var _spell_icon : TextureRect +var _spell_name_label : Label +var _spell_description_label : Label +var _spell_requirements_label : Label + +var _player : Entity + +var _entity_data : EntityData +var _character_class : EntityClassData + +var _spells : Array + +var _spell_button_group : ButtonGroup + +func _ready() -> void: + _spell_button_group = ButtonGroup.new() + + _spell_entry_container = get_node(spell_entry_container_path) + + _spell_icon = get_node(spell_icon_path) as TextureRect + _spell_name_label = get_node(spell_name_label_path) as Label + _spell_description_label = get_node(spell_description_label_path) as Label + _spell_requirements_label = get_node(spell_requirements_label_path) as Label + + _learn_button = get_node(learn_button_path) + _cost_label = get_node(cost_label_path) + + _learn_button.connect("pressed", self, "learn") + + connect("visibility_changed", self, "_visibility_changed") + +func learn() -> void: + if _character_class == null: + return + + if _player == null: + return + + var b : Button = _spell_button_group.get_pressed_button() + + if b: + var spell : Spell = b.get_meta("spell") + + _player.spell_learn_requestc(spell.id) + + refresh_entries() + +func refresh_entries() -> void: + if _character_class == null or _player == null: + return + + for c in _spell_entry_container.get_children(): + c.queue_free() + + _spell_entries.clear() + + for s in _spells: + var spell : Spell = s + + if !spell: + continue + + if _player.spell_hasc(spell): + continue + + var b : Button = Button.new() + + b.text = spell.text_name + " (rank " + str(spell.rank) + ")" + b.set_meta("spell", spell) + b.group = _spell_button_group + b.toggle_mode = true + b.connect("pressed", self, "_button_pressed") + + _spell_entries.append(b) + _spell_entry_container.add_child(b) + + if _spell_entries.size() > 0: + _spell_entries[0].pressed = true + _button_pressed() + +func refresh_all() -> void: + if _player == null: + return + + if _character_class == null: + return + + refresh_entries() + + +func _visibility_changed() -> void: + if visible: + refresh_all() + +func set_player(p_player: Entity) -> void: + if _player != null: + _player.disconnect("centity_data_changed", self, "centity_data_changed") + _player.disconnect("onc_open_winow_request", self, "onc_open_winow_request") + + _player = p_player + + _player.connect("centity_data_changed", self, "centity_data_changed") + _player.connect("onc_open_winow_request", self, "onc_open_winow_request") + + if _player != null: + centity_data_changed(_player.centity_data) + else: + centity_data_changed(null) + +func centity_data_changed(data: EntityData): + _spells.clear() + + _entity_data = null + _character_class = null + + if data == null: + return + + _entity_data = _player.centity_data + _character_class = _entity_data.entity_class_data + + if _character_class == null: + return + + for i in range(_character_class.get_num_spells()): + _spells.append(_character_class.get_spell(i)) + + _spells.sort_custom(CustomSpellSorter, "sort") + + refresh_all() + +func _button_pressed(): + var b : Button = _spell_button_group.get_pressed_button() + + if b && b.has_meta("spell"): + var spell : Spell = b.get_meta("spell") + + _spell_icon.texture = spell.icon + _spell_name_label.text = spell.text_name + _spell_description_label.text = spell.text_description + + var req_str = "Required: " + + if spell.training_required_spell: + req_str += spell.training_required_spell.text_name + " (rank " + str(spell.training_required_spell.rank) + ") " + + if spell.level > 0: + req_str += "level " + str(spell.level) + + _spell_requirements_label.text = req_str + + _cost_label.text = str(spell.get_training_cost()) + + else: + _spell_icon.texture = null + _spell_name_label.text = "" + _spell_description_label.text = "" + _spell_requirements_label.text = "" + + _cost_label.text = "0" + + + +class CustomSpellSorter: + static func sort(a, b): + if a.level < b.level: + return true + elif a.level > b.level: + return false + else: + var res = a.text_name.casecmp_to(b.text_name) + + if res == 0: + if a.rank < b.rank: + return true + return false + elif res == 1: + return false + + return true + + +func onc_open_winow_request(window_id : int) -> void: + if window_id != EntityEnums.ENTITY_WINDOW_TRAINER: + return + + show() + +# if player.has_signal("player_moved") && !player.is_connected("player_moved", self, "on_player_moved"): +# player.connect("player_moved", self, "on_player_moved", [], CONNECT_ONESHOT) diff --git a/game/ui/trainer/TrainerWindow.tscn b/game/ui/trainer/TrainerWindow.tscn new file mode 100644 index 0000000..a92599b --- /dev/null +++ b/game/ui/trainer/TrainerWindow.tscn @@ -0,0 +1,157 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/trainer/TrainerWindow.gd" type="Script" id=1] +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=2] + +[node name="TrainerWindow" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme = ExtResource( 2 ) +script = ExtResource( 1 ) +spell_entry_container_path = NodePath("PanelContainer/VBoxContainer/PanelContainer3/ScrollContainer/Spells") +learn_button_path = NodePath("PanelContainer/VBoxContainer/HBoxContainer/Train") +cost_label_path = NodePath("PanelContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer2/Price") +spell_icon_path = NodePath("PanelContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer/VBoxContainer/Icon") +spell_name_label_path = NodePath("PanelContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer/VBoxContainer2/Name") +spell_description_label_path = NodePath("PanelContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer/VBoxContainer2/Description") +spell_requirements_label_path = NodePath("PanelContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer/VBoxContainer2/Requirements") + +[node name="PanelContainer" type="PanelContainer" parent="."] +margin_left = 49.0 +margin_top = 40.0 +margin_right = 436.0 +margin_bottom = 498.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 383.0 +margin_bottom = 454.0 + +[node name="HBoxContainer2" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +margin_right = 379.0 +margin_bottom = 26.0 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer2"] +margin_top = 5.0 +margin_right = 345.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 +text = "Trainer" + +[node name="Button" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer2"] +margin_left = 349.0 +margin_right = 379.0 +margin_bottom = 26.5702 +rect_min_size = Vector2( 30, 0 ) +text = "X" + +[node name="PanelContainer3" type="PanelContainer" parent="PanelContainer/VBoxContainer"] +margin_top = 34.0 +margin_right = 379.0 +margin_bottom = 221.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="ScrollContainer" type="ScrollContainer" parent="PanelContainer/VBoxContainer/PanelContainer3"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 375.0 +margin_bottom = 183.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +scroll_horizontal_enabled = false + +[node name="Spells" type="VBoxContainer" parent="PanelContainer/VBoxContainer/PanelContainer3/ScrollContainer"] +margin_right = 371.0 +size_flags_horizontal = 3 +custom_constants/separation = 2 + +[node name="PanelContainer2" type="PanelContainer" parent="PanelContainer/VBoxContainer"] +margin_top = 229.0 +margin_right = 379.0 +margin_bottom = 416.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/PanelContainer2"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 375.0 +margin_bottom = 183.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/PanelContainer2/VBoxContainer"] +margin_right = 371.0 +margin_bottom = 156.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer"] +margin_right = 60.0 +margin_bottom = 156.0 + +[node name="Icon" type="TextureRect" parent="PanelContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer/VBoxContainer"] +margin_right = 60.0 +margin_bottom = 60.0 +rect_min_size = Vector2( 60, 60 ) +expand = true + +[node name="VBoxContainer2" type="VBoxContainer" parent="PanelContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer"] +margin_left = 64.0 +margin_right = 371.0 +margin_bottom = 156.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Name" type="Label" parent="PanelContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer/VBoxContainer2"] +margin_right = 307.0 +margin_bottom = 15.0 +size_flags_horizontal = 3 +size_flags_vertical = 5 + +[node name="Requirements" type="Label" parent="PanelContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer/VBoxContainer2"] +margin_top = 23.0 +margin_right = 307.0 +margin_bottom = 38.0 +size_flags_horizontal = 3 +size_flags_vertical = 5 + +[node name="Description" type="Label" parent="PanelContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer/VBoxContainer2"] +margin_top = 46.0 +margin_right = 307.0 +margin_bottom = 156.0 +size_flags_horizontal = 3 +size_flags_vertical = 7 +autowrap = true + +[node name="HBoxContainer2" type="HBoxContainer" parent="PanelContainer/VBoxContainer/PanelContainer2/VBoxContainer"] +margin_top = 164.0 +margin_right = 371.0 +margin_bottom = 179.0 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer2"] +margin_right = 36.0 +margin_bottom = 15.0 +text = "Costs " + +[node name="Price" type="Label" parent="PanelContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer2"] +margin_left = 40.0 +margin_right = 40.0 +margin_bottom = 15.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +margin_top = 424.0 +margin_right = 379.0 +margin_bottom = 450.0 +alignment = 2 + +[node name="Train" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer"] +margin_left = 279.0 +margin_right = 379.0 +margin_bottom = 26.5702 +rect_min_size = Vector2( 100, 0 ) +text = "Learn" +[connection signal="pressed" from="PanelContainer/VBoxContainer/HBoxContainer2/Button" to="." method="hide"] diff --git a/game/ui/trainer/game_module.tres b/game/ui/trainer/game_module.tres new file mode 100644 index 0000000..816bec2 --- /dev/null +++ b/game/ui/trainer/game_module.tres @@ -0,0 +1,11 @@ +[gd_resource type="Resource" load_steps=3 format=2] + +[ext_resource path="res://ui/trainer/TrainerWindow.tscn" type="PackedScene" id=1] +[ext_resource path="res://scripts/game_modules/ui_window_module.gd" type="Script" id=2] + +[resource] +script = ExtResource( 2 ) +enabled = true +scene = ExtResource( 1 ) +index = -1 +add_button = false diff --git a/game/ui/unitframes/TargetUnitframe.gd b/game/ui/unitframes/TargetUnitframe.gd new file mode 100644 index 0000000..e8bbc1c --- /dev/null +++ b/game/ui/unitframes/TargetUnitframe.gd @@ -0,0 +1,151 @@ +extends VBoxContainer + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export (PackedScene) var aura_entry_scene : PackedScene + +export (NodePath) var name_text_path : NodePath +export (NodePath) var health_range_path : NodePath +export (NodePath) var health_text_path : NodePath +export (NodePath) var resource_range_path : NodePath +export (NodePath) var resource_text_path : NodePath +export (NodePath) var aura_grid_path : NodePath + +var _name_text : Label +var _health_range : Range +var _health_text : Label +var _resource_range : Range +var _resource_text : Label +var _aura_grid : GridContainer + +var _player : Entity +var _mana : ManaResource +var _health : EntityResourceHealth + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + _name_text = get_node(name_text_path) as Label + _health_range = get_node(health_range_path) as Range + _health_text = get_node(health_text_path) as Label + _resource_range = get_node(resource_range_path) as Range + _resource_text = get_node(resource_text_path) as Label + _aura_grid = get_node(aura_grid_path) as GridContainer + +func set_player(p_player : Entity) -> void: + if not _player == null and is_instance_valid(_player): + _player.getc_health().disconnect("changed", self, "_on_player_health_changed") + _player.disconnect("notification_caura", self, "on_notification_caura") + _player.disconnect("diecd", self, "diecd") + _player.disconnect("centity_resource_added", self, "centity_resource_added") + + if _mana != null: + _mana.disconnect("changed", self, "_on_mana_changed") + _mana = null + + for a in _aura_grid.get_children(): + _aura_grid.remove_child(a) + a.queue_free(); + + _player = null + set_process(false) + + if p_player == null: + hide() + return + + _player = p_player + + for index in range(_player.aura_getc_count()): + var aura : AuraData = _player.aura_getc(index) + + on_notification_caura(SpellEnums.NOTIFICATION_AURA_ADDED, aura) + + _player.connect("notification_caura", self, "on_notification_caura") + _player.connect("diecd", self, "diecd", [], CONNECT_DEFERRED) + _player.connect("centity_resource_added", self, "centity_resource_added") + + for i in range(_player.resource_getc_count()): + centity_resource_added(_player.resource_getc_index(i)) + + _health = _player.getc_health() + _on_player_health_changed() + _health.connect("changed", self, "_on_player_health_changed") + + _name_text.text = _player.centity_name + + set_process(true) + show() + +func centity_resource_added(res : EntityResource): + if res is ManaResource: + _mana = res as ManaResource + _mana.connect("changed", self, "_on_mana_changed") + _on_mana_changed() + +func _on_mana_changed() -> void: + if _mana.max_value == 0: + _resource_range.min_value = 0 + _resource_range.max_value = 1 + _resource_range.value = 0 + + _resource_text.text = "" + + return + + _resource_range.min_value = 0 + _resource_range.max_value = _mana.max_value + _resource_range.value = _mana.current_value + + _resource_text.text = str(_mana.current_value) + "/" + str(_mana.max_value) + +func on_notification_caura(what : int, aura_data : AuraData) -> void: + if what == SpellEnums.NOTIFICATION_AURA_ADDED: + var created_node : Node = aura_entry_scene.instance() + + _aura_grid.add_child(created_node) + created_node.owner = _aura_grid + + created_node.set_aura_data(aura_data) + elif what == SpellEnums.NOTIFICATION_AURA_REMOVED: + for bn in _aura_grid.get_children(): + if bn.get_aura_data() == aura_data: + _aura_grid.remove_child(bn) + bn.queue_free() + return + +func _on_player_health_changed() -> void: + if _health.max_value == 0: + _health_range.min_value = 0 + _health_range.max_value = 1 + _health_range.value = 0 + + _health_text.text = "" + + return + + _health_range.min_value = 0 + _health_range.max_value = _health.max_value + _health_range.value = _health.current_value + + _health_text.text = str(_health.current_value) + "/" + str(_health.max_value) + +func diecd(entity : Entity) -> void: + set_player(null) diff --git a/game/ui/unitframes/TargetUnitframe.tscn b/game/ui/unitframes/TargetUnitframe.tscn new file mode 100644 index 0000000..17ad3b1 --- /dev/null +++ b/game/ui/unitframes/TargetUnitframe.tscn @@ -0,0 +1,98 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://ui/unitframes/TargetUnitframe.gd" type="Script" id=1] +[ext_resource path="res://ui/auraframe/AuraEntry.tscn" type="PackedScene" id=2] +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=3] +[ext_resource path="res://ui/theme/scrollbar_grabber_red.tres" type="StyleBox" id=4] +[ext_resource path="res://ui/theme/scrollbar_grabber_blue.tres" type="StyleBox" id=5] + +[node name="TargetUnitframe" type="VBoxContainer"] +margin_left = 151.0 +margin_right = 300.0 +margin_bottom = 209.0 +theme = ExtResource( 3 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +aura_entry_scene = ExtResource( 2 ) +name_text_path = NodePath("MarginContainer/VBoxContainer/Label") +health_range_path = NodePath("MarginContainer/VBoxContainer/MarginContainer/ProgressBar") +health_text_path = NodePath("MarginContainer/VBoxContainer/MarginContainer/Label") +resource_range_path = NodePath("MarginContainer/VBoxContainer/MarginContainer2/ProgressBar") +resource_text_path = NodePath("MarginContainer/VBoxContainer/MarginContainer2/Label") +aura_grid_path = NodePath("auras") + +[node name="MarginContainer" type="PanelContainer" parent="."] +margin_right = 149.0 +margin_bottom = 53.0 +size_flags_horizontal = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 145.0 +margin_bottom = 49.0 +size_flags_horizontal = 3 +custom_constants/separation = 0 + +[node name="Label" type="Label" parent="MarginContainer/VBoxContainer"] +margin_right = 141.0 +margin_bottom = 15.0 +size_flags_horizontal = 3 +valign = 1 + +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/VBoxContainer"] +margin_top = 15.0 +margin_right = 141.0 +margin_bottom = 30.0 +size_flags_horizontal = 3 +custom_constants/margin_top = 0 +custom_constants/margin_bottom = 0 + +[node name="ProgressBar" type="ProgressBar" parent="MarginContainer/VBoxContainer/MarginContainer"] +margin_right = 141.0 +margin_bottom = 15.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/fg = ExtResource( 4 ) +percent_visible = false + +[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/MarginContainer"] +margin_right = 141.0 +margin_bottom = 15.0 +align = 1 +valign = 1 + +[node name="MarginContainer2" type="MarginContainer" parent="MarginContainer/VBoxContainer"] +margin_top = 30.0 +margin_right = 141.0 +margin_bottom = 45.0 +size_flags_horizontal = 3 +custom_constants/margin_top = 0 +custom_constants/margin_bottom = 0 + +[node name="ProgressBar" type="ProgressBar" parent="MarginContainer/VBoxContainer/MarginContainer2"] +margin_right = 141.0 +margin_bottom = 15.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/fg = ExtResource( 5 ) +percent_visible = false + +[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/MarginContainer2"] +margin_right = 141.0 +margin_bottom = 15.0 +align = 1 +valign = 1 + +[node name="auras" type="GridContainer" parent="."] +margin_top = 61.0 +margin_right = 149.0 +margin_bottom = 209.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +columns = 9 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/game/ui/unitframes/UnitframeBase.gd b/game/ui/unitframes/UnitframeBase.gd new file mode 100644 index 0000000..3776057 --- /dev/null +++ b/game/ui/unitframes/UnitframeBase.gd @@ -0,0 +1,150 @@ +extends Container + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export (NodePath) var name_text_path : NodePath +export (NodePath) var level_text_path : NodePath +export (NodePath) var health_range_path : NodePath +export (NodePath) var health_text_path : NodePath +export (NodePath) var resource_range_path : NodePath +export (NodePath) var resource_text_path : NodePath +export (NodePath) var xp_range_path : NodePath + +var _name_text : Label +var _level_text : Label +var _health_range : Range +var _health_text : Label +var _resource_range : Range +var _resource_text : Label +var _xp_range : Range + +var _player : Entity + +var _mana : ManaResource +var _health : EntityResourceHealth + +func _ready() -> void: + _name_text = get_node(name_text_path) + _level_text = get_node(level_text_path) + _health_range = get_node(health_range_path) + _health_text = get_node(health_text_path) + _resource_range = get_node(resource_range_path) + _resource_text = get_node(resource_text_path) + _xp_range = get_node(xp_range_path) + +func set_player(p_player: Entity) -> void: + if not _player == null: + _player.getc_health().disconnect("changed", self, "_on_player_health_changed") + _player.disconnect("cname_changed", self, "cname_changed") + _player.disconnect("con_level_up", self, "clevel_changed") + _player.disconnect("con_level_changed", self, "clevel_changed") + _player.disconnect("notification_cxp_gained", self, "notification_cxp_gained") + _player.disconnect("centity_resource_added", self, "centity_resource_added") + + if _mana != null: + _mana.disconnect("changed", self, "_on_mana_changed") + _mana = null + + _player = null + + if p_player == null: + return + + _player = p_player + + _player.connect("cname_changed", self, "cname_changed") + _player.connect("notification_clevel_up", self, "clevel_changed") + _player.connect("con_level_changed", self, "clevel_changed") + _player.connect("notification_cxp_gained", self, "notification_cxp_gained") + _player.connect("centity_resource_added", self, "centity_resource_added") + + for i in range(_player.resource_getc_count()): + centity_resource_added(_player.resource_getc_index(i)) + + _health = _player.getc_health() + _on_player_health_changed() + _health.connect("changed", self, "_on_player_health_changed") + + _name_text.text = _player.centity_name + _level_text.text = str(_player.clevel) + + clevel_changed(_player, 0) + notification_cxp_gained(_player, 0) + +func centity_resource_added(res : EntityResource): + if res is ManaResource: + _mana = res as ManaResource + + _mana.connect("changed", self, "_on_mana_changed") + _on_mana_changed() + +func _on_player_health_changed() -> void: + if _health.max_value == 0: + _health_range.min_value = 0 + _health_range.max_value = 1 + _health_range.value = 0 + + _health_text.text = "" + + return + + _health_range.min_value = 0 + _health_range.max_value = _health.max_value + _health_range.value = _health.current_value + + _health_text.text = str(_health.current_value) + "/" + str(_health.max_value) + +func _on_mana_changed() -> void: + if _mana.max_value == 0: + _resource_range.min_value = 0 + _resource_range.max_value = 1 + _resource_range.value = 0 + + _resource_text.text = "" + + return + + _resource_range.min_value = 0 + _resource_range.max_value = _mana.max_value + _resource_range.value = _mana.current_value + + _resource_text.text = str(_mana.current_value) + "/" + str(_mana.max_value) + +func cname_changed(entity: Entity) -> void: + _name_text.text = _player.centity_name + +func clevel_changed(entity: Entity, value : int) -> void: + _level_text.text = str(_player.clevel) + + var xpreq : int = ESS.get_character_xp(_player.clevel) + + if xpreq == 0: + _xp_range.value = 0 + _xp_range.min_value = 0 + _xp_range.max_value = 1 + return + + _xp_range.min_value = 0 + _xp_range.max_value = xpreq + +func notification_cxp_gained(entity: Entity, val: int) -> void: + _xp_range.value = _player.cxp + diff --git a/game/ui/unitframes/UnitframeBase.tscn b/game/ui/unitframes/UnitframeBase.tscn new file mode 100644 index 0000000..a3d6a38 --- /dev/null +++ b/game/ui/unitframes/UnitframeBase.tscn @@ -0,0 +1,97 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://ui/unitframes/UnitframeBase.gd" type="Script" id=1] +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=2] +[ext_resource path="res://ui/theme/scrollbar_grabber_red.tres" type="StyleBox" id=3] +[ext_resource path="res://ui/theme/scrollbar_grabber_blue.tres" type="StyleBox" id=4] +[ext_resource path="res://ui/theme/scrollbar_grabber_blue_xp.tres" type="StyleBox" id=5] + +[node name="UnitFrame" type="PanelContainer"] +margin_right = 150.0 +margin_bottom = 61.0 +theme = ExtResource( 2 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +name_text_path = NodePath("VBoxContainer/HBoxContainer/Label") +level_text_path = NodePath("VBoxContainer/HBoxContainer/Label2") +health_range_path = NodePath("VBoxContainer/MarginContainer/ProgressBar") +health_text_path = NodePath("VBoxContainer/MarginContainer/Label") +resource_range_path = NodePath("VBoxContainer/MarginContainer2/ResourceBar") +resource_text_path = NodePath("VBoxContainer/MarginContainer2/Label") +xp_range_path = NodePath("VBoxContainer/XPBar") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 146.0 +margin_bottom = 57.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_constants/separation = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +margin_right = 142.0 +margin_bottom = 15.0 + +[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer"] +margin_right = 138.0 +margin_bottom = 15.0 +size_flags_horizontal = 3 + +[node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer"] +margin_left = 142.0 +margin_right = 142.0 +margin_bottom = 15.0 + +[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"] +margin_top = 16.0 +margin_right = 142.0 +margin_bottom = 31.0 + +[node name="ProgressBar" type="ProgressBar" parent="VBoxContainer/MarginContainer"] +margin_right = 142.0 +margin_bottom = 15.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/fg = ExtResource( 3 ) +percent_visible = false + +[node name="Label" type="Label" parent="VBoxContainer/MarginContainer"] +margin_right = 142.0 +margin_bottom = 15.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +align = 1 +valign = 1 + +[node name="MarginContainer2" type="MarginContainer" parent="VBoxContainer"] +margin_top = 32.0 +margin_right = 142.0 +margin_bottom = 47.0 + +[node name="ResourceBar" type="ProgressBar" parent="VBoxContainer/MarginContainer2"] +margin_right = 142.0 +margin_bottom = 15.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/fg = ExtResource( 4 ) +percent_visible = false + +[node name="Label" type="Label" parent="VBoxContainer/MarginContainer2"] +margin_right = 142.0 +margin_bottom = 15.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +align = 1 +valign = 1 + +[node name="XPBar" type="ProgressBar" parent="VBoxContainer"] +margin_top = 48.0 +margin_right = 142.0 +margin_bottom = 53.6018 +rect_min_size = Vector2( 20, 5 ) +size_flags_horizontal = 3 +custom_styles/fg = ExtResource( 5 ) +percent_visible = false diff --git a/game/ui/unitframes/Unitframes.tscn b/game/ui/unitframes/Unitframes.tscn new file mode 100644 index 0000000..9cb9175 --- /dev/null +++ b/game/ui/unitframes/Unitframes.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://player/Unitframes.gd" type="Script" id=2] +[ext_resource path="res://ui/unitframes/UnitframeBase.tscn" type="PackedScene" id=6] +[ext_resource path="res://ui/unitframes/TargetUnitframe.tscn" type="PackedScene" id=7] + +[node name="Unitframes" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 1.0 +margin_right = 1.0 +mouse_filter = 2 +script = ExtResource( 2 ) +__meta__ = { +"_edit_lock_": true +} +player_unit_frame_path = NodePath("PlayerUnitFrame") +target_unit_frame_path = NodePath("TargetUnitframe") + +[node name="PlayerUnitFrame" parent="." instance=ExtResource( 6 )] +margin_right = 151.0 + +[node name="TargetUnitframe" parent="." instance=ExtResource( 7 )] +visible = false diff --git a/game/ui/unitframes/game_module.tres b/game/ui/unitframes/game_module.tres new file mode 100644 index 0000000..8a6ca14 --- /dev/null +++ b/game/ui/unitframes/game_module.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" load_steps=3 format=2] + +[ext_resource path="res://scripts/game_modules/ui_gui_child_module.gd" type="Script" id=1] +[ext_resource path="res://ui/unitframes/Unitframes.tscn" type="PackedScene" id=2] + +[resource] +script = ExtResource( 1 ) +enabled = true +scene = ExtResource( 2 ) +hide = false diff --git a/game/ui/vendor_window/ItemContainer.gd b/game/ui/vendor_window/ItemContainer.gd new file mode 100644 index 0000000..cacb70f --- /dev/null +++ b/game/ui/vendor_window/ItemContainer.gd @@ -0,0 +1,89 @@ +extends Control + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var icon_path : NodePath +export(NodePath) var name_label_path : NodePath +#export(NodePath) var description_label_path : NodePath +export(NodePath) var quantity_spinbox_path : NodePath +export(NodePath) var learn_button_path : NodePath +export(NodePath) var spell_button_path : NodePath +export(NodePath) var popup_path : NodePath + +export(Color) var known_color : Color = Color.white +export(Color) var not_known_color : Color = Color.gray +export(Color) var unlearnable_color : Color = Color.gray + +var _icon : TextureRect +var _name_label : Label +#var _description_label : RichTextLabel +var _item_button : Button +var _popup : Popup +var _quantity_spinbox : SpinBox + +var _vendor_item_data_entry : VendorItemDataEntry +var _player : Entity +var _index : int + +func _ready() -> void: + _icon = get_node(icon_path) as TextureRect + _name_label = get_node(name_label_path) as Label +# _description_label = get_node(description_label_path) as RichTextLabel + _item_button = get_node(spell_button_path) as Button + _popup = get_node(popup_path) as Popup + _quantity_spinbox = get_node(quantity_spinbox_path) as SpinBox + +func set_vendor_item(p_player : Entity, p_vide: VendorItemDataEntry, index : int) -> void: + _vendor_item_data_entry = p_vide + _player = p_player + _index = index + +# _icon.set_spell(_spell) + _item_button.set_item(_vendor_item_data_entry) + _popup.set_item(_vendor_item_data_entry) + + if _vendor_item_data_entry != null && _vendor_item_data_entry.item != null: + + _icon.texture = _vendor_item_data_entry.item.icon + _name_label.text = _vendor_item_data_entry.item.text_name + else: + _icon.texture = null + + _name_label.text = "....." + + update_spell_indicators() + +func spell_button_pressed() -> void: + var pos : Vector2 = _item_button.rect_global_position + pos.x += _item_button.rect_size.x + + _popup.popup(Rect2(pos, _popup.rect_size)) + +func buy(): + if !_player: + return + + var count : int = _quantity_spinbox.value + + _player.vendor_item_sbuy(_index, count) + +func update_spell_indicators(): + pass diff --git a/game/ui/vendor_window/ItemContainer.tscn b/game/ui/vendor_window/ItemContainer.tscn new file mode 100644 index 0000000..8308cf2 --- /dev/null +++ b/game/ui/vendor_window/ItemContainer.tscn @@ -0,0 +1,165 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/vendor_window/VendorEntryPopup.gd" type="Script" id=2] +[ext_resource path="res://ui/vendor_window/ItemDragAndDropVendor.gd" type="Script" id=3] +[ext_resource path="res://ui/vendor_window/ItemContainer.gd" type="Script" id=4] + +[node name="ItemContainer" type="Control"] +margin_left = 290.0 +margin_top = 306.0 +margin_right = 576.0 +margin_bottom = 370.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme = ExtResource( 1 ) +script = ExtResource( 4 ) +__meta__ = { +"_edit_use_anchors_": false +} +icon_path = NodePath("PanelContainer/HBoxContainer/Button/CenterContainer/Icon") +name_label_path = NodePath("PanelContainer/HBoxContainer/Name") +quantity_spinbox_path = NodePath("EntryPopup/VBoxContainer/Container/VBoxContainer/HBoxContainer/SpinBox") +learn_button_path = NodePath("EntryPopup/VBoxContainer/HBoxContainer/Button") +spell_button_path = NodePath("../ItemContainer/PanelContainer/HBoxContainer/Button") +popup_path = NodePath("EntryPopup") +not_known_color = Color( 0.596078, 0.596078, 0.596078, 1 ) +unlearnable_color = Color( 0.772549, 0.192157, 0.192157, 1 ) + +[node name="PanelContainer" type="PanelContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 282.0 +margin_bottom = 60.0 + +[node name="Button" type="Button" parent="PanelContainer/HBoxContainer"] +margin_right = 55.0 +margin_bottom = 56.0 +rect_min_size = Vector2( 55, 55 ) +script = ExtResource( 3 ) + +[node name="CenterContainer" type="MarginContainer" parent="PanelContainer/HBoxContainer/Button"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 51.0 +margin_bottom = 51.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Icon" type="TextureRect" parent="PanelContainer/HBoxContainer/Button/CenterContainer"] +margin_right = 47.0 +margin_bottom = 47.0 +mouse_filter = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +expand = true + +[node name="Name" type="Label" parent="PanelContainer/HBoxContainer"] +margin_left = 59.0 +margin_top = 20.0 +margin_right = 278.0 +margin_bottom = 35.0 +size_flags_horizontal = 3 +text = "......" + +[node name="EntryPopup" type="PopupPanel" parent="."] +margin_left = 64.0 +margin_top = 4.0 +margin_right = 360.0 +margin_bottom = 207.0 +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} +label_path = NodePath("VBoxContainer/HBoxContainer/Label") +desc_label_path = NodePath("VBoxContainer/Container/VBoxContainer/RichTextLabel") +quantity_spinbox_path = NodePath("VBoxContainer/Container/VBoxContainer/HBoxContainer/SpinBox") + +[node name="VBoxContainer" type="VBoxContainer" parent="EntryPopup"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 4.0 +margin_right = -4.0 +margin_bottom = -4.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HBoxContainer" type="HBoxContainer" parent="EntryPopup/VBoxContainer"] +margin_right = 288.0 +margin_bottom = 26.0 + +[node name="Label" type="Label" parent="EntryPopup/VBoxContainer/HBoxContainer"] +margin_top = 5.0 +margin_right = 254.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 + +[node name="Button" type="Button" parent="EntryPopup/VBoxContainer/HBoxContainer"] +margin_left = 258.0 +margin_right = 288.0 +margin_bottom = 26.5702 +rect_min_size = Vector2( 30, 0 ) +text = "X" + +[node name="HSeparator2" type="HSeparator" parent="EntryPopup/VBoxContainer"] +margin_top = 34.0 +margin_right = 288.0 +margin_bottom = 38.0 + +[node name="Container" type="VBoxContainer" parent="EntryPopup/VBoxContainer"] +margin_top = 46.0 +margin_right = 288.0 +margin_bottom = 195.0 +rect_min_size = Vector2( 0, 20 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="EntryPopup/VBoxContainer/Container"] +margin_right = 288.0 +margin_bottom = 149.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="EntryPopup/VBoxContainer/Container/VBoxContainer"] +margin_right = 288.0 +margin_bottom = 26.0 + +[node name="SpinBox" type="SpinBox" parent="EntryPopup/VBoxContainer/Container/VBoxContainer/HBoxContainer"] +margin_right = 169.47 +margin_bottom = 26.0 +min_value = 1.0 +value = 1.0 +rounded = true +align = 1 + +[node name="LearnButton" type="Button" parent="EntryPopup/VBoxContainer/Container/VBoxContainer/HBoxContainer"] +margin_left = 173.0 +margin_right = 288.0 +margin_bottom = 26.5702 +size_flags_horizontal = 3 +text = "Buy" + +[node name="RichTextLabel" type="RichTextLabel" parent="EntryPopup/VBoxContainer/Container/VBoxContainer"] +margin_top = 34.0 +margin_right = 288.0 +margin_bottom = 149.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +[connection signal="pressed" from="PanelContainer/HBoxContainer/Button" to="." method="spell_button_pressed"] +[connection signal="pressed" from="EntryPopup/VBoxContainer/HBoxContainer/Button" to="EntryPopup" method="hide"] +[connection signal="pressed" from="EntryPopup/VBoxContainer/Container/VBoxContainer/HBoxContainer/LearnButton" to="." method="buy"] diff --git a/game/ui/vendor_window/ItemDragAndDropVendor.gd b/game/ui/vendor_window/ItemDragAndDropVendor.gd new file mode 100644 index 0000000..37e5fd0 --- /dev/null +++ b/game/ui/vendor_window/ItemDragAndDropVendor.gd @@ -0,0 +1,45 @@ +extends Button + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +var item : VendorItemDataEntry + +func set_item(p_item): + item = p_item + +func get_drag_data(pos): + if item == null || item.item: + return null + + var tr = TextureRect.new() + tr.texture = item.item.icon + tr.expand = true + +# tr.rect_size = rect_size + tr.rect_size = Vector2(45, 45) + set_drag_preview(tr) + + var esd = ESDragAndDrop.new() + + esd.type = ESDragAndDrop.ES_DRAG_AND_DROP_TYPE_ITEM + esd.item_path = item.item.resource_path + + return esd diff --git a/game/ui/vendor_window/VendorEntryPopup.gd b/game/ui/vendor_window/VendorEntryPopup.gd new file mode 100644 index 0000000..6e3d64e --- /dev/null +++ b/game/ui/vendor_window/VendorEntryPopup.gd @@ -0,0 +1,54 @@ +extends PopupPanel + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var label_path : NodePath +export(NodePath) var desc_label_path : NodePath +export(NodePath) var quantity_spinbox_path : NodePath + +var _label : Label +var _desc_label : RichTextLabel +var _quantity_spinbox : SpinBox + +var _item : ItemTemplate +var _item_data_entry : VendorItemDataEntry + +func _ready(): + _label = get_node(label_path) as Label + _desc_label = get_node(desc_label_path) as RichTextLabel + _quantity_spinbox = get_node(quantity_spinbox_path) as SpinBox + +func set_item(item_data_entry : VendorItemDataEntry) -> void: + _item_data_entry = item_data_entry + + if _item_data_entry == null: + return + + _item = _item_data_entry.item + + if _item == null: + return + + _label.text = _item.text_name + _desc_label.text = _item.get_description() + _quantity_spinbox.max_value = _item.stack_size + _quantity_spinbox.value = 1 + diff --git a/game/ui/vendor_window/VendorWindow.gd b/game/ui/vendor_window/VendorWindow.gd new file mode 100644 index 0000000..0fec5ca --- /dev/null +++ b/game/ui/vendor_window/VendorWindow.gd @@ -0,0 +1,161 @@ +extends Control + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +export(NodePath) var opener_button_path : NodePath +var opener_button : BaseButton + +export(NodePath) var spell_entry_container_path : NodePath +export(NodePath) var prev_button_path : NodePath +export(NodePath) var next_button_path : NodePath + +export(bool) var show_not_learned : bool = true +export(bool) var show_not_learnable : bool = false + +var _spell_entry_container : Node +var _item_entries : Array + +var _prev_button : Button +var _next_button : Button + +var _player : Entity + +var _page : int = 0 +var _max_pages : int = 0 + +var _vendor_item_data : VendorItemData + +func _ready() -> void: + opener_button = get_node_or_null(opener_button_path) as BaseButton + + _item_entries.clear() + + _spell_entry_container = get_node(spell_entry_container_path) + + for i in range(_spell_entry_container.get_child_count()): + _item_entries.append(_spell_entry_container.get_child(i)) + + _prev_button = get_node(prev_button_path) + _next_button = get_node(next_button_path) + + _prev_button.connect("pressed", self, "dec_page") + _next_button.connect("pressed", self, "inc_page") + + connect("visibility_changed", self, "_visibility_changed") + +func inc_page() -> void: + if _vendor_item_data == null: + return + + _page += 1 + + if _page > _max_pages: + _page = _max_pages + + refresh_entries() + +func dec_page() -> void: + if _vendor_item_data == null: + return + + _page -= 1 + + if _page < 0: + _page = 0 + + refresh_entries() + +func refresh_entries() -> void: + if _player == null || _vendor_item_data == null: + return + + var i : int = 0 + var n : int = 0 +# for n in range(len(_item_entries)): + while n < len(_item_entries): + var spindex : int = i + (_page * len(_item_entries)) + + if spindex >= _vendor_item_data.get_num_vendor_datas(): + _item_entries[n].set_vendor_item(_player, null, 0) + i += 1 + n += 1 + continue + + var vide : VendorItemDataEntry = _vendor_item_data.get_vendor_data(spindex) + + if !vide: + continue + + _item_entries[n].set_vendor_item(_player, vide, spindex) + i += 1 + n += 1 + + +func refresh_all() -> void: + if _player == null: + return + + if _vendor_item_data == null: + return + + _max_pages = int(_vendor_item_data.get_num_vendor_datas() / len(_item_entries)) + + if _page > _max_pages: + _page = _max_pages + + refresh_entries() + + +func _visibility_changed() -> void: + if visible: + if !_player: + return + + var t : Entity = _player.ctarget + + if !t: + return + + _vendor_item_data = t.getc_entity_data().entity_class_data.get_vendor_item_data() + + _page = 0 + refresh_all() + + + +func set_player(p_player: Entity) -> void: + if _player != null: + _player.disconnect("onc_open_winow_request", self, "onc_open_winow_request") + + _player = p_player + + _player.connect("onc_open_winow_request", self, "onc_open_winow_request") + + + +func onc_open_winow_request(window_id : int) -> void: + if window_id != EntityEnums.ENTITY_WINDOW_VENDOR: + return + + show() + +# if player.has_signal("player_moved") && !player.is_connected("player_moved", self, "on_player_moved"): +# player.connect("player_moved", self, "on_player_moved", [], CONNECT_ONESHOT) diff --git a/game/ui/vendor_window/VendorWindow.tscn b/game/ui/vendor_window/VendorWindow.tscn new file mode 100644 index 0000000..887493c --- /dev/null +++ b/game/ui/vendor_window/VendorWindow.tscn @@ -0,0 +1,175 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://ui/vendor_window/ItemContainer.tscn" type="PackedScene" id=1] +[ext_resource path="res://ui/vendor_window/VendorWindow.gd" type="Script" id=4] +[ext_resource path="res://ui/theme/ui_theme.tres" type="Theme" id=5] + +[node name="VendorWindow" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +theme = ExtResource( 5 ) +script = ExtResource( 4 ) +__meta__ = { +"_edit_use_anchors_": false +} +spell_entry_container_path = NodePath("PanelContainer/PagedContent/GridContainer") +prev_button_path = NodePath("PanelContainer/PagedContent/Controls/HBoxContainer/Button2") +next_button_path = NodePath("PanelContainer/PagedContent/Controls/HBoxContainer/Button") +show_not_learned = false + +[node name="PanelContainer" type="PanelContainer" parent="."] +margin_left = 64.0 +margin_top = 39.0 +margin_right = 580.0 +margin_bottom = 507.0 + +[node name="PagedContent" type="VBoxContainer" parent="PanelContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 512.0 +margin_bottom = 464.0 + +[node name="Header" type="HBoxContainer" parent="PanelContainer/PagedContent"] +margin_right = 508.0 +margin_bottom = 30.0 + +[node name="Label" type="Label" parent="PanelContainer/PagedContent/Header"] +margin_top = 7.0 +margin_right = 36.0 +margin_bottom = 22.0 +text = "Vendor" + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/PagedContent/Header"] +margin_left = 40.0 +margin_right = 464.0 +margin_bottom = 30.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +alignment = 1 + +[node name="Button" type="Button" parent="PanelContainer/PagedContent/Header"] +margin_left = 468.0 +margin_right = 508.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 40, 30 ) +text = "X" + +[node name="GridContainer" type="GridContainer" parent="PanelContainer/PagedContent"] +margin_top = 38.0 +margin_right = 508.0 +margin_bottom = 422.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +columns = 2 + +[node name="ItemContainer" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 1 )] +margin_left = 0.0 +margin_top = 0.0 +margin_right = 252.0 +margin_bottom = 60.0 + +[node name="ItemContainer2" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 1 )] +margin_left = 256.0 +margin_top = 0.0 +margin_right = 508.0 +margin_bottom = 60.0 + +[node name="ItemContainer3" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 1 )] +margin_left = 0.0 +margin_top = 64.0 +margin_right = 252.0 +margin_bottom = 124.0 + +[node name="ItemContainer4" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 1 )] +margin_left = 256.0 +margin_top = 64.0 +margin_right = 508.0 +margin_bottom = 124.0 + +[node name="ItemContainer5" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 1 )] +margin_left = 0.0 +margin_top = 128.0 +margin_right = 252.0 +margin_bottom = 188.0 + +[node name="ItemContainer6" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 1 )] +margin_left = 256.0 +margin_top = 128.0 +margin_right = 508.0 +margin_bottom = 188.0 + +[node name="ItemContainer7" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 1 )] +margin_left = 0.0 +margin_top = 192.0 +margin_right = 252.0 +margin_bottom = 252.0 + +[node name="ItemContainer8" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 1 )] +margin_left = 256.0 +margin_top = 192.0 +margin_right = 508.0 +margin_bottom = 252.0 + +[node name="ItemContainer9" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 1 )] +margin_left = 0.0 +margin_top = 256.0 +margin_right = 252.0 +margin_bottom = 316.0 + +[node name="ItemContainer10" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 1 )] +margin_left = 256.0 +margin_top = 256.0 +margin_right = 508.0 +margin_bottom = 316.0 + +[node name="ItemContainer11" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 1 )] +margin_left = 0.0 +margin_top = 320.0 +margin_right = 252.0 +margin_bottom = 380.0 + +[node name="ItemContainer12" parent="PanelContainer/PagedContent/GridContainer" instance=ExtResource( 1 )] +margin_left = 256.0 +margin_top = 320.0 +margin_right = 508.0 +margin_bottom = 380.0 + +[node name="Controls" type="MarginContainer" parent="PanelContainer/PagedContent"] +margin_top = 430.0 +margin_right = 508.0 +margin_bottom = 460.0 +custom_constants/margin_right = 2 +custom_constants/margin_top = 2 +custom_constants/margin_left = 2 +custom_constants/margin_bottom = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/PagedContent/Controls"] +margin_left = 2.0 +margin_top = 2.0 +margin_right = 506.0 +margin_bottom = 28.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Button2" type="Button" parent="PanelContainer/PagedContent/Controls/HBoxContainer"] +margin_right = 165.0 +margin_bottom = 26.5702 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "< Previous page" + +[node name="Spacer" type="Control" parent="PanelContainer/PagedContent/Controls/HBoxContainer"] +margin_left = 169.0 +margin_right = 334.0 +margin_bottom = 26.0 +size_flags_horizontal = 3 + +[node name="Button" type="Button" parent="PanelContainer/PagedContent/Controls/HBoxContainer"] +margin_left = 338.0 +margin_right = 504.0 +margin_bottom = 26.5702 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Next page >" +[connection signal="pressed" from="PanelContainer/PagedContent/Header/Button" to="." method="hide"] diff --git a/game/ui/vendor_window/game_module.tres b/game/ui/vendor_window/game_module.tres new file mode 100644 index 0000000..df5688e --- /dev/null +++ b/game/ui/vendor_window/game_module.tres @@ -0,0 +1,11 @@ +[gd_resource type="Resource" load_steps=3 format=2] + +[ext_resource path="res://ui/vendor_window/VendorWindow.tscn" type="PackedScene" id=1] +[ext_resource path="res://scripts/game_modules/ui_window_module.gd" type="Script" id=2] + +[resource] +script = ExtResource( 2 ) +enabled = true +scene = ExtResource( 1 ) +index = -1 +add_button = false diff --git a/game/ui/world_numbers_2d/Number.gd b/game/ui/world_numbers_2d/Number.gd new file mode 100644 index 0000000..4ce16a8 --- /dev/null +++ b/game/ui/world_numbers_2d/Number.gd @@ -0,0 +1,65 @@ +extends Label + +# Copyright (c) 2019 Péter Magyar +# +# 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. + +export(NodePath) var animation_player_path : NodePath = "AnimationPlayer" + +export(Color) var damage_color : Color = Color.yellow +export(Color) var heal_color : Color = Color.green + +var world_position : Vector2 = Vector2() +var animation_player : AnimationPlayer = null + +func _ready() -> void: + animation_player = get_node(animation_player_path) as AnimationPlayer + + animation_player.connect("animation_finished", self, "animation_finished") + + set_process(false) + +func _process(delta): + + var new_pos : Vector2 = Vector2(world_position.x + rect_position.x / 2.0 - 8, world_position.y + rect_position.y) + + set_position(new_pos) + + +func damage(pos : Vector2, value : int, crit : bool) -> void: + setup(pos, damage_color, value, crit) + +func heal(pos : Vector2, value : int, crit : bool) -> void: + setup(pos, heal_color, value, crit) + +func setup(pos : Vector2, color : Color, value : int, crit : bool) -> void: + world_position = pos + + text = str(value) + add_color_override("font_color", color) + + if crit: + animation_player.play("crit") + else: + animation_player.play("normal") + + set_process(true) + +func animation_finished(anim_name : String) -> void: + queue_free() diff --git a/game/ui/world_numbers_2d/Number.tscn b/game/ui/world_numbers_2d/Number.tscn new file mode 100644 index 0000000..f93c25c --- /dev/null +++ b/game/ui/world_numbers_2d/Number.tscn @@ -0,0 +1,94 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://ui/world_numbers_2d/Number.gd" type="Script" id=1] +[ext_resource path="res://ui/world_numbers_2d/number_font.tres" type="DynamicFont" id=2] + + +[sub_resource type="Animation" id=1] +resource_name = "crit" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath(".:rect_scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.05, 0.3, 1.5 ), +"transitions": PoolRealArray( 1, 0.307786, 1, 1.36604 ), +"update": 0, +"values": [ Vector2( 0.1, 0.1 ), Vector2( 1.5, 1.5 ), Vector2( 1.3, 1.3 ), Vector2( 1.3, 1.3 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:rect_position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.6, 1.5 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -50, 20 ), Vector2( -50, 20 ), Vector2( -50, 10 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 1.2, 1.5 ), +"transitions": PoolRealArray( 1, 1, 4 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] +} + +[sub_resource type="Animation" id=2] +resource_name = "normal" +length = 2.0 +tracks/0/type = "value" +tracks/0/path = NodePath(".:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -50, 20 ), Vector2( -50, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 4 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] +} + +[node name="Number" type="Label"] +modulate = Color( 1, 1, 1, 0 ) +margin_left = -50.0 +margin_top = 10.0 +margin_right = 50.0 +margin_bottom = 50.0006 +rect_scale = Vector2( 1.3, 1.3 ) +rect_pivot_offset = Vector2( 50, 20 ) +custom_fonts/font = ExtResource( 2 ) +custom_colors/font_color = Color( 0.870588, 0.898039, 0.0117647, 1 ) +align = 1 +valign = 1 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/crit = SubResource( 1 ) +anims/normal = SubResource( 2 ) diff --git a/game/ui/world_numbers_2d/WorldNumbers.gd b/game/ui/world_numbers_2d/WorldNumbers.gd new file mode 100644 index 0000000..bb6ac02 --- /dev/null +++ b/game/ui/world_numbers_2d/WorldNumbers.gd @@ -0,0 +1,53 @@ +extends Node + +# Copyright (c) 2019 Péter Magyar +# +# 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. + +export(PackedScene) var number_scene + +func damage(entity_position : Vector2, entity_height : float, value : int, crit : bool) -> void: + var scene : Node = number_scene.instance() + + add_child(scene) + scene.owner = self + + randomize() + entity_position.y -= entity_height + (0.2 * randf()) + entity_position.x += entity_height * 0.4 - entity_height * 0.8 * randf() + + scene.damage(entity_position, value, crit) + +func heal(entity_position : Vector2, entity_height : float, value : int, crit : bool) -> void: + var scene : Node = number_scene.instance() + + add_child(scene) + scene.owner = self + + randomize() + + #entity_position.y += entity_height + (0.3 * randf()) + #entity_position.x += entity_height * 0.4 - entity_height * 0.8 * randf() + + + scene.heal(entity_position, value, crit) + +func clear() -> void: + for child in get_children(): + child.queue_free() diff --git a/game/ui/world_numbers_2d/WorldNumbers.tscn b/game/ui/world_numbers_2d/WorldNumbers.tscn new file mode 100644 index 0000000..4fe4581 --- /dev/null +++ b/game/ui/world_numbers_2d/WorldNumbers.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/world_numbers_2d/WorldNumbers.gd" type="Script" id=1] +[ext_resource path="res://ui/world_numbers_2d/Number.tscn" type="PackedScene" id=2] + +[node name="WorldNumbers" type="Node"] +script = ExtResource( 1 ) +number_scene = ExtResource( 2 ) diff --git a/game/ui/world_numbers_2d/number_font.tres b/game/ui/world_numbers_2d/number_font.tres new file mode 100644 index 0000000..de5e337 --- /dev/null +++ b/game/ui/world_numbers_2d/number_font.tres @@ -0,0 +1,7 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://fonts/VT323-Regular.ttf" type="DynamicFontData" id=1] + +[resource] +size = 12 +font_data = ExtResource( 1 ) diff --git a/game/world/WorldLayer.gd b/game/world/WorldLayer.gd new file mode 100644 index 0000000..64a04bc --- /dev/null +++ b/game/world/WorldLayer.gd @@ -0,0 +1,31 @@ +extends Navigation2D + +# Copyright (c) 2019 Péter Magyar +# +# 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. + +var collision_layer : int + +func add_entity(entity : Entity) -> void: + entity.owner = self + entity.collision_layer = collision_layer + + +func get_collision_layer() -> int: + return collision_layer diff --git a/game/world/WorldLayer.tscn b/game/world/WorldLayer.tscn new file mode 100644 index 0000000..a590613 --- /dev/null +++ b/game/world/WorldLayer.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://tilesets/tileset.tres" type="TileSet" id=1] +[ext_resource path="res://world/WorldLayer.gd" type="Script" id=2] + + +[node name="WorldLayer" type="Navigation2D"] +script = ExtResource( 2 ) + +[node name="Terrarin" type="TileMap" parent="."] +tile_set = ExtResource( 1 ) +cell_size = Vector2( 32, 32 ) +format = 1 +tile_data = PoolIntArray( -1572897, 0, 0, -1572896, 0, 0, -1572895, 0, 0, -1572894, 0, 0, -1572893, 0, 0, -1572892, 0, 0, -1572891, 0, 0, -1572890, 0, 0, -1572889, 0, 0, -1572888, 0, 0, -1572887, 0, 0, -1572886, 0, 0, -1572885, 0, 0, -1572884, 0, 0, -1572883, 0, 0, -1572882, 0, 0, -1572881, 0, 0, -1572880, 0, 0, -1572879, 0, 0, -1572878, 0, 0, -1572877, 0, 0, -1572876, 0, 0, -1572875, 0, 0, -1572874, 0, 0, -1572873, 0, 0, -1572872, 0, 0, -1572871, 0, 0, -1572870, 0, 0, -1572869, 0, 0, -1572868, 0, 0, -1572867, 0, 0, -1572866, 0, 0, -1572865, 0, 0, -1638400, 0, 0, -1638399, 0, 0, -1507362, 0, 0, -1507361, 0, 0, -1507360, 0, 0, -1507359, 0, 0, -1507358, 0, 0, -1507357, 0, 0, -1507356, 0, 0, -1507355, 0, 0, -1507354, 0, 0, -1507353, 0, 0, -1507352, 0, 0, -1507351, 0, 0, -1507350, 0, 0, -1507349, 0, 0, -1507348, 0, 0, -1507347, 0, 0, -1507346, 0, 0, -1507345, 0, 0, -1507344, 0, 0, -1507343, 0, 0, -1507342, 0, 0, -1507341, 0, 0, -1507340, 0, 0, -1507339, 0, 0, -1507338, 0, 0, -1507337, 0, 0, -1507336, 0, 0, -1507335, 0, 0, -1507334, 0, 0, -1507333, 0, 0, -1507332, 0, 0, -1507331, 0, 0, -1507330, 0, 0, -1507329, 0, 0, -1572864, 0, 0, -1572863, 0, 0, -1572862, 0, 0, -1572861, 0, 0, -1572860, 0, 0, -1572859, 0, 0, -1572858, 0, 0, -1572857, 0, 0, -1572856, 0, 0, -1572855, 0, 0, -1572820, 0, 0, -1441826, 0, 0, -1441825, 0, 0, -1441824, 0, 0, -1441823, 0, 0, -1441822, 0, 0, -1441821, 0, 0, -1441820, 0, 0, -1441819, 0, 0, -1441818, 0, 0, -1441817, 0, 0, -1441816, 0, 0, -1441815, 0, 0, -1441814, 0, 0, -1441813, 0, 0, -1441812, 0, 0, -1441811, 0, 0, -1441810, 0, 0, -1441809, 0, 0, -1441808, 0, 0, -1441807, 0, 0, -1441806, 0, 0, -1441805, 0, 0, -1441804, 0, 0, -1441803, 0, 0, -1441802, 0, 0, -1441801, 0, 0, -1441800, 0, 0, -1441799, 0, 0, -1441798, 0, 0, -1441797, 0, 0, -1441796, 0, 0, -1441795, 0, 0, -1441794, 0, 0, -1441793, 0, 0, -1507328, 0, 0, -1507327, 0, 0, -1507326, 0, 0, -1507325, 0, 0, -1507324, 0, 0, -1507323, 0, 0, -1507322, 0, 0, -1507321, 0, 0, -1507320, 0, 0, -1507319, 0, 0, -1507318, 0, 0, -1507317, 0, 0, -1507316, 0, 0, -1507315, 0, 0, -1507314, 0, 0, -1507313, 0, 0, -1507312, 0, 0, -1507311, 0, 0, -1507310, 0, 0, -1507309, 0, 0, -1507308, 0, 0, -1507307, 0, 0, -1507306, 0, 0, -1507305, 0, 0, -1507304, 0, 0, -1507303, 0, 0, -1507284, 0, 0, -1507272, 0, 0, -1507271, 0, 0, -1507270, 0, 0, -1507269, 0, 0, -1507268, 0, 0, -1376291, 0, 0, -1376290, 0, 0, -1376289, 0, 0, -1376288, 0, 0, -1376287, 0, 0, -1376286, 0, 0, -1376285, 0, 0, -1376284, 0, 0, -1376283, 0, 0, -1376282, 0, 0, -1376281, 0, 0, -1376280, 0, 0, -1376279, 0, 0, -1376278, 0, 0, -1376277, 0, 0, -1376276, 0, 0, -1376275, 0, 0, -1376274, 0, 0, -1376273, 0, 0, -1376272, 0, 0, -1376271, 0, 0, -1376270, 0, 0, -1376269, 0, 0, -1376268, 0, 0, -1376267, 0, 0, -1376266, 0, 0, -1376265, 0, 0, -1376264, 0, 0, -1376263, 0, 0, -1376262, 0, 0, -1376261, 0, 0, -1376260, 0, 0, -1376259, 0, 0, -1376258, 0, 0, -1376257, 0, 0, -1441792, 0, 0, -1441791, 0, 0, -1441790, 0, 0, -1441789, 0, 0, -1441788, 0, 0, -1441787, 0, 0, -1441786, 0, 0, -1441785, 0, 0, -1441784, 0, 0, -1441783, 0, 0, -1441782, 0, 0, -1441781, 0, 0, -1441780, 0, 0, -1441779, 0, 0, -1441778, 0, 0, -1441777, 0, 0, -1441776, 0, 0, -1441775, 0, 0, -1441774, 0, 0, -1441773, 0, 0, -1441772, 0, 0, -1441771, 0, 0, -1441770, 0, 0, -1441769, 0, 0, -1441768, 0, 0, -1441767, 0, 0, -1441766, 0, 0, -1441765, 0, 0, -1441764, 0, 0, -1441763, 0, 0, -1441762, 0, 0, -1441761, 0, 0, -1441760, 0, 0, -1441759, 0, 0, -1441758, 0, 0, -1441757, 0, 0, -1441756, 0, 0, -1441755, 0, 0, -1441754, 0, 0, -1441753, 0, 0, -1441752, 0, 0, -1441751, 0, 0, -1441750, 0, 0, -1441749, 0, 0, -1441748, 0, 0, -1441747, 0, 0, -1441746, 0, 0, -1441745, 0, 0, -1441744, 0, 0, -1441743, 0, 0, -1441742, 0, 0, -1441741, 0, 0, -1441740, 0, 0, -1441739, 0, 0, -1441738, 0, 0, -1441737, 0, 0, -1441736, 0, 0, -1441735, 0, 0, -1441734, 0, 0, -1441733, 0, 0, -1310755, 0, 0, -1310754, 0, 0, -1310753, 0, 0, -1310752, 0, 0, -1310751, 0, 0, -1310750, 0, 0, -1310749, 0, 0, -1310748, 0, 0, -1310747, 0, 0, -1310746, 0, 0, -1310745, 0, 0, -1310744, 0, 0, -1310743, 0, 0, -1310742, 0, 0, -1310741, 0, 0, -1310740, 0, 0, -1310739, 0, 0, -1310738, 0, 0, -1310737, 0, 0, -1310736, 0, 0, -1310735, 0, 0, -1310734, 0, 0, -1310733, 0, 0, -1310732, 0, 0, -1310731, 0, 0, -1310730, 0, 0, -1310729, 0, 0, -1310728, 0, 0, -1310727, 0, 0, -1310726, 0, 0, -1310725, 0, 0, -1310724, 0, 0, -1310723, 0, 0, -1310722, 0, 0, -1310721, 0, 0, -1376256, 0, 0, -1376255, 0, 0, -1376254, 0, 0, -1376253, 0, 0, -1376252, 0, 0, -1376251, 0, 0, -1376250, 0, 0, -1376249, 0, 0, -1376248, 0, 0, -1376247, 0, 0, -1376246, 0, 0, -1376245, 0, 0, -1376244, 0, 0, -1376243, 0, 0, -1376242, 0, 0, -1376241, 0, 0, -1376240, 0, 0, -1376239, 0, 0, -1376238, 0, 0, -1376237, 0, 0, -1376236, 0, 0, -1376235, 0, 0, -1376234, 0, 0, -1376233, 0, 0, -1376232, 0, 0, -1376231, 0, 0, -1376230, 0, 0, -1376229, 0, 0, -1376228, 0, 0, -1376227, 0, 0, -1376226, 0, 0, -1376225, 0, 0, -1376224, 0, 0, -1376223, 0, 0, -1376222, 0, 0, -1376221, 0, 0, -1376220, 0, 0, -1376219, 0, 0, -1376218, 0, 0, -1376217, 0, 0, -1376216, 0, 0, -1376215, 0, 0, -1376214, 0, 0, -1376213, 0, 0, -1376212, 0, 0, -1376211, 0, 0, -1376210, 0, 0, -1376209, 0, 0, -1376208, 0, 0, -1376207, 0, 0, -1376206, 0, 0, -1376205, 0, 0, -1376204, 0, 0, -1376203, 0, 0, -1376202, 0, 0, -1376201, 0, 0, -1376200, 0, 0, -1376199, 0, 0, -1376198, 0, 0, -1376197, 0, 0, -1245219, 0, 0, -1245218, 0, 0, -1245217, 0, 0, -1245216, 0, 0, -1245215, 0, 0, -1245214, 0, 0, -1245213, 0, 0, -1245212, 0, 0, -1245211, 0, 0, -1245210, 0, 0, -1245209, 0, 0, -1245208, 0, 0, -1245207, 0, 0, -1245206, 0, 0, -1245205, 0, 0, -1245204, 0, 0, -1245203, 0, 0, -1245202, 0, 0, -1245201, 0, 0, -1245200, 0, 0, -1245199, 0, 0, -1245198, 0, 0, -1245197, 0, 0, -1245196, 0, 0, -1245195, 0, 0, -1245194, 0, 0, -1245193, 0, 0, -1245192, 0, 0, -1245191, 0, 0, -1245190, 0, 0, -1245189, 0, 0, -1245188, 0, 0, -1245187, 0, 0, -1245186, 0, 0, -1245185, 0, 0, -1310720, 0, 0, -1310719, 0, 0, -1310718, 0, 0, -1310717, 0, 0, -1310716, 0, 0, -1310715, 0, 0, -1310714, 0, 0, -1310713, 0, 0, -1310712, 0, 0, -1310711, 0, 0, -1310710, 0, 0, -1310709, 0, 0, -1310708, 0, 0, -1310707, 0, 0, -1310706, 0, 0, -1310705, 0, 0, -1310704, 0, 0, -1310703, 0, 0, -1310702, 0, 0, -1310701, 0, 0, -1310700, 0, 0, -1310699, 0, 0, -1310698, 0, 0, -1310697, 0, 0, -1310696, 0, 0, -1310695, 0, 0, -1310694, 0, 0, -1310693, 0, 0, -1310692, 0, 0, -1310691, 0, 0, -1310690, 0, 0, -1310689, 0, 0, -1310688, 0, 0, -1310687, 0, 0, -1310686, 0, 0, -1310685, 0, 0, -1310684, 0, 0, -1310683, 0, 0, -1310682, 0, 0, -1310681, 0, 0, -1310680, 0, 0, -1310679, 0, 0, -1310678, 0, 0, -1310677, 0, 0, -1310676, 0, 0, -1310675, 0, 0, -1310674, 0, 0, -1310673, 0, 0, -1310672, 0, 0, -1310671, 0, 0, -1310670, 0, 0, -1310669, 0, 0, -1310668, 0, 0, -1310667, 0, 0, -1310666, 0, 0, -1310665, 0, 0, -1310664, 0, 0, -1310663, 0, 0, -1310662, 0, 0, -1310661, 0, 0, -1179683, 0, 0, -1179682, 0, 0, -1179681, 0, 0, -1179680, 0, 0, -1179679, 0, 0, -1179678, 0, 0, -1179677, 0, 0, -1179676, 0, 0, -1179675, 0, 0, -1179674, 0, 0, -1179673, 0, 0, -1179672, 0, 0, -1179671, 0, 0, -1179670, 0, 0, -1179669, 0, 0, -1179668, 0, 0, -1179667, 0, 0, -1179666, 0, 0, -1179665, 0, 0, -1179664, 0, 0, -1179663, 0, 0, -1179662, 0, 0, -1179661, 0, 0, -1179660, 0, 0, -1179659, 0, 0, -1179658, 0, 0, -1179657, 0, 0, -1179656, 0, 0, -1179655, 0, 0, -1179654, 0, 0, -1179653, 0, 0, -1179652, 0, 0, -1179651, 0, 0, -1179650, 0, 0, -1179649, 0, 0, -1245184, 0, 0, -1245183, 0, 0, -1245182, 0, 0, -1245181, 0, 0, -1245180, 0, 0, -1245179, 0, 0, -1245178, 0, 0, -1245177, 0, 0, -1245176, 0, 0, -1245175, 0, 0, -1245174, 0, 0, -1245173, 0, 0, -1245172, 0, 0, -1245171, 0, 0, -1245170, 0, 0, -1245169, 0, 0, -1245168, 0, 0, -1245167, 0, 0, -1245166, 0, 0, -1245165, 0, 0, -1245164, 0, 0, -1245163, 0, 0, -1245162, 0, 0, -1245161, 0, 0, -1245160, 0, 0, -1245159, 0, 0, -1245158, 0, 0, -1245157, 0, 0, -1245156, 0, 0, -1245155, 0, 0, -1245154, 0, 0, -1245153, 0, 0, -1245152, 0, 0, -1245151, 0, 0, -1245150, 0, 0, -1245149, 0, 0, -1245148, 0, 0, -1245147, 0, 0, -1245146, 0, 0, -1245145, 0, 0, -1245144, 0, 0, -1245143, 0, 0, -1245142, 0, 0, -1245141, 0, 0, -1245140, 0, 0, -1245139, 0, 0, -1245138, 0, 0, -1245137, 0, 0, -1245136, 0, 0, -1245135, 0, 0, -1245134, 0, 0, -1245133, 0, 0, -1245132, 0, 0, -1245131, 0, 0, -1245130, 0, 0, -1245129, 0, 0, -1245128, 0, 0, -1245127, 0, 0, -1245126, 0, 0, -1114148, 0, 0, -1114147, 0, 0, -1114146, 0, 0, -1114145, 0, 0, -1114144, 0, 0, -1114143, 0, 0, -1114142, 0, 0, -1114141, 0, 0, -1114140, 0, 0, -1114139, 0, 0, -1114138, 0, 0, -1114137, 0, 0, -1114136, 0, 0, -1114135, 0, 0, -1114134, 0, 0, -1114133, 0, 0, -1114132, 0, 0, -1114131, 0, 0, -1114130, 0, 0, -1114129, 0, 0, -1114128, 0, 0, -1114127, 0, 0, -1114126, 0, 0, -1114125, 0, 0, -1114124, 0, 0, -1114123, 0, 0, -1114122, 0, 0, -1114121, 0, 0, -1114120, 0, 0, -1114119, 0, 0, -1114118, 0, 0, -1114117, 0, 0, -1114116, 0, 0, -1114115, 0, 0, -1114114, 0, 0, -1114113, 0, 0, -1179648, 0, 0, -1179647, 0, 0, -1179646, 0, 0, -1179645, 0, 0, -1179644, 0, 0, -1179643, 0, 0, -1179642, 0, 0, -1179641, 0, 0, -1179640, 0, 0, -1179639, 0, 0, -1179638, 2, 0, -1179637, 2, 0, -1179636, 0, 0, -1179635, 0, 0, -1179634, 0, 0, -1179633, 0, 0, -1179632, 0, 0, -1179631, 2, 0, -1179630, 2, 0, -1179629, 0, 0, -1179628, 0, 0, -1179627, 0, 0, -1179626, 0, 0, -1179625, 0, 0, -1179624, 0, 0, -1179623, 0, 0, -1179622, 0, 0, -1179621, 0, 0, -1179620, 0, 0, -1179619, 0, 0, -1179618, 0, 0, -1179617, 0, 0, -1179616, 0, 0, -1179615, 0, 0, -1179614, 0, 0, -1179613, 0, 0, -1179612, 0, 0, -1179611, 0, 0, -1179610, 0, 0, -1179609, 0, 0, -1179608, 0, 0, -1179607, 0, 0, -1179606, 0, 0, -1179605, 0, 0, -1179604, 0, 0, -1179603, 0, 0, -1179602, 0, 0, -1179601, 0, 0, -1179600, 0, 0, -1179599, 0, 0, -1179598, 0, 0, -1179597, 0, 0, -1179596, 0, 0, -1179595, 0, 0, -1179594, 0, 0, -1179593, 0, 0, -1179592, 0, 0, -1179591, 0, 0, -1048612, 0, 0, -1048611, 0, 0, -1048610, 0, 0, -1048609, 0, 0, -1048608, 0, 0, -1048607, 0, 0, -1048606, 0, 0, -1048605, 0, 0, -1048604, 0, 0, -1048603, 0, 0, -1048602, 0, 0, -1048601, 0, 0, -1048600, 0, 0, -1048599, 0, 0, -1048598, 0, 0, -1048597, 0, 0, -1048596, 0, 0, -1048595, 0, 0, -1048594, 0, 0, -1048593, 0, 0, -1048592, 0, 0, -1048591, 0, 0, -1048590, 0, 0, -1048589, 0, 0, -1048588, 0, 0, -1048587, 0, 0, -1048586, 0, 0, -1048585, 0, 0, -1048584, 0, 0, -1048583, 0, 0, -1048582, 0, 0, -1048581, 0, 0, -1048580, 0, 0, -1048579, 0, 0, -1048578, 0, 0, -1048577, 0, 0, -1114112, 0, 0, -1114111, 0, 0, -1114110, 0, 0, -1114109, 0, 0, -1114108, 0, 0, -1114107, 0, 0, -1114106, 0, 0, -1114105, 0, 0, -1114104, 0, 0, -1114103, 0, 0, -1114102, 2, 0, -1114101, 0, 0, -1114100, 0, 0, -1114099, 0, 0, -1114098, 0, 0, -1114097, 0, 0, -1114096, 0, 0, -1114095, 0, 0, -1114094, 0, 0, -1114093, 0, 0, -1114092, 2, 0, -1114091, 2, 0, -1114090, 2, 0, -1114089, 0, 0, -1114088, 0, 0, -1114087, 0, 0, -1114086, 0, 0, -1114085, 0, 0, -1114084, 0, 0, -1114083, 0, 0, -1114082, 0, 0, -1114081, 0, 0, -1114080, 0, 0, -1114079, 0, 0, -1114078, 0, 0, -1114077, 0, 0, -1114076, 0, 0, -1114075, 0, 0, -1114074, 0, 0, -1114073, 0, 0, -1114072, 0, 0, -1114071, 0, 0, -1114070, 0, 0, -1114069, 0, 0, -1114068, 0, 0, -1114067, 0, 0, -1114066, 0, 0, -1114065, 0, 0, -1114064, 0, 0, -1114063, 0, 0, -1114062, 0, 0, -1114061, 0, 0, -1114060, 0, 0, -1114059, 0, 0, -1114058, 0, 0, -1114057, 0, 0, -1114056, 0, 0, -1114055, 0, 0, -983076, 0, 0, -983075, 0, 0, -983074, 0, 0, -983073, 0, 0, -983072, 0, 0, -983071, 0, 0, -983070, 0, 0, -983069, 0, 0, -983068, 0, 0, -983067, 0, 0, -983066, 0, 0, -983065, 0, 0, -983064, 0, 0, -983063, 0, 0, -983062, 0, 0, -983061, 0, 0, -983060, 0, 0, -983059, 0, 0, -983058, 0, 0, -983057, 0, 0, -983056, 0, 0, -983055, 0, 0, -983054, 0, 0, -983053, 0, 0, -983052, 0, 0, -983051, 0, 0, -983050, 0, 0, -983049, 0, 0, -983048, 0, 0, -983047, 0, 0, -983046, 0, 0, -983045, 0, 0, -983044, 0, 0, -983043, 0, 0, -983042, 0, 0, -983041, 0, 0, -1048576, 0, 0, -1048575, 0, 0, -1048574, 0, 0, -1048573, 0, 0, -1048572, 0, 0, -1048571, 0, 0, -1048570, 0, 0, -1048569, 0, 0, -1048568, 0, 0, -1048567, 0, 0, -1048566, 2, 0, -1048565, 0, 0, -1048564, 0, 0, -1048563, 0, 0, -1048562, 0, 0, -1048561, 0, 0, -1048560, 0, 0, -1048559, 0, 0, -1048558, 2, 0, -1048557, 2, 0, -1048556, 2, 0, -1048555, 2, 0, -1048554, 2, 0, -1048553, 0, 0, -1048552, 0, 0, -1048551, 0, 0, -1048550, 0, 0, -1048549, 0, 0, -1048548, 0, 0, -1048547, 0, 0, -1048546, 0, 0, -1048545, 0, 0, -1048544, 0, 0, -1048543, 0, 0, -1048542, 0, 0, -1048541, 0, 0, -1048540, 0, 0, -1048539, 0, 0, -1048538, 0, 0, -1048537, 0, 0, -1048536, 0, 0, -1048535, 0, 0, -1048534, 0, 0, -1048533, 0, 0, -1048532, 0, 0, -1048531, 0, 0, -1048530, 0, 0, -1048529, 0, 0, -1048528, 0, 0, -1048527, 0, 0, -1048526, 0, 0, -1048525, 0, 0, -1048524, 0, 0, -1048523, 0, 0, -1048522, 0, 0, -1048521, 0, 0, -1048520, 0, 0, -1048519, 0, 0, -917540, 0, 0, -917539, 0, 0, -917538, 0, 0, -917537, 0, 0, -917536, 0, 0, -917535, 0, 0, -917534, 0, 0, -917533, 0, 0, -917532, 0, 0, -917531, 0, 0, -917530, 0, 0, -917529, 0, 0, -917528, 0, 0, -917527, 0, 0, -917526, 0, 0, -917525, 0, 0, -917524, 0, 0, -917523, 0, 0, -917522, 0, 0, -917521, 0, 0, -917520, 0, 0, -917519, 0, 0, -917518, 0, 0, -917517, 0, 0, -917516, 0, 0, -917515, 0, 0, -917514, 0, 0, -917513, 0, 0, -917512, 0, 0, -917511, 0, 0, -917510, 0, 0, -917509, 0, 0, -917508, 0, 0, -917507, 0, 0, -917506, 0, 0, -917505, 0, 0, -983040, 0, 0, -983039, 0, 0, -983038, 0, 0, -983037, 0, 0, -983036, 0, 0, -983035, 0, 0, -983034, 0, 0, -983033, 0, 0, -983032, 0, 0, -983031, 0, 0, -983030, 0, 0, -983029, 0, 0, -983028, 0, 0, -983027, 0, 0, -983026, 0, 0, -983025, 0, 0, -983024, 0, 0, -983023, 0, 0, -983022, 2, 0, -983021, 1, 0, -983020, 1, 0, -983019, 2, 0, -983018, 2, 0, -983017, 0, 0, -983016, 0, 0, -983015, 0, 0, -983014, 0, 0, -983013, 0, 0, -983012, 0, 0, -983011, 0, 0, -983010, 0, 0, -983009, 0, 0, -983008, 0, 0, -983007, 0, 0, -983006, 0, 0, -983005, 0, 0, -983004, 0, 0, -983003, 0, 0, -983002, 0, 0, -983001, 0, 0, -983000, 0, 0, -982999, 0, 0, -982998, 0, 0, -982997, 0, 0, -982996, 0, 0, -982995, 0, 0, -982994, 0, 0, -982993, 0, 0, -982992, 0, 0, -982991, 0, 0, -982990, 0, 0, -982989, 0, 0, -982988, 0, 0, -982987, 0, 0, -982986, 0, 0, -982985, 0, 0, -982984, 0, 0, -982983, 0, 0, -852004, 0, 0, -852003, 0, 0, -852002, 0, 0, -852001, 0, 0, -852000, 0, 0, -851999, 0, 0, -851998, 0, 0, -851997, 0, 0, -851996, 0, 0, -851995, 0, 0, -851994, 0, 0, -851993, 0, 0, -851992, 0, 0, -851991, 0, 0, -851990, 0, 0, -851989, 0, 0, -851988, 0, 0, -851987, 0, 0, -851986, 0, 0, -851985, 0, 0, -851984, 0, 0, -851983, 0, 0, -851982, 0, 0, -851981, 0, 0, -851980, 0, 0, -851979, 0, 0, -851978, 0, 0, -851977, 0, 0, -851976, 0, 0, -851975, 0, 0, -851974, 0, 0, -851973, 0, 0, -851972, 0, 0, -851971, 0, 0, -851970, 0, 0, -851969, 0, 0, -917504, 0, 0, -917503, 0, 0, -917502, 0, 0, -917501, 0, 0, -917500, 0, 0, -917499, 0, 0, -917498, 0, 0, -917497, 0, 0, -917496, 0, 0, -917495, 0, 0, -917494, 0, 0, -917493, 0, 0, -917492, 0, 0, -917491, 0, 0, -917490, 0, 0, -917489, 2, 0, -917488, 2, 0, -917487, 2, 0, -917486, 2, 0, -917485, 1, 0, -917484, 1, 0, -917483, 2, 0, -917482, 2, 0, -917481, 0, 0, -917480, 2, 0, -917479, 0, 0, -917478, 0, 0, -917477, 0, 0, -917476, 0, 0, -917475, 0, 0, -917474, 0, 0, -917473, 0, 0, -917472, 0, 0, -917471, 0, 0, -917470, 0, 0, -917469, 0, 0, -917468, 0, 0, -917467, 0, 0, -917466, 0, 0, -917465, 0, 0, -917464, 0, 0, -917463, 0, 0, -917462, 0, 0, -917461, 0, 0, -917460, 0, 0, -917459, 0, 0, -917458, 0, 0, -917457, 0, 0, -917456, 0, 0, -917455, 0, 0, -917454, 0, 0, -917453, 0, 0, -917452, 0, 0, -917451, 0, 0, -917450, 0, 0, -917449, 0, 0, -917448, 0, 0, -917447, 0, 0, -786468, 0, 0, -786467, 0, 0, -786466, 0, 0, -786465, 0, 0, -786464, 0, 0, -786463, 0, 0, -786462, 0, 0, -786461, 0, 0, -786460, 0, 0, -786459, 0, 0, -786458, 0, 0, -786457, 0, 0, -786456, 0, 0, -786455, 0, 0, -786454, 0, 0, -786453, 0, 0, -786452, 0, 0, -786451, 0, 0, -786450, 0, 0, -786449, 0, 0, -786448, 0, 0, -786447, 0, 0, -786446, 0, 0, -786445, 0, 0, -786444, 0, 0, -786443, 0, 0, -786442, 0, 0, -786441, 0, 0, -786440, 0, 0, -786439, 0, 0, -786438, 0, 0, -786437, 0, 0, -786436, 0, 0, -786435, 0, 0, -786434, 0, 0, -786433, 0, 0, -851968, 0, 0, -851967, 0, 0, -851966, 0, 0, -851965, 0, 0, -851964, 0, 0, -851963, 0, 0, -851962, 0, 0, -851961, 0, 0, -851960, 0, 0, -851959, 0, 0, -851958, 0, 0, -851957, 0, 0, -851956, 0, 0, -851955, 0, 0, -851954, 0, 0, -851953, 2, 0, -851952, 2, 0, -851951, 0, 0, -851950, 2, 0, -851949, 2, 0, -851948, 1, 0, -851947, 1, 0, -851946, 2, 0, -851945, 2, 0, -851944, 2, 0, -851943, 0, 0, -851942, 0, 0, -851941, 0, 0, -851940, 0, 0, -851939, 0, 0, -851938, 0, 0, -851937, 0, 0, -851936, 0, 0, -851935, 0, 0, -851934, 0, 0, -851933, 0, 0, -851932, 0, 0, -851931, 0, 0, -851930, 0, 0, -851929, 0, 0, -851928, 0, 0, -851927, 0, 0, -851926, 0, 0, -851925, 0, 0, -851924, 0, 0, -851923, 0, 0, -851922, 0, 0, -851921, 0, 0, -851920, 0, 0, -851919, 0, 0, -851918, 0, 0, -851917, 0, 0, -851916, 0, 0, -851915, 0, 0, -851914, 0, 0, -851913, 0, 0, -851912, 0, 0, -851911, 0, 0, -720933, 0, 0, -720932, 0, 0, -720931, 0, 0, -720930, 0, 0, -720929, 0, 0, -720928, 0, 0, -720927, 0, 0, -720926, 0, 0, -720925, 0, 0, -720924, 0, 0, -720923, 0, 0, -720922, 0, 0, -720921, 0, 0, -720920, 0, 0, -720919, 0, 0, -720918, 0, 0, -720917, 0, 0, -720916, 0, 0, -720915, 0, 0, -720914, 0, 0, -720913, 0, 0, -720912, 0, 0, -720911, 0, 0, -720910, 0, 0, -720909, 0, 0, -720908, 0, 0, -720907, 0, 0, -720906, 0, 0, -720905, 0, 0, -720904, 0, 0, -720903, 0, 0, -720902, 0, 0, -720901, 0, 0, -720900, 0, 0, -720899, 0, 0, -720898, 0, 0, -720897, 0, 0, -786432, 0, 0, -786431, 0, 0, -786430, 0, 0, -786429, 0, 0, -786428, 0, 0, -786427, 0, 0, -786426, 0, 0, -786425, 0, 0, -786424, 0, 0, -786423, 0, 0, -786422, 0, 0, -786421, 0, 0, -786420, 0, 0, -786419, 2, 0, -786418, 0, 0, -786417, 0, 0, -786416, 0, 0, -786415, 0, 0, -786414, 0, 0, -786413, 2, 0, -786412, 1, 0, -786411, 1, 0, -786410, 2, 0, -786409, 2, 0, -786408, 2, 0, -786407, 0, 0, -786406, 0, 0, -786405, 0, 0, -786404, 0, 0, -786403, 0, 0, -786402, 0, 0, -786401, 0, 0, -786400, 0, 0, -786399, 0, 0, -786398, 0, 0, -786397, 0, 0, -786396, 0, 0, -786395, 0, 0, -786394, 0, 0, -786393, 0, 0, -786392, 0, 0, -786391, 0, 0, -786390, 0, 0, -786389, 0, 0, -786388, 0, 0, -786387, 0, 0, -786386, 0, 0, -786385, 0, 0, -786384, 0, 0, -786383, 0, 0, -786382, 0, 0, -786381, 0, 0, -786380, 0, 0, -786379, 0, 0, -786378, 0, 0, -786377, 0, 0, -786376, 0, 0, -655397, 0, 0, -655396, 0, 0, -655395, 0, 0, -655394, 0, 0, -655393, 0, 0, -655392, 0, 0, -655391, 0, 0, -655390, 0, 0, -655389, 0, 0, -655388, 0, 0, -655387, 0, 0, -655386, 0, 0, -655385, 0, 0, -655384, 0, 0, -655383, 0, 0, -655382, 0, 0, -655381, 0, 0, -655380, 0, 0, -655379, 0, 0, -655378, 0, 0, -655377, 0, 0, -655376, 0, 0, -655375, 0, 0, -655374, 0, 0, -655373, 0, 0, -655372, 0, 0, -655371, 0, 0, -655370, 0, 0, -655369, 0, 0, -655368, 0, 0, -655367, 0, 0, -655366, 0, 0, -655365, 0, 0, -655364, 0, 0, -655363, 0, 0, -655362, 0, 0, -655361, 0, 0, -720896, 0, 0, -720895, 0, 0, -720894, 0, 0, -720893, 0, 0, -720892, 0, 0, -720891, 0, 0, -720890, 0, 0, -720889, 0, 0, -720888, 0, 0, -720887, 0, 0, -720886, 2, 0, -720885, 0, 0, -720884, 0, 0, -720883, 2, 0, -720882, 2, 0, -720881, 2, 0, -720880, 0, 0, -720879, 0, 0, -720878, 0, 0, -720877, 2, 0, -720876, 2, 0, -720875, 2, 0, -720874, 2, 0, -720873, 2, 0, -720872, 0, 0, -720871, 0, 0, -720870, 0, 0, -720869, 0, 0, -720868, 0, 0, -720867, 0, 0, -720866, 0, 0, -720865, 0, 0, -720864, 0, 0, -720863, 0, 0, -720862, 0, 0, -720861, 0, 0, -720860, 0, 0, -720859, 0, 0, -720858, 0, 0, -720857, 0, 0, -720856, 0, 0, -720855, 0, 0, -720854, 0, 0, -720853, 0, 0, -720852, 0, 0, -720851, 0, 0, -720850, 0, 0, -720849, 0, 0, -720848, 0, 0, -720847, 0, 0, -720846, 0, 0, -720845, 0, 0, -720844, 0, 0, -720843, 0, 0, -720842, 0, 0, -720841, 0, 0, -720840, 0, 0, -589861, 0, 0, -589860, 0, 0, -589859, 0, 0, -589858, 0, 0, -589857, 0, 0, -589856, 0, 0, -589855, 0, 0, -589854, 0, 0, -589853, 0, 0, -589852, 0, 0, -589851, 0, 0, -589850, 0, 0, -589849, 0, 0, -589848, 0, 0, -589847, 0, 0, -589846, 0, 0, -589845, 0, 0, -589844, 0, 0, -589843, 0, 0, -589842, 0, 0, -589841, 0, 0, -589840, 0, 0, -589839, 0, 0, -589838, 0, 0, -589837, 0, 0, -589836, 0, 0, -589835, 0, 0, -589834, 0, 0, -589833, 2, 0, -589832, 2, 0, -589831, 0, 0, -589830, 0, 0, -589829, 0, 0, -589828, 0, 0, -589827, 0, 0, -589826, 0, 0, -589825, 0, 0, -655360, 0, 0, -655359, 0, 0, -655358, 2, 0, -655357, 2, 0, -655356, 2, 0, -655355, 2, 0, -655354, 0, 0, -655353, 0, 0, -655352, 0, 0, -655351, 0, 0, -655350, 2, 0, -655349, 2, 0, -655348, 2, 0, -655347, 0, 0, -655346, 0, 0, -655345, 0, 0, -655344, 0, 0, -655343, 0, 0, -655342, 0, 0, -655341, 0, 0, -655340, 2, 0, -655339, 2, 0, -655338, 2, 0, -655337, 0, 0, -655336, 0, 0, -655335, 0, 0, -655334, 0, 0, -655333, 0, 0, -655332, 0, 0, -655331, 0, 0, -655330, 0, 0, -655329, 0, 0, -655328, 0, 0, -655327, 0, 0, -655326, 0, 0, -655325, 0, 0, -655324, 0, 0, -655323, 0, 0, -655322, 0, 0, -655321, 0, 0, -655320, 0, 0, -655319, 0, 0, -655318, 0, 0, -655317, 0, 0, -655316, 0, 0, -655315, 0, 0, -655314, 0, 0, -655313, 0, 0, -655312, 0, 0, -655311, 0, 0, -655310, 0, 0, -655309, 0, 0, -655308, 0, 0, -655307, 0, 0, -655306, 0, 0, -655305, 0, 0, -655304, 0, 0, -524325, 0, 0, -524324, 0, 0, -524323, 0, 0, -524322, 0, 0, -524321, 0, 0, -524320, 0, 0, -524319, 0, 0, -524318, 0, 0, -524317, 0, 0, -524316, 0, 0, -524315, 0, 0, -524314, 0, 0, -524313, 0, 0, -524312, 0, 0, -524311, 0, 0, -524310, 0, 0, -524309, 0, 0, -524308, 0, 0, -524307, 0, 0, -524306, 0, 0, -524305, 0, 0, -524304, 0, 0, -524303, 0, 0, -524302, 0, 0, -524301, 0, 0, -524300, 0, 0, -524299, 0, 0, -524298, 0, 0, -524297, 2, 0, -524296, 2, 0, -524295, 0, 0, -524294, 0, 0, -524293, 0, 0, -524292, 0, 0, -524291, 0, 0, -524290, 0, 0, -524289, 0, 0, -589824, 0, 0, -589823, 0, 0, -589822, 2, 0, -589821, 2, 0, -589820, 2, 0, -589819, 2, 0, -589818, 0, 0, -589817, 2, 0, -589816, 0, 0, -589815, 0, 0, -589814, 0, 0, -589813, 0, 0, -589812, 0, 0, -589811, 0, 0, -589810, 0, 0, -589809, 0, 0, -589808, 0, 0, -589807, 0, 0, -589806, 0, 0, -589805, 0, 0, -589804, 0, 0, -589803, 2, 0, -589802, 2, 0, -589801, 2, 0, -589800, 0, 0, -589799, 0, 0, -589798, 0, 0, -589797, 0, 0, -589796, 0, 0, -589795, 0, 0, -589794, 0, 0, -589793, 0, 0, -589792, 0, 0, -589791, 0, 0, -589790, 0, 0, -589789, 0, 0, -589788, 0, 0, -589787, 0, 0, -589786, 0, 0, -589785, 0, 0, -589784, 0, 0, -589783, 0, 0, -589782, 0, 0, -589781, 0, 0, -589780, 0, 0, -589779, 0, 0, -589778, 0, 0, -589777, 0, 0, -589776, 0, 0, -589775, 0, 0, -589774, 0, 0, -589773, 0, 0, -589772, 0, 0, -589771, 0, 0, -589770, 0, 0, -589769, 0, 0, -589768, 0, 0, -458788, 0, 0, -458787, 0, 0, -458786, 0, 0, -458785, 0, 0, -458784, 0, 0, -458783, 0, 0, -458782, 0, 0, -458781, 0, 0, -458780, 0, 0, -458779, 0, 0, -458778, 0, 0, -458777, 0, 0, -458776, 0, 0, -458775, 0, 0, -458774, 0, 0, -458773, 0, 0, -458772, 0, 0, -458771, 0, 0, -458770, 0, 0, -458769, 0, 0, -458768, 0, 0, -458767, 0, 0, -458766, 0, 0, -458765, 0, 0, -458764, 0, 0, -458763, 2, 0, -458762, 2, 0, -458761, 0, 0, -458760, 0, 0, -458759, 2, 0, -458758, 2, 0, -458757, 0, 0, -458756, 0, 0, -458755, 2, 0, -458754, 0, 0, -458753, 0, 0, -524288, 2, 0, -524287, 0, 0, -524286, 2, 0, -524285, 2, 0, -524284, 2, 0, -524283, 2, 0, -524282, 0, 0, -524281, 2, 0, -524280, 0, 0, -524279, 0, 0, -524278, 0, 0, -524277, 0, 0, -524276, 0, 0, -524275, 0, 0, -524274, 2, 0, -524273, 0, 0, -524272, 0, 0, -524271, 0, 0, -524270, 0, 0, -524269, 0, 0, -524268, 0, 0, -524267, 0, 0, -524266, 0, 0, -524265, 0, 0, -524264, 0, 0, -524263, 0, 0, -524262, 0, 0, -524261, 0, 0, -524260, 0, 0, -524259, 0, 0, -524258, 0, 0, -524257, 0, 0, -524256, 0, 0, -524255, 0, 0, -524254, 0, 0, -524253, 0, 0, -524252, 0, 0, -524251, 0, 0, -524250, 0, 0, -524249, 0, 0, -524248, 0, 0, -524247, 0, 0, -524246, 0, 0, -524245, 0, 0, -524244, 0, 0, -524243, 0, 0, -524242, 0, 0, -524241, 0, 0, -524240, 0, 0, -524239, 0, 0, -524238, 0, 0, -524237, 0, 0, -524236, 0, 0, -524235, 0, 0, -524234, 0, 0, -524233, 0, 0, -524232, 0, 0, -393252, 0, 0, -393251, 0, 0, -393250, 0, 0, -393249, 0, 0, -393248, 0, 0, -393247, 0, 0, -393246, 0, 0, -393245, 0, 0, -393244, 0, 0, -393243, 0, 0, -393242, 0, 0, -393241, 0, 0, -393240, 0, 0, -393239, 0, 0, -393238, 0, 0, -393237, 0, 0, -393236, 0, 0, -393235, 0, 0, -393234, 0, 0, -393233, 0, 0, -393232, 0, 0, -393231, 0, 0, -393230, 0, 0, -393229, 0, 0, -393228, 0, 0, -393227, 0, 0, -393226, 0, 0, -393225, 2, 0, -393224, 2, 0, -393223, 2, 0, -393222, 2, 0, -393221, 2, 0, -393220, 2, 0, -393219, 2, 0, -393218, 2, 0, -393217, 0, 0, -458752, 2, 0, -458751, 2, 0, -458750, 2, 0, -458749, 2, 0, -458748, 2, 0, -458747, 0, 0, -458746, 2, 0, -458745, 0, 0, -458744, 0, 0, -458743, 0, 0, -458742, 0, 0, -458741, 0, 0, -458740, 0, 0, -458739, 0, 0, -458738, 0, 0, -458737, 2, 0, -458736, 2, 0, -458735, 0, 0, -458734, 0, 0, -458733, 0, 0, -458732, 0, 0, -458731, 0, 0, -458730, 0, 0, -458729, 0, 0, -458728, 0, 0, -458727, 0, 0, -458726, 0, 0, -458725, 0, 0, -458724, 0, 0, -458723, 0, 0, -458722, 0, 0, -458721, 0, 0, -458720, 0, 0, -458719, 0, 0, -458718, 0, 0, -458717, 0, 0, -458716, 0, 0, -458715, 0, 0, -458714, 0, 0, -458713, 0, 0, -458712, 0, 0, -458711, 0, 0, -458710, 0, 0, -458709, 0, 0, -458708, 0, 0, -458707, 0, 0, -458706, 0, 0, -458705, 0, 0, -458704, 0, 0, -458703, 0, 0, -458702, 0, 0, -458701, 0, 0, -458700, 0, 0, -458699, 0, 0, -458698, 0, 0, -458697, 0, 0, -458696, 0, 0, -327716, 0, 0, -327715, 0, 0, -327714, 0, 0, -327713, 0, 0, -327712, 0, 0, -327711, 0, 0, -327710, 0, 0, -327709, 0, 0, -327708, 0, 0, -327707, 0, 0, -327706, 0, 0, -327705, 0, 0, -327704, 0, 0, -327703, 0, 0, -327702, 0, 0, -327701, 0, 0, -327700, 0, 0, -327699, 0, 0, -327698, 0, 0, -327697, 0, 0, -327696, 0, 0, -327695, 0, 0, -327694, 0, 0, -327693, 0, 0, -327692, 0, 0, -327691, 0, 0, -327690, 2, 0, -327689, 2, 0, -327688, 2, 0, -327687, 1, 0, -327686, 1, 0, -327685, 2, 0, -327684, 2, 0, -327683, 2, 0, -327682, 2, 0, -327681, 0, 0, -393216, 0, 0, -393215, 2, 0, -393214, 2, 0, -393213, 1, 0, -393212, 2, 0, -393211, 2, 0, -393210, 0, 0, -393209, 0, 0, -393208, 0, 0, -393207, 2, 0, -393206, 2, 0, -393205, 0, 0, -393204, 0, 0, -393203, 0, 0, -393202, 0, 0, -393201, 0, 0, -393200, 0, 0, -393199, 0, 0, -393198, 0, 0, -393197, 0, 0, -393196, 0, 0, -393195, 0, 0, -393194, 0, 0, -393193, 0, 0, -393192, 0, 0, -393191, 0, 0, -393190, 0, 0, -393189, 0, 0, -393188, 0, 0, -393187, 0, 0, -393186, 0, 0, -393185, 0, 0, -393184, 0, 0, -393183, 0, 0, -393182, 0, 0, -393181, 0, 0, -393180, 0, 0, -393179, 0, 0, -393178, 0, 0, -393177, 0, 0, -393176, 0, 0, -393175, 0, 0, -393174, 0, 0, -393173, 0, 0, -393172, 0, 0, -393171, 0, 0, -393170, 0, 0, -393169, 0, 0, -393168, 0, 0, -393167, 0, 0, -393166, 0, 0, -393165, 0, 0, -393164, 0, 0, -393163, 0, 0, -393162, 0, 0, -393161, 0, 0, -262180, 0, 0, -262179, 0, 0, -262178, 0, 0, -262177, 0, 0, -262176, 0, 0, -262175, 0, 0, -262174, 0, 0, -262173, 0, 0, -262172, 0, 0, -262171, 0, 0, -262170, 0, 0, -262169, 0, 0, -262168, 0, 0, -262167, 0, 0, -262166, 0, 0, -262165, 0, 0, -262164, 0, 0, -262163, 0, 0, -262162, 0, 0, -262161, 0, 0, -262160, 0, 0, -262159, 2, 0, -262158, 0, 0, -262157, 0, 0, -262156, 0, 0, -262155, 0, 0, -262154, 0, 0, -262153, 2, 0, -262152, 2, 0, -262151, 1, 0, -262150, 1, 0, -262149, 1, 0, -262148, 2, 0, -262147, 0, 0, -262146, 0, 0, -262145, 0, 0, -327680, 2, 0, -327679, 2, 0, -327678, 2, 0, -327677, 1, 0, -327676, 2, 0, -327675, 2, 0, -327674, 0, 0, -327673, 0, 0, -327672, 2, 0, -327671, 1, 0, -327670, 1, 0, -327669, 2, 0, -327668, 0, 0, -327667, 0, 0, -327666, 0, 0, -327665, 0, 0, -327664, 0, 0, -327663, 0, 0, -327662, 0, 0, -327661, 0, 0, -327660, 0, 0, -327659, 0, 0, -327658, 0, 0, -327657, 0, 0, -327656, 0, 0, -327655, 0, 0, -327654, 0, 0, -327653, 0, 0, -327652, 0, 0, -327651, 0, 0, -327650, 0, 0, -327649, 0, 0, -327648, 0, 0, -327647, 0, 0, -327646, 0, 0, -327645, 0, 0, -327644, 0, 0, -327643, 0, 0, -327642, 0, 0, -327641, 0, 0, -327640, 0, 0, -327639, 0, 0, -327638, 0, 0, -327637, 0, 0, -327636, 0, 0, -327635, 0, 0, -327634, 0, 0, -327633, 0, 0, -327632, 0, 0, -327631, 0, 0, -327630, 0, 0, -327629, 0, 0, -327628, 0, 0, -327627, 0, 0, -327626, 0, 0, -327625, 0, 0, -196644, 0, 0, -196643, 0, 0, -196642, 0, 0, -196641, 0, 0, -196640, 0, 0, -196639, 0, 0, -196638, 0, 0, -196637, 0, 0, -196636, 0, 0, -196635, 0, 0, -196634, 0, 0, -196633, 0, 0, -196632, 0, 0, -196631, 0, 0, -196630, 0, 0, -196629, 0, 0, -196628, 0, 0, -196627, 0, 0, -196626, 0, 0, -196625, 2, 0, -196624, 2, 0, -196623, 2, 0, -196622, 2, 0, -196621, 0, 0, -196620, 0, 0, -196619, 0, 0, -196618, 0, 0, -196617, 2, 0, -196616, 2, 0, -196615, 1, 0, -196614, 1, 0, -196613, 1, 0, -196612, 2, 0, -196611, 0, 0, -196610, 0, 0, -196609, 0, 0, -262144, 2, 0, -262143, 0, 0, -262142, 2, 0, -262141, 1, 0, -262140, 2, 0, -262139, 0, 0, -262138, 0, 0, -262137, 2, 0, -262136, 1, 0, -262135, 1, 0, -262134, 1, 0, -262133, 1, 0, -262132, 2, 0, -262131, 2, 0, -262130, 0, 0, -262129, 0, 0, -262128, 0, 0, -262127, 0, 0, -262126, 0, 0, -262125, 0, 0, -262124, 0, 0, -262123, 0, 0, -262122, 0, 0, -262121, 0, 0, -262120, 0, 0, -262119, 0, 0, -262118, 0, 0, -262117, 0, 0, -262116, 0, 0, -262115, 0, 0, -262114, 0, 0, -262113, 0, 0, -262112, 0, 0, -262111, 0, 0, -262110, 0, 0, -262109, 0, 0, -262108, 0, 0, -262107, 0, 0, -262106, 0, 0, -262105, 0, 0, -262104, 0, 0, -262103, 0, 0, -262102, 0, 0, -262101, 0, 0, -262100, 0, 0, -262099, 0, 0, -262098, 0, 0, -262097, 0, 0, -262096, 0, 0, -262095, 0, 0, -262094, 0, 0, -262093, 0, 0, -262092, 0, 0, -262091, 0, 0, -262090, 0, 0, -131108, 0, 0, -131107, 0, 0, -131106, 0, 0, -131105, 0, 0, -131104, 0, 0, -131103, 0, 0, -131102, 0, 0, -131101, 0, 0, -131100, 0, 0, -131099, 0, 0, -131098, 0, 0, -131097, 0, 0, -131096, 0, 0, -131095, 0, 0, -131094, 0, 0, -131093, 0, 0, -131092, 0, 0, -131091, 0, 0, -131090, 0, 0, -131089, 2, 0, -131088, 2, 0, -131087, 2, 0, -131086, 2, 0, -131085, 0, 0, -131084, 0, 0, -131083, 2, 0, -131082, 0, 0, -131081, 2, 0, -131080, 2, 0, -131079, 2, 0, -131078, 2, 0, -131077, 2, 0, -131076, 2, 0, -131075, 0, 0, -131074, 2, 0, -131073, 0, 0, -196608, 0, 0, -196607, 0, 0, -196606, 2, 0, -196605, 2, 0, -196604, 2, 0, -196603, 0, 0, -196602, 2, 0, -196601, 2, 0, -196600, 1, 0, -196599, 1, 0, -196598, 1, 0, -196597, 1, 0, -196596, 1, 0, -196595, 2, 0, -196594, 0, 0, -196593, 0, 0, -196592, 0, 0, -196591, 0, 0, -196590, 0, 0, -196589, 0, 0, -196588, 0, 0, -196587, 0, 0, -196586, 0, 0, -196585, 0, 0, -196584, 0, 0, -196583, 0, 0, -196582, 0, 0, -196581, 0, 0, -196580, 0, 0, -196579, 0, 0, -196578, 0, 0, -196577, 0, 0, -196576, 0, 0, -196575, 0, 0, -196574, 0, 0, -196573, 0, 0, -196572, 0, 0, -196571, 0, 0, -196570, 0, 0, -196569, 0, 0, -196568, 0, 0, -196567, 0, 0, -196566, 0, 0, -196565, 0, 0, -196564, 0, 0, -196563, 0, 0, -196562, 0, 0, -196561, 0, 0, -196560, 0, 0, -196559, 0, 0, -196558, 0, 0, -196557, 0, 0, -196556, 0, 0, -196555, 0, 0, -196554, 0, 0, -65572, 0, 0, -65571, 0, 0, -65570, 0, 0, -65569, 0, 0, -65568, 0, 0, -65567, 0, 0, -65566, 0, 0, -65565, 0, 0, -65564, 0, 0, -65563, 0, 0, -65562, 0, 0, -65561, 0, 0, -65560, 0, 0, -65559, 0, 0, -65558, 0, 0, -65557, 0, 0, -65556, 0, 0, -65555, 0, 0, -65554, 2, 0, -65553, 2, 0, -65552, 2, 0, -65551, 2, 0, -65550, 2, 0, -65549, 2, 0, -65548, 2, 0, -65547, 2, 0, -65546, 0, 0, -65545, 0, 0, -65544, 2, 0, -65543, 2, 0, -65542, 2, 0, -65541, 2, 0, -65540, 0, 0, -65539, 0, 0, -65538, 2, 0, -65537, 2, 0, -131072, 0, 0, -131071, 0, 0, -131070, 0, 0, -131069, 0, 0, -131068, 0, 0, -131067, 0, 0, -131066, 2, 0, -131065, 2, 0, -131064, 2, 0, -131063, 2, 0, -131062, 2, 0, -131061, 2, 0, -131060, 2, 0, -131059, 2, 0, -131058, 0, 0, -131057, 0, 0, -131056, 0, 0, -131055, 0, 0, -131054, 0, 0, -131053, 0, 0, -131052, 0, 0, -131051, 0, 0, -131050, 0, 0, -131049, 0, 0, -131048, 0, 0, -131047, 0, 0, -131046, 0, 0, -131045, 0, 0, -131044, 0, 0, -131043, 0, 0, -131042, 0, 0, -131041, 0, 0, -131040, 0, 0, -131039, 0, 0, -131038, 0, 0, -131037, 0, 0, -131036, 0, 0, -131035, 0, 0, -131034, 0, 0, -131033, 0, 0, -131032, 0, 0, -131031, 0, 0, -131030, 0, 0, -131029, 0, 0, -131028, 0, 0, -131027, 0, 0, -131026, 0, 0, -131025, 0, 0, -131024, 0, 0, -131023, 0, 0, -131022, 0, 0, -131021, 0, 0, -131020, 0, 0, -131019, 0, 0, -131018, 0, 0, -36, 0, 0, -35, 0, 0, -34, 0, 0, -33, 0, 0, -32, 0, 0, -31, 0, 0, -30, 0, 0, -29, 0, 0, -28, 0, 0, -27, 0, 0, -26, 0, 0, -25, 0, 0, -24, 0, 0, -23, 0, 0, -22, 0, 0, -21, 0, 0, -20, 0, 0, -19, 0, 0, -18, 2, 0, -17, 2, 0, -16, 2, 0, -15, 1, 0, -14, 1, 0, -13, 2, 0, -12, 2, 0, -11, 0, 0, -10, 0, 0, -9, 0, 0, -8, 0, 0, -7, 0, 0, -6, 0, 0, -5, 0, 0, -4, 0, 0, -3, 0, 0, -2, 0, 0, -1, 0, 0, -65536, 2, 0, -65535, 0, 0, -65534, 2, 0, -65533, 0, 0, -65532, 0, 0, -65531, 0, 0, -65530, 0, 0, -65529, 0, 0, -65528, 0, 0, -65527, 0, 0, -65526, 0, 0, -65525, 0, 0, -65524, 0, 0, -65523, 0, 0, -65522, 0, 0, -65521, 0, 0, -65520, 0, 0, -65519, 0, 0, -65518, 0, 0, -65517, 0, 0, -65516, 0, 0, -65515, 0, 0, -65514, 0, 0, -65513, 0, 0, -65512, 0, 0, -65511, 0, 0, -65510, 0, 0, -65509, 0, 0, -65508, 0, 0, -65507, 0, 0, -65506, 0, 0, -65505, 0, 0, -65504, 0, 0, -65503, 0, 0, -65502, 0, 0, -65501, 0, 0, -65500, 0, 0, -65499, 0, 0, -65498, 0, 0, -65497, 0, 0, -65496, 0, 0, -65495, 0, 0, -65494, 0, 0, -65493, 0, 0, -65492, 0, 0, -65491, 0, 0, -65490, 0, 0, -65489, 0, 0, -65488, 0, 0, -65487, 0, 0, -65486, 0, 0, -65485, 0, 0, -65484, 0, 0, -65483, 0, 0, -65482, 0, 0, 65500, 0, 0, 65501, 0, 0, 65502, 0, 0, 65503, 0, 0, 65504, 0, 0, 65505, 0, 0, 65506, 0, 0, 65507, 0, 0, 65508, 0, 0, 65509, 0, 0, 65510, 0, 0, 65511, 0, 0, 65512, 0, 0, 65513, 0, 0, 65514, 0, 0, 65515, 0, 0, 65516, 0, 0, 65517, 0, 0, 65518, 2, 0, 65519, 2, 0, 65520, 2, 0, 65521, 1, 0, 65522, 1, 0, 65523, 2, 0, 65524, 2, 0, 65525, 2, 0, 65526, 0, 0, 65527, 0, 0, 65528, 0, 0, 65529, 0, 0, 65530, 0, 0, 65531, 0, 0, 65532, 2, 0, 65533, 2, 0, 65534, 0, 0, 65535, 0, 0, 0, 0, 0, 1, 0, 0, 2, 2, 0, 3, 2, 0, 4, 2, 0, 5, 0, 0, 6, 0, 0, 7, 0, 0, 8, 0, 0, 9, 0, 0, 10, 0, 0, 11, 0, 0, 12, 0, 0, 13, 0, 0, 14, 0, 0, 15, 0, 0, 16, 0, 0, 17, 0, 0, 18, 0, 0, 19, 0, 0, 20, 0, 0, 21, 0, 0, 22, 0, 0, 23, 0, 0, 24, 0, 0, 25, 0, 0, 26, 0, 0, 27, 0, 0, 28, 0, 0, 29, 0, 0, 30, 0, 0, 31, 0, 0, 32, 0, 0, 33, 0, 0, 34, 0, 0, 35, 0, 0, 36, 0, 0, 37, 0, 0, 38, 0, 0, 39, 0, 0, 40, 0, 0, 41, 0, 0, 42, 0, 0, 43, 0, 0, 44, 0, 0, 45, 0, 0, 46, 0, 0, 47, 0, 0, 48, 0, 0, 49, 0, 0, 50, 0, 0, 51, 0, 0, 52, 0, 0, 53, 0, 0, 131036, 0, 0, 131037, 0, 0, 131038, 0, 0, 131039, 0, 0, 131040, 0, 0, 131041, 0, 0, 131042, 0, 0, 131043, 0, 0, 131044, 0, 0, 131045, 0, 0, 131046, 0, 0, 131047, 0, 0, 131048, 0, 0, 131049, 0, 0, 131050, 0, 0, 131051, 0, 0, 131052, 0, 0, 131053, 0, 0, 131054, 2, 0, 131055, 2, 0, 131056, 2, 0, 131057, 1, 0, 131058, 1, 0, 131059, 2, 0, 131060, 2, 0, 131061, 2, 0, 131062, 2, 0, 131063, 0, 0, 131064, 0, 0, 131065, 2, 0, 131066, 0, 0, 131067, 0, 0, 131068, 0, 0, 131069, 2, 0, 131070, 2, 0, 131071, 2, 0, 65536, 2, 0, 65537, 0, 0, 65538, 0, 0, 65539, 0, 0, 65540, 0, 0, 65541, 0, 0, 65542, 2, 0, 65543, 0, 0, 65544, 0, 0, 65545, 0, 0, 65546, 0, 0, 65547, 0, 0, 65548, 0, 0, 65549, 0, 0, 65550, 0, 0, 65551, 0, 0, 65552, 0, 0, 65553, 0, 0, 65554, 0, 0, 65555, 0, 0, 65556, 0, 0, 65557, 0, 0, 65558, 0, 0, 65559, 0, 0, 65560, 0, 0, 65561, 0, 0, 65562, 0, 0, 65563, 0, 0, 65564, 0, 0, 65565, 0, 0, 65566, 0, 0, 65567, 0, 0, 65568, 0, 0, 65569, 0, 0, 65570, 0, 0, 65571, 0, 0, 65572, 0, 0, 65573, 0, 0, 65574, 0, 0, 65575, 0, 0, 65576, 0, 0, 65577, 0, 0, 65578, 0, 0, 65579, 0, 0, 65580, 0, 0, 65581, 0, 0, 65582, 0, 0, 65583, 0, 0, 65584, 0, 0, 65585, 0, 0, 65586, 0, 0, 65587, 0, 0, 65588, 0, 0, 65589, 0, 0, 196572, 0, 0, 196573, 0, 0, 196574, 0, 0, 196575, 0, 0, 196576, 0, 0, 196577, 0, 0, 196578, 0, 0, 196579, 0, 0, 196580, 0, 0, 196581, 0, 0, 196582, 0, 0, 196583, 0, 0, 196584, 0, 0, 196585, 0, 0, 196586, 0, 0, 196587, 0, 0, 196588, 0, 0, 196589, 0, 0, 196590, 2, 0, 196591, 2, 0, 196592, 2, 0, 196593, 2, 0, 196594, 2, 0, 196595, 2, 0, 196596, 0, 0, 196597, 0, 0, 196598, 0, 0, 196599, 2, 0, 196600, 0, 0, 196601, 0, 0, 196602, 2, 0, 196603, 2, 0, 196604, 2, 0, 196605, 2, 0, 196606, 2, 0, 196607, 2, 0, 131072, 2, 0, 131073, 2, 0, 131074, 2, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0, 131078, 0, 0, 131079, 0, 0, 131080, 0, 0, 131081, 2, 0, 131082, 2, 0, 131083, 0, 0, 131084, 0, 0, 131085, 2, 0, 131086, 2, 0, 131087, 2, 0, 131088, 0, 0, 131089, 0, 0, 131090, 0, 0, 131091, 0, 0, 131092, 0, 0, 131093, 0, 0, 131094, 0, 0, 131095, 0, 0, 131096, 0, 0, 131097, 0, 0, 131098, 0, 0, 131099, 0, 0, 131100, 0, 0, 131101, 0, 0, 131102, 0, 0, 131103, 0, 0, 131104, 0, 0, 131105, 0, 0, 131106, 0, 0, 131107, 0, 0, 131108, 0, 0, 131109, 0, 0, 131110, 0, 0, 131111, 0, 0, 131112, 0, 0, 131113, 0, 0, 131114, 0, 0, 131115, 0, 0, 131116, 0, 0, 131117, 0, 0, 131118, 0, 0, 131119, 0, 0, 131120, 0, 0, 131121, 0, 0, 131122, 0, 0, 131123, 0, 0, 131124, 0, 0, 131125, 0, 0, 262108, 0, 0, 262109, 0, 0, 262110, 0, 0, 262111, 0, 0, 262112, 0, 0, 262113, 0, 0, 262114, 0, 0, 262115, 0, 0, 262116, 0, 0, 262117, 0, 0, 262118, 0, 0, 262119, 0, 0, 262120, 0, 0, 262121, 0, 0, 262122, 0, 0, 262123, 0, 0, 262124, 0, 0, 262125, 0, 0, 262126, 0, 0, 262127, 0, 0, 262128, 0, 0, 262129, 2, 0, 262130, 0, 0, 262131, 0, 0, 262132, 0, 0, 262133, 0, 0, 262134, 0, 0, 262135, 0, 0, 262136, 0, 0, 262137, 0, 0, 262138, 0, 0, 262139, 2, 0, 262140, 1, 0, 262141, 1, 0, 262142, 1, 0, 262143, 1, 0, 196608, 1, 0, 196609, 2, 0, 196610, 2, 0, 196611, 2, 0, 196612, 0, 0, 196613, 0, 0, 196614, 2, 0, 196615, 0, 0, 196616, 0, 0, 196617, 0, 0, 196618, 0, 0, 196619, 0, 0, 196620, 0, 0, 196621, 0, 0, 196622, 0, 0, 196623, 0, 0, 196624, 0, 0, 196625, 0, 0, 196626, 2, 0, 196627, 2, 0, 196628, 0, 0, 196629, 0, 0, 196630, 0, 0, 196631, 0, 0, 196632, 0, 0, 196633, 0, 0, 196634, 0, 0, 196635, 0, 0, 196636, 0, 0, 196637, 0, 0, 196638, 0, 0, 196639, 0, 0, 196640, 0, 0, 196641, 0, 0, 196642, 0, 0, 196643, 0, 0, 196644, 0, 0, 196645, 0, 0, 196646, 0, 0, 196647, 0, 0, 196648, 0, 0, 196649, 0, 0, 196650, 0, 0, 196651, 0, 0, 196652, 0, 0, 196653, 0, 0, 196654, 0, 0, 196655, 0, 0, 196656, 0, 0, 196657, 0, 0, 196658, 0, 0, 196659, 0, 0, 196660, 0, 0, 327644, 0, 0, 327645, 0, 0, 327646, 0, 0, 327647, 0, 0, 327648, 0, 0, 327649, 0, 0, 327650, 0, 0, 327651, 0, 0, 327652, 0, 0, 327653, 0, 0, 327654, 0, 0, 327655, 0, 0, 327656, 0, 0, 327657, 0, 0, 327658, 0, 0, 327659, 0, 0, 327660, 0, 0, 327661, 0, 0, 327662, 2, 0, 327663, 2, 0, 327664, 2, 0, 327665, 2, 0, 327666, 2, 0, 327667, 2, 0, 327668, 2, 0, 327669, 2, 0, 327670, 2, 0, 327671, 2, 0, 327672, 0, 0, 327673, 0, 0, 327674, 0, 0, 327675, 2, 0, 327676, 2, 0, 327677, 1, 0, 327678, 1, 0, 327679, 1, 0, 262144, 1, 0, 262145, 2, 0, 262146, 2, 0, 262147, 2, 0, 262148, 0, 0, 262149, 0, 0, 262150, 2, 0, 262151, 0, 0, 262152, 0, 0, 262153, 0, 0, 262154, 2, 0, 262155, 0, 0, 262156, 0, 0, 262157, 0, 0, 262158, 0, 0, 262159, 0, 0, 262160, 0, 0, 262161, 0, 0, 262162, 2, 0, 262163, 0, 0, 262164, 0, 0, 262165, 0, 0, 262166, 0, 0, 262167, 0, 0, 262168, 2, 0, 262169, 0, 0, 262170, 0, 0, 262171, 0, 0, 262172, 0, 0, 262173, 0, 0, 262174, 0, 0, 262175, 0, 0, 262176, 0, 0, 262177, 0, 0, 262178, 0, 0, 262179, 0, 0, 262180, 0, 0, 262181, 0, 0, 262182, 0, 0, 262183, 0, 0, 262184, 0, 0, 262185, 0, 0, 262186, 0, 0, 262187, 0, 0, 262188, 0, 0, 262189, 0, 0, 262190, 0, 0, 262191, 0, 0, 262192, 0, 0, 262193, 0, 0, 262194, 0, 0, 262195, 0, 0, 262196, 0, 0, 393180, 0, 0, 393181, 0, 0, 393182, 0, 0, 393183, 0, 0, 393184, 0, 0, 393185, 0, 0, 393186, 0, 0, 393187, 0, 0, 393188, 0, 0, 393189, 0, 0, 393190, 0, 0, 393191, 0, 0, 393192, 0, 0, 393193, 0, 0, 393194, 0, 0, 393195, 0, 0, 393196, 0, 0, 393197, 0, 0, 393198, 2, 0, 393199, 2, 0, 393200, 2, 0, 393201, 2, 0, 393202, 2, 0, 393203, 2, 0, 393204, 2, 0, 393205, 2, 0, 393206, 2, 0, 393207, 2, 0, 393208, 0, 0, 393209, 0, 0, 393210, 0, 0, 393211, 2, 0, 393212, 2, 0, 393213, 2, 0, 393214, 2, 0, 393215, 2, 0, 327680, 2, 0, 327681, 2, 0, 327682, 2, 0, 327683, 2, 0, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0, 327687, 0, 0, 327688, 0, 0, 327689, 0, 0, 327690, 2, 0, 327691, 0, 0, 327692, 2, 0, 327693, 0, 0, 327694, 0, 0, 327695, 0, 0, 327696, 0, 0, 327697, 0, 0, 327698, 0, 0, 327699, 2, 0, 327700, 2, 0, 327701, 2, 0, 327702, 0, 0, 327703, 2, 0, 327704, 2, 0, 327705, 0, 0, 327706, 0, 0, 327707, 0, 0, 327708, 0, 0, 327709, 0, 0, 327710, 0, 0, 327711, 0, 0, 327712, 0, 0, 327713, 0, 0, 327714, 0, 0, 327715, 0, 0, 327716, 0, 0, 327717, 0, 0, 327718, 0, 0, 327719, 0, 0, 327720, 0, 0, 327721, 0, 0, 327722, 0, 0, 327723, 0, 0, 327724, 0, 0, 327725, 0, 0, 327726, 0, 0, 327727, 0, 0, 327728, 0, 0, 327729, 0, 0, 327730, 0, 0, 327731, 0, 0, 458716, 0, 0, 458717, 0, 0, 458718, 0, 0, 458719, 0, 0, 458720, 0, 0, 458721, 0, 0, 458722, 0, 0, 458723, 0, 0, 458724, 0, 0, 458725, 0, 0, 458726, 0, 0, 458727, 0, 0, 458728, 0, 0, 458729, 0, 0, 458730, 0, 0, 458731, 0, 0, 458732, 0, 0, 458733, 2, 0, 458734, 2, 0, 458735, 2, 0, 458736, 1, 0, 458737, 1, 0, 458738, 1, 0, 458739, 1, 0, 458740, 1, 0, 458741, 1, 0, 458742, 2, 0, 458743, 2, 0, 458744, 2, 0, 458745, 0, 0, 458746, 0, 0, 458747, 0, 0, 458748, 2, 0, 458749, 2, 0, 458750, 2, 0, 458751, 2, 0, 393216, 2, 0, 393217, 2, 0, 393218, 2, 0, 393219, 0, 0, 393220, 0, 0, 393221, 0, 0, 393222, 0, 0, 393223, 0, 0, 393224, 0, 0, 393225, 0, 0, 393226, 0, 0, 393227, 0, 0, 393228, 0, 0, 393229, 0, 0, 393230, 0, 0, 393231, 0, 0, 393232, 2, 0, 393233, 2, 0, 393234, 0, 0, 393235, 0, 0, 393236, 0, 0, 393237, 0, 0, 393238, 0, 0, 393239, 0, 0, 393240, 2, 0, 393241, 0, 0, 393242, 0, 0, 393243, 0, 0, 393244, 0, 0, 393245, 0, 0, 393246, 0, 0, 393247, 0, 0, 393248, 0, 0, 393249, 0, 0, 393250, 0, 0, 393251, 0, 0, 393252, 0, 0, 393253, 0, 0, 393254, 0, 0, 393255, 0, 0, 393256, 0, 0, 393257, 0, 0, 393258, 0, 0, 393259, 0, 0, 393260, 0, 0, 393261, 0, 0, 393262, 0, 0, 393263, 0, 0, 393264, 0, 0, 393265, 0, 0, 393266, 0, 0, 393267, 0, 0, 524252, 0, 0, 524253, 0, 0, 524254, 0, 0, 524255, 0, 0, 524256, 0, 0, 524257, 0, 0, 524258, 0, 0, 524259, 0, 0, 524260, 0, 0, 524261, 0, 0, 524262, 0, 0, 524263, 0, 0, 524264, 0, 0, 524265, 0, 0, 524266, 0, 0, 524267, 0, 0, 524268, 0, 0, 524269, 2, 0, 524270, 2, 0, 524271, 2, 0, 524272, 1, 0, 524273, 1, 0, 524274, 1, 0, 524275, 1, 0, 524276, 1, 0, 524277, 1, 0, 524278, 1, 0, 524279, 2, 0, 524280, 2, 0, 524281, 0, 0, 524282, 0, 0, 524283, 0, 0, 524284, 0, 0, 524285, 0, 0, 524286, 0, 0, 524287, 0, 0, 458752, 0, 0, 458753, 0, 0, 458754, 0, 0, 458755, 0, 0, 458756, 0, 0, 458757, 2, 0, 458758, 2, 0, 458759, 2, 0, 458760, 2, 0, 458761, 2, 0, 458762, 2, 0, 458763, 2, 0, 458764, 0, 0, 458765, 0, 0, 458766, 0, 0, 458767, 0, 0, 458768, 0, 0, 458769, 2, 0, 458770, 0, 0, 458771, 0, 0, 458772, 0, 0, 458773, 0, 0, 458774, 0, 0, 458775, 2, 0, 458776, 2, 0, 458777, 0, 0, 458778, 0, 0, 458779, 0, 0, 458780, 0, 0, 458781, 0, 0, 458782, 0, 0, 458783, 0, 0, 458784, 0, 0, 458785, 0, 0, 458786, 0, 0, 458787, 0, 0, 458788, 0, 0, 458789, 0, 0, 458790, 0, 0, 458791, 0, 0, 458792, 0, 0, 458793, 0, 0, 458794, 0, 0, 458795, 0, 0, 458796, 0, 0, 458797, 0, 0, 458798, 0, 0, 458799, 0, 0, 458800, 0, 0, 458801, 0, 0, 458802, 0, 0, 458803, 0, 0, 589788, 0, 0, 589789, 0, 0, 589790, 0, 0, 589791, 0, 0, 589792, 0, 0, 589793, 0, 0, 589794, 0, 0, 589795, 0, 0, 589796, 0, 0, 589797, 0, 0, 589798, 0, 0, 589799, 0, 0, 589800, 0, 0, 589801, 0, 0, 589802, 0, 0, 589803, 0, 0, 589804, 0, 0, 589805, 2, 0, 589806, 2, 0, 589807, 2, 0, 589808, 1, 0, 589809, 1, 0, 589810, 1, 0, 589811, 1, 0, 589812, 1, 0, 589813, 2, 0, 589814, 2, 0, 589815, 2, 0, 589816, 2, 0, 589817, 0, 0, 589818, 0, 0, 589819, 0, 0, 589820, 2, 0, 589821, 0, 0, 589822, 0, 0, 589823, 0, 0, 524288, 0, 0, 524289, 0, 0, 524290, 0, 0, 524291, 0, 0, 524292, 2, 0, 524293, 2, 0, 524294, 1, 0, 524295, 1, 0, 524296, 1, 0, 524297, 1, 0, 524298, 2, 0, 524299, 2, 0, 524300, 0, 0, 524301, 0, 0, 524302, 0, 0, 524303, 0, 0, 524304, 0, 0, 524305, 0, 0, 524306, 2, 0, 524307, 0, 0, 524308, 0, 0, 524309, 0, 0, 524310, 2, 0, 524311, 2, 0, 524312, 0, 0, 524313, 0, 0, 524314, 0, 0, 524315, 0, 0, 524316, 0, 0, 524317, 0, 0, 524318, 0, 0, 524319, 0, 0, 524320, 0, 0, 524321, 0, 0, 524322, 0, 0, 524323, 0, 0, 524324, 0, 0, 524325, 0, 0, 524326, 0, 0, 524327, 0, 0, 524328, 0, 0, 524329, 0, 0, 524330, 0, 0, 524331, 0, 0, 524332, 0, 0, 524333, 0, 0, 524334, 0, 0, 524335, 0, 0, 524336, 0, 0, 524337, 0, 0, 524338, 0, 0, 524339, 0, 0, 655324, 0, 0, 655325, 0, 0, 655326, 0, 0, 655327, 0, 0, 655328, 0, 0, 655329, 0, 0, 655330, 0, 0, 655331, 0, 0, 655332, 0, 0, 655333, 0, 0, 655334, 0, 0, 655335, 0, 0, 655336, 0, 0, 655337, 0, 0, 655338, 0, 0, 655339, 0, 0, 655340, 0, 0, 655341, 2, 0, 655342, 2, 0, 655343, 2, 0, 655344, 2, 0, 655345, 2, 0, 655346, 2, 0, 655347, 2, 0, 655348, 2, 0, 655349, 2, 0, 655350, 2, 0, 655351, 2, 0, 655352, 2, 0, 655353, 0, 0, 655354, 0, 0, 655355, 0, 0, 655356, 2, 0, 655357, 2, 0, 655358, 0, 0, 655359, 0, 0, 589824, 0, 0, 589825, 0, 0, 589826, 0, 0, 589827, 0, 0, 589828, 2, 0, 589829, 2, 0, 589830, 1, 0, 589831, 1, 0, 589832, 1, 0, 589833, 2, 0, 589834, 2, 0, 589835, 2, 0, 589836, 0, 0, 589837, 0, 0, 589838, 0, 0, 589839, 0, 0, 589840, 0, 0, 589841, 0, 0, 589842, 2, 0, 589843, 2, 0, 589844, 0, 0, 589845, 0, 0, 589846, 2, 0, 589847, 0, 0, 589848, 0, 0, 589849, 0, 0, 589850, 0, 0, 589851, 0, 0, 589852, 0, 0, 589853, 0, 0, 589854, 0, 0, 589855, 0, 0, 589856, 0, 0, 589857, 0, 0, 589858, 0, 0, 589859, 0, 0, 589860, 0, 0, 589861, 0, 0, 589862, 0, 0, 589863, 0, 0, 589864, 0, 0, 589865, 0, 0, 589866, 0, 0, 589867, 0, 0, 589868, 0, 0, 589869, 0, 0, 589870, 0, 0, 589871, 0, 0, 589872, 0, 0, 589873, 0, 0, 589874, 0, 0, 720860, 0, 0, 720861, 0, 0, 720862, 0, 0, 720863, 0, 0, 720864, 0, 0, 720865, 0, 0, 720866, 0, 0, 720867, 0, 0, 720868, 0, 0, 720869, 0, 0, 720870, 0, 0, 720871, 0, 0, 720872, 0, 0, 720873, 0, 0, 720874, 0, 0, 720875, 0, 0, 720876, 0, 0, 720877, 2, 0, 720878, 2, 0, 720879, 2, 0, 720880, 2, 0, 720881, 2, 0, 720882, 2, 0, 720883, 2, 0, 720884, 2, 0, 720885, 2, 0, 720886, 2, 0, 720887, 2, 0, 720888, 2, 0, 720889, 2, 0, 720890, 0, 0, 720891, 0, 0, 720892, 0, 0, 720893, 2, 0, 720894, 2, 0, 720895, 0, 0, 655360, 0, 0, 655361, 0, 0, 655362, 0, 0, 655363, 0, 0, 655364, 2, 0, 655365, 2, 0, 655366, 2, 0, 655367, 2, 0, 655368, 2, 0, 655369, 2, 0, 655370, 2, 0, 655371, 2, 0, 655372, 0, 0, 655373, 0, 0, 655374, 0, 0, 655375, 0, 0, 655376, 0, 0, 655377, 2, 0, 655378, 2, 0, 655379, 0, 0, 655380, 0, 0, 655381, 0, 0, 655382, 0, 0, 655383, 0, 0, 655384, 0, 0, 655385, 0, 0, 655386, 0, 0, 655387, 0, 0, 655388, 0, 0, 655389, 0, 0, 655390, 0, 0, 655391, 0, 0, 655392, 0, 0, 655393, 0, 0, 655394, 0, 0, 655395, 0, 0, 655396, 0, 0, 655397, 0, 0, 655398, 0, 0, 655399, 0, 0, 655400, 0, 0, 655401, 0, 0, 655402, 0, 0, 655403, 0, 0, 655404, 0, 0, 655405, 0, 0, 655406, 0, 0, 655407, 0, 0, 655408, 0, 0, 655409, 0, 0, 655410, 0, 0, 786396, 0, 0, 786397, 0, 0, 786398, 0, 0, 786399, 0, 0, 786400, 0, 0, 786401, 0, 0, 786402, 0, 0, 786403, 0, 0, 786404, 0, 0, 786405, 0, 0, 786406, 0, 0, 786407, 0, 0, 786408, 0, 0, 786409, 0, 0, 786410, 0, 0, 786411, 0, 0, 786412, 0, 0, 786413, 0, 0, 786414, 2, 0, 786415, 2, 0, 786416, 2, 0, 786417, 2, 0, 786418, 2, 0, 786419, 0, 0, 786420, 2, 0, 786421, 2, 0, 786422, 2, 0, 786423, 2, 0, 786424, 0, 0, 786425, 0, 0, 786426, 0, 0, 786427, 0, 0, 786428, 2, 0, 786429, 0, 0, 786430, 2, 0, 786431, 0, 0, 720896, 0, 0, 720897, 0, 0, 720898, 0, 0, 720899, 0, 0, 720900, 2, 0, 720901, 2, 0, 720902, 2, 0, 720903, 2, 0, 720904, 2, 0, 720905, 2, 0, 720906, 2, 0, 720907, 2, 0, 720908, 2, 0, 720909, 0, 0, 720910, 0, 0, 720911, 0, 0, 720912, 0, 0, 720913, 0, 0, 720914, 0, 0, 720915, 0, 0, 720916, 0, 0, 720917, 0, 0, 720918, 0, 0, 720919, 0, 0, 720920, 0, 0, 720921, 0, 0, 720922, 0, 0, 720923, 0, 0, 720924, 0, 0, 720925, 0, 0, 720926, 0, 0, 720927, 0, 0, 720928, 0, 0, 720929, 0, 0, 720930, 0, 0, 720931, 0, 0, 720932, 0, 0, 720933, 0, 0, 720934, 0, 0, 720935, 0, 0, 720936, 0, 0, 720937, 0, 0, 720938, 0, 0, 720939, 0, 0, 720940, 0, 0, 720941, 0, 0, 720942, 0, 0, 720943, 0, 0, 720944, 0, 0, 720945, 0, 0, 720946, 0, 0, 851932, 0, 0, 851933, 0, 0, 851934, 0, 0, 851935, 0, 0, 851936, 0, 0, 851937, 0, 0, 851938, 0, 0, 851939, 0, 0, 851940, 0, 0, 851941, 0, 0, 851942, 0, 0, 851943, 0, 0, 851944, 0, 0, 851945, 0, 0, 851946, 0, 0, 851947, 0, 0, 851948, 0, 0, 851949, 0, 0, 851950, 0, 0, 851951, 0, 0, 851952, 0, 0, 851953, 0, 0, 851954, 0, 0, 851955, 0, 0, 851956, 0, 0, 851957, 0, 0, 851958, 0, 0, 851959, 0, 0, 851960, 0, 0, 851961, 0, 0, 851962, 0, 0, 851963, 0, 0, 851964, 2, 0, 851965, 2, 0, 851966, 2, 0, 851967, 0, 0, 786432, 0, 0, 786433, 0, 0, 786434, 0, 0, 786435, 0, 0, 786436, 0, 0, 786437, 0, 0, 786438, 0, 0, 786439, 0, 0, 786440, 0, 0, 786441, 0, 0, 786442, 0, 0, 786443, 0, 0, 786444, 0, 0, 786445, 0, 0, 786446, 0, 0, 786447, 0, 0, 786448, 0, 0, 786449, 0, 0, 786450, 0, 0, 786451, 0, 0, 786452, 0, 0, 786453, 0, 0, 786454, 0, 0, 786455, 0, 0, 786456, 0, 0, 786457, 0, 0, 786458, 0, 0, 786459, 0, 0, 786460, 0, 0, 786461, 0, 0, 786462, 0, 0, 786463, 0, 0, 786464, 0, 0, 786465, 0, 0, 786466, 0, 0, 786467, 0, 0, 786468, 0, 0, 786469, 0, 0, 786470, 0, 0, 786471, 0, 0, 786472, 0, 0, 786473, 0, 0, 786474, 0, 0, 786475, 0, 0, 786476, 0, 0, 786477, 0, 0, 786478, 0, 0, 786479, 0, 0, 786480, 0, 0, 786481, 0, 0, 786482, 0, 0, 917468, 0, 0, 917469, 0, 0, 917470, 0, 0, 917471, 0, 0, 917472, 0, 0, 917473, 0, 0, 917474, 0, 0, 917475, 0, 0, 917476, 0, 0, 917477, 0, 0, 917478, 0, 0, 917479, 0, 0, 917480, 0, 0, 917481, 0, 0, 917482, 0, 0, 917483, 0, 0, 917484, 0, 0, 917485, 0, 0, 917486, 0, 0, 917487, 0, 0, 917488, 0, 0, 917489, 0, 0, 917490, 0, 0, 917491, 0, 0, 917492, 0, 0, 917493, 0, 0, 917494, 0, 0, 917495, 0, 0, 917496, 0, 0, 917497, 0, 0, 917498, 0, 0, 917499, 0, 0, 917500, 0, 0, 917501, 2, 0, 917502, 2, 0, 917503, 2, 0, 851968, 0, 0, 851969, 0, 0, 851970, 0, 0, 851971, 0, 0, 851972, 0, 0, 851973, 0, 0, 851974, 0, 0, 851975, 0, 0, 851976, 0, 0, 851977, 0, 0, 851978, 0, 0, 851979, 0, 0, 851980, 0, 0, 851981, 0, 0, 851982, 0, 0, 851983, 0, 0, 851984, 0, 0, 851985, 0, 0, 851986, 0, 0, 851987, 0, 0, 851988, 0, 0, 851989, 0, 0, 851990, 0, 0, 851991, 0, 0, 851992, 0, 0, 851993, 0, 0, 851994, 0, 0, 851995, 0, 0, 851996, 0, 0, 851997, 0, 0, 851998, 0, 0, 851999, 0, 0, 852000, 0, 0, 852001, 0, 0, 852002, 0, 0, 852003, 0, 0, 852004, 0, 0, 852005, 0, 0, 852006, 0, 0, 852007, 0, 0, 852008, 0, 0, 852009, 0, 0, 852010, 0, 0, 852011, 0, 0, 852012, 0, 0, 852013, 0, 0, 852014, 0, 0, 852015, 0, 0, 852016, 0, 0, 852017, 0, 0, 852018, 0, 0, 983004, 0, 0, 983005, 0, 0, 983006, 0, 0, 983007, 0, 0, 983008, 0, 0, 983009, 0, 0, 983010, 0, 0, 983011, 0, 0, 983012, 0, 0, 983013, 0, 0, 983014, 0, 0, 983015, 0, 0, 983016, 0, 0, 983017, 0, 0, 983018, 0, 0, 983019, 0, 0, 983020, 0, 0, 983021, 0, 0, 983022, 0, 0, 983023, 0, 0, 983024, 0, 0, 983025, 0, 0, 983026, 0, 0, 983027, 0, 0, 983028, 0, 0, 983029, 0, 0, 983030, 0, 0, 983031, 0, 0, 983032, 0, 0, 983033, 0, 0, 983034, 0, 0, 983035, 0, 0, 983036, 2, 0, 983037, 2, 0, 983038, 2, 0, 983039, 0, 0, 917504, 0, 0, 917505, 0, 0, 917506, 0, 0, 917507, 0, 0, 917508, 0, 0, 917509, 0, 0, 917510, 0, 0, 917511, 0, 0, 917512, 0, 0, 917513, 0, 0, 917514, 0, 0, 917515, 0, 0, 917516, 0, 0, 917517, 0, 0, 917518, 0, 0, 917519, 0, 0, 917520, 0, 0, 917521, 0, 0, 917522, 2, 0, 917523, 0, 0, 917524, 0, 0, 917525, 0, 0, 917526, 0, 0, 917527, 0, 0, 917528, 0, 0, 917529, 0, 0, 917530, 0, 0, 917531, 0, 0, 917532, 0, 0, 917533, 0, 0, 917534, 0, 0, 917535, 0, 0, 917536, 0, 0, 917537, 0, 0, 917538, 0, 0, 917539, 0, 0, 917540, 0, 0, 917541, 0, 0, 917542, 0, 0, 917543, 0, 0, 917544, 0, 0, 917545, 0, 0, 917546, 0, 0, 917547, 0, 0, 917548, 0, 0, 917549, 0, 0, 917550, 0, 0, 917551, 0, 0, 917552, 0, 0, 917553, 0, 0, 917554, 0, 0, 1048540, 0, 0, 1048541, 0, 0, 1048542, 0, 0, 1048543, 0, 0, 1048544, 0, 0, 1048545, 0, 0, 1048546, 0, 0, 1048547, 0, 0, 1048548, 0, 0, 1048549, 0, 0, 1048550, 0, 0, 1048551, 0, 0, 1048552, 0, 0, 1048553, 0, 0, 1048554, 0, 0, 1048555, 0, 0, 1048556, 0, 0, 1048557, 0, 0, 1048558, 0, 0, 1048559, 0, 0, 1048560, 0, 0, 1048561, 0, 0, 1048562, 0, 0, 1048563, 0, 0, 1048564, 0, 0, 1048565, 0, 0, 1048566, 0, 0, 1048567, 0, 0, 1048568, 0, 0, 1048569, 0, 0, 1048570, 0, 0, 1048571, 0, 0, 1048572, 0, 0, 1048573, 2, 0, 1048574, 2, 0, 1048575, 0, 0, 983040, 0, 0, 983041, 0, 0, 983042, 0, 0, 983043, 0, 0, 983044, 0, 0, 983045, 0, 0, 983046, 0, 0, 983047, 0, 0, 983048, 0, 0, 983049, 0, 0, 983050, 0, 0, 983051, 0, 0, 983052, 0, 0, 983053, 0, 0, 983054, 0, 0, 983055, 2, 0, 983056, 2, 0, 983057, 2, 0, 983058, 2, 0, 983059, 0, 0, 983060, 0, 0, 983061, 0, 0, 983062, 0, 0, 983063, 0, 0, 983064, 0, 0, 983065, 0, 0, 983066, 0, 0, 983067, 0, 0, 983068, 0, 0, 983069, 0, 0, 983070, 0, 0, 983071, 0, 0, 983072, 0, 0, 983073, 0, 0, 983074, 0, 0, 983075, 0, 0, 983076, 0, 0, 983077, 0, 0, 983078, 0, 0, 983079, 0, 0, 983080, 0, 0, 983081, 0, 0, 983082, 0, 0, 983083, 0, 0, 983084, 0, 0, 983085, 0, 0, 983086, 0, 0, 983087, 0, 0, 983088, 0, 0, 983089, 0, 0, 983090, 0, 0, 1114076, 0, 0, 1114077, 0, 0, 1114078, 0, 0, 1114079, 0, 0, 1114080, 0, 0, 1114081, 0, 0, 1114082, 0, 0, 1114083, 0, 0, 1114084, 0, 0, 1114085, 0, 0, 1114086, 0, 0, 1114087, 0, 0, 1114088, 0, 0, 1114089, 0, 0, 1114090, 0, 0, 1114091, 0, 0, 1114092, 0, 0, 1114093, 0, 0, 1114094, 0, 0, 1114095, 0, 0, 1114096, 0, 0, 1114097, 0, 0, 1114098, 0, 0, 1114099, 0, 0, 1114100, 0, 0, 1114101, 0, 0, 1114102, 0, 0, 1114103, 0, 0, 1114104, 0, 0, 1114105, 0, 0, 1114106, 0, 0, 1114107, 0, 0, 1114108, 0, 0, 1114109, 0, 0, 1114110, 0, 0, 1114111, 0, 0, 1048576, 0, 0, 1048577, 2, 0, 1048578, 2, 0, 1048579, 0, 0, 1048580, 0, 0, 1048581, 0, 0, 1048582, 0, 0, 1048583, 0, 0, 1048584, 0, 0, 1048585, 0, 0, 1048586, 0, 0, 1048587, 0, 0, 1048588, 0, 0, 1048589, 0, 0, 1048590, 2, 0, 1048591, 0, 0, 1048592, 0, 0, 1048593, 2, 0, 1048594, 0, 0, 1048595, 0, 0, 1048596, 0, 0, 1048597, 0, 0, 1048598, 0, 0, 1048599, 0, 0, 1048600, 0, 0, 1048601, 0, 0, 1048602, 0, 0, 1048603, 0, 0, 1048604, 0, 0, 1048605, 0, 0, 1048606, 0, 0, 1048607, 0, 0, 1048608, 0, 0, 1048609, 0, 0, 1048610, 0, 0, 1048611, 0, 0, 1048612, 0, 0, 1048613, 0, 0, 1048614, 0, 0, 1048615, 0, 0, 1048616, 0, 0, 1048617, 0, 0, 1048618, 0, 0, 1048619, 0, 0, 1048620, 0, 0, 1048621, 0, 0, 1048622, 0, 0, 1048623, 0, 0, 1048624, 0, 0, 1048625, 0, 0, 1048626, 0, 0, 1179613, 0, 0, 1179614, 0, 0, 1179615, 0, 0, 1179616, 0, 0, 1179617, 0, 0, 1179618, 0, 0, 1179619, 0, 0, 1179620, 0, 0, 1179621, 0, 0, 1179622, 0, 0, 1179623, 0, 0, 1179624, 0, 0, 1179625, 0, 0, 1179626, 0, 0, 1179627, 0, 0, 1179628, 0, 0, 1179629, 0, 0, 1179630, 0, 0, 1179631, 0, 0, 1179632, 0, 0, 1179633, 0, 0, 1179634, 0, 0, 1179635, 0, 0, 1179636, 0, 0, 1179637, 0, 0, 1179638, 0, 0, 1179639, 0, 0, 1179640, 0, 0, 1179641, 0, 0, 1179642, 0, 0, 1179643, 0, 0, 1179644, 0, 0, 1179645, 0, 0, 1179646, 0, 0, 1179647, 0, 0, 1114112, 0, 0, 1114113, 0, 0, 1114114, 2, 0, 1114115, 2, 0, 1114116, 2, 0, 1114117, 2, 0, 1114118, 0, 0, 1114119, 0, 0, 1114120, 0, 0, 1114121, 0, 0, 1114122, 0, 0, 1114123, 0, 0, 1114124, 0, 0, 1114125, 0, 0, 1114126, 0, 0, 1114127, 2, 0, 1114128, 0, 0, 1114129, 2, 0, 1114130, 2, 0, 1114131, 0, 0, 1114132, 0, 0, 1114133, 0, 0, 1114134, 0, 0, 1114135, 0, 0, 1114136, 0, 0, 1114137, 0, 0, 1114138, 0, 0, 1114139, 0, 0, 1114140, 0, 0, 1114141, 0, 0, 1114142, 0, 0, 1114143, 0, 0, 1114144, 0, 0, 1114145, 0, 0, 1114146, 0, 0, 1114147, 0, 0, 1114148, 0, 0, 1114149, 0, 0, 1114150, 0, 0, 1114151, 0, 0, 1114152, 0, 0, 1114153, 0, 0, 1114154, 0, 0, 1114155, 0, 0, 1114156, 0, 0, 1114157, 0, 0, 1114158, 0, 0, 1114159, 0, 0, 1114160, 0, 0, 1114161, 0, 0, 1114162, 0, 0, 1245149, 0, 0, 1245150, 0, 0, 1245151, 0, 0, 1245152, 0, 0, 1245153, 0, 0, 1245154, 0, 0, 1245155, 0, 0, 1245156, 0, 0, 1245157, 0, 0, 1245158, 0, 0, 1245159, 0, 0, 1245160, 0, 0, 1245161, 0, 0, 1245162, 0, 0, 1245163, 0, 0, 1245164, 0, 0, 1245165, 0, 0, 1245166, 0, 0, 1245167, 0, 0, 1245168, 0, 0, 1245169, 0, 0, 1245170, 0, 0, 1245171, 0, 0, 1245172, 0, 0, 1245173, 0, 0, 1245174, 0, 0, 1245175, 0, 0, 1245176, 0, 0, 1245177, 0, 0, 1245178, 0, 0, 1245179, 0, 0, 1245180, 0, 0, 1245181, 0, 0, 1245182, 0, 0, 1245183, 0, 0, 1179648, 0, 0, 1179649, 0, 0, 1179650, 0, 0, 1179651, 0, 0, 1179652, 2, 0, 1179653, 2, 0, 1179654, 2, 0, 1179655, 0, 0, 1179656, 0, 0, 1179657, 0, 0, 1179658, 0, 0, 1179659, 0, 0, 1179660, 0, 0, 1179661, 0, 0, 1179662, 0, 0, 1179663, 0, 0, 1179664, 2, 0, 1179665, 2, 0, 1179666, 2, 0, 1179667, 0, 0, 1179668, 0, 0, 1179669, 0, 0, 1179670, 0, 0, 1179671, 0, 0, 1179672, 0, 0, 1179673, 0, 0, 1179674, 0, 0, 1179675, 0, 0, 1179676, 0, 0, 1179677, 0, 0, 1179678, 0, 0, 1179679, 0, 0, 1179680, 0, 0, 1179681, 0, 0, 1179682, 0, 0, 1179683, 0, 0, 1179684, 0, 0, 1179685, 0, 0, 1179686, 0, 0, 1179687, 0, 0, 1179688, 0, 0, 1179689, 0, 0, 1179690, 0, 0, 1179691, 0, 0, 1179692, 0, 0, 1179693, 0, 0, 1179694, 0, 0, 1179695, 0, 0, 1179696, 0, 0, 1179697, 0, 0, 1310685, 0, 0, 1310686, 0, 0, 1310687, 0, 0, 1310688, 0, 0, 1310689, 0, 0, 1310690, 0, 0, 1310691, 0, 0, 1310692, 0, 0, 1310693, 0, 0, 1310694, 0, 0, 1310695, 0, 0, 1310696, 0, 0, 1310697, 0, 0, 1310698, 0, 0, 1310699, 0, 0, 1310700, 0, 0, 1310701, 0, 0, 1310702, 0, 0, 1310703, 0, 0, 1310704, 0, 0, 1310705, 0, 0, 1310706, 0, 0, 1310707, 0, 0, 1310708, 0, 0, 1310709, 0, 0, 1310710, 0, 0, 1310711, 0, 0, 1310712, 0, 0, 1310713, 0, 0, 1310714, 0, 0, 1310715, 0, 0, 1310716, 0, 0, 1310717, 0, 0, 1310718, 0, 0, 1310719, 0, 0, 1245184, 0, 0, 1245185, 0, 0, 1245186, 0, 0, 1245187, 0, 0, 1245188, 0, 0, 1245189, 2, 0, 1245190, 0, 0, 1245191, 0, 0, 1245192, 0, 0, 1245193, 0, 0, 1245194, 0, 0, 1245195, 0, 0, 1245196, 0, 0, 1245197, 0, 0, 1245198, 0, 0, 1245199, 0, 0, 1245200, 2, 0, 1245201, 0, 0, 1245202, 0, 0, 1245203, 0, 0, 1245204, 0, 0, 1245205, 0, 0, 1245206, 0, 0, 1245207, 0, 0, 1245208, 0, 0, 1245209, 0, 0, 1245210, 0, 0, 1245211, 0, 0, 1245212, 0, 0, 1245213, 0, 0, 1245214, 0, 0, 1245215, 0, 0, 1245216, 0, 0, 1245217, 0, 0, 1245218, 0, 0, 1245219, 0, 0, 1245220, 0, 0, 1245221, 0, 0, 1245222, 0, 0, 1245223, 0, 0, 1245224, 0, 0, 1245225, 0, 0, 1245226, 0, 0, 1245227, 0, 0, 1245228, 0, 0, 1245229, 0, 0, 1245230, 0, 0, 1245231, 0, 0, 1245232, 0, 0, 1376221, 0, 0, 1376222, 0, 0, 1376223, 0, 0, 1376224, 0, 0, 1376225, 0, 0, 1376226, 0, 0, 1376227, 0, 0, 1376228, 0, 0, 1376229, 0, 0, 1376230, 0, 0, 1376231, 0, 0, 1376232, 0, 0, 1376233, 0, 0, 1376234, 0, 0, 1376235, 0, 0, 1376236, 0, 0, 1376237, 0, 0, 1376238, 0, 0, 1376239, 0, 0, 1376240, 0, 0, 1376241, 0, 0, 1376242, 0, 0, 1376243, 0, 0, 1376244, 0, 0, 1376245, 0, 0, 1376246, 0, 0, 1376247, 0, 0, 1376248, 0, 0, 1376249, 0, 0, 1376250, 0, 0, 1376251, 0, 0, 1376252, 0, 0, 1376253, 0, 0, 1376254, 0, 0, 1376255, 0, 0, 1310720, 0, 0, 1310721, 0, 0, 1310722, 0, 0, 1310723, 0, 0, 1310724, 2, 0, 1310725, 2, 0, 1310726, 0, 0, 1310727, 0, 0, 1310728, 0, 0, 1310729, 0, 0, 1310730, 0, 0, 1310731, 0, 0, 1310732, 0, 0, 1310733, 0, 0, 1310734, 0, 0, 1310735, 0, 0, 1310736, 0, 0, 1310737, 0, 0, 1310738, 0, 0, 1310739, 0, 0, 1310740, 0, 0, 1310741, 0, 0, 1310742, 0, 0, 1310743, 0, 0, 1310744, 0, 0, 1310745, 0, 0, 1310746, 0, 0, 1310747, 0, 0, 1310748, 0, 0, 1310749, 0, 0, 1310750, 0, 0, 1310751, 0, 0, 1310752, 0, 0, 1310753, 0, 0, 1310754, 0, 0, 1310755, 0, 0, 1310756, 0, 0, 1310757, 0, 0, 1310758, 0, 0, 1310759, 0, 0, 1310760, 0, 0, 1310761, 0, 0, 1310762, 0, 0, 1310763, 0, 0, 1310764, 0, 0, 1310765, 0, 0, 1310766, 0, 0, 1310767, 0, 0, 1310768, 0, 0, 1441757, 0, 0, 1441758, 0, 0, 1441759, 0, 0, 1441760, 0, 0, 1441761, 0, 0, 1441762, 0, 0, 1441763, 0, 0, 1441764, 0, 0, 1441765, 0, 0, 1441766, 0, 0, 1441767, 0, 0, 1441768, 0, 0, 1441769, 0, 0, 1441770, 0, 0, 1441771, 0, 0, 1441772, 0, 0, 1441773, 0, 0, 1441774, 0, 0, 1441775, 0, 0, 1441776, 0, 0, 1441777, 0, 0, 1441778, 0, 0, 1441779, 0, 0, 1441780, 0, 0, 1441781, 0, 0, 1441782, 0, 0, 1441783, 0, 0, 1441784, 0, 0, 1441785, 0, 0, 1441786, 0, 0, 1441787, 0, 0, 1441788, 0, 0, 1441789, 0, 0, 1441790, 0, 0, 1441791, 0, 0, 1376256, 0, 0, 1376257, 0, 0, 1376258, 0, 0, 1376259, 0, 0, 1376260, 0, 0, 1376261, 0, 0, 1376262, 0, 0, 1376263, 0, 0, 1376264, 0, 0, 1376265, 0, 0, 1376266, 0, 0, 1376267, 0, 0, 1376268, 0, 0, 1376269, 0, 0, 1376270, 0, 0, 1376271, 0, 0, 1376272, 0, 0, 1376273, 0, 0, 1376274, 0, 0, 1376275, 0, 0, 1376276, 0, 0, 1376277, 0, 0, 1376278, 0, 0, 1376279, 0, 0, 1376280, 0, 0, 1376281, 0, 0, 1376282, 0, 0, 1376283, 0, 0, 1376284, 0, 0, 1376285, 0, 0, 1376286, 0, 0, 1376287, 0, 0, 1376288, 0, 0, 1376289, 0, 0, 1376290, 0, 0, 1376291, 0, 0, 1376292, 0, 0, 1376293, 0, 0, 1376294, 0, 0, 1376295, 0, 0, 1376296, 0, 0, 1376297, 0, 0, 1376298, 0, 0, 1376299, 0, 0, 1376300, 0, 0, 1376301, 0, 0, 1376302, 0, 0, 1376303, 0, 0, 1376304, 0, 0, 1507293, 0, 0, 1507294, 0, 0, 1507295, 0, 0, 1507296, 0, 0, 1507297, 0, 0, 1507298, 0, 0, 1507299, 0, 0, 1507300, 0, 0, 1507301, 0, 0, 1507302, 0, 0, 1507303, 0, 0, 1507304, 0, 0, 1507305, 0, 0, 1507306, 0, 0, 1507307, 0, 0, 1507308, 0, 0, 1507309, 0, 0, 1507310, 0, 0, 1507311, 0, 0, 1507312, 0, 0, 1507313, 0, 0, 1507314, 0, 0, 1507315, 0, 0, 1507316, 0, 0, 1507317, 0, 0, 1507318, 0, 0, 1507319, 0, 0, 1507320, 0, 0, 1507321, 0, 0, 1507322, 0, 0, 1507323, 0, 0, 1507324, 0, 0, 1507325, 0, 0, 1507326, 0, 0, 1507327, 0, 0, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1441824, 0, 0, 1441825, 0, 0, 1441826, 0, 0, 1441827, 0, 0, 1441828, 0, 0, 1441829, 0, 0, 1441830, 0, 0, 1441831, 0, 0, 1441832, 0, 0, 1441833, 0, 0, 1441834, 0, 0, 1441835, 0, 0, 1441836, 0, 0, 1441837, 0, 0, 1441838, 0, 0, 1441839, 0, 0, 1441840, 0, 0, 1572829, 0, 0, 1572830, 0, 0, 1572831, 0, 0, 1572832, 0, 0, 1572833, 0, 0, 1572834, 0, 0, 1572835, 0, 0, 1572836, 0, 0, 1572837, 0, 0, 1572838, 0, 0, 1572839, 0, 0, 1572840, 0, 0, 1572841, 0, 0, 1572842, 0, 0, 1572843, 0, 0, 1572844, 0, 0, 1572845, 0, 0, 1572846, 0, 0, 1572847, 0, 0, 1572848, 0, 0, 1572849, 0, 0, 1572850, 0, 0, 1572851, 0, 0, 1572852, 0, 0, 1572853, 0, 0, 1572854, 0, 0, 1572855, 0, 0, 1572856, 0, 0, 1572857, 0, 0, 1572858, 0, 0, 1572859, 0, 0, 1572860, 0, 0, 1572861, 0, 0, 1572862, 0, 0, 1572863, 0, 0, 1507328, 0, 0, 1507329, 0, 0, 1507330, 0, 0, 1507331, 0, 0, 1507332, 0, 0, 1507333, 0, 0, 1507334, 0, 0, 1507335, 0, 0, 1507336, 0, 0, 1507337, 0, 0, 1507338, 0, 0, 1507339, 0, 0, 1507340, 0, 0, 1507341, 0, 0, 1507342, 0, 0, 1507343, 0, 0, 1507344, 0, 0, 1507345, 0, 0, 1507346, 0, 0, 1507347, 0, 0, 1507348, 0, 0, 1507349, 0, 0, 1507350, 0, 0, 1507351, 0, 0, 1507352, 0, 0, 1507353, 0, 0, 1507354, 0, 0, 1507355, 0, 0, 1507356, 0, 0, 1507357, 0, 0, 1507358, 0, 0, 1507359, 0, 0, 1507360, 0, 0, 1507361, 0, 0, 1507362, 0, 0, 1507363, 0, 0, 1507364, 0, 0, 1507365, 0, 0, 1507366, 0, 0, 1507367, 0, 0, 1507368, 0, 0, 1507369, 0, 0, 1507370, 0, 0, 1507371, 0, 0, 1507372, 0, 0, 1507373, 0, 0, 1507374, 0, 0, 1507375, 0, 0, 1507376, 0, 0, 1638365, 0, 0, 1638366, 0, 0, 1638367, 0, 0, 1638368, 0, 0, 1638369, 0, 0, 1638370, 0, 0, 1638371, 0, 0, 1638372, 0, 0, 1638373, 0, 0, 1638374, 0, 0, 1638375, 0, 0, 1638376, 0, 0, 1638377, 0, 0, 1638378, 0, 0, 1638379, 0, 0, 1638380, 0, 0, 1638381, 0, 0, 1638382, 0, 0, 1638383, 0, 0, 1638384, 0, 0, 1638385, 0, 0, 1638386, 0, 0, 1638387, 0, 0, 1638388, 0, 0, 1638389, 0, 0, 1638390, 0, 0, 1638391, 0, 0, 1638392, 0, 0, 1638393, 0, 0, 1638394, 0, 0, 1638395, 0, 0, 1638396, 0, 0, 1638397, 0, 0, 1638398, 0, 0, 1638399, 0, 0, 1572864, 0, 0, 1572865, 0, 0, 1572866, 0, 0, 1572867, 0, 0, 1572868, 0, 0, 1572869, 0, 0, 1572870, 0, 0, 1572871, 0, 0, 1572872, 0, 0, 1572873, 0, 0, 1572874, 0, 0, 1572875, 0, 0, 1572876, 0, 0, 1572877, 0, 0, 1572878, 0, 0, 1572879, 0, 0, 1572880, 0, 0, 1572881, 0, 0, 1572882, 0, 0, 1572883, 0, 0, 1572884, 0, 0, 1572885, 0, 0, 1572886, 0, 0, 1572887, 0, 0, 1572888, 0, 0, 1572889, 0, 0, 1572890, 0, 0, 1572891, 0, 0, 1572892, 0, 0, 1572893, 0, 0, 1572894, 0, 0, 1572895, 0, 0, 1572896, 0, 0, 1572897, 0, 0, 1572898, 0, 0, 1572899, 0, 0, 1572900, 0, 0, 1572901, 0, 0, 1572902, 0, 0, 1572903, 0, 0, 1572904, 0, 0, 1572905, 0, 0, 1572906, 0, 0, 1572907, 0, 0, 1572908, 0, 0, 1572909, 0, 0, 1572910, 0, 0, 1572911, 0, 0, 1572912, 0, 0, 1703902, 0, 0, 1703903, 0, 0, 1703904, 0, 0, 1703905, 0, 0, 1703906, 0, 0, 1703907, 0, 0, 1703908, 0, 0, 1703909, 0, 0, 1703910, 0, 0, 1703911, 0, 0, 1703912, 0, 0, 1703913, 0, 0, 1703914, 0, 0, 1703915, 0, 0, 1703916, 0, 0, 1703917, 0, 0, 1703918, 0, 0, 1703919, 0, 0, 1703920, 0, 0, 1703921, 0, 0, 1703922, 0, 0, 1703923, 0, 0, 1703924, 0, 0, 1703925, 0, 0, 1703926, 0, 0, 1703927, 0, 0, 1703928, 0, 0, 1703929, 0, 0, 1703930, 0, 0, 1703931, 0, 0, 1703932, 0, 0, 1703933, 0, 0, 1703934, 0, 0, 1703935, 0, 0, 1638400, 0, 0, 1638401, 0, 0, 1638402, 0, 0, 1638403, 0, 0, 1638404, 0, 0, 1638405, 0, 0, 1638406, 0, 0, 1638407, 0, 0, 1638408, 0, 0, 1638409, 0, 0, 1638410, 0, 0, 1638411, 0, 0, 1638412, 0, 0, 1638413, 0, 0, 1638414, 0, 0, 1638415, 0, 0, 1638416, 0, 0, 1638417, 0, 0, 1638418, 0, 0, 1638419, 0, 0, 1638420, 0, 0, 1638421, 0, 0, 1638422, 0, 0, 1638423, 0, 0, 1638424, 0, 0, 1638425, 0, 0, 1638426, 0, 0, 1638427, 0, 0, 1638428, 0, 0, 1638429, 0, 0, 1638430, 0, 0, 1638431, 0, 0, 1638432, 0, 0, 1638433, 0, 0, 1638434, 0, 0, 1638435, 0, 0, 1638436, 0, 0, 1638437, 0, 0, 1638438, 0, 0, 1638439, 0, 0, 1638440, 0, 0, 1638441, 0, 0, 1638442, 0, 0, 1638443, 0, 0, 1638444, 0, 0, 1638445, 0, 0, 1638446, 0, 0, 1638447, 0, 0, 1638448, 0, 0, 1769438, 0, 0, 1769439, 0, 0, 1769440, 0, 0, 1769441, 0, 0, 1769442, 0, 0, 1769443, 0, 0, 1769444, 0, 0, 1769445, 0, 0, 1769446, 0, 0, 1769447, 0, 0, 1769448, 0, 0, 1769449, 0, 0, 1769450, 0, 0, 1769451, 0, 0, 1769452, 0, 0, 1769453, 0, 0, 1769454, 0, 0, 1769455, 0, 0, 1769456, 0, 0, 1769457, 0, 0, 1769458, 0, 0, 1769459, 0, 0, 1769460, 0, 0, 1769461, 0, 0, 1769462, 0, 0, 1769463, 0, 0, 1769464, 0, 0, 1769465, 0, 0, 1769466, 0, 0, 1769467, 0, 0, 1769468, 0, 0, 1769469, 0, 0, 1769470, 0, 0, 1769471, 0, 0, 1703936, 0, 0, 1703937, 0, 0, 1703938, 0, 0, 1703939, 0, 0, 1703940, 0, 0, 1703941, 0, 0, 1703942, 0, 0, 1703943, 0, 0, 1703944, 0, 0, 1703945, 0, 0, 1703946, 0, 0, 1703947, 0, 0, 1703948, 0, 0, 1703949, 0, 0, 1703950, 0, 0, 1703951, 0, 0, 1703952, 0, 0, 1703953, 0, 0, 1703954, 0, 0, 1703955, 0, 0, 1703956, 0, 0, 1703957, 0, 0, 1703958, 0, 0, 1703959, 0, 0, 1703960, 0, 0, 1703961, 0, 0, 1703962, 0, 0, 1703963, 0, 0, 1703964, 0, 0, 1703965, 0, 0, 1703966, 0, 0, 1703967, 0, 0, 1703968, 0, 0, 1703969, 0, 0, 1703970, 0, 0, 1703971, 0, 0, 1703972, 0, 0, 1703973, 0, 0, 1703974, 0, 0, 1703975, 0, 0, 1703976, 0, 0, 1703977, 0, 0, 1703978, 0, 0, 1703979, 0, 0, 1703980, 0, 0, 1703981, 0, 0, 1703982, 0, 0, 1703983, 0, 0, 1703984, 0, 0, 1834974, 0, 0, 1834975, 0, 0, 1834976, 0, 0, 1834977, 0, 0, 1834978, 0, 0, 1834979, 0, 0, 1834980, 0, 0, 1834981, 0, 0, 1834982, 0, 0, 1834983, 0, 0, 1834984, 0, 0, 1834985, 0, 0, 1834986, 0, 0, 1834987, 0, 0, 1834988, 0, 0, 1834989, 0, 0, 1834990, 0, 0, 1834991, 0, 0, 1834992, 0, 0, 1834993, 0, 0, 1834994, 0, 0, 1834995, 0, 0, 1834996, 0, 0, 1834997, 0, 0, 1834998, 0, 0, 1834999, 0, 0, 1835000, 0, 0, 1835001, 0, 0, 1835002, 0, 0, 1835003, 0, 0, 1835004, 0, 0, 1835005, 0, 0, 1835006, 0, 0, 1835007, 0, 0, 1769472, 0, 0, 1769473, 0, 0, 1769474, 0, 0, 1769475, 0, 0, 1769476, 0, 0, 1769477, 0, 0, 1769478, 0, 0, 1769479, 0, 0, 1769480, 0, 0, 1769481, 0, 0, 1769482, 0, 0, 1769483, 0, 0, 1769484, 0, 0, 1769485, 0, 0, 1769486, 0, 0, 1769487, 0, 0, 1769488, 0, 0, 1769489, 0, 0, 1769490, 0, 0, 1769491, 0, 0, 1769492, 0, 0, 1769493, 0, 0, 1769494, 0, 0, 1769495, 0, 0, 1769496, 0, 0, 1769497, 0, 0, 1769498, 0, 0, 1769499, 0, 0, 1769500, 0, 0, 1769501, 0, 0, 1769502, 0, 0, 1769503, 0, 0, 1769504, 0, 0, 1769505, 0, 0, 1769506, 0, 0, 1769507, 0, 0, 1769508, 0, 0, 1769509, 0, 0, 1769510, 0, 0, 1769511, 0, 0, 1769512, 0, 0, 1769513, 0, 0, 1769514, 0, 0, 1769515, 0, 0, 1769516, 0, 0, 1769517, 0, 0, 1769518, 0, 0, 1769519, 0, 0, 1900511, 0, 0, 1900512, 0, 0, 1900513, 0, 0, 1900514, 0, 0, 1900515, 0, 0, 1900516, 0, 0, 1900517, 0, 0, 1900518, 0, 0, 1900519, 0, 0, 1900520, 0, 0, 1900521, 0, 0, 1900522, 0, 0, 1900523, 0, 0, 1900524, 0, 0, 1900525, 0, 0, 1900526, 0, 0, 1900527, 0, 0, 1900528, 0, 0, 1900529, 0, 0, 1900530, 0, 0, 1900531, 0, 0, 1900532, 0, 0, 1900533, 0, 0, 1900534, 0, 0, 1900535, 0, 0, 1900536, 0, 0, 1900537, 0, 0, 1900538, 0, 0, 1900539, 0, 0, 1900540, 0, 0, 1900541, 0, 0, 1900542, 0, 0, 1900543, 0, 0, 1835008, 0, 0, 1835009, 0, 0, 1835010, 0, 0, 1835011, 0, 0, 1835012, 0, 0, 1835013, 0, 0, 1835014, 0, 0, 1835015, 0, 0, 1835016, 0, 0, 1835017, 0, 0, 1835018, 0, 0, 1835019, 0, 0, 1835020, 0, 0, 1835021, 0, 0, 1835022, 0, 0, 1835023, 0, 0, 1835024, 0, 0, 1835025, 0, 0, 1835026, 0, 0, 1835027, 0, 0, 1835028, 0, 0, 1835029, 0, 0, 1835030, 0, 0, 1835031, 0, 0, 1835032, 0, 0, 1835033, 0, 0, 1835034, 0, 0, 1835035, 0, 0, 1835036, 0, 0, 1835037, 0, 0, 1835038, 0, 0, 1835039, 0, 0, 1835040, 0, 0, 1835041, 0, 0, 1835042, 0, 0, 1835043, 0, 0, 1835044, 0, 0, 1835045, 0, 0, 1835046, 0, 0, 1835047, 0, 0, 1835048, 0, 0, 1835049, 0, 0, 1835050, 0, 0, 1835051, 0, 0, 1835052, 0, 0, 1835053, 0, 0, 1835054, 0, 0, 1835055, 0, 0, 1966047, 0, 0, 1966048, 0, 0, 1966049, 0, 0, 1966050, 0, 0, 1966051, 0, 0, 1966052, 0, 0, 1966053, 0, 0, 1966054, 0, 0, 1966055, 0, 0, 1966056, 0, 0, 1966057, 0, 0, 1966058, 0, 0, 1966059, 0, 0, 1966060, 0, 0, 1966061, 0, 0, 1966062, 0, 0, 1966063, 0, 0, 1966064, 0, 0, 1966065, 0, 0, 1966066, 0, 0, 1966067, 0, 0, 1966068, 0, 0, 1966069, 0, 0, 1966070, 0, 0, 1966071, 0, 0, 1966072, 0, 0, 1966073, 0, 0, 1966074, 0, 0, 1966075, 0, 0, 1966076, 0, 0, 1966077, 0, 0, 1966078, 0, 0, 1966079, 0, 0, 1900544, 0, 0, 1900545, 0, 0, 1900546, 0, 0, 1900547, 0, 0, 1900548, 0, 0, 1900549, 0, 0, 1900550, 0, 0, 1900551, 0, 0, 1900552, 0, 0, 1900553, 0, 0, 1900554, 0, 0, 1900555, 0, 0, 1900556, 0, 0, 1900557, 0, 0, 1900558, 0, 0, 1900559, 0, 0, 1900560, 0, 0, 1900561, 0, 0, 1900562, 0, 0, 1900563, 0, 0, 1900564, 0, 0, 1900565, 0, 0, 1900566, 0, 0, 1900567, 0, 0, 1900568, 0, 0, 1900569, 0, 0, 1900570, 0, 0, 1900571, 0, 0, 1900572, 0, 0, 1900573, 0, 0, 1900574, 0, 0, 1900575, 0, 0, 1900576, 0, 0, 1900577, 0, 0, 1900578, 0, 0, 1900579, 0, 0, 1900580, 0, 0, 1900581, 0, 0, 1900582, 0, 0, 1900583, 0, 0, 1900584, 0, 0, 1900585, 0, 0, 1900586, 0, 0, 1900587, 0, 0, 1900588, 0, 0, 1900589, 0, 0, 1900590, 0, 0, 1900591, 0, 0, 2031583, 0, 0, 2031584, 0, 0, 2031585, 0, 0, 2031586, 0, 0, 2031587, 0, 0, 2031588, 0, 0, 2031589, 0, 0, 2031590, 0, 0, 2031591, 0, 0, 2031592, 0, 0, 2031593, 0, 0, 2031594, 0, 0, 2031595, 0, 0, 2031596, 0, 0, 2031597, 0, 0, 2031598, 0, 0, 2031599, 0, 0, 2031600, 0, 0, 2031601, 0, 0, 2031602, 0, 0, 2031603, 0, 0, 2031604, 0, 0, 2031605, 0, 0, 2031606, 0, 0, 2031607, 0, 0, 2031608, 0, 0, 2031609, 0, 0, 2031610, 0, 0, 2031611, 0, 0, 2031612, 0, 0, 2031613, 0, 0, 2031614, 0, 0, 2031615, 0, 0, 1966080, 0, 0, 1966081, 0, 0, 1966082, 0, 0, 1966083, 0, 0, 1966084, 0, 0, 1966085, 0, 0, 1966086, 0, 0, 1966087, 0, 0, 1966088, 0, 0, 1966089, 0, 0, 1966090, 0, 0, 1966091, 0, 0, 1966092, 0, 0, 1966093, 0, 0, 1966094, 0, 0, 1966095, 0, 0, 1966096, 0, 0, 1966097, 0, 0, 1966098, 0, 0, 1966099, 0, 0, 1966100, 0, 0, 1966101, 0, 0, 1966102, 0, 0, 1966103, 0, 0, 1966104, 0, 0, 1966105, 0, 0, 1966106, 0, 0, 1966107, 0, 0, 1966108, 0, 0, 1966109, 0, 0, 1966110, 0, 0, 1966111, 0, 0, 1966112, 0, 0, 1966113, 0, 0, 1966114, 0, 0, 1966115, 0, 0, 1966116, 0, 0, 1966117, 0, 0, 1966118, 0, 0, 1966119, 0, 0, 1966120, 0, 0, 1966121, 0, 0, 1966122, 0, 0, 1966123, 0, 0, 1966124, 0, 0, 1966125, 0, 0, 1966126, 0, 0, 1966127, 0, 0, 2097119, 0, 0, 2097120, 0, 0, 2097121, 0, 0, 2097122, 0, 0, 2097123, 0, 0, 2097124, 0, 0, 2097125, 0, 0, 2097126, 0, 0, 2097127, 0, 0, 2097128, 0, 0, 2097129, 0, 0, 2097130, 0, 0, 2097131, 0, 0, 2097132, 0, 0, 2097133, 0, 0, 2097134, 0, 0, 2097135, 0, 0, 2097136, 0, 0, 2097137, 0, 0, 2097138, 0, 0, 2097139, 0, 0, 2097140, 0, 0, 2097141, 0, 0, 2097142, 0, 0, 2097143, 0, 0, 2097144, 0, 0, 2097145, 0, 0, 2097146, 0, 0, 2097147, 0, 0, 2097148, 0, 0, 2097149, 0, 0, 2097150, 0, 0, 2097151, 0, 0, 2031616, 0, 0, 2031617, 0, 0, 2031618, 0, 0, 2031619, 0, 0, 2031620, 0, 0, 2031621, 0, 0, 2031622, 0, 0, 2031623, 0, 0, 2031624, 0, 0, 2031625, 0, 0, 2031626, 0, 0, 2031627, 0, 0, 2031628, 0, 0, 2031629, 0, 0, 2031630, 0, 0, 2031631, 0, 0, 2031632, 0, 0, 2031633, 0, 0, 2031634, 0, 0, 2031635, 0, 0, 2031636, 0, 0, 2031637, 0, 0, 2031638, 0, 0, 2031639, 0, 0, 2031640, 0, 0, 2031641, 0, 0, 2031642, 0, 0, 2031643, 0, 0, 2031644, 0, 0, 2031645, 0, 0, 2031646, 0, 0, 2031647, 0, 0, 2031648, 0, 0, 2031649, 0, 0, 2031650, 0, 0, 2031651, 0, 0, 2031652, 0, 0, 2031653, 0, 0, 2031654, 0, 0, 2031655, 0, 0, 2031656, 0, 0, 2031657, 0, 0, 2031658, 0, 0, 2031659, 0, 0, 2031660, 0, 0, 2031661, 0, 0, 2031662, 0, 0, 2031663, 0, 0, 2162655, 0, 0, 2162656, 0, 0, 2162657, 0, 0, 2162658, 0, 0, 2162659, 0, 0, 2162660, 0, 0, 2162661, 0, 0, 2162662, 0, 0, 2162663, 0, 0, 2162664, 0, 0, 2162665, 0, 0, 2162666, 0, 0, 2162667, 0, 0, 2162668, 0, 0, 2162669, 0, 0, 2162670, 0, 0, 2162671, 0, 0, 2162672, 0, 0, 2162673, 0, 0, 2162674, 0, 0, 2162675, 0, 0, 2162676, 0, 0, 2162677, 0, 0, 2162678, 0, 0, 2162679, 0, 0, 2162680, 0, 0, 2162681, 0, 0, 2162682, 0, 0, 2162683, 0, 0, 2162684, 0, 0, 2162685, 0, 0, 2162686, 0, 0, 2162687, 0, 0, 2097152, 0, 0, 2097153, 0, 0, 2097154, 0, 0, 2097155, 0, 0, 2097156, 0, 0, 2097157, 0, 0, 2097158, 0, 0, 2097159, 0, 0, 2097160, 0, 0, 2097161, 0, 0, 2097162, 0, 0, 2097163, 0, 0, 2097164, 0, 0, 2097165, 0, 0, 2097166, 0, 0, 2097167, 0, 0, 2097168, 0, 0, 2097169, 0, 0, 2097170, 0, 0, 2097171, 0, 0, 2097172, 0, 0, 2097173, 0, 0, 2097174, 0, 0, 2097175, 0, 0, 2097176, 0, 0, 2097177, 0, 0, 2097178, 0, 0, 2097179, 0, 0, 2097180, 0, 0, 2097181, 0, 0, 2097182, 0, 0, 2097183, 0, 0, 2097184, 0, 0, 2097185, 0, 0, 2097186, 0, 0, 2097187, 0, 0, 2097188, 0, 0, 2097189, 0, 0, 2097190, 0, 0, 2097191, 0, 0, 2097192, 0, 0, 2097193, 0, 0, 2097194, 0, 0, 2097195, 0, 0, 2097196, 0, 0, 2097197, 0, 0, 2097198, 0, 0, 2097199, 0, 0, 2097200, 0, 0, 2228191, 0, 0, 2228192, 0, 0, 2228193, 0, 0, 2228194, 0, 0, 2228195, 0, 0, 2228196, 0, 0, 2228197, 0, 0, 2228198, 0, 0, 2228199, 0, 0, 2228200, 0, 0, 2228201, 0, 0, 2228202, 0, 0, 2228203, 0, 0, 2228204, 0, 0, 2228205, 0, 0, 2228206, 0, 0, 2228207, 0, 0, 2228208, 0, 0, 2228209, 0, 0, 2228210, 0, 0, 2228219, 0, 0, 2228220, 0, 0, 2228221, 0, 0, 2228222, 0, 0, 2228223, 0, 0, 2162688, 0, 0, 2162689, 0, 0, 2162690, 0, 0, 2162691, 0, 0, 2162692, 0, 0, 2162693, 0, 0, 2162694, 0, 0, 2162695, 0, 0, 2162696, 0, 0, 2162697, 0, 0, 2162698, 0, 0, 2162699, 0, 0, 2162700, 0, 0, 2162701, 0, 0, 2162702, 0, 0, 2162703, 0, 0, 2162704, 0, 0, 2162705, 0, 0, 2162706, 0, 0, 2162707, 0, 0, 2162708, 0, 0, 2162709, 0, 0, 2162710, 0, 0, 2162711, 0, 0, 2162712, 0, 0, 2162713, 0, 0, 2162714, 0, 0, 2162715, 0, 0, 2162716, 0, 0, 2162717, 0, 0, 2162718, 0, 0, 2162719, 0, 0, 2162720, 0, 0, 2162721, 0, 0, 2162722, 0, 0, 2162723, 0, 0, 2162724, 0, 0, 2162725, 0, 0, 2162726, 0, 0, 2162727, 0, 0, 2162728, 0, 0, 2162729, 0, 0, 2162730, 0, 0, 2162731, 0, 0, 2162732, 0, 0, 2162733, 0, 0, 2162734, 0, 0, 2162735, 0, 0, 2162736, 0, 0, 2293727, 0, 0, 2293728, 0, 0, 2293729, 0, 0, 2293730, 0, 0, 2293731, 0, 0, 2293732, 0, 0, 2293733, 0, 0, 2293734, 0, 0, 2293735, 0, 0, 2293736, 0, 0, 2293737, 0, 0, 2293738, 0, 0, 2293739, 0, 0, 2293740, 0, 0, 2293741, 0, 0, 2293742, 0, 0, 2228225, 0, 0, 2228226, 0, 0, 2228227, 0, 0, 2228228, 0, 0, 2228229, 0, 0, 2228230, 0, 0, 2228231, 0, 0, 2228232, 0, 0, 2228233, 0, 0, 2228234, 0, 0, 2228235, 0, 0, 2228236, 0, 0, 2228237, 0, 0, 2228238, 0, 0, 2228239, 0, 0, 2228240, 0, 0, 2228241, 0, 0, 2228242, 0, 0, 2228243, 0, 0, 2228244, 0, 0, 2228245, 0, 0, 2228246, 0, 0, 2228247, 0, 0, 2228248, 0, 0, 2228249, 0, 0, 2228250, 0, 0, 2228251, 0, 0, 2228252, 0, 0, 2228253, 0, 0, 2228254, 0, 0, 2228255, 0, 0, 2228256, 0, 0, 2228257, 0, 0, 2228258, 0, 0, 2228259, 0, 0, 2228260, 0, 0, 2228261, 0, 0, 2228262, 0, 0, 2228263, 0, 0, 2228264, 0, 0, 2228265, 0, 0, 2228266, 0, 0, 2228267, 0, 0, 2228268, 0, 0, 2228269, 0, 0, 2228270, 0, 0, 2228271, 0, 0, 2228272, 0, 0, 2359263, 0, 0, 2359264, 0, 0, 2359265, 0, 0, 2359266, 0, 0, 2359267, 0, 0, 2359268, 0, 0, 2359269, 0, 0, 2359270, 0, 0, 2359271, 0, 0, 2359272, 0, 0, 2293773, 0, 0, 2293774, 0, 0, 2293775, 0, 0, 2293776, 0, 0, 2293777, 0, 0, 2293778, 0, 0, 2293779, 0, 0, 2293780, 0, 0, 2293781, 0, 0, 2293782, 0, 0, 2293783, 0, 0, 2293784, 0, 0, 2293785, 0, 0, 2293786, 0, 0, 2293787, 0, 0, 2293788, 0, 0, 2293789, 0, 0, 2293790, 0, 0, 2293791, 0, 0, 2293792, 0, 0, 2293793, 0, 0, 2293794, 0, 0, 2293795, 0, 0, 2293796, 0, 0, 2293797, 0, 0, 2293798, 0, 0, 2293799, 0, 0, 2293800, 0, 0, 2293801, 0, 0, 2293802, 0, 0, 2293803, 0, 0, 2293804, 0, 0, 2293805, 0, 0, 2293806, 0, 0, 2293807, 0, 0, 2293808, 0, 0, 2424799, 0, 0, 2424800, 0, 0, 2424801, 0, 0, 2424802, 0, 0, 2424803, 0, 0, 2359323, 0, 0, 2359324, 0, 0, 2359325, 0, 0, 2359326, 0, 0, 2359327, 0, 0, 2359328, 0, 0, 2359329, 0, 0, 2359330, 0, 0, 2359331, 0, 0, 2359332, 0, 0, 2359333, 0, 0, 2359334, 0, 0, 2359335, 0, 0, 2359336, 0, 0, 2359337, 0, 0, 2359338, 0, 0, 2359339, 0, 0, 2359340, 0, 0, 2359341, 0, 0, 2359342, 0, 0, 2359343, 0, 0, 2359344, 0, 0, 2424866, 0, 0, 2424867, 0, 0, 2424868, 0, 0, 2424869, 0, 0, 2424870, 0, 0, 2424871, 0, 0, 2424872, 0, 0, 2424873, 0, 0, 2424874, 0, 0, 2424875, 0, 0, 2424876, 0, 0 ) diff --git a/ged.sh b/ged.sh new file mode 100755 index 0000000..cb71cb6 --- /dev/null +++ b/ged.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +cp -u ./engine/bin/godot.x11.opt.tools.64 ./engine/bin/run.godot.x11.opt.tools.64 + +export LD_LIBRARY_PATH=`pwd`/engine/bin/ +./engine/bin/run.godot.x11.opt.tools.64 -e --path ./game/ diff --git a/make_release.sh b/make_release.sh new file mode 100755 index 0000000..07428d2 --- /dev/null +++ b/make_release.sh @@ -0,0 +1,38 @@ +#!/bin/bash +set -e + +project_root=$(pwd) + +rm -Rf ./release + +mkdir release + +cd export + +rm -Rf broken_seals_full_source +rm -Rf broken_seals_game_source + +mkdir broken_seals_full_source +mkdir broken_seals_game_source + +python ../tools/copy_repos.py ../ ./broken_seals_full_source +python ../tools/copy_repos.py ../game/ ./broken_seals_game_source + +zip ../release/broken_seals_android_debug.zip ./broken_seals_android_debug/* +zip ../release/broken_seals_android_release.zip ./broken_seals_android_release/* +zip ../release/broken_seals_javascript.zip ./broken_seals_javascript/* +zip ../release/broken_seals_linux.zip ./broken_seals_linux/* +zip ../release/broken_seals_windows.zip ./broken_seals_windows/* +zip ../release/broken_seals_pi4.zip ./broken_seals_pi4/* + +zip ../release/editor_windows.zip ./godot.bs.windows.opt.tools.64.exe +zip ../release/editor_linux.zip ./godot.bs.x11.opt.tools.64 +zip ../release/editor_pi4.zip ./godot.bs.x11.pi4.opt.tools.32 + +zip ../release/export_templates.zip ./export_templates/* + +zip -r ../release/broken_seals_full_source.zip ./broken_seals_full_source/* +zip -r ../release/broken_seals_game_source.zip ./broken_seals_game_source/* + +cd .. + diff --git a/module_config.py b/module_config.py new file mode 100644 index 0000000..75c830a --- /dev/null +++ b/module_config.py @@ -0,0 +1,30 @@ +engine_repository = [ ['https://github.com/Relintai/godot.git', 'git@github.com:Relintai/godot.git'], 'engine', '' ] + +module_repositories = [ + + [ ['https://github.com/Relintai/entity_spell_system.git', 'git@github.com:Relintai/entity_spell_system.git'], 'entity_spell_system', '' ], + [ ['https://github.com/Relintai/ui_extensions.git', 'git@github.com:Relintai/ui_extensions.git'], 'ui_extensions', '' ], + [ ['https://github.com/Relintai/texture_packer.git', 'git@github.com:Relintai/texture_packer.git'], 'texture_packer', '' ], + [ ['https://github.com/Relintai/godot_fastnoise.git', 'git@github.com:Relintai/godot_fastnoise.git'], 'fastnoise', '' ], + [ ['https://github.com/Relintai/thread_pool.git', 'git@github.com:Relintai/thread_pool.git'], 'thread_pool', '' ], + [ ['https://github.com/Relintai/mesh_data_resource.git', 'git@github.com:Relintai/mesh_data_resource.git'], 'mesh_data_resource', '' ], + [ ['https://github.com/Relintai/mesh_utils.git', 'git@github.com:Relintai/mesh_utils.git'], 'mesh_utils', '' ], + [ ['https://github.com/Relintai/broken_seals_module.git', 'git@github.com:Relintai/broken_seals_module.git'], 'broken_seals_module', '' ], + [ ['https://github.com/Relintai/rtile_map.git', 'git@github.com:Relintai/rtile_map.git'], 'rtile_map', '' ], +] + +removed_modules = [ + [ ['https://github.com/Relintai/world_generator.git', 'git@github.com:Relintai/world_generator.git'], 'world_generator', '' ], + [ ['https://github.com/Relintai/terraman_2d.git', 'git@github.com:Relintai/terraman_2d.git'], 'terraman_2d', '' ], + [ ['https://github.com/Relintai/props.git', 'git@github.com:Relintai/props.git'], 'props', '' ], +] + +addon_repositories = [ +] + +third_party_addon_repositories = [ +] + +godot_branch = '3.x' + +slim_args = 'module_webm_enabled=no module_arkit_enabled=no module_visual_script_enabled=no module_gdnative_enabled=no module_mobile_vr_enabled=no module_theora_enabled=no module_xatlas_unwrap_enabled=no no_editor_splash=yes module_bullet_enabled=no module_camera_enabled=no module_csg_enabled=no module_denoise_enabled=no module_fbx_enabled=no module_gridmap_enabled=no module_hdr_enabled=no module_lightmapper_cpu_enabled=no module_raycast_enabled=no module_recast_enabled=no module_vhacd_enabled=no module_webxr_enabled=no' diff --git a/pictures/screen.jpg b/pictures/screen.jpg new file mode 100644 index 0000000..c87a3ee Binary files /dev/null and b/pictures/screen.jpg differ diff --git a/play.sh b/play.sh new file mode 100755 index 0000000..6f916f0 --- /dev/null +++ b/play.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +cp -u ./engine/bin/godot.x11.opt.tools.64 ./engine/bin/run.godot.x11.opt.tools.64 + +export LD_LIBRARY_PATH=`pwd`/engine/bin/ +./engine/bin/run.godot.x11.opt.tools.64 -v --path ./game/ diff --git a/podman_build_all.sh b/podman_build_all.sh new file mode 100755 index 0000000..dec8b01 --- /dev/null +++ b/podman_build_all.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -e + +podman=`which podman || true` + +if [ -z $podman ]; then + echo "podman needs to be in PATH for this script to work." + exit 1 +fi + +project_root=$(pwd)/ +img_version=bs + +mkdir -p logs + +$podman run -v ${project_root}:/root/project -w /root/project godot-windows:${img_version} scons bew_strip -j4 . 2>&1 | tee logs/bew.log +#$podman run -v ${project_root}:/root/project -w /root/project godot-windows:${img_version} scons bewd_strip -j4 . 2>&1 | tee logs/bewd.log +$podman run -v ${project_root}:/root/project -w /root/project godot-windows:${img_version} scons bw_strip -j4 . 2>&1 | tee logs/bw.log +$podman run -v ${project_root}:/root/project -w /root/project godot-windows:${img_version} scons bwr_strip -j4 . 2>&1 | tee logs/bwr.log + +$podman run -v ${project_root}:/root/project -w /root/project godot-linux:${img_version} scons bel_strip -j4 . 2>&1 | tee logs/bel.log +#$podman run -v ${project_root}:/root/project -w /root/project godot-linux:${img_version} scons beld_strip -j4 . 2>&1 | tee logs/beld.log +$podman run -v ${project_root}:/root/project -w /root/project godot-linux:${img_version} scons bl_strip -j4 . 2>&1 | tee logs/bl.log +$podman run -v ${project_root}:/root/project -w /root/project godot-linux:${img_version} scons blr_strip -j4 . 2>&1 | tee logs/blr.log + + +$podman run -v ${project_root}:/root/project -w /root/project godot-javascript:${img_version} scons bj_strip -j4 . 2>&1 | tee logs/bj.log +$podman run -v ${project_root}:/root/project -w /root/project godot-javascript:${img_version} scons bjr_strip -j4 . 2>&1 | tee logs/bjr.log + +$podman run -v ${project_root}:/root/project -w /root/project godot-android:${img_version} scons ba_strip -j4 . 2>&1 | tee logs/ba.log +$podman run -v ${project_root}:/root/project -w /root/project godot-android:${img_version} scons bar_strip -j4 . 2>&1 | tee logs/bar.log + +# $podman run -v ${project_root}:/root/project -i -w /root/project -t godot-windows:${img_version} scons bew -j4 + diff --git a/tools/build-containers/.gitignore b/tools/build-containers/.gitignore new file mode 100644 index 0000000..f9d8f5a --- /dev/null +++ b/tools/build-containers/.gitignore @@ -0,0 +1,12 @@ +*.tar +*.tar.gz +*.tar.bz2 +*.tar.xz +*.exe +*.swp +*.dmg +*.zip +*.xip + +files/mono-*/ +logs/ diff --git a/tools/build-containers/Dockerfile.android b/tools/build-containers/Dockerfile.android new file mode 100644 index 0000000..8d45863 --- /dev/null +++ b/tools/build-containers/Dockerfile.android @@ -0,0 +1,16 @@ +ARG img_version +FROM godot-fedora:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + gcc gcc-c++ java-1.8.0-openjdk-devel ncurses-compat-libs && \ + mkdir sdk && cd sdk && \ + curl -LO https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip && \ + unzip sdk-tools-linux-4333796.zip && \ + rm sdk-tools-linux-4333796.zip && \ + yes | tools/bin/sdkmanager --licenses && \ + tools/bin/sdkmanager ndk-bundle 'build-tools;28.0.3' 'platforms;android-28' 'cmake;3.10.2.4988404' + +ENV ANDROID_HOME=/root/sdk/ +ENV ANDROID_NDK_ROOT=/root/sdk/ndk-bundle/ + +CMD /bin/bash diff --git a/tools/build-containers/Dockerfile.base b/tools/build-containers/Dockerfile.base new file mode 100644 index 0000000..d9a5525 --- /dev/null +++ b/tools/build-containers/Dockerfile.base @@ -0,0 +1,9 @@ +FROM fedora:31 + +WORKDIR /root + +RUN dnf -y upgrade --setopt=install_weak_deps=False && \ + dnf -y install --setopt=install_weak_deps=False \ + bash bzip2 curl git make patch pkgconfig python3 scons unzip which xz + +CMD /bin/bash diff --git a/tools/build-containers/Dockerfile.ios b/tools/build-containers/Dockerfile.ios new file mode 100644 index 0000000..36f6ba0 --- /dev/null +++ b/tools/build-containers/Dockerfile.ios @@ -0,0 +1,30 @@ +ARG img_version +FROM godot-osx:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + automake autoconf clang gcc gcc-c++ gcc-objc gcc-objc++ cmake libicu-devel libtool libxml2-devel llvm-devel openssl-devel perl python yasm && \ + git clone --progress https://github.com/tpoechtrager/cctools-port.git && \ + cd /root/cctools-port && \ + git checkout 8239a5211bcf07d6b9d359782e1a889ec1d7cce5 && \ + sed -i 's#./autogen.sh#libtoolize -c -i --force\n./autogen.sh#' usage_examples/ios_toolchain/build.sh && \ + usage_examples/ios_toolchain/build.sh /root/files/iPhoneOS12.4.sdk.tar.xz arm64 && \ + mkdir -p /root/ioscross/arm64 && \ + mv usage_examples/ios_toolchain/target/* /root/ioscross/arm64 && \ + mkdir /root/ioscross/arm64/usr && \ + ln -s /root/ioscross/arm64/bin /root/ioscross/arm64/usr/bin && \ + sed -i 's#^TRIPLE=.*#TRIPLE="x86_64-apple-darwin11"#' usage_examples/ios_toolchain/build.sh && \ + usage_examples/ios_toolchain/build.sh /root/files/iPhoneSimulator12.4.sdk.tar.xz x86_64 && \ + mkdir -p /root/ioscross/x86_64 && \ + mv usage_examples/ios_toolchain/target/* /root/ioscross/x86_64 && \ + mkdir /root/ioscross/x86_64/usr && \ + ln -s /root/ioscross/x86_64/bin /root/ioscross/x86_64/usr/bin + +ENV OSXCROSS_IOS=not_nothing +ENV IOSCROSS_ROOT=/root/ioscross +ENV PATH="/root/ioscross/arm64/bin:/root/ioscross/x86_64/bin:${PATH}" + +# Until we can build the cross-compiler, we include a pre-made build in the container. +RUN mkdir -p /root/aot-compilers/iphone-arm64 && \ + tar xvf /root/files/aarch64-apple-darwin-mono-sgen.tar.xz -C /root/aot-compilers/iphone-arm64 + +CMD /bin/bash diff --git a/tools/build-containers/Dockerfile.javascript b/tools/build-containers/Dockerfile.javascript new file mode 100644 index 0000000..18ae029 --- /dev/null +++ b/tools/build-containers/Dockerfile.javascript @@ -0,0 +1,13 @@ +ARG img_version +FROM godot-fedora:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + gcc gcc-c++ java-openjdk yasm && \ + git clone --progress https://github.com/emscripten-core/emsdk && \ + cd emsdk && \ + git checkout a5082b232617c762cb65832429f896c838df2483 && \ + ./emsdk install 1.38.47-upstream && \ + ./emsdk activate 1.38.47-upstream && \ + echo "source /root/emsdk/emsdk_env.sh" >> /root/.bashrc + +CMD /bin/bash diff --git a/tools/build-containers/Dockerfile.linux b/tools/build-containers/Dockerfile.linux new file mode 100644 index 0000000..3c0ef6d --- /dev/null +++ b/tools/build-containers/Dockerfile.linux @@ -0,0 +1,8 @@ +ARG img_version +FROM godot-fedora:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + gcc-c++ xorg-x11-server-Xvfb libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel libXi-devel alsa-lib-devel pulseaudio-libs-devel libudev-devel mesa-libGL-devel mesa-libGLU-devel mesa-dri-drivers yasm + + +CMD /bin/bash diff --git a/tools/build-containers/Dockerfile.msvc b/tools/build-containers/Dockerfile.msvc new file mode 100644 index 0000000..5ca6f09 --- /dev/null +++ b/tools/build-containers/Dockerfile.msvc @@ -0,0 +1,29 @@ +ARG img_version +FROM godot-fedora:${img_version} + +ENV WINEDEBUG=-all + +RUN dnf -y install --setopt=install_weak_deps=False \ + wine winetricks xorg-x11-server-Xvfb p7zip-plugins findutils && \ + curl -LO https://github.com/GodotBuilder/godot-builds/releases/download/_tools/angle.7z && \ + curl -LO https://www.python.org/ftp/python/3.7.2/python-3.7.2-amd64.exe && \ + xvfb-run sh -c "winetricks -q vcrun2017; wineserver -w" ;\ + xvfb-run sh -c "winetricks -q dotnet461; wineserver -w" ;\ + xvfb-run sh -c "wine /root/python-3.7.2-amd64.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0; wineserver -w" ;\ + rm /root/python-3.7.2-amd64.exe && \ + wine python -m pip install --upgrade pip ; wineserver -w ; \ + wine pip install -U setuptools ; wineserver -w ; \ + wine pip install -U wheel ; wineserver -w ; \ + wine pip install scons pywin32 ; wineserver -w ; \ + cd /root/.wine/drive_c && \ + 7z x /root/angle.7z && \ + rm /root/angle.7z && \ + cd "/root/.wine/drive_c/Program Files (x86)" && \ + tar xf /root/files/msvc2017.tar && \ + cd /root && \ + bash /root/files/msvc-fixup.sh && \ + find /root/.wine -name vctip.exe -delete && \ + rm -rf /root/.wine/drive_c/users/root/Temp/* && \ + rm -rf /root/.cache + +CMD /bin/bash diff --git a/tools/build-containers/Dockerfile.osx b/tools/build-containers/Dockerfile.osx new file mode 100644 index 0000000..041ae82 --- /dev/null +++ b/tools/build-containers/Dockerfile.osx @@ -0,0 +1,15 @@ +ARG img_version +FROM godot-fedora:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + automake autoconf bzip2-devel clang libicu-devel libtool libxml2-devel llvm-devel openssl-devel yasm && \ + git clone --progress https://github.com/tpoechtrager/osxcross.git && \ + cd /root/osxcross && \ + git checkout 542acc2ef6c21aeb3f109c03748b1015a71fed63 && \ + ln -s /root/files/MacOSX10.14.sdk.tar.xz /root/osxcross/tarballs && \ + UNATTENDED=1 ./build.sh + +ENV OSXCROSS_ROOT=/root/osxcross +ENV PATH="/root/osxcross/target/bin:${PATH}" + +CMD /bin/bash diff --git a/tools/build-containers/Dockerfile.windows b/tools/build-containers/Dockerfile.windows new file mode 100644 index 0000000..6012ad2 --- /dev/null +++ b/tools/build-containers/Dockerfile.windows @@ -0,0 +1,7 @@ +ARG img_version +FROM godot-fedora:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + mingw32-gcc mingw32-gcc-c++ mingw32-winpthreads-static mingw64-gcc mingw64-gcc-c++ mingw64-winpthreads-static + +CMD /bin/bash diff --git a/tools/build-containers/Dockerfile.xcode b/tools/build-containers/Dockerfile.xcode new file mode 100644 index 0000000..ad7391a --- /dev/null +++ b/tools/build-containers/Dockerfile.xcode @@ -0,0 +1,43 @@ +ARG img_version +FROM godot-fedora:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + autoconf automake libtool clang cmake fuse fuse-devel libxml2-devel libicu-devel compat-openssl10-devel bzip2-devel kmod cpio && \ + git clone --progress https://github.com/mackyle/xar.git && \ + cd xar/xar && \ + git checkout 66d451dab1ef859dd0c83995f2379335d35e53c9 && \ + ./autogen.sh --prefix=/usr && \ + make -j && make install && \ + cd /root && \ + git clone --progress https://github.com/NiklasRosenstein/pbzx && \ + cd pbzx && \ + git checkout 2a4d7c3300c826d918def713a24d25c237c8ed53 && \ + clang -O3 -llzma -lxar -I /usr/local/include pbzx.c -o pbzx + +CMD mkdir -p /root/xcode && \ + cd /root/xcode && \ + xar -xf /root/files/Xcode_10.3.xip && \ + /root/pbzx/pbzx -n Content | cpio -i && \ + cp -r Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk /tmp/MacOSX10.14.sdk && \ + mkdir -p /tmp/MacOSX10.14.sdk/usr/include/c++ && \ + cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/MacOSX10.14.sdk/usr/include/c++/ && \ + mkdir -p mkdir -p /tmp/MacOSX10.14.sdk/usr/share/man && \ + cp -rf Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man1 \ + Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man3 \ + Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man5 /tmp/MacOSX10.14.sdk/usr/share/man/ && \ + cd /tmp && \ + tar -cJf /root/files/MacOSX10.14.sdk.tar.xz MacOSX10.14.sdk && \ + rm -rf MacOSX10.14 && \ + cd /root/xcode && \ + cp -r Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk /tmp/iPhoneOS12.4.sdk && \ + mkdir -p /tmp/iPhoneOS12.4.sdk/usr/include/c++ && \ + cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/iPhoneOS12.4.sdk/usr/include/c++/ && \ + cd /tmp && \ + tar -cJf /root/files/iPhoneOS12.4.sdk.tar.xz iPhoneOS12.4.sdk && \ + rm -rf iPhoneOS12.4.sdk && \ + cd /root/xcode && \ + cp -r Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk /tmp/iPhoneOS12.4.sdk && \ + mkdir -p /tmp/iPhoneOS12.4.sdk/usr/include/c++ && \ + cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/iPhoneOS12.4.sdk/usr/include/c++/ && \ + cd /tmp && \ + tar -cJf /root/files/iPhoneSimulator12.4.sdk.tar.xz iPhoneOS12.4.sdk diff --git a/tools/build-containers/README.md b/tools/build-containers/README.md new file mode 100644 index 0000000..8b98f87 --- /dev/null +++ b/tools/build-containers/README.md @@ -0,0 +1,10 @@ +# Godot engine build containers + +Based on https://github.com/godotengine/build-containers + +This repository contains the Dockerfiles for the official Godot engine builds. These containers should help you build Godot for all platforms supported on any machine that can run Docker containers. + +## Building + +There is a 'build.sh' script included to build the containers themselves. The in-container build scripts will follow shortly. + diff --git a/tools/build-containers/build_containers.sh b/tools/build-containers/build_containers.sh new file mode 100755 index 0000000..7c84930 --- /dev/null +++ b/tools/build-containers/build_containers.sh @@ -0,0 +1,53 @@ +#!/bin/bash +set -e + +podman=`which podman || true` + +if [ -z $podman ]; then + echo "podman needs to be in PATH for this script to work." + exit 1 +fi + +files_root=$(pwd)/files +img_version=bs + +mkdir -p logs + +export podman_build="$podman build --build-arg img_version=${img_version}" + +$podman build -v ${files_root}:/root/files -t godot-fedora:${img_version} -f Dockerfile.base . 2>&1 | tee logs/base.log +$podman_build -t godot-linux:${img_version} -f Dockerfile.linux . 2>&1 | tee logs/linux.log + +$podman_build -t godot-mono:${img_version} -f Dockerfile.mono . 2>&1 | tee logs/mono.log +$podman_build -t godot-mono-glue:${img_version} -f Dockerfile.mono-glue . 2>&1 | tee logs/mono-glue.log +$podman_build -t godot-windows:${img_version} -f Dockerfile.windows --ulimit nofile=65536 . 2>&1 | tee logs/windows.log +$podman_build -t godot-javascript:${img_version} -f Dockerfile.javascript . 2>&1 | tee logs/javascript.log +$podman_build -t godot-android:${img_version} -f Dockerfile.android . 2>&1 | tee logs/android.log + +if [ ! -e files/MacOSX10.14.sdk.tar.xz ] || [ ! -e files/iPhoneOS12.4.sdk.tar.xz ] || [ ! -e files/iPhoneSimulator12.4.sdk.tar.xz ]; then + if [ ! -e files/Xcode_10.3.xip ]; then + echo "files/Xcode_10.3.xip is required. It can be downloaded from https://developer.apple.com/download/more/ with a valid apple ID" + exit 1 + fi + + echo "Building OSX and iOS SDK packages. This will take a while" + $podman_build -t godot-xcode-packer:${img_version} -f Dockerfile.xcode -v ${files_root}:/root/files . 2>&1 | tee logs/xcode.log + $podman run -it --rm -v ${files_root}:/root/files godot-xcode-packer:${img_version} 2>&1 | tee logs/xcode_packer.logw +fi + +$podman_build -t godot-osx:${img_version} -f Dockerfile.osx . 2>&1 | tee logs/osx.log +$podman_build -t godot-ios:${img_version} -f Dockerfile.ios . 2>&1 | tee logs/ios.log + +if [ ! -e files/msvc2017.tar ]; then + echo + echo "files/msvc2017.tar is missing. This file can be created on a Windows 7 or 10 machine by downloading the 'Visual Studio Tools' installer." + echo "here: https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2017" + echo "The required components can be installed by running" + echo "vs_buildtools.exe --add Microsoft.VisualStudio.Workload.UniversalBuildTools --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.Windows10SDK.16299.Desktop --add Microsoft.VisualStudio.Component.Windows10SDK.16299.UWP.Native --passive" + echo "after that create a zipfile of C:/Program Files (x86)/Microsoft Visual Studio" + echo "tar -cf msvc2017.tar -C \"c:/Program Files (x86)/ Microsoft Visual Studio\"" + echo + exit 1 +fi + +$podman_build -t godot-msvc:${img_version} -f Dockerfile.msvc -v ${files_root}:/root/files . 2>&1 | tee logs/msvc.log diff --git a/tools/build-containers/files/msvc-fixup.sh b/tools/build-containers/files/msvc-fixup.sh new file mode 100644 index 0000000..95dd799 --- /dev/null +++ b/tools/build-containers/files/msvc-fixup.sh @@ -0,0 +1,24 @@ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/msobj140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/arm/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/msobj140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x86/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/mspdbcore.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/arm/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/mspdbcore.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x86/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdb140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdb140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/arm/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/msobj140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/msobj140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/arm/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdbcore.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdbcore.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/arm/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdbsrv.exe /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdbsrv.exe /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/arm/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/msvcdis140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/arm/ + +pushd /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ SDKs/ +rm -rf ClickOnce\ Bootstrapper/ Portable/ Windows NuGetPackages/ UWPNuGetPackages/ +popd + diff --git a/tools/build-containers/files/patches/fix-fuse-check.diff b/tools/build-containers/files/patches/fix-fuse-check.diff new file mode 100644 index 0000000..7691d57 --- /dev/null +++ b/tools/build-containers/files/patches/fix-fuse-check.diff @@ -0,0 +1,27 @@ +diff -u a/tools/gen_sdk_package_darling_dmg.sh b/tools/gen_sdk_package_darling_dmg.sh +--- a/tools/gen_sdk_package_darling_dmg.sh 2018-12-20 16:06:04.744507679 +0000 ++++ b/tools/gen_sdk_package_darling_dmg.sh 2018-12-20 16:06:39.000379232 +0000 +@@ -33,22 +33,6 @@ + [ -n "$CC" ] && require $CC + [ -n "$CXX" ] && require $CXX + +-set +e +- +-command -v lsb_release 2>&1 > /dev/null +- +-if [[ $? -eq 0 ]] && [[ -n $(lsb_release -a 2>&1 | grep -i ubuntu) ]]; then +- echo "Using ubuntu, skipping fuse module check" +-else +- modinfo fuse &>/dev/null +-fi +- +-if [ $? -ne 0 ]; then +- echo "Required kernel module 'fuse' not loaded" 1>&2 +- echo "Please run 'insmod fuse' as root" 1>&2 +- exit 1 +-fi +- + set -e + + pushd $BUILD_DIR &>/dev/null + diff --git a/tools/build-containers/upload.sh b/tools/build-containers/upload.sh new file mode 100644 index 0000000..919de5b --- /dev/null +++ b/tools/build-containers/upload.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +set -e + +podman=podman +if ! which $podman; then + podman=docker +fi + +registry=$1 + +if [ -z "${registry}" ]; then + registry=registry.prehensile-tales.com +fi + +$podman push godot-export:latest ${registry}/godot/export +$podman push godot-mono-glue:latest ${registry}/godot/mono-glue +$podman push godot-windows:latest ${registry}/godot/windows +$podman push godot-ubuntu-32:latest ${registry}/godot/ubuntu-32 +$podman push godot-ubuntu-64:latest ${registry}/godot/ubuntu-64 +$podman push godot-javascript:latest ${registry}/godot/javascript +$podman push godot-xcode-packer:latest ${registry}/godot/xcode-packer + +$podman push godot-android:latest ${registry}/godot-private/android +$podman push godot-ios:latest ${registry}/godot-private/ios +$podman push godot-osx:latest ${registry}/godot-private/macosx +$podman push godot-msvc:latest ${registry}/godot-private/uwp diff --git a/tools/copy_repos.py b/tools/copy_repos.py new file mode 100644 index 0000000..4d87339 --- /dev/null +++ b/tools/copy_repos.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Copyright (c) 2019-2020 Péter Magyar +# +# 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. + +import sys +import os +import subprocess +import json +import shutil +import traceback + +def onerror(func, path, exc_info): + """ + https://stackoverflow.com/questions/2656322/shutil-rmtree-fails-on-windows-with-access-is-denied + + Because Windows. + + Error handler for ``shutil.rmtree``. + + If the error is due to an access error (read only file) + it attempts to add write permission and then retries. + + If the error is for another reason it re-raises the error. + + Usage : ``shutil.rmtree(path, onerror=onerror)`` + """ + import stat + if not os.access(path, os.W_OK): + # Is the error an access error ? + os.chmod(path, stat.S_IWUSR) + func(path) + else: + raise + +def copytree(src, dst): + for item in os.listdir(src): + + sp = os.path.join(src, item) + dp = os.path.join(dst, item) + + if os.path.isdir(sp): + if item == ".git" or item == "bin" or item == "__pycache__" or item == ".import" or item == "logs" or item == "release" or item == "export" or item == "build" or item == "libs": + continue + + #print(item) + + if os.path.isdir(dp): + shutil.rmtree(dp, onerror=onerror) + + copytree(sp, dp) + else: + if item.endswith(".a") or item.endswith(".class") or item.endswith(".dex") or item.endswith(".pyc") or item.endswith(".o") or item.endswith(".bc") or item.endswith(".so") or item == "export_presets.cfg" or item.endswith(".gen.h") or item.endswith(".os") or item.endswith(".dblite") or item == ".scons_node_count" or item == ".scons_env.json" or item == "compile_commands.json" or item == "config.log" or item.endswith(".gen.inc") or item.endswith(".gen.cpp") : + continue + + #print(item) + + if not os.path.isdir(dst): + os.makedirs(dst) + + shutil.copy2(sp, dp) + +def copy_repository(data, target_folder, clone_path): + copytree(os.path.abspath(clone_path + data[1] + '/' + data[2]), os.path.abspath(target_folder + data[1])) + + +#copy_repository(rep, './game/addons/', '.' + module_clone_path) + +#print(sys.argv) + +if len(sys.argv) == 3: + src_dir = sys.argv[1] + dst_dir = sys.argv[2] + + src_dir = os.path.abspath(src_dir) + dst_dir = os.path.abspath(dst_dir) + + copytree(src_dir, dst_dir) + + +else: + print("Usange: python copy_repos.py source_dir target_dir") diff --git a/tools/export_presets.cfg.example b/tools/export_presets.cfg.example new file mode 100644 index 0000000..e7d39cf --- /dev/null +++ b/tools/export_presets.cfg.example @@ -0,0 +1,554 @@ +[preset.0] + +name="Android" +platform="Android" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="*.xml" +exclude_filter="" +export_path="../../_bs_export/0.3.1/android_debug/BrokenSeals.apk" +script_export_mode=1 +script_encryption_key="" + +[preset.0.options] + +custom_template/debug="../engine/bin/android_debug.apk" +custom_template/release="../engine/bin/android_release.apk" +custom_template/use_custom_build=false +custom_template/export_format=0 +architectures/armeabi-v7a=true +architectures/arm64-v8a=true +architectures/x86=false +architectures/x86_64=false +keystore/debug="" +keystore/debug_user="" +keystore/debug_password="" +keystore/release="" +keystore/release_user="" +keystore/release_password="" +one_click_deploy/clear_previous_install=false +version/code=2 +version/name="0.3.2" +package/unique_name="net.relintai.$genname" +package/name="Broken Seals" +package/signed=true +package/classify_as_game=true +launcher_icons/main_192x192="res://icon.png" +launcher_icons/adaptive_foreground_432x432="res://icon.png" +launcher_icons/adaptive_background_432x432="res://icon.png" +graphics/32_bits_framebuffer=true +graphics/opengl_debug=false +xr_features/xr_mode=0 +xr_features/degrees_of_freedom=0 +xr_features/hand_tracking=0 +xr_features/focus_awareness=false +screen/immersive_mode=true +screen/support_small=true +screen/support_normal=true +screen/support_large=true +screen/support_xlarge=true +user_data_backup/allow=false +command_line/extra_args="" +apk_expansion/enable=false +apk_expansion/SALT="" +apk_expansion/public_key="" +permissions/custom_permissions=PoolStringArray( ) +permissions/access_checkin_properties=false +permissions/access_coarse_location=false +permissions/access_fine_location=false +permissions/access_location_extra_commands=false +permissions/access_mock_location=false +permissions/access_network_state=false +permissions/access_surface_flinger=false +permissions/access_wifi_state=false +permissions/account_manager=false +permissions/add_voicemail=false +permissions/authenticate_accounts=false +permissions/battery_stats=false +permissions/bind_accessibility_service=false +permissions/bind_appwidget=false +permissions/bind_device_admin=false +permissions/bind_input_method=false +permissions/bind_nfc_service=false +permissions/bind_notification_listener_service=false +permissions/bind_print_service=false +permissions/bind_remoteviews=false +permissions/bind_text_service=false +permissions/bind_vpn_service=false +permissions/bind_wallpaper=false +permissions/bluetooth=false +permissions/bluetooth_admin=false +permissions/bluetooth_privileged=false +permissions/brick=false +permissions/broadcast_package_removed=false +permissions/broadcast_sms=false +permissions/broadcast_sticky=false +permissions/broadcast_wap_push=false +permissions/call_phone=false +permissions/call_privileged=false +permissions/camera=false +permissions/capture_audio_output=false +permissions/capture_secure_video_output=false +permissions/capture_video_output=false +permissions/change_component_enabled_state=false +permissions/change_configuration=false +permissions/change_network_state=false +permissions/change_wifi_multicast_state=false +permissions/change_wifi_state=false +permissions/clear_app_cache=false +permissions/clear_app_user_data=false +permissions/control_location_updates=false +permissions/delete_cache_files=false +permissions/delete_packages=false +permissions/device_power=false +permissions/diagnostic=false +permissions/disable_keyguard=false +permissions/dump=false +permissions/expand_status_bar=false +permissions/factory_test=false +permissions/flashlight=false +permissions/force_back=false +permissions/get_accounts=false +permissions/get_package_size=false +permissions/get_tasks=false +permissions/get_top_activity_info=false +permissions/global_search=false +permissions/hardware_test=false +permissions/inject_events=false +permissions/install_location_provider=false +permissions/install_packages=false +permissions/install_shortcut=false +permissions/internal_system_window=false +permissions/internet=false +permissions/kill_background_processes=false +permissions/location_hardware=false +permissions/manage_accounts=false +permissions/manage_app_tokens=false +permissions/manage_documents=false +permissions/master_clear=false +permissions/media_content_control=false +permissions/modify_audio_settings=false +permissions/modify_phone_state=false +permissions/mount_format_filesystems=false +permissions/mount_unmount_filesystems=false +permissions/nfc=false +permissions/persistent_activity=false +permissions/process_outgoing_calls=false +permissions/read_calendar=false +permissions/read_call_log=false +permissions/read_contacts=false +permissions/read_external_storage=false +permissions/read_frame_buffer=false +permissions/read_history_bookmarks=false +permissions/read_input_state=false +permissions/read_logs=false +permissions/read_phone_state=false +permissions/read_profile=false +permissions/read_sms=false +permissions/read_social_stream=false +permissions/read_sync_settings=false +permissions/read_sync_stats=false +permissions/read_user_dictionary=false +permissions/reboot=false +permissions/receive_boot_completed=false +permissions/receive_mms=false +permissions/receive_sms=false +permissions/receive_wap_push=false +permissions/record_audio=false +permissions/reorder_tasks=false +permissions/restart_packages=false +permissions/send_respond_via_message=false +permissions/send_sms=false +permissions/set_activity_watcher=false +permissions/set_alarm=false +permissions/set_always_finish=false +permissions/set_animation_scale=false +permissions/set_debug_app=false +permissions/set_orientation=false +permissions/set_pointer_speed=false +permissions/set_preferred_applications=false +permissions/set_process_limit=false +permissions/set_time=false +permissions/set_time_zone=false +permissions/set_wallpaper=false +permissions/set_wallpaper_hints=false +permissions/signal_persistent_processes=false +permissions/status_bar=false +permissions/subscribed_feeds_read=false +permissions/subscribed_feeds_write=false +permissions/system_alert_window=false +permissions/transmit_ir=false +permissions/uninstall_shortcut=false +permissions/update_device_stats=false +permissions/use_credentials=false +permissions/use_sip=false +permissions/vibrate=false +permissions/wake_lock=false +permissions/write_apn_settings=false +permissions/write_calendar=false +permissions/write_call_log=false +permissions/write_contacts=false +permissions/write_external_storage=false +permissions/write_gservices=false +permissions/write_history_bookmarks=false +permissions/write_profile=false +permissions/write_secure_settings=false +permissions/write_settings=false +permissions/write_sms=false +permissions/write_social_stream=false +permissions/write_sync_settings=false +permissions/write_user_dictionary=false + +[preset.1] + +name="Linux/X11" +platform="Linux/X11" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="*.xml" +exclude_filter="" +export_path="../../_bs_export/BrokenSeals.x86_64" +script_export_mode=1 +script_encryption_key="" + +[preset.1.options] + +custom_template/debug="../engine/bin/godot.x11.opt.debug.64" +custom_template/release="../engine/bin/godot.x11.opt.64" +binary_format/64_bits=true +binary_format/embed_pck=false +texture_format/bptc=false +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +texture_format/no_bptc_fallbacks=true + +[preset.2] + +name="HTML5" +platform="HTML5" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="*.xml" +exclude_filter="" +export_path="../../_bs_export/0.3.1/html/BrokenSeals.x86_64.html" +script_export_mode=1 +script_encryption_key="" + +[preset.2.options] + +custom_template/debug="../engine/bin/godot.javascript.opt.zip" +custom_template/release="../engine/bin/godot.javascript.opt.debug.zip" +variant/export_type=0 +vram_texture_compression/for_desktop=true +vram_texture_compression/for_mobile=true +html/export_icon=true +html/custom_html_shell="" +html/head_include="" +html/canvas_resize_policy=2 +html/focus_canvas_on_start=true +html/experimental_virtual_keyboard=false +progressive_web_app/enabled=false +progressive_web_app/offline_page="" +progressive_web_app/display=1 +progressive_web_app/orientation=0 +progressive_web_app/icon_144x144="" +progressive_web_app/icon_180x180="" +progressive_web_app/icon_512x512="" +progressive_web_app/background_color=Color( 0, 0, 0, 1 ) + +[preset.3] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="*.xml" +exclude_filter="" +export_path="../../_bs_export/0.3.1/windows/BrokenSeals.x86_64.exe" +script_export_mode=1 +script_encryption_key="" + +[preset.3.options] + +custom_template/debug="../engine/bin/godot.windows.opt.debug.64.exe" +custom_template/release="../engine/bin/godot.windows.opt.64.exe" +binary_format/64_bits=true +binary_format/embed_pck=false +texture_format/bptc=false +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +texture_format/no_bptc_fallbacks=true +codesign/enable=false +codesign/identity="" +codesign/password="" +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PoolStringArray( ) +application/icon="" +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" + +[preset.4] + +name="Android-Release" +platform="Android" +runnable=false +custom_features="" +export_filter="all_resources" +include_filter="*.xml" +exclude_filter="" +export_path="" +script_export_mode=1 +script_encryption_key="" + +[preset.4.options] + +custom_template/debug="../engine/bin/android_release.apk" +custom_template/release="../engine/bin/android_release.apk" +custom_template/use_custom_build=false +custom_template/export_format=0 +architectures/armeabi-v7a=true +architectures/arm64-v8a=true +architectures/x86=false +architectures/x86_64=false +keystore/debug="" +keystore/debug_user="" +keystore/debug_password="" +keystore/release="" +keystore/release_user="" +keystore/release_password="" +one_click_deploy/clear_previous_install=false +version/code=2 +version/name="0.3.2" +package/unique_name="net.relintai.$genname" +package/name="Broken Seals" +package/signed=true +package/classify_as_game=true +launcher_icons/main_192x192="res://icon.png" +launcher_icons/adaptive_foreground_432x432="res://icon.png" +launcher_icons/adaptive_background_432x432="res://icon.png" +graphics/32_bits_framebuffer=true +graphics/opengl_debug=false +xr_features/xr_mode=0 +xr_features/degrees_of_freedom=0 +xr_features/hand_tracking=0 +xr_features/focus_awareness=false +screen/immersive_mode=true +screen/support_small=true +screen/support_normal=true +screen/support_large=true +screen/support_xlarge=true +user_data_backup/allow=false +command_line/extra_args="" +apk_expansion/enable=false +apk_expansion/SALT="" +apk_expansion/public_key="" +permissions/custom_permissions=PoolStringArray( ) +permissions/access_checkin_properties=false +permissions/access_coarse_location=false +permissions/access_fine_location=false +permissions/access_location_extra_commands=false +permissions/access_mock_location=false +permissions/access_network_state=false +permissions/access_surface_flinger=false +permissions/access_wifi_state=false +permissions/account_manager=false +permissions/add_voicemail=false +permissions/authenticate_accounts=false +permissions/battery_stats=false +permissions/bind_accessibility_service=false +permissions/bind_appwidget=false +permissions/bind_device_admin=false +permissions/bind_input_method=false +permissions/bind_nfc_service=false +permissions/bind_notification_listener_service=false +permissions/bind_print_service=false +permissions/bind_remoteviews=false +permissions/bind_text_service=false +permissions/bind_vpn_service=false +permissions/bind_wallpaper=false +permissions/bluetooth=false +permissions/bluetooth_admin=false +permissions/bluetooth_privileged=false +permissions/brick=false +permissions/broadcast_package_removed=false +permissions/broadcast_sms=false +permissions/broadcast_sticky=false +permissions/broadcast_wap_push=false +permissions/call_phone=false +permissions/call_privileged=false +permissions/camera=false +permissions/capture_audio_output=false +permissions/capture_secure_video_output=false +permissions/capture_video_output=false +permissions/change_component_enabled_state=false +permissions/change_configuration=false +permissions/change_network_state=false +permissions/change_wifi_multicast_state=false +permissions/change_wifi_state=false +permissions/clear_app_cache=false +permissions/clear_app_user_data=false +permissions/control_location_updates=false +permissions/delete_cache_files=false +permissions/delete_packages=false +permissions/device_power=false +permissions/diagnostic=false +permissions/disable_keyguard=false +permissions/dump=false +permissions/expand_status_bar=false +permissions/factory_test=false +permissions/flashlight=false +permissions/force_back=false +permissions/get_accounts=false +permissions/get_package_size=false +permissions/get_tasks=false +permissions/get_top_activity_info=false +permissions/global_search=false +permissions/hardware_test=false +permissions/inject_events=false +permissions/install_location_provider=false +permissions/install_packages=false +permissions/install_shortcut=false +permissions/internal_system_window=false +permissions/internet=false +permissions/kill_background_processes=false +permissions/location_hardware=false +permissions/manage_accounts=false +permissions/manage_app_tokens=false +permissions/manage_documents=false +permissions/master_clear=false +permissions/media_content_control=false +permissions/modify_audio_settings=false +permissions/modify_phone_state=false +permissions/mount_format_filesystems=false +permissions/mount_unmount_filesystems=false +permissions/nfc=false +permissions/persistent_activity=false +permissions/process_outgoing_calls=false +permissions/read_calendar=false +permissions/read_call_log=false +permissions/read_contacts=false +permissions/read_external_storage=false +permissions/read_frame_buffer=false +permissions/read_history_bookmarks=false +permissions/read_input_state=false +permissions/read_logs=false +permissions/read_phone_state=false +permissions/read_profile=false +permissions/read_sms=false +permissions/read_social_stream=false +permissions/read_sync_settings=false +permissions/read_sync_stats=false +permissions/read_user_dictionary=false +permissions/reboot=false +permissions/receive_boot_completed=false +permissions/receive_mms=false +permissions/receive_sms=false +permissions/receive_wap_push=false +permissions/record_audio=false +permissions/reorder_tasks=false +permissions/restart_packages=false +permissions/send_respond_via_message=false +permissions/send_sms=false +permissions/set_activity_watcher=false +permissions/set_alarm=false +permissions/set_always_finish=false +permissions/set_animation_scale=false +permissions/set_debug_app=false +permissions/set_orientation=false +permissions/set_pointer_speed=false +permissions/set_preferred_applications=false +permissions/set_process_limit=false +permissions/set_time=false +permissions/set_time_zone=false +permissions/set_wallpaper=false +permissions/set_wallpaper_hints=false +permissions/signal_persistent_processes=false +permissions/status_bar=false +permissions/subscribed_feeds_read=false +permissions/subscribed_feeds_write=false +permissions/system_alert_window=false +permissions/transmit_ir=false +permissions/uninstall_shortcut=false +permissions/update_device_stats=false +permissions/use_credentials=false +permissions/use_sip=false +permissions/vibrate=false +permissions/wake_lock=false +permissions/write_apn_settings=false +permissions/write_calendar=false +permissions/write_call_log=false +permissions/write_contacts=false +permissions/write_external_storage=false +permissions/write_gservices=false +permissions/write_history_bookmarks=false +permissions/write_profile=false +permissions/write_secure_settings=false +permissions/write_settings=false +permissions/write_sms=false +permissions/write_social_stream=false +permissions/write_sync_settings=false +permissions/write_user_dictionary=false + +[preset.5] + +name="PI4/X11" +platform="Linux/X11" +runnable=false +custom_features="" +export_filter="all_resources" +include_filter="*.xml" +exclude_filter="" +export_path="../aaa/BrokenSeals.x86_64.x86" +script_export_mode=1 +script_encryption_key="" + +[preset.5.options] + +custom_template/debug="../engine/bin/godot.x11.pi4.opt.debug.32" +custom_template/release="../engine/bin/godot.x11.pi4.opt.32" +binary_format/64_bits=false +binary_format/embed_pck=false +texture_format/bptc=false +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +texture_format/no_bptc_fallbacks=true + +[preset.6] + +name="FRT" +platform="Linux/X11" +runnable=false +custom_features="" +export_filter="all_resources" +include_filter="*.xml" +exclude_filter="" +export_path="" +script_export_mode=1 +script_encryption_key="" + +[preset.6.options] + +custom_template/debug="../engine/bin/godot.x11.frt.opt.debug.32" +custom_template/release="../engine/bin/godot.x11.frt.opt.release.32" +binary_format/64_bits=false +binary_format/embed_pck=false +texture_format/bptc=false +texture_format/s3tc=false +texture_format/etc=true +texture_format/etc2=false +texture_format/no_bptc_fallbacks=true diff --git a/tools/vscode-setup/launch.json b/tools/vscode-setup/launch.json new file mode 100644 index 0000000..985eb3e --- /dev/null +++ b/tools/vscode-setup/launch.json @@ -0,0 +1,67 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "build and debug", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/bin/godot.x11.opt.tools.64", + "args": [ + "--path", + "${workspaceFolder}/../game/" + ], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "environment": [ + { + "name": "LD_LIBRARY_PATH", + "value": "${workspaceFolder}/bin/" + } + ], + "externalConsole": false, + "MIMode": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ], + "preLaunchTask": "build", + //"miDebuggerPath": "/usr/bin/gdb" + }, + { + "name": "debug", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/bin/godot.x11.opt.tools.64", + //"args": ["-e"], + "args": [ + "--path", + "${workspaceFolder}/../game/", + ], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "environment": [ + { + "name": "LD_LIBRARY_PATH", + "value": "${workspaceFolder}/bin/" + } + ], + "externalConsole": false, + "MIMode": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ], + //"preLaunchTask": "build", + //"miDebuggerPath": "/usr/bin/gdb" + } + ] +} \ No newline at end of file diff --git a/tools/vscode-setup/settings.json b/tools/vscode-setup/settings.json new file mode 100644 index 0000000..9ce7b68 --- /dev/null +++ b/tools/vscode-setup/settings.json @@ -0,0 +1,6 @@ +{ + "files.associations": { + "functional": "cpp", + }, + "editor.formatOnSave": true +} \ No newline at end of file diff --git a/tools/vscode-setup/tasks.json b/tools/vscode-setup/tasks.json new file mode 100644 index 0000000..e53957c --- /dev/null +++ b/tools/vscode-setup/tasks.json @@ -0,0 +1,26 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "type": "shell", + "command": "scons", + "group": "build", + "args": [ + "platform=x11", + "custom_modules_shared=yes", + "target=release_debug", + //"bin/libess.x11.opt.tools.64.so", + //"bin/libtexture_packer.x11.opt.tools.64.so", + "bin/libvoxelman.x11.opt.tools.64.so", + //"bin/libworld_generator.x11.opt.tools.64.so", + //"bin/libprocedural_animations.x11.opt.tools.64.so", + //"bin/libfqms.x11.opt.tools.64.so", + "-j3" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file